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 nonceNonceManager 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
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 schemeBundlers 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 compatibilitySome tooling (e.g.
eth_getTransactionCount
) may not support multi-key logicWallets must expose nonce lanes clearly to avoid replay errors
💬 Discussion
Last updated