Интеграция 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. См. Пакетные транзакции.