Nonce
Number Only Used Once의 약자로, 한번만 사용되는 숫자를 의미한다. Nonce는 블록 Nonce와 트랜잭션 Nonce로 구분할 수 있다.
블록 Nonce
비트코인이나 이더리움PoW 같은 작업증명(PoW, Proof of Work) 기반 블록체인에서는 새로운 블록을 생성하기 위해 특정 조건(블록의 해시값이 어떤 값보다 작아야한다)를 만족시켜야 한다. 이 조건을 만족하는 해시값을 만들기 위해 Nonce 값을 계속 바꾸어가며 해시를 계산한다. 이 과정을 흔히 말하는 Mining(채굴)이라고 한다.
즉, Nonce는 조건을 만족하는 해시값을 만들기 위해 수많은 시도 끝에 찾아낸 값이다. 즉 한번 사용된 Nonce는 다시 쓸 수 없고, 블록 내에 고정된다. 이러한 트랜잭션 Nonce라는 것이 있다.
참고: 이더리움은 22년 9월 The merge 이후 PoS(지분 증명)으로 전환했기 때문에, 더 이상 채굴 Nonce를 사용하지 않는다.
트랜잭션 Nonce (계정 Nonce)
가장 흔히 볼 수 있는 Nonce로 EVM 계열에서 계정이 지금까지 보낸 트랜잭션의 수를 의미한다. 트랜잭션의 순서를 보장하고 중복(이중 출금)을 방지하기 위해 사용된다.
이전 Nonce의 트랜잭션이 실패(수수료가 급증해서 Base Gas Prise보다 낮은 수수료를 블록에 포함시킬 때)하면 이후 Nonce의 트랜잭션도 Pending 처리된다.