Nonce(논스)란? | 코린이 입문지침서 54화

Nonce(논스)란?

Nonce(논스)는 블록체인에서 여러 의미로 사용될 수 있지만, 지갑과 거래를 설명할 때는 특정 계정에서 발생하는 거래의 순서를 관리하고 같은 거래가 반복해서 처리되는 것을 방지하는 데 사용되는 값으로 이해할 수 있습니다.

특히 이더리움과 같은 계정 기반 블록체인에서는 한 계정이 거래를 만들 때 거래 순서와 연결된 Nonce가 사용됩니다.

예를 들어 한 계정에서 앞선 거래와 다음 거래가 있다면 네트워크는 Nonce를 이용해 어떤 거래가 먼저 처리되어야 하는지 구분할 수 있습니다.

하지만 Nonce는 모든 블록체인에서 완전히 같은 의미와 방식으로 사용되는 것은 아닙니다. Proof of Work에서 블록을 생성할 때 등장하는 Nonce처럼 다른 맥락에서도 같은 용어가 사용될 수 있으므로 현재 무엇을 설명하는 Nonce인지 구분해야 합니다.

가족 웹툰으로 먼저 알아보기

아빠는 거래를 두 번 연속 보냈는데 두 번째 거래까지 Pending 상태로 남아 있자 지갑이 고장 난 것은 아닌지 걱정합니다. 큰딸의 설명을 들으며 일부 블록체인에서는 Nonce가 계정 거래의 순서를 관리하고 앞선 거래가 처리되지 않으면 다음 거래도 기다릴 수 있다는 점을 알아봅니다. 엄마와 나나는 Pending 거래를 무작정 반복하기보다 거래 순서와 Nonce를 확인해야 하는 이유를 함께 살펴봅니다.

Nonce 웹툰 54-1
Nonce 웹툰 54-2
Nonce 웹툰 54-3
Nonce 웹툰 54-4
Nonce 웹툰 54-5
Nonce 웹툰 54-6

웹툰 핵심 설명

54-1. Nonce가 뭐야?
계정 기반 블록체인에서는 Nonce가 해당 계정에서 발생하는 거래의 순서를 관리하는 값으로 사용될 수 있습니다.

54-2. 거래마다 순서가 있다는 거야?
일부 블록체인에서는 같은 계정에서 만들어지는 거래가 정해진 순서에 따라 처리될 수 있습니다.

54-3. 앞 거래가 Pending이면 다음 거래도 기다릴 수 있어.
더 낮은 Nonce의 거래가 아직 처리되지 않았다면 그다음 순서의 거래가 바로 실행되지 못하는 상황이 발생할 수 있습니다.

54-4. 같은 Nonce를 가진 거래가 경쟁할 수도 있어.
일부 네트워크와 지갑에서는 Pending 거래를 대체하기 위해 같은 Nonce와 다른 수수료 조건을 가진 거래를 제출할 수 있습니다.

54-5. Nonce는 중복 실행 방지에도 중요해.
거래 순서를 구분하는 Nonce는 이미 처리된 거래를 같은 계정에서 그대로 반복 실행하는 것을 방지하는 데 중요한 역할을 할 수 있습니다.

54-6. 직접 바꾸기 전에 거래 상태부터 확인해야 해.
Nonce를 잘못 조정하면 거래가 예상과 다른 순서로 대기할 수 있으므로 먼저 기존 Transaction Hash와 Pending 상태를 확인해야 합니다.

53화 Mempool과 Nonce는 어떻게 연결될까?

앞서 배운 Mempool에서는 아직 블록에 포함되지 않은 거래가 대기할 수 있습니다.

이때 계정 기반 블록체인에서는 같은 계정에서 여러 거래가 만들어졌다면 Nonce가 거래 순서를 판단하는 데 중요한 역할을 할 수 있습니다.

예를 들어 앞선 Nonce의 거래가 Mempool에서 계속 Pending 상태로 남아 있다면 이후 Nonce의 거래도 처리를 기다리는 상황이 발생할 수 있습니다.

따라서 Mempool은 거래가 기다리는 상태와 관련되고, Nonce는 같은 계정에서 거래 순서를 구분하는 데 사용될 수 있는 값으로 연결해서 이해하면 쉽습니다.

Nonce는 왜 필요할까?

