本文へスキップ
Anon Wallet

バッチトランザクション

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 は次を実行します。

  1. zk 証明で非公開残高から必要額をアンシールドします。送信先と金額は公開されます
  2. その資金を呼び出しに充当します
  3. バッチ呼び出しを実行します

アンシールドと呼び出しをまとめた 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 を使い続けられます