Пакетные транзакции
Anon поддерживает wallet_sendCalls из EIP-5792: несколько вызовов за одно одобрение и, при необходимости, использование средств приватного пула.
Базовое использование
const result = await window.ethereum.request({
method: "wallet_sendCalls",
params: [{
version: "1.0",
chainId: "0x1",
calls: [
{
to: "0xTokenAddress...",
data: "0x095ea7b3...", // approve(spender, amount)
},
{
to: "0xDexRouter...",
data: "0x...", // swap call
value: "0x0",
},
],
}],
});
// result.id is a job ID for status polling
Пользователь видит общую сводку вызовов. При поддержке atomicBatch они исполняются одной транзакцией с общим откатом при любой ошибке.
Проверка статуса
const status = await window.ethereum.request({
method: "wallet_getCallsStatus",
params: [result.id],
});
// status.status: "PENDING" | "CONFIRMED" | "FAILED"
// status.receipts: array of transaction receipts when confirmed
Опрашивайте, пока status.status не перестанет быть "PENDING".
Вспомогательные средства
Для подключённого стелс-адреса с экранированным балансом Anon сообщает auxiliaryFunds. DApp может запросить их использование:
const result = await window.ethereum.request({
method: "wallet_sendCalls",
params: [{
version: "1.0",
chainId: "0x1",
calls: [...],
capabilities: {
auxiliaryFunds: {
// Optional: specify the asset and amount needed
assets: [
{
address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
amount: "0xDE0B6B3A7640000", // 1 WETH
}
]
}
}
}],
});
Anon выполнит:
- Деэкранирование нужной суммы с zk-доказательством; назначение и сумма станут публичными
- Финансирование вызовов полученными средствами
- Исполнение пакета
Пользователь одобряет одно окно с деэкранированием и вызовами.
Интеграция пеймастера
Для спонсирования газа в wallet_sendCalls:
const result = await window.ethereum.request({
method: "wallet_sendCalls",
params: [{
version: "1.0",
chainId: "0x1",
calls: [...],
capabilities: {
paymasterService: {
url: "https://paymaster.anon.inc/v1",
}
}
}],
});
Пеймастер оплачивает газ пакета, а комиссия списывается с экранированного баланса в настроенном токене.
Источники со стелс-адресом
Источник привязан к стелс-адресу, когда пользователь подключил его вместо основного публичного EOA:
- Включён
auxiliaryFunds, доступен экранированный баланс - Включён
paymasterService, газ можно оплатить из пула eth_getBalanceвозвращает сумму баланса в блокчейне, приватного WETH и резерва газаeth_callдляbalanceOfвозвращает сумму публичного и приватного экранированного балансов
DApp видит полный эффективный баланс и действует соответственно; информация об этом балансе раскрывается подключённому DApp.
Совместимость
wallet_sendCallsсatomicBatchдоступен в сетях с развёрнутым исполнителем пакетов Anon- Для
auxiliaryFundsнужен активный экранированный баланс запрошенного токена - DApp без EIP-5792 могут продолжать использовать
eth_sendTransaction