﻿---
title: "암호화폐의 Nonce 네임스페이스"
description: "Ethereum 계정 Nonce, 애플리케이션 계층 재전송 방지 Nonce, ERC-4337 키·시퀀스 레인, 작업증명 블록 헤더 탐색 Nonce를 설명합니다."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 암호화폐의 Nonce 네임스페이스

> 교육 목적의 정보일 뿐 거래나 서명에 관한 조언이 아닙니다. Nonce라는 이름은 서로 무관한 여러 필드를 가리킵니다. 할당, 교체 또는 재사용 전에 정확한 체인, 계정, 컨트랙트, 도메인, EntryPoint 또는 블록 헤더 사양과 canonical 상태를 확인하세요.

<a id="answer"></a>

## 핵심 답변

Nonce는 특정 프로토콜 네임스페이스에 따라 의미가 정해지는 값입니다. 항상 난수인 것도, 전역에서 “한 번만 쓰는” 보편적 값인 것도 아닙니다. Ethereum에서는 외부 소유 계정의 상태 Nonce가 해당 발신자의 트랜잭션을 정렬하고 검증합니다. 컨트랙트는 permit이나 서명된 인텐트를 위해 별도의 애플리케이션 Nonce를 스토리지에 둘 수 있습니다. ERC-4337 스마트 계정은 키와 시퀀스를 병렬 레인으로 나눈 구조화된 `UserOperation` Nonce를 사용할 수 있습니다. Bitcoin 작업증명에서 블록 헤더 Nonce는 후보 해시를 탐색할 때 쓰는 유한한 필드입니다.

이 값들은 서로 바꿔 쓸 수 없습니다. 애플리케이션이 자체 도메인과 재전송 방지 필드를 검증하지 않으면 Ethereum 계정 Nonce는 임의의 타입 데이터 서명을 보호하지 못합니다. PoW 헤더 Nonce는 계정 트랜잭션을 정렬하지 않습니다. 발신자, 컨트랙트, 체인 또는 레인이 다르면 같은 숫자의 Nonce도 서로 다른 상태를 뜻합니다.

<a id="mechanism"></a>

## 작동 방식

1. 숫자를 읽기 전에 EOA 트랜잭션, 컨트랙트 계정 상태, 애플리케이션 스토리지, ERC-4337 `UserOperation`, 특정 PoW 블록 헤더 중 어느 네임스페이스인지 식별합니다. 필요에 따라 체인 ID, 포크와 프로토콜 버전, 계정 또는 소유자, 검증 컨트랙트와 도메인, EntryPoint 또는 헤더 형식을 고정합니다.
2. 명시적인 블록 태그에서 권위 있는 상태를 읽습니다. canonical EOA 계정 Nonce, 공급자가 제시한 pending count, 애플리케이션의 `nonces(owner)` 스토리지 값, ERC-4337 키와 시퀀스, 채굴자의 로컬 헤더 탐색 카운터를 구분합니다. 여러 RPC의 결과가 같아도 canonical receipt와 state 검증을 대체하지는 못합니다.
3. 서명 계보를 만듭니다. 발신자 또는 소유자, 체인과 도메인, Nonce, 페이로드, 기한, 검증 컨트랙트, 트랜잭션 또는 메시지 해시와 모든 교체를 기록합니다. Ethereum 트랜잭션에서는 EIP-155 같은 체인 도메인 규칙이 계정 Nonce를 보완합니다. Nonce만으로는 완전한 크로스체인 재전송 방지가 되지 않습니다.
4. 올바른 레인 안에서 할당합니다. 동시에 서명하는 EOA 주체를 조율해 각 canonical 시퀀스를 한 번만 할당하고, 공백과 동일 Nonce 교체 계보를 보존합니다. 애플리케이션이나 스마트 계정에서는 단일 전역 카운터를 가정하지 말고 해당 컨트랙트의 원자적 확인·증가 및 레인 규칙을 따릅니다.
5. 올바른 수용 규칙에 따라 제출합니다. 실행 클라이언트의 pending 및 교체 정책은 로컬 정책입니다. ERC-4337 bundler는 EntryPoint와 계정 규칙에 따라 `UserOperation` 객체를 검증합니다. EIP-712 또는 permit 서명은 다른 사람의 트랜잭션 안에서 릴레이될 수 있습니다. 이런 로컬 수용 경로는 어느 것도 canonical inclusion을 증명하지 않습니다.
6. 전체 결과를 추적합니다. 거부, pending, queued, 교체됨, 성공적으로 포함됨, `status = 0`으로 포함됨, reorg로 제거됨, finalized를 구분합니다. Ethereum 트랜잭션이 포함되면 EVM 실행이 revert되어도 발신자의 계정 Nonce는 증가합니다. 반면 revert된 호출 안에서 갱신한 애플리케이션 스토리지 Nonce는 롤백됩니다.
7. 재시도 전에 대조합니다. canonical receipt, 블록 해시, 발신자 Nonce, 애플리케이션 스토리지, ERC-4337 이벤트 또는 receipt와 finality를 확인합니다. PoW에서는 Nonce만이 아니라 전체 헤더와 목표값을 검증합니다. 유한한 Nonce 필드를 모두 탐색하면 채굴자는 헤더에 영향을 주는 다른 데이터를 바꿔 새 탐색 공간을 만듭니다.

