Интеграция с 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 требования, необходимость экспорта ключей пользователем.