한 계정에서 여러 거래가 발생한다면 네트워크는 각각의 거래를 어떤 순서로 처리해야 하는지 구분할 필요가 있습니다.

Nonce는 이러한 거래 순서를 관리하는 데 사용될 수 있습니다.

또한 이미 처리된 거래를 다시 제출해 같은 거래가 반복 실행되는 문제를 방지하는 역할과도 연결될 수 있습니다.

Nonce는 누가 정할까?

일반적인 지갑을 사용할 때 이용자가 매번 Nonce 숫자를 직접 정할 필요는 없습니다.

지갑 소프트웨어가 현재 계정의 거래 상태를 확인하고 다음 거래에 필요한 값을 자동으로 설정하는 경우가 많습니다.

따라서 초보자는 특별한 이유가 없다면 Nonce를 임의로 변경하기보다 지갑이 자동으로 처리하도록 두는 것이 일반적입니다.

거래를 보낼 때마다 Nonce가 증가할까?

계정 기반 블록체인의 구조에 따라 계정에서 정상적으로 처리되는 거래와 함께 Nonce가 순차적으로 증가하는 방식이 사용될 수 있습니다.

예를 들어 특정 계정의 거래가 순서대로 10, 11, 12와 같은 Nonce를 사용한다고 생각하면 거래 순서를 이해하기 쉽습니다.

다만 실제 시작 값과 계산·표시 방식은 네트워크에 따라 다를 수 있으므로 숫자 자체를 외울 필요는 없습니다.

Nonce가 10인 거래 다음에는 무조건 11일까?

특정 계정에서 순차적인 Nonce를 사용하는 구조라면 다음 정상 거래가 이어지는 값을 사용할 수 있습니다.

하지만 Pending 거래가 존재하거나 대체 거래를 제출한 경우 지갑 화면에서 여러 거래가 보이면서 초보자가 순서를 혼동할 수 있습니다.

중요한 것은 숫자를 직접 맞추는 것이 아니라 현재 계정에서 어떤 Nonce가 이미 처리됐고 어떤 거래가 아직 Pending인지 확인하는 것입니다.

Nonce Gap은 무엇일까?

Nonce Gap은 거래 순서 사이에 아직 처리되지 않은 값이 존재해 이후 거래가 바로 처리되지 못하는 상황을 설명할 때 사용할 수 있습니다.

예를 들어 앞선 순서의 거래가 처리되지 않았는데 더 높은 Nonce의 거래가 먼저 네트워크에 제출되면 이후 거래가 앞선 거래를 기다릴 수 있습니다.

초보자는 “거래 순서 중간에 빈칸이 생겨 뒤 거래가 기다리는 상황”이라고 이해하면 쉽습니다.

앞의 Nonce 거래가 Pending이면 왜 뒤 거래가 기다릴까?

계정의 거래 순서를 순차적으로 처리하는 구조에서는 앞선 거래를 건너뛰고 이후 거래부터 실행하면 계정 상태가 예상과 달라질 수 있습니다.

따라서 네트워크는 필요한 앞선 거래가 처리되기를 기다릴 수 있습니다.

이 때문에 하나의 Pending 거래가 뒤에 만든 여러 거래까지 멈춘 것처럼 보이게 할 수 있습니다.

Block Explorer에서 Nonce를 확인할 수 있을까?

지원되는 Block Explorer에서는 거래 상세 정보에서 Nonce를 확인할 수 있는 경우가 있습니다.

여러 Pending 거래가 있다면 각 거래의 Transaction Hash / TXID와 Nonce를 함께 비교하면 거래 순서를 이해하는 데 도움이 될 수 있습니다.

다만 Block Explorer마다 표시 항목과 방식은 다를 수 있습니다.

같은 Nonce의 거래를 두 번 보내면 어떻게 될까?

계정 기반 네트워크에서는 같은 계정에서 동일한 Nonce를 가진 여러 거래가 모두 독립적으로 순서대로 실행되는 것으로 생각해서는 안 됩니다.

네트워크와 지갑의 규칙에 따라 같은 Nonce를 사용하는 거래 가운데 하나가 기존 Pending 거래를 대체하기 위한 후보가 될 수 있습니다.

이러한 구조는 Pending 거래의 Speed Up이나 Cancel 기능과 연결될 수 있습니다.

