atomic Capability
The atomic capability specifies how a wallet will execute batches of transactions requested through the wallet_sendCalls method. This capability is expressed separately for each chain and should be interpreted as a guarantee only for batches of transactions on that chain.
Specification
Wallet
The atomic capability has a status field that can take one of three values:
supported: The wallet will execute all calls atomically and contiguouslyready: The wallet is able to upgrade tosupportedpending user approval (e.g. via EIP-7702)unsupported: The wallet does not provide any atomicity or contiguity guarantees
If the atomic capability is not present for a given chain, it means that the wallet does not support batching for that chain.
Example
provider.request({
method: 'wallet_getCapabilities',
params: ['0xd46e8dd67c5d32be8058bb8eb970870f07244567']
})
{ "0x2105": { "atomic": { "status": "supported" } }, "0x14A34": { "atomic": { "status": "unsupported" } } }App
When sending a batch of calls using wallet_sendCalls, apps can specify their atomicity requirements using the atomicRequired field:
- If
atomicRequiredis set totrue:- The wallet MUST execute all calls atomically and contiguously
- The wallet MUST reject the request if it cannot guarantee atomic execution
- If the wallet's
atomiccapability isready, it MUST upgrade tosupportedbefore proceeding
- If
atomicRequiredis set tofalse:- The wallet MUST execute calls sequentially (one after another)
- The calls need not be contiguous (other transactions may be interleaved)
- Some calls may fail independently
- The wallet MAY still execute the batch atomically if it supports it
Apps should check the wallet's capabilities using wallet_getCapabilities before sending requests with atomicRequired: true to ensure the wallet supports atomic execution on the target chain.
Relationship with EIP-7702
The ready status is particularly relevant for wallets that can upgrade to support atomic execution through EIP-7702. When a wallet indicates status: "ready", it means:
- The account is an EOA (Externally Owned Account)
- It can upgrade to a smart account that supports atomic execution via an EIP-7702 delegation
- The upgrade requires user approval
- Once upgraded, the wallet will support atomic execution of batches for that EOA
This allows apps to request atomic execution even from EOAs, as long as the wallet is capable of upgrading to support it.