Skip to main content
AppKit integrates with EIP-5792 to interact with embedded Wallets (smart accounts) through wallet capabilities. It focuses on three primary methods: wallet_getCapabilities, wallet_sendCalls, and wallet_getCallsStatus. It shows how to check if atomic batch transactions are supported and how to use them.

wallet_getCapabilities

Appkit checks the atomic capability from wallet_getCapabilities of the wallet in order to know if a wallet required to handle the batch of calls atomically or not. Wallets should include the EIP-5792 capabilities in CAIP-25.

wallet_sendCalls

Depending on the 3 different values from the atomic capability, AppKit will trigger the wallet_sendCalls:
  • supported means that the wallet supports atomic batch transactions for the account and chain ID. The wallet executes calls atomically and contiguously
  • ready means that the wallet can upgrade to support atomic execution, pending user approval.
  • unsupported means that the wallet does not provide any atomicity or contiguity guarantees, and it will not suggest an upgrade to the user. The dApp should fallback to eth_sendTransaction instead of wallet_sendCalls, and eth_getTransactionReceipt instead of wallet_getCallsStatus
Request Example
{  "from": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",  "chainId": "0x01",  "atomicRequired": true,  "calls": [  {  "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",  "value": "0x9184e72a",  "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"  },  {  "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",  "value": "0x182183",  "data": "0xfbadbaf01"  }  ]  } 
  • atomicRequired -  can be set to either true or false.
    • If the atomic capability is not supported set to false
    • If the atomic capability is supported set to true

wallet_getCallsStatus

Call this function to get the information about the batch execution.
  • The batchId field, returned from the wallet_sendCalls will be used to identify the batch call.
  • The atomic field specifies how the wallet handled the batch of calls, which affects the structure of the receipts field.

Response Example

{  "chainId": "0x01",  "id": "0x00000000000000000000000000000000000000000000000000000000000000000e670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",  "status": 200,  "atomic": true,  "receipts": [  {  "logs": [  {  "address": "0xa922b54716264130634d6ff183747a8ead91a40b",  "topics": [  "0x5a2a90727cc9d000dd060b1132a5c977c9702bb3a52afe360c9c22f0e9451a68"  ],  "data": "0xabcd"  }  ],  "status": "0x1",  "blockHash": "0xf19bbafd9fd0124ec110b848e8de4ab4f62bf60c189524e54213285e7f540d4a",  "blockNumber": "0xabcd",  "gasUsed": "0xdef",  "transactionHash": "0x9b7bb827c2e5e3c1a0a44dc53e573aa0b3af3bd1f9f5ed03071b100bb039eaff"  }  ] } 
  • if atomic is true, the batch was executed atomically by a wallet
  • if atomic is false, the batch was executed non-atomically by a wallet