Перейти к содержимому
Anon Wallet

Интеграция DApp

Anon Wallet внедряет стандартный провайдер EIP-1193 в window.ethereum. Большинство DApp с поддержкой MetaMask работает без изменений.

Обнаружение

Anon задаёт свойства window.ethereum:

window.ethereum.isAnon    // true
window.ethereum.isMetaMask  // true (for compatibility)

Чтобы отличить Anon от MetaMask, проверьте isAnon:

if (window.ethereum?.isAnon) {
  console.log("Anon Wallet detected");
}

Запрос аккаунтов

const accounts = await window.ethereum.request({
  method: "eth_requestAccounts",
});
// accounts[0] is the user's active public address

Пользователь видит окно с хостом DApp. После одобрения возвращается аккаунт.

Отправка транзакций

const txHash = await window.ethereum.request({
  method: "eth_sendTransaction",
  params: [{
    from: accounts[0],
    to: "0xRecipient...",
    value: "0xde0b6b3a7640000", // 1 ETH in hex wei
    data: "0x",
  }],
});

В окне одобрения пользователь может выбрать публичный баланс либо приватный, если есть экранированные средства и выполнены необходимые условия.

Подпись сообщений

// Personal sign
const signature = await window.ethereum.request({
  method: "personal_sign",
  params: ["Hello from my DApp", accounts[0]],
});

// EIP-712 typed data
const signature = await window.ethereum.request({
  method: "eth_signTypedData_v4",
  params: [accounts[0], JSON.stringify(typedData)],
});

Переключение сети

await window.ethereum.request({
  method: "wallet_switchEthereumChain",
  params: [{ chainId: "0xa4b1" }], // Arbitrum
});

Если сеть ещё не настроена, Anon предложит добавить её.

Слушатели событий

// Account changed
window.ethereum.on("accountsChanged", (accounts) => {
  console.log("Active account:", accounts[0]);
});

// Chain changed
window.ethereum.on("chainChanged", (chainId) => {
  console.log("Chain:", parseInt(chainId, 16));
});

// Connected
window.ethereum.on("connect", ({ chainId }) => {
  console.log("Connected to chain:", chainId);
});

Поддерживаемые методы

Метод Поддержка
eth_requestAccounts ✓
eth_accounts ✓
eth_sendTransaction ✓
eth_signTransaction ✓
personal_sign ✓
eth_signTypedData_v4 ✓
eth_getBalance ✓, расширен для стелс-адресов
eth_call ✓, расширен для стелс-адресов
wallet_switchEthereumChain ✓
wallet_addEthereumChain ✓
wallet_getCapabilities ✓, EIP-5792
wallet_sendCalls ✓, EIP-5792
wallet_getCallsStatus ✓, EIP-5792

Пакетные вызовы EIP-5792

Для пакетных транзакций и вспомогательных средств используйте wallet_sendCalls. См. Пакетные транзакции.