Speed Up과 Nonce는 어떤 관계일까?

일부 지갑의 Speed Up 기능은 기존 Pending 거래와 같은 Nonce를 사용하면서 더 높은 수수료 조건 등을 적용한 새로운 거래를 제출하는 방식으로 구현될 수 있습니다.

네트워크가 대체 거래를 받아들이고 해당 거래가 먼저 처리되면 기존 Pending 거래 대신 새로운 거래가 최종 처리될 수 있습니다.

하지만 모든 네트워크와 지갑에서 동일한 방식으로 작동한다고 생각해서는 안 됩니다.

Cancel과 Nonce는 어떤 관계일까?

일부 지갑에서는 Pending 거래를 취소하기 위해 같은 Nonce를 사용하는 다른 거래를 제출하는 방식을 활용할 수 있습니다.

이 경우 실제로 과거 거래를 삭제하는 것이 아니라 아직 처리되지 않은 거래를 다른 거래로 대체하려는 구조에 가깝습니다.

이미 블록에 포함된 거래를 같은 방법으로 되돌릴 수 있는 것은 아닙니다.

Nonce를 직접 낮추면 거래를 되돌릴 수 있을까?

아닙니다.

이미 블록체인에서 정상적으로 처리된 거래는 Nonce 숫자를 임의로 변경한다고 취소되거나 되돌아가지 않습니다.

Nonce는 거래 순서와 중복 실행 관리에 사용되는 값이지 이미 확정된 거래를 되돌리는 비밀번호가 아닙니다.

Nonce를 너무 높게 설정하면 어떻게 될까?

현재 계정에서 필요한 순서보다 높은 Nonce의 거래를 제출하면 앞선 순서의 거래가 처리될 때까지 기다려야 하는 상황이 발생할 수 있습니다.

그 결과 거래가 Mempool에서 Pending 상태로 오래 남아 있는 것처럼 보일 수 있습니다.

따라서 Nonce를 수동으로 조정할 때는 현재 계정의 거래 상태를 정확하게 이해해야 합니다.

Nonce를 너무 낮게 설정하면 어떻게 될까?

이미 처리된 거래에서 사용된 Nonce를 다시 사용하려 하면 네트워크가 해당 거래를 정상적인 다음 거래로 받아들이지 않을 수 있습니다.

또한 현재 Pending 거래와 같은 Nonce를 사용한다면 대체 거래와 관련된 규칙이 적용될 수 있습니다.

정확한 동작은 네트워크와 지갑에 따라 달라질 수 있으므로 임의 조정을 주의해야 합니다.

Nonce와 Transaction Hash는 무엇이 다를까?

Transaction Hash는 특정 거래 하나를 식별하는 정보입니다.

Nonce는 계정 기반 블록체인에서 해당 계정의 거래 순서를 관리하는 데 사용될 수 있는 값입니다.

따라서 Transaction Hash = 어떤 거래인지 구분, Nonce = 같은 계정에서 거래 순서를 관리라고 기억하면 쉽습니다.

Nonce와 Confirmation은 무엇이 다를까?

Nonce는 거래가 생성되고 처리되는 순서와 관련된 정보이고, Confirmation은 거래가 블록에 포함된 이후 확인 상태와 관련된 개념입니다.

기본 흐름으로 연결하면 Nonce에 따른 거래 순서 → Mempool 대기 → 블록 포함 → Confirmation으로 이해할 수 있습니다.

채굴에서 말하는 Nonce도 같은 걸까?

같은 단어가 사용되지만 맥락을 구분해야 합니다.

Proof of Work 블록체인에서는 채굴 과정에서 블록 헤더의 값을 변경하며 조건에 맞는 해시를 찾는 과정과 관련해 Nonce라는 용어가 사용될 수 있습니다.

이번 54화에서 중심적으로 다루는 것은 계정 거래 순서를 관리하는 Transaction Nonce입니다.

채굴과 관련된 구조는 57화 Proof of Work에서 자세히 알아봅니다.

