TPS per account

Hello Support Team,

I have a question regarding transaction processing speed and nonce management. Each account uses a nonce to manage the sequence of its transactions, with every account having a unique nonce. For a transaction to be successfully submitted on-chain, its nonce must be greater than the nonce of the last transaction submitted from that account. I’m interested in understanding if there is a maximum number of transactions a single account can submit on-chain within a given timeframe. For example 10 transactions per sec.

There is no hard limit per account.

There are only “soft limits” in the sense that it is computationally inveasible to submit too many transactions while respecting the strict nonce ordering. But this largely depends on the resources of the node.

1 Like

I have a follow-up question. I’m not entirely certain about the specifics of how the Concordium blockchain operates in this context, but I understand that the sequence of nonces must be strictly followed without any interruptions. The nonce sequence is completely sequential, with each submission requiring an increment of the nonce by one. For example, if we were to submit 10 transactions nearly at the same time, the blockchain would process all 10, each with its own nonce, in the sequence they were submitted. If one of these transactions were to fail, it would create a gap. Transactions that were completed before this failure would remain unaffected, but all subsequent transactions would be put into a pending state on-chain. They would stay in this pending state until the issue with the failed transaction is addressed either by resubmitting it or by completing a new transaction with the same nonce, or until there is a timeout for the pending state, after which they would all fail. If the Concordium blockchain does not operate in this manner, what is the timeout duration for resolving nonce gaps?

Should be: If the Concordium blockchain does operate in this manner, what is the timeout duration for resolving nonce gaps?

When a node receives a transaction that has a nonce out of sequence it will typically reject it outright unless it is already part of a block.

If a transaction with nonce 11 ends up not being valid at all (if the user cannot pay for it, or it has expired) then if the node already has a transaction with nonce 12 then this will be removed from node’s memory after some time. The exact time depends on a few factors

  • if a node is a validator, then the next time it bakes it is likely to remove it
  • if a node is not a validator then it depends on the value of CONCORDIUM_NODE_CONSENSUS_TRANSACTION_KEEP_ALIVE (defaults to 10min) and CONCORDIUM_NODE_CONSENSUS_TRANSACTIONS_PURGING_DELAY (defaults to 5min) but also on what the expiry of the transaction is and how many transactions are being sent in general.

Your transaction will be removed at the latest after the sum of those two durations, but it might be removed sooner if, e.g., it is expired already.

1 Like