ウォレットの機能
EIP-5792 の wallet_getCapabilities により、DApp はチェーンとオリジンごとの高度な機能を確認できます。
wallet_getCapabilities の呼び出し
const capabilities = await window.ethereum.request({
method: "wallet_getCapabilities",
params: [accounts[0]],
});
応答はチェーン ID と機能オブジェクトのマップです。
応答形式
{
"0x1": {
"auxiliaryFunds": {
"supported": true,
"assets": [
{
"chainId": "0x1",
"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
}
]
},
"paymasterService": {
"supported": true,
"url": "https://paymaster.anon.inc/v1"
},
"atomicBatch": {
"supported": true
}
}
}
auxiliaryFunds(ERC-7682)
auxiliaryFunds は、通常の公開残高以外、具体的には Railgun シールド残高を wallet_sendCalls に利用できることを示します。
ステルスアドレスを接続したオリジンだけで有効になり、DApp に次を伝えます。
このウォレットはプライベートプールの追加資金を使えるため、見えるオンチェーン残高だけで不足を判断する必要はありません。
動作
auxiliaryFunds 対応オリジンが wallet_sendCalls を送ると:
- 必要な資産のシールド残高を確認します
- 十分なら必要額をアンシールドして呼び出しに使います。公開送信先と金額は見えます
- DApp は確認を受け取り、内部のアンシールドを扱う必要はありません
資産一覧
assets は利用できるプールのトークンを列挙します。
- ETH 建て操作の主要資産 WETH
- 対象チェーンのシールド残高にあるすべてのトークン
paymasterService
paymasterService が対応済みなら wallet_sendCalls でガス代支援を使えます。
{
"version": "1.0",
"capabilities": {
"paymasterService": {
"url": "https://paymaster.anon.inc/v1"
}
}
}
URL は ERC-4337 互換ペイマスター要求を受け付けます。
atomicBatch
atomicBatch: { supported: true } は wallet_sendCalls が全成功または全差し戻しの原子的実行になることを示します。スマートコントラクトのバッチ処理で実装しています。
Uniswap などはスマートウォレットの手順に入る前に atomicBatch を確認します。
実行時の機能確認
const caps = await window.ethereum.request({
method: "wallet_getCapabilities",
params: [accounts[0]],
});
const chainCaps = caps[chainId];
if (chainCaps?.auxiliaryFunds?.supported) {
// Can use private funds in wallet_sendCalls
}
if (chainCaps?.atomicBatch?.supported) {
// Can use wallet_sendCalls with atomic execution
}