本文へスキップ
Anon Wallet

ウォレットの機能

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 を送ると:

  1. 必要な資産のシールド残高を確認します
  2. 十分なら必要額をアンシールドして呼び出しに使います。公開送信先と金額は見えます
  3. 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
}