본문으로 건너뛰기
Anon Wallet

지갑 기능

Anon은 EIP-5792의 wallet_getCapabilities로 특정 체인·출처에서 지원하는 고급 기능을 알립니다.

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 같은 DApp은 스마트 지갑 흐름 전에 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
}