Magic Link Wallet Інтеграція
Magic (раніше Magic Link) — це SDK для створення кастодіальних та non-custodial гаманців через email/телефон без seed phrase. Користувач входить по email-посиланню або OTP, Magic створює або відновлює гаманець через HSM-based ключову інфраструктуру.
Принцип роботи
Magic використовує Delegated Key Management: private key генерується та зберігається в AWS CloudHSM, розділений між Magic та користувачем через DKMS (ніхто самостійно не контролює ключ). Коли користувач аутентифікується — Magic відновлює ключ та виконує підпис всередині безпечного середовища.
Це відрізняє Magic від повністю кастодіальних рішень: Magic технічно не може самостійно підписувати транзакції без участі користувача.
Інтеграція
import { Magic } from "magic-sdk";
const magic = new Magic("YOUR_PUBLISHABLE_API_KEY", {
network: {
rpcUrl: "https://polygon-rpc.com",
chainId: 137,
},
});
// Логін по email
async function login(email: string): Promise<string> {
await magic.auth.loginWithEmailOTP({ email });
const userInfo = await magic.user.getInfo();
return userInfo.publicAddress!;
}
// Підпис транзакції через Web3 provider
const web3 = new Web3(magic.rpcProvider);
const txHash = await web3.eth.sendTransaction({
from: userAddress,
to: "0xRecipient",
value: web3.utils.toWei("0.01", "ether"),
});
Magic надає сумісний Web3/ethers provider — існуючий код, написаний під MetaMask, працює без змін.
Обмеження
Magic — це кастодіальне рішення. Користувач не має прямого доступу до private key, не може експортувати seed phrase (тільки в Magic Connect Pro). Підходить для застосунків, де UX важливіший за самостійне зберігання: ігри, loyalty-програми, NFT-маркетплейси з широкою аудиторією.
Для аудиторії, що цінує self-custody — Dynamic або Privy з embedded wallets з можливістю експорту ключів.
Інтеграція з Magic займає 1–3 дні для базового флоу authentication + транзакції. Основні питання при виборі: політика зберігання ключів, compliance вимоги, необхідність експорту ключів користувачем.