Nonce의 주요 주의점

  • 순서 혼동: 앞선 Pending 거래를 확인하지 않고 이후 거래만 문제라고 생각할 수 있습니다.
  • 임의 수정: Nonce를 직접 잘못 변경해 거래 대기 문제를 만들 수 있습니다.
  • 중복 거래 오해: 같은 Nonce의 거래가 모두 독립적으로 실행된다고 생각할 수 있습니다.
  • Speed Up 오해: 기존 거래 자체의 속도 숫자만 바뀐다고 생각할 수 있습니다.
  • Cancel 오해: 이미 블록에 포함된 거래까지 취소할 수 있다고 생각할 수 있습니다.
  • 용어 혼동: Transaction Nonce와 Proof of Work의 Nonce를 같은 역할로 생각할 수 있습니다.

Nonce를 확인할 때 체크할 것

  • 계정 주소: 어떤 지갑 계정의 거래인지 확인합니다.
  • Transaction Hash: 각 거래의 정확한 TXID를 확인합니다.
  • 거래 상태: 처리 완료인지 Pending인지 확인합니다.
  • Nonce: 각 거래가 어떤 순서 값을 사용하는지 확인합니다.
  • 앞선 거래: 더 낮은 Nonce의 Pending 거래가 있는지 확인합니다.
  • Mempool: 거래가 아직 블록에 포함되지 않고 대기 중인지 확인합니다.
  • 대체 거래: Speed Up이나 Cancel을 사용했다면 같은 Nonce의 다른 거래가 있는지 확인합니다.
  • Confirmation: 거래가 블록에 포함됐다면 이후 확인 상태를 살펴봅니다.

Nonce 때문에 여러 거래가 동시에 멈춘 것처럼 보일 때

같은 계정에서 여러 거래를 연속으로 실행했는데 모두 Pending 상태처럼 보인다면 각각의 거래를 따로 보기보다 가장 앞선 Nonce의 거래부터 확인하는 것이 중요합니다.

일부 계정 기반 블록체인에서는 낮은 Nonce의 거래가 먼저 처리되어야 그다음 순서의 거래가 정상적으로 이어질 수 있습니다.

따라서 뒤쪽 거래의 수수료만 계속 조정하기보다 Block Explorer에서 어떤 Nonce의 거래가 먼저 막혀 있는지 확인하는 것이 좋습니다.

가장 낮은 Pending Nonce를 먼저 보는 이유

예를 들어 같은 계정에서 Nonce 20, 21, 22의 거래가 차례대로 만들어졌다고 생각해봅시다.

Nonce 20이 아직 처리되지 않았다면 네트워크 구조에 따라 21과 22도 앞선 거래가 처리되기를 기다릴 수 있습니다.

이 경우 문제의 시작점은 뒤쪽 거래가 아니라 가장 낮은 순서에서 Pending 상태로 남아 있는 거래일 수 있습니다.

뒤쪽 거래의 가스비만 높이면 먼저 처리될까?

반드시 그렇지는 않습니다.

계정 거래를 순서대로 처리해야 하는 구조에서는 더 높은 Nonce의 거래에 높은 수수료를 설정했더라도 앞선 Nonce가 처리되지 않았다면 바로 실행되지 못할 수 있습니다.

따라서 가스비뿐 아니라 거래 순서를 함께 확인해야 합니다.

Nonce가 꼬였다는 말은 무슨 뜻일까?

이용자들이 흔히 “Nonce가 꼬였다”고 표현하는 상황은 하나의 공식적인 거래 상태 이름이라기보다 여러 Pending 거래의 순서가 맞지 않거나 앞선 거래 때문에 뒤 거래들이 대기하는 상황 등을 가리킬 수 있습니다.

이런 경우에는 거래를 계속 추가하기보다 현재 계정의 처리 완료 거래와 Pending 거래를 구분하고 각각의 Nonce를 확인하는 것이 좋습니다.

문제 상황을 단순히 지갑 오류라고 판단하기보다 실제 온체인 거래 순서를 확인하는 것이 중요합니다.

지갑에 표시된 Nonce와 네트워크 상태가 다르게 보일 수도 있을까?

지갑이 사용하는 노드나 데이터 갱신 시점 등에 따라 사용자가 보는 Pending 상태와 네트워크의 최신 상태 사이에 차이가 나타날 수 있습니다.

특히 여러 거래를 빠르게 만들거나 대체 거래를 사용한 경우 지갑 화면이 복잡하게 보일 수 있습니다.