<a id="example"></a>

## 계산 예시

- **revert되어도 EOA Nonce는 소모됩니다.** canonical 발신자 Nonce는 `12`입니다. Nonce가 `12`인 트랜잭션이 `status = 0`으로 포함되고, `50,000` gas를 `30 gwei`에 사용하면 비용은 `50,000 * 30 gwei = 0.0015 ETH`입니다. 컨트랙트 변경은 revert되지만 canonical 발신자 Nonce는 `13`이 됩니다. reorg로 해당 블록이 제거되면 Nonce는 `12`로 돌아갈 수 있으므로 지갑은 전체 트랜잭션 계보를 다시 확인해야 합니다.
- **애플리케이션 Nonce와 릴레이어 Nonce는 별개입니다.** 소유자의 EOA 계정 Nonce는 `18`, ERC-2612 토큰 값은 `nonces(owner) = 7`, 릴레이어 EOA Nonce는 `42`입니다. permit이 성공하면 애플리케이션 Nonce `7`을 소모해 `8`이 되고, 포함으로 릴레이어 Nonce는 `43`이 되지만 소유자의 EOA Nonce는 `18`로 유지됩니다. 호출 전체가 revert되어도 릴레이어 Nonce는 `43`이 되지만 토큰 스토리지 갱신은 `7`로 롤백됩니다.
- **ERC-4337 레인.** 교육용 패킹 식 `nonce = (key << 64) | sequence`에서 키 `5`, 시퀀스 `9`는 `5 * 2^64 + 9 = 92,233,720,368,547,758,089`입니다. 시퀀스 `10`은 `92,233,720,368,547,758,090`입니다. 독립적인 키 `6`, 시퀀스 `0`은 `110,680,464,442,257,309,696`입니다. 병렬 사용 가능 여부는 스마트 계정의 검증 로직에 달려 있으며 bundler의 EOA 트랜잭션 Nonce와도 별개입니다.
- **PoW 탐색 Nonce.** Bitcoin 헤더 Nonce는 `32 bits`이므로 `2^32 = 4,294,967,296`개의 숫자 후보가 있습니다. 가정한 속도 `100 TH/s`에서 이 숫자 공간의 탐색 시간은 `4,294,967,296 / 100,000,000,000,000 = 0.00004294967296 seconds = 42.94967296 microseconds`입니다. 채굴자는 coinbase extraNonce, 시각 또는 트랜잭션 집합을 바꿔 Merkle root와 헤더를 새로 만듭니다. 이 필드는 계정 재전송 방지 상태가 아닙니다.

<a id="risks"></a>

## 위험

