バッチトランザクション
Anon は EIP-5792 の wallet_sendCalls に対応し、1 回の承認で複数呼び出しを提出し、必要なら非公開プールの資金を使えます。
基本的な使い方
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 対応なら 1 取引で実行し、一つでも失敗すると全体を差し戻します。
状態の確認
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" でなくなるまで確認します。
補助資金の利用
接続先がシールド残高を持つステルスアドレスなら 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 証明で非公開残高から必要額をアンシールドします。送信先と金額は公開されます
- その資金を呼び出しに充当します
- バッチ呼び出しを実行します
アンシールドと呼び出しをまとめた 1 画面で承認します。
ペイマスター統合
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 の代わりにステルスアドレスを DApp に接続した状態です。
auxiliaryFundsを有効化し、シールド残高を利用可能にしますpaymasterServiceを有効化し、シールド残高でガスを払えますeth_getBalanceはオンチェーン残高、非公開 WETH、ガス余裕分の合計を返しますbalanceOfのeth_callはオンチェーンと非公開シールド残高の合計を返します
DApp は有効残高全体に応じて動作でき、その残高情報は接続した DApp に開示されます。
互換性の注意
- Anon のバッチ実行コントラクト配置済みチェーンで
atomicBatch付きwallet_sendCallsに対応します auxiliaryFundsには要求トークンの有効なシールド残高が必要です- EIP-5792 未対応 DApp は通常の
eth_sendTransactionを使い続けられます