이럴 때는 각 Transaction Hash / TXID와 Block Explorer의 거래 정보를 함께 확인하는 것이 도움이 됩니다.

지갑을 껐다 켜면 Nonce 문제가 해결될까?

지갑 화면의 표시 문제라면 데이터가 새로 갱신되면서 상태가 달라 보일 수 있습니다.

하지만 실제 네트워크에 Pending 거래가 존재한다면 단순히 앱을 종료하거나 다시 실행한다고 온체인 거래 자체가 자동으로 사라지는 것은 아닙니다.

따라서 화면을 새로고침하는 것과 블록체인의 거래 상태가 변경되는 것을 구분해야 합니다.

지갑을 삭제하고 다시 설치하면 Pending 거래가 사라질까?

지갑 앱을 삭제했다고 이미 네트워크에 전달된 거래 자체가 자동으로 취소되는 것은 아닙니다.

지갑은 블록체인 거래를 확인하고 서명하는 인터페이스 역할을 할 수 있으며 실제 거래 상태는 네트워크에 의해 처리됩니다.

따라서 지갑 재설치 전에 복구 정보를 안전하게 확보하고 있는지 확인해야 하며 Pending 거래 문제를 해결하기 위해 무작정 앱을 삭제하는 것은 주의해야 합니다.

같은 Nonce의 거래가 Block Explorer에 여러 개 보이면?

Pending 거래를 Speed Up하거나 대체하는 과정에서 같은 계정과 Nonce를 사용하는 서로 다른 거래가 관찰될 수 있습니다.

이 경우 각 거래의 Transaction Hash와 수수료 조건, 현재 상태를 비교해야 합니다.

같은 Nonce를 사용한다는 이유만으로 모든 거래가 차례대로 실행되는 것은 아니며 네트워크 규칙에 따라 최종적으로 어떤 거래가 처리됐는지 확인해야 합니다.

대체 거래가 성공하면 기존 Transaction Hash는 어떻게 될까?

기존 거래와 같은 Nonce를 가진 대체 거래가 네트워크에서 최종 처리됐다면 기존 Pending 거래는 더 이상 동일한 계정 순서에서 별도로 실행될 수 없는 상태가 될 수 있습니다.

Block Explorer나 지갑에서는 기존 거래가 Dropped, Replaced 또는 이와 비슷한 상태로 표시될 수 있지만 표현은 서비스마다 다를 수 있습니다.

따라서 대체 작업 후에는 어떤 Transaction Hash가 실제 블록에 포함됐는지 확인하는 것이 중요합니다.

Speed Up을 여러 번 누르면 어떻게 될까?

지갑의 구현 방식에 따라 같은 Nonce를 사용하는 여러 대체 거래가 만들어질 가능성이 있습니다.

이렇게 되면 거래 내역이 복잡해져 어떤 요청이 최종적으로 처리되는지 초보자가 파악하기 어려울 수 있습니다.

따라서 거래가 바로 처리되지 않는다는 이유로 Speed Up을 반복하기보다 기존 대체 거래의 상태를 먼저 확인하는 것이 좋습니다.

Cancel을 눌렀는데 원래 거래가 실행될 수도 있을까?

가능성을 완전히 배제할 수 없습니다.

일부 지갑의 Cancel 기능은 아직 블록에 포함되지 않은 기존 거래를 같은 Nonce의 다른 거래로 대체하려는 방식으로 작동할 수 있습니다.

대체 거래보다 기존 거래가 먼저 블록에 포함된다면 원래 요청이 실행될 수 있으므로 Cancel이 절대적인 취소 보장을 의미한다고 생각해서는 안 됩니다.

이미 Confirmation이 생긴 거래를 Nonce로 취소할 수 있을까?

아닙니다.

거래가 이미 블록에 포함되어 Confirmation이 진행되고 있다면 과거의 Nonce 값을 이용해 해당 거래를 삭제하거나 되돌리는 방식으로 사용할 수 없습니다.

Nonce를 이용한 대체 개념은 아직 처리되지 않은 Pending 거래와 관련된 구조로 이해해야 합니다.

Nonce가 너무 높은 거래는 언제 처리될까?

해당 계정에서 그보다 낮은 필요한 Nonce들이 정상적으로 처리되면 이후 순서의 거래가 처리될 수 있습니다.

하지만 중간 Nonce가 빠져 있다면 높은 Nonce의 거래가 계속 대기할 수 있습니다.

따라서 높은 Nonce 거래 하나만 확인하지 말고 그 이전 순서에 빠진 거래가 있는지 살펴보는 것이 중요합니다.

빠진 Nonce를 채우면 뒤 거래가 자동으로 이어질까?

네트워크의 거래 순서 조건이 충족되면 이후 대기 거래가 처리될 수 있는 상황이 있습니다.

하지만 실제 블록 포함 시점은 수수료 조건과 네트워크 상태 등에 따라 달라질 수 있습니다.

따라서 앞선 거래가 처리됐다는 사실만으로 모든 후속 거래가 즉시 처리된다고 단정해서는 안 됩니다.

여러 기기에서 같은 지갑을 사용하면 Nonce가 충돌할 수 있을까?

같은 계정으로 여러 기기나 지갑 인터페이스에서 거의 동시에 거래를 만들면 각각이 최신 Pending 거래 상태를 다르게 인식하는 상황이 발생할 수 있습니다.

지갑 소프트웨어가 일반적으로 다음 Nonce를 자동 계산하지만 동기화 상태나 사용 방식에 따라 거래 관리가 복잡해질 수 있습니다.

여러 환경에서 같은 계정을 동시에 사용할 때는 기존 Pending 거래가 있는지 확인하는 것이 좋습니다.

DApp 거래에도 Nonce가 사용될까?

계정에서 DApp과 상호작용하기 위해 온체인 거래를 만들면 해당 계정의 거래 순서와 Nonce가 적용될 수 있습니다.

단순 코인 전송뿐 아니라 토큰 승인, DEX 교환과 스마트 컨트랙트 실행도 계정에서 발생하는 거래가 될 수 있습니다.

따라서 앞선 단순 전송이 Pending 상태라면 이후 DApp 거래에도 영향을 줄 수 있는 구조가 있습니다.

토큰 승인 거래도 Nonce 순서에 포함될까?

토큰 승인이 해당 계정에서 온체인 거래로 실행된다면 계정 거래 순서의 일부가 될 수 있습니다.

이후 실제 DApp 작업을 별도의 거래로 실행한다면 승인 거래와 실행 거래가 서로 다른 Nonce를 사용할 수 있습니다.

앞선 승인 거래가 Pending 상태라면 이후 작업이 예상대로 진행되지 않는 상황도 확인해야 합니다.

Smart Account에서도 Nonce가 있을까?

Smart Account와 Account Abstraction 구조에서도 재사용 방지와 작업 순서 관리 등을 위한 Nonce 개념이 사용될 수 있습니다.

다만 일반적인 EOA의 순차적인 Transaction Nonce와 완전히 동일한 방식만 사용한다고 생각해서는 안 됩니다.

Smart Account와 프로토콜의 구현에 따라 Nonce를 관리하는 방식이 더 유연하거나 복잡할 수 있습니다.

Account Abstraction의 Nonce는 왜 다르게 보일 수 있을까?

Account Abstraction 구조에서는 일반적인 거래와 다른 사용자 작업 요청이나 별도의 계정 검증 규칙이 사용될 수 있습니다.

이 때문에 Nonce가 단순히 하나씩 증가하는 거래 번호보다 더 다양한 방식으로 관리될 수 있습니다.

따라서 Smart Account에서 Nonce 문제가 발생했다면 일반 지갑의 해결 방법을 그대로 적용하기보다 해당 지갑의 공식 구조를 확인해야 합니다.

Nonce를 직접 수정해야 하는 상황은 흔할까?

일반적인 지갑 사용에서는 지갑 소프트웨어가 Nonce를 자동으로 관리하므로 이용자가 직접 값을 입력할 필요가 없는 경우가 많습니다.

수동 Nonce 기능은 특정 Pending 거래 문제를 처리하거나 고급 거래 설정을 사용하는 상황에서 제공될 수 있습니다.

초보자는 구조를 정확하게 이해하지 못한 상태에서 Nonce를 임의로 수정하지 않는 것이 중요합니다.

Nonce 문제를 확인하는 기본 순서

  • 1. 계정 확인: 문제가 발생한 정확한 지갑 주소를 확인합니다.
  • 2. TXID 확인: 현재 Pending 상태인 거래들의 Transaction Hash를 확인합니다.
  • 3. Nonce 비교: 각 거래가 사용하는 Nonce를 확인합니다.
  • 4. 가장 낮은 Pending 거래 확인: 처리되지 않은 가장 앞선 순서의 거래를 찾습니다.
  • 5. 수수료 확인: 해당 거래의 수수료 조건과 현재 네트워크 상황을 확인합니다.
  • 6. 대체 거래 확인: 같은 Nonce를 사용하는 Speed Up 또는 Cancel 거래가 있는지 확인합니다.
  • 7. 블록 포함 확인: 어떤 Transaction Hash가 실제 블록에 포함됐는지 확인합니다.
  • 8. 후속 거래 확인: 앞선 거래 처리 후 뒤쪽 Nonce 거래들의 상태를 다시 확인합니다.

Nonce를 확인한 뒤 체크할 것

  • 거래 순서: Nonce가 의도한 순서로 이어지고 있는지 확인합니다.
  • Pending 거래: 더 낮은 Nonce의 거래가 남아 있는지 확인합니다.
  • 중복 Nonce: 같은 Nonce를 사용하는 여러 거래가 존재하는지 확인합니다.
  • 최종 TXID: 실제 블록에 포함된 Transaction Hash가 무엇인지 확인합니다.
  • 가스비: 대체 또는 취소 과정에서 추가 비용이 발생했는지 확인합니다.
  • Confirmation: 최종 처리된 거래의 확인 상태를 확인합니다.
  • 후속 거래: 뒤에서 기다리던 거래들이 정상적으로 처리되고 있는지 확인합니다.

Nonce에서 가장 중요한 습관

Nonce에서 가장 중요한 것은 “Pending 거래가 많으면 새로운 거래를 계속 만들어 해결하면 된다”고 생각하지 않는 것입니다.

하나의 낮은 Nonce 거래가 처리되지 않아 이후 거래가 함께 기다리고 있을 수 있으며, 무분별한 Speed Up이나 Cancel은 같은 Nonce의 거래를 여러 개 만들어 상황을 더 복잡하게 만들 수 있습니다.

따라서 계정 확인 → 가장 낮은 Pending Nonce 확인 → 기존 TXID와 수수료 확인 → 대체 거래 여부 확인 → 실제 블록 포함 확인 → 후속 거래 확인 순서로 살펴보는 것이 중요합니다.

FAQ

Q. Nonce는 무엇인가요?
Nonce는 블록체인에서 여러 의미로 사용될 수 있지만, 계정 기반 거래에서는 특정 계정에서 발생하는 거래의 순서를 관리하고 이미 처리된 거래의 반복 실행을 방지하는 데 사용되는 값으로 이해할 수 있습니다.

Q. Nonce는 직접 입력해야 하나요?
일반적인 지갑에서는 소프트웨어가 현재 계정 상태를 확인해 Nonce를 자동으로 설정하는 경우가 많습니다. 특별한 이유가 없다면 초보자가 직접 값을 변경할 필요는 없습니다.

Q. 앞선 거래가 Pending이면 다음 거래도 멈출 수 있나요?
일부 계정 기반 블록체인에서는 그럴 수 있습니다. 더 낮은 Nonce의 거래가 아직 처리되지 않았다면 이후 순서의 거래가 앞선 거래를 기다리는 상황이 발생할 수 있습니다.

Q. 같은 Nonce의 거래가 두 개 있으면 둘 다 실행되나요?
같은 계정에서 동일한 Nonce를 사용하는 여러 거래가 모두 독립적으로 차례대로 실행된다고 생각해서는 안 됩니다. 네트워크 규칙에 따라 하나의 거래가 기존 Pending 거래를 대체하는 구조가 사용될 수 있습니다.

Q. Speed Up은 Nonce와 어떤 관계가 있나요?
일부 지갑에서는 기존 Pending 거래와 같은 Nonce를 사용하면서 다른 수수료 조건을 가진 거래를 제출해 기존 거래를 대체하는 방식으로 Speed Up 기능을 구현할 수 있습니다. 실제 방식은 네트워크와 지갑마다 다를 수 있습니다.