- EOA, 컨트랙트, 애플리케이션, ERC-4337, PoW Nonce 네임스페이스를 혼동하는 경우.
- 잘못된 체인, 포크, 컨트랙트 또는 EntryPoint에서 Nonce를 읽는 경우.
- 오래되거나 불일치하거나 악의적인 RPC 응답을 사용하는 경우.
- 동시 서명자가 같은 EOA 트랜잭션 Nonce를 할당하는 경우.
- Nonce 공백이 후속 로컬 트랜잭션 후보를 막는 경우.
- 공급자의 pending Nonce를 canonical state로 간주하는 경우.
- 포함 후 revert된 트랜잭션도 EOA Nonce와 gas를 소모한다는 점을 잊는 경우.
- reorg 후 Nonce와 후보 트랜잭션 계보를 복원하지 않는 경우.
- 동일 Nonce 교체가 대상 노드의 수수료 정책을 충족하지 못하는 경우.
- 교체가 기존 서명 트랜잭션을 전 세계에서 삭제했다고 가정하는 경우.
- 서로 다른 발신자나 도메인의 같은 숫자 Nonce를 연관 짓는 경우.
- 체인 ID 또는 다른 필수 서명 도메인 구분자를 누락하는 경우.
- 애플리케이션 Nonce를 원자적으로 확인하고 증가시키지 않는 경우.
- ERC-2612 소유자, 기한, domain separator 또는 토큰 컨트랙트가 잘못된 경우.
- 애플리케이션 서명이 체인, 컨트랙트 또는 버전을 넘어 재전송되는 경우.
- 컨트랙트 계정의 state nonce를 일반 호출 횟수로 오해하는 경우.
- ERC-4337 Nonce 키 또는 시퀀스 비트 폭을 잘못 패킹하는 경우.
- bundler EOA Nonce와 스마트 계정의 `UserOperation` Nonce를 혼동하는 경우.
- 프록시 업그레이드나 스토리지 충돌이 애플리케이션 Nonce 동작을 바꾸는 경우.
- 유한한 PoW 탐색 Nonce 자체를 권한, 재전송 상태 또는 증명으로 간주하는 경우.

<a id="misconceptions"></a>

## 흔한 오해

- Nonce라는 모든 필드는 같은 뜻이며 전 세계에서 한 번만 사용됩니다.
- Nonce가 클수록 트랜잭션이 더 안전하고 빠르며 final에 가깝습니다.
- revert된 Ethereum 트랜잭션은 발신자 Nonce를 소모하지 않습니다.
- Nonce만으로 모든 크로스체인, 크로스컨트랙트, 타입 메시지 재전송을 방지할 수 있습니다.
- 모든 ERC-4337 스마트 계정은 EOA 트랜잭션 Nonce와 동일한 선형 카운터 하나만 사용합니다.

<a id="related"></a>

## 관련 주제

- [계정 기반 모델](/ko/crypto/account-based-model/)
- [Mempool 트랜잭션 교체](/ko/crypto/mempool-replacement/)
- [계정 추상화](/ko/crypto/account-abstraction/)

<a id="sources"></a>

## 출처

- [Ethereum accounts](https://ethereum.org/developers/docs/accounts/) - Ethereum.org(확인일: 2026-08-13)
- [Transactions](https://ethereum.org/developers/docs/transactions/) - Ethereum.org(확인일: 2026-08-13)
- [EIP-2681: Limit account nonce to 2^64-1](https://eips.ethereum.org/EIPS/eip-2681) - Ethereum Improvement Proposals(확인일: 2026-08-13)
- [EIP-155: Simple replay attack protection](https://eips.ethereum.org/EIPS/eip-155) - Ethereum Improvement Proposals(확인일: 2026-08-13)
- [EIP-712: Typed structured data hashing and signing](https://eips.ethereum.org/EIPS/eip-712) - Ethereum Improvement Proposals(확인일: 2026-08-13)
- [ERC-2612: Permit Extension for EIP-20 Signed Approvals](https://eips.ethereum.org/EIPS/eip-2612) - Ethereum Improvement Proposals(확인일: 2026-08-13)
- [ERC-4337: Account Abstraction Using Alt Mempool](https://eips.ethereum.org/EIPS/eip-4337) - Ethereum Improvement Proposals(확인일: 2026-08-13)
- [Block Chain](https://developer.bitcoin.org/reference/block_chain.html) - Bitcoin Developer Documentation(확인일: 2026-08-13)

Source: https://wiki.fcontext.com/ko/crypto/nonce-crypto/index.mdx
