EIP-5792: Wallet Batching Capabilities
EIP-5792 is a proposed Ethereum Improvement Proposal that enables applications to request wallets to process batches of on-chain write calls and to check their status. This standard introduces a new wallet method,wallet_sendCalls, along with supporting methods for status checking and capability discovery.
EIP-5792 represents a significant step forward in improving the user experience of Ethereum applications. By providing a standardized way for applications to request batch operations from wallets, it eliminates the need for complex multi-transaction flows and enables more intuitive user interfaces.
The combination of EIP-5792 (application interface) and EIP-7702 (on-chain execution) creates a powerful foundation for the future of Ethereum transaction batching, making the ecosystem more accessible to both developers and end users.
Status: EIP-5792 is currently in “Last Call” with a deadline of May 5, 2025. There is significant support from wallets and tools.
Get Involved: Review the EIP, test implementations, and join the conversation on Ethereum Magicians to help shape the future of wallet batching capabilities.
What is EIP-5792?
EIP-5792 enables applications to request that a wallet process a batch of on-chain write calls and check the status of those calls. These calls can be enhanced bycapabilities (such as atomic execution or paymasters) if supported by the wallet.
Key Components
wallet_sendCalls: The main method for submitting batch transactions.wallet_getCallsStatus: Checks the status of submitted calls.wallet_showCallsStatus: Displays call information to users.wallet_getCapabilities: Discovers wallet capabilities.- Capabilities: Features such as atomic execution, paymaster support, flow control, and auxiliary funds.
Relationship with EIP-7702
EIP-5792 and EIP-7702 work together to provide a complete batching solution:- EIP-7702: Enables EOAs to temporarily upgrade to smart contract functionality for batch execution.
- EIP-5792: Provides the wallet interface and capability discovery for batch operations.
User Benefits
End users will no longer need to manually execute multiple transactions one by one. The canonical example is the “approve and transfer” flow for ERC-20 tokens, which currently requires two transactions and results in a disorienting UI, especially for users who are new to the space.Improved User Experience
- Simplified Interfaces: User interfaces can be simpler and more intuitive.
- Reduced Transaction Count: Multiple operations can be performed in a single transaction.
- Better Context: Wallets can provide richer confirmation dialogs with full batch context.
- Atomic Execution: All operations either succeed or fail together.
Developer Benefits
For Application Developers
- Simplified Integration: No need to “guess” what a given wallet is capable of.
- Capability Discovery: Clear indication of supported features.
- Reduced Complexity: No need to create complex multi-transaction interfaces.
- Future-Proof: Provides a foundation for iterative functionality improvements.
For Wallet Developers
- Richer Context: Provides more information about application intent.
- Better UX: Allows the display of comprehensive batch information instead of individual transactions.
- Capability Signaling: Indicates support for advanced features.
- Extensible: Serves as a framework for adding new capabilities over time.
Atomic Execution Capabilities
Wallets can indicate their support for atomic execution of batches through theatomic capability, which can have three possible states:
supported: The wallet executes all calls atomically and contiguously.ready: The wallet can be upgraded tosupported, pending user approval (e.g., via EIP-7702).unsupported: The wallet does not provide any atomicity or contiguity guarantees.
Core Methods
The following are core methods that can be called by libraries for wallets.wallet_getCapabilities
Applications call this method to discover which capabilities the wallet supports:wallet_sendCalls
Submit a batch of calls for execution:wallet_getCallsStatus
Check the status of submitted calls:Use Cases
1 - Approve and Transfer
The most common use case is to approve a token and then transfer it in a single operation:2 - Complex DeFi Operations
Multi-step DeFi operations, such as swapping tokens and then staking:3 - NFT Operations
Batch NFT operations, such as minting and setting metadata:Comparison with Other Solutions
| Feature | EIP-5792 | Multicall3 | Permit2 | Meta-tx + Forwarder | EIP-4337 + Bundlers |
|---|---|---|---|---|---|
| Wallet Integration | ✅ Native | ❌ Manual | ✅ Native | ❌ Manual | ❌ Complex |
| Capability Discovery | ✅ Built-in | ❌ None | ⚠️ Limited | ❌ None | ❌ None |
| Atomic Execution | ✅ Guaranteed | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes |
| Gas Optimization | ✅ High | ⚠️ Medium | ✅ High | ⚠️ Medium | ⚠️ Medium |
| User Experience | ✅ Excellent | ⚠️ Manual | ✅ Good | ⚠️ Complex | ⚠️ Complex |
| Implementation | ✅ Simple | ✅ Simple | ⚠️ Medium | ❌ Complex | ❌ Complex |
Implementation Example
Here’s a complete example demonstrating how to implement EIP-5792 in a web application:Migration Guide
From Multicall3
If you are currently using Multicall3, migrating to EIP-5792 is straightforward:From Manual Batching
If you are manually handling multiple transactions:Best Practices
1 - Always Check Capabilities
Before sending calls, always check which capabilities the wallet supports:2 - Handle Errors Gracefully
Implement proper error handling for unsupported capabilities:3 - Provide Fallbacks
Always provide fallback mechanisms for wallets that do not support EIP-5792:4 - Monitor Status
Use the status-checking methods to provide better user feedback:Future Considerations
Upcoming Features
- Paymaster Integration: Native support for gasless transactions.
- Flow Control: Advanced transaction ordering and dependencies.
- Auxiliary Funds: Support for complex funding scenarios.
- Cross-Chain Batching: Extensions for multi-chain operations.
Ecosystem Adoption
As EIP-5792 moves toward finalization, you can expect to see:- Wallet Integration: Major wallets adding native support.
- Framework Updates: Libraries like ethers.js and viem adding built-in support.
- Tooling: Development tools and debugging utilities.
- Standards: Additional EIPs building on this foundation.