wallet_sendCalls
: Requests that a wallet submits a batch of calls.wallet_getCallsStatus
: Returns the status of a call batch that was sent via wallet_sendCalls.wallet_showCallsStatus
: Requests that a wallet shows information about a given call bundle that was sent with wallet_sendCalls.wallet_getCapabilities
: This RPC allows an application to request capabilities from a wallet (e.g. batch transactions, paymaster communication).
Usage
wallet_getCapabilities
wallet_getCapabilities
Capabilities in CAIP-25 Connection Requests
CAIP-25 defines how capabilities can be expressed in wallet-to-dapp connections. These capabilities control how methods likewallet_sendCalls
behave.Session Properties
In a connection request, dapps can request capabilities viasessionProperties
. These can be universal (across all chains) or chain-specific:Scoped Properties
For chain-specific capabilities, dapps usescopedProperties
:Wallet Response
A wallet’s response should indicate which capabilities it actually supports, following EIP-5792 and CAIP-25:- Capabilities shared across all address in a namespace can be expressed at top-level
- Address-specific capabilities can include exceptions to scope-wide capabilities
Atomic Capability
According to EIP-5792, theatomic
capability specifies how the wallet will execute batches of transactions. It has three possible values:supported
- The wallet will execute calls atomically and contiguouslyready
- The wallet can upgrade to support atomic execution pending user approvalunsupported
- The wallet provides no atomicity guarantees
wallet_sendCalls
with atomicRequired: true
will be handled.Example
Thewallet_getCapabilities
method is used to request information about what capabilities a wallet supports. Following EIP-5792, here’s how it should be implemented:Request
Response
The wallet should return a response following EIP-5792, where capabilities are organized by chain ID:wallet_sendCalls
wallet_sendCalls
Implementation
When implementingwallet_sendCalls
, wallets must follow these requirements:Connection Approval
- Only approve this method during the connection approval flow if your wallet can implement it correctly
- Define the
atomic
capability per chain/account in the CAIP-25 response
Request Format
Core Implementation Requirements
- Execute calls in the exact order specified in the request
- Do not wait for any calls to be finalized before completing the batch
- If the user rejects the request, do not send any calls
Atomic Execution Behavior
WhenatomicRequired
is true
:- Execute all calls atomically (either all succeed or none have any effect)
- Execute all calls contiguously (no other transactions between batch calls)
- If your wallet can upgrade from
ready
tosupported
atomicity, do so before executing
atomicRequired
is false
:- You may execute calls sequentially without atomicity guarantees
- You may execute atomically if your wallet supports it
- You may upgrade to
supported
atomicity and execute atomically
Response Enrichment
To enhance the user experience and eliminate the need for app switching, wallets can enrich the wallet_sendCalls response with caip2 id and transactionHash to let the Universal Provider resolve the transaction hash.wallet_getCallsStatus
wallet_getCallsStatus
Example
To enhance the user experience and eliminate the need for app switching, wallets can enrich the wallet_sendCalls response with caip2 id and transactionHash to let the Universal Provider resolve the transaction hash.To implement this functionality, the response for wallet_sendCalls should be enriched with capabilities:scopedProperties
when approving a session:Response Format
The response format forwallet_getCallsStatus
varies based on the execution method:For Atomic Execution
For Non-Atomic Execution
For non-atomic execution, include all transactions in the receipts array, even those that were included on-chain but eventually reverted.