RIP-7712¶
Multi-dimensional nonces for smart contract accounts in RIP-7560 transactions¶
RIP-7712 introduces a two-dimensional nonce mechanism for native Account Abstraction (RIP-7560) transactions. It enables Smart Contract Accounts to define their own transaction sequencing logic, making complex and parallelized workflows possible — especially when multiple signers or execution threads are involved.
🧱 What It Adds¶
- Two-dimensional nonces:
(nonceKey, nonceSequence)
pairs replace the traditional sequential nonce - NonceManager contract: Precompiled helper for validating and incrementing nonces
- Enhanced parallelism: Accounts can manage multiple nonce threads (e.g., for multisig vs routine ops)
🔗 Relation to Other Standards¶
Spec | Relation |
---|---|
RIP-7560 | RIP-7712 extends its native transaction type |
ERC-4337 | Smart wallets already use custom nonces per validator |
EIP-7702 | Revocation relies on legacy nonce; 7712 adds caveats |
ERC-6900 / 7579 | Can map plugins to separate nonceKey lanes |
🤔 Why It Matters¶
- Avoids nonce collisions across independent actions
- Enables parallel UX flows like multisig vs automation
- Powers plugin-specific channels for modular accounts
⚙️ How It Works¶
RIP-7712 introduces a nonceKey
alongside the usual nonceSequence
. Each nonceKey
acts like an independent thread:
mapping(address => mapping(uint256 => uint256)) public nonce;
A NonceManager
precompile handles validation and incrementing:
nonceKey = 0
: Uses legacy nonce (for EOAs and simple flows)nonceKey > 0
: Uses the two-dimensional scheme- Bundlers or builders must call the precompile to validate the pair
🤖 Example Use Cases¶
- Threshold multisig vs user-level automation
- Plugin-specific nonces for fee payment, voting, recovery
- Delegated session key lanes (e.g. game moves, subscriptions)
- Atomic batch ops with concurrent replay protection
⚠️ Caveats¶
- EIP-7702 revocations use the legacy nonce — applications must align
nonceKey = 0
for clean compatibility - Some tooling (e.g.
eth_getTransactionCount
) may not support multi-key logic - Wallets must expose nonce lanes clearly to avoid replay errors