# 왜 전송 상태가 계속 Pending으로 표시되나요?

주된 이유는 두 가지입니다.\
**첫째**, 블록체인 네트워크에 거래가 몰려 **혼잡(congestion)** 이 발생한 경우입니다. 이때는 가스비를 높여 거래를 가속하거나, 블록이 순차적으로 거래를 포장할 때까지 기다려야 합니다.\
**둘째**, 전송 시 설정한 **채굴 수수료(가스비)가 너무 낮은 경우** 입니다. 채굴자는 가스비가 높은 거래를 우선적으로 포장하기 때문에, 가스비가 낮게 설정된 거래는 오랫동안 Pending 상태로 남을 수 있습니다.

이 문제를 정확히 이해하려면 **Nonce** 라는 개념을 알아야 합니다.

Nonce(넘스)는 암호화 통신에서 **한 번만 사용할 수 있는 숫자(Number once)** 를 의미합니다. 인증 프로토콜에서 재전송 공격(replay attack)을 방지하기 위해 사용되는 무작위 또는 의사 난수 값입니다.

블록체인에서는 각 거래에 Nonce 값이 있으며, 이는 **해당 주소에서 발행한 거래 횟수** 를 계산하는 데 사용됩니다. 모든 전송은 발신 시점 기준으로 0부터 시작해 순서대로 Nonce가 부여됩니다. 주소가 거래를 한 번 전송할 때마다 Nonce는 1씩 증가하며, 다른 주소에서 이 주소로 전송하는 거래는 이 주소의 Nonce에 영향을 주지 않습니다.

![](https://2516903027-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMJyYRLFVRsMrfcXuRV%2F-Mcx3zqGhTKl5Gy5WedW%2F-McxJkJRHfq8ZpNUtxMd%2Fnonce%E5%80%BC.jpeg?alt=media\&token=ad3fc5a4-6304-45cd-9b46-bb32ddb4ad11)

Nonce와 관련해 블록체인에는 다음과 같은 규칙이 있습니다.

1\. 채굴자는 **Nonce가 작은 거래부터 큰 거래 순서로** 블록에 포함합니다. 따라서 Nonce가 0인 거래가 아직 포장되지 않았다면, Nonce 1, 2, 3… 에 해당하는 다른 거래는 가스비를 아무리 높게 설정해도 대기 상태에 머무르게 됩니다.

2\. Nonce는 **연속적이어야 하며, 건너뛸 수 없습니다.** 예를 들어 Nonce 1에 해당하는 거래가 아직 발행되지 않았다면, Nonce를 0에서 바로 2로 건너뛸 수 없습니다. 즉, Nonce 2 거래는 반드시 Nonce 1 거래 이후에만 포장될 수 있습니다.

3\. **동일한 Nonce를 가진 두 개의 거래가 존재할 경우**, 그 중 하나가 먼저 성공하면 다른 한 건은 대체되어(덮어써져) 실패 처리됩니다.

따라서 전송 가속의 원리는 간단합니다.\
**같은 Nonce 값을 사용하되 더 높은 가스비를 설정한 새로운 거래를 다시 보내 기존 거래를 덮어쓰는 것** 입니다. 이렇게 하면 채굴자가 더 높은 수수료가 걸린 새 거래를 우선적으로 포장하게 되어, 원래 거래보다 더 빨리 처리됩니다.