Q. Cancel을 누르면 거래가 완전히 삭제되나요?
그렇게 이해해서는 안 됩니다. 일부 지갑의 Cancel 기능은 아직 처리되지 않은 거래와 같은 Nonce를 사용하는 다른 거래를 제출해 기존 거래를 대체하려는 방식으로 작동할 수 있습니다. 이미 블록에 포함된 거래를 삭제하는 기능은 아닙니다.

Q. Nonce를 잘못 설정하면 자산을 잃을 수 있나요?
Nonce를 잘못 설정하면 거래가 오랫동안 Pending 상태로 남거나 이후 거래의 처리 순서에 문제가 생길 수 있습니다. 또한 거래를 반복하거나 대체하는 과정에서 추가 가스비가 발생할 수 있으므로 수동 변경은 주의해야 합니다.

Q. Proof of Work에서 말하는 Nonce도 같은 건가요?
같은 단어가 사용되지만 맥락이 다릅니다. 이번 54화에서 다룬 Nonce는 주로 계정 거래 순서를 관리하는 Transaction Nonce입니다. Proof of Work에서는 블록 생성 과정에서 조건에 맞는 해시를 찾는 과정과 관련해 Nonce라는 용어가 사용될 수 있으며, 이 내용은 57화에서 자세히 알아봅니다.

Nonce를 쉽게 기억하는 방법

“같은 계정에서 거래가 어떤 순서로 처리되어야 하는지 구분하는 번호표와 비슷한 값”이라고 기억하면 됩니다.

지금까지 배운 거래 흐름과 연결하면 다음처럼 이해할 수 있습니다.

Nonce로 거래 순서 구분 → Mempool에서 Pending → 블록 포함 → Confirmation

그리고 Transaction Hash / TXID와도 구분해야 합니다.

Transaction Hash = 특정 거래가 무엇인지 식별
Nonce = 같은 계정에서 거래의 순서를 관리

핵심 정리

Nonce(논스)는 계정 기반 블록체인에서 특정 계정의 거래 순서를 관리하고 거래의 반복 실행을 방지하는 데 사용될 수 있는 값입니다.

앞선 Nonce의 거래가 Pending 상태로 남아 있으면 이후 순서의 거래도 처리를 기다리는 상황이 발생할 수 있습니다.

일부 지갑의 Speed Up이나 Cancel 기능에서는 같은 Nonce를 가진 다른 거래를 제출해 기존 Pending 거래를 대체하는 구조가 사용될 수 있습니다.

하지만 Nonce는 이미 처리된 거래를 되돌리는 취소 번호가 아니며, 초보자가 거래 상태를 확인하지 않고 임의로 값을 변경하면 오히려 거래 관리가 복잡해질 수 있습니다.

따라서 Nonce 문제를 확인할 때는 계정 주소 → Transaction Hash → 가장 낮은 Pending Nonce → 수수료 조건 → 같은 Nonce의 대체 거래 → 실제 블록 포함 → Confirmation → 후속 거래 순서로 살펴보는 것이 중요합니다.

다음 55화에서는 블록체인에서 특정 블록의 순서를 나타내는 Block Height(블록 높이)를 자세히 알아봅니다.

참고 자료

Nonce의 의미와 관리 방식은 블록체인에 따라 다를 수 있습니다. 계정 거래 순서를 관리하는 Transaction Nonce와 Proof of Work에서 사용되는 Nonce는 서로 다른 맥락이므로 구분해야 합니다. 실제 Pending 거래의 Nonce를 조정하거나 Speed Up·Cancel 기능을 이용할 때는 해당 블록체인과 지갑의 최신 공식 안내를 우선 확인하는 것이 좋습니다.

Disclaimer

본 콘텐츠는 Nonce, Pending 거래, Mempool 및 블록체인 거래 처리 구조에 대한 일반적인 정보 제공과 이용자 보호를 목적으로 하며 특정 가상자산, 지갑, 네트워크, 거래소 또는 투자 참여를 권유하지 않습니다. Nonce의 수동 변경이나 Pending 거래의 Speed Up·Cancel·대체 과정에는 거래 지연, 추가 네트워크 비용, 잘못된 거래 설정 및 원금 손실을 포함한 다양한 위험이 존재할 수 있습니다. 실제 이용 전 해당 블록체인과 지갑의 최신 공식 자료 및 현재 온체인 거래 상태를 직접 확인하시기 바랍니다.