What is Nonce?
In Ethereum, every transaction has a
nonce. The nonce is the
number of transactions sent from a given address.
Nonce (in English, nonce - a number that can be used once) in cryptography is a one-time code selected in a random or pseudo-random manner that is used to securely transmit the main password, preventing a replay attack
Nonce is the number assigned to transactions sent from a separate address.
Each time you send a transaction, the nonce increases by
1. There are rules about what transactions are valid transactions and the nonce is used to enforce some of these rules. Specifically:
Transactions must be in Order: You cannot have a transaction with a nonce of
1mined before one with a nonce of
No Skipping! You cannot have a transaction with a nonce of
2mined if you have not already sent transactions with a nonce of
This field prevents double-spends as the nonce is the order the transactions go in. In order for a double-spend to be "successful", you typically...
- Send a transaction to one party
- Wait for it to register
- Collect something in return from this first transaction
- Quickly send another transaction with a high gas price
- Have this second transaction mined first, therefore invalidating the first transaction.
This is why exchanges wait for you to have a certain number of confirmations before allowing you to trade freshly-deposited funds.
In Ethereum, the above is not possible
In Ethereum, this method of "double-spending" is not possible because each transaction has a nonce included with it. Even if you attempt to do the above, it will not work as the second transaction (nonce of
3) cannot be mined before the first transaction (nonce of