지갑 기능
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를 보내면:
- 필요한 자산의 쉴드 잔액을 확인합니다
- 충분하면 필요한 금액을 언쉴드해 호출에 사용하며, 공개 목적지와 금액은 보입니다
- 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
}