Orderless Transactions
As outlined in AIP-123 (FAQ), orderless transactions execute without a sequence number. This is useful when multiple machines submit from a single sending account and the order of submission does not matter.
Replay is protected by a nonce. The blockchain stores (sender, nonce) pairs for committed orderless transactions from the last 60 seconds. A transaction executes only if that pair is unused, and orderless transactions expire after at most 60 seconds — shorter than sequence-number transactions.
Both accounts with an on-chain 0x1::account::Account resource and stateless accounts can send orderless transactions.
Process Overview
Section titled “Process Overview”Orderless transactions use the extra payload fields specified in AIP-129.
- Build a transaction with a unique
replayProtectionNonce(a randomu64) and the Move entry function you want to call. - Sign and submit the transaction as usual. The nonce replaces the sequence number for replay protection.
The nonce does not order transactions. It only ensures a transaction cannot execute twice with the same nonce before it expires.
TypeScript example
Section titled “TypeScript example”Pass replayProtectionNonce in the transaction options:
const transaction = await aptos.transaction.build.simple({ sender: sender.accountAddress, data: { function: "0x1::aptos_account::transfer", functionArguments: [destination.accountAddress, 100], }, options: { replayProtectionNonce: 12345n, },});You can combine orderless replay protection with sponsored transactions and encrypted pending transactions. For how orderless transactions compose with each payment type, see Payments.
SDK support
Section titled “SDK support”Each official SDK documents orderless transactions and ships a tested example: