멀티시그 nonce란?
Nonce는 EVM(Ethereum Virtual Machine) 멀티시그(multi-signature, multi-sig) 거래에서 중요한 개념으로, 거래가 특정 순서로 실행되도록 보장한다. 이는 일반 거래에서 사용되는 Nonce와는 다르다. 멀티시그 거래에서는 여러 주소가 협력하여 서명과 승인을 수행하고, 서명을 위해 공유 멀티시그 계정을 사용한다. 각 주소는 이미 해당 주소에서 보낸 거래의 수를 나타내는 자체 Nonce 값을 가진다.
Nonce의 목적은 거래 순서와 무결성을 유지해 재실행(리플레이) 공격을 방지하고 일관된 실행 순서를 보장하는 것이다. 이는 멀티시그 컨트랙트의 일부이며 컨트랙트에 의해 관리·유지되므로, 멀티시그 거래의 Nonce는 발신 주소의 현재 Nonce 값보다 클 수 있다.
멀티시그 거래에서 올바른 Nonce 순서를 유지하는 것은 거래의 일관성과 정확성을 보장하는 데 매우 중요하다. 멀티시그 거래는 Nonce 값에 따라 올바른 순서로 실행되어야 하며, 그래야 거래가 의도한 대로 실행된다. 거래의 Nonce가 기대값과 일치하지 않으면 체인에서 실행할 때 오류와 함께 실패한다. 따라서 여러 멀티시그 거래를 동시에 보낼 때는 Nonce 값을 작은 값에서 큰 값으로 순차적으로 증가시켜 올바른 순서대로 실행해야 한다. 거래의 Nonce가 현재 기대 Nonce 값과 일치해야만 성공적으로 실행될 수 있다.
멀티시그 거래의 Nonce가 멀티시그 컨트랙트가 정의한 예상 순서와 일치하는지 확인하는 것이 중요하다. 거래의 Nonce가 예상 값과 맞지 않으면 온체인 실행 시 오류로 실패한다. 따라서 여러 멀티시그 거래를 동시에 보낼 때는 Nonce를 작은 값에서 큰 값으로 순차적으로 증가시키며 올바른 순서로 실행해야 한다. 거래의 Nonce가 현재 기대 Nonce 값과 일치할 때에만 성공적으로 실행된다.
멀티시그 거래 큐에서 거래는 “현재 거래”와 “대기 거래”로 구분된다. “현재 거래”가 없으면 이후 거래가 정상적으로 전송될 수 있도록 “현재 거래”를 먼저 시작해야 한다. 대기열의 거래는 올바른 순서로 실행되어야 하며, 이전 거래가 확인·실행된 후에야 이후 거래를 실행할 수 있다.
멀티시그 거래에서 Nonce 개념을 이해하고 올바르게 활용함으로써 거래의 순서와 정확성을 보장하고, 멀티시그 거래의 신뢰성과 보안을 높일 수 있다.
결론적으로, Nonce는 EVM 멀티시그 거래에서 거래의 순차적 실행을 보장하는 중요한 역할을 한다. 올바른 거래 순서를 유지함으로써 거래 중복이나 순서 뒤바뀜 문제를 방지하고, 거래 일관성과 정확성을 확보하여 멀티시그 거래의 보안성과 신뢰성을 강화한다.

예시에서, 체인에 Nonce가 2인 거래가 필요하다고 가정하면, 그 시점에 Nonce가 1인 거래를 제출하면 즉시 실패한다. 마찬가지로 Nonce가 3 또는 4인 거래를 제출해도 즉시 실패한다. 오직 Nonce가 2인 거래를 제출해야만 성공할 수 있다.
거래가 블록체인에 브로드캐스트되지 않은 한, 거래는 트랜잭션 큐에 남아 향후 실행을 기다릴 수 있다.
Last updated