Solo con fines educativos; no constituye asesoramiento ni recomendación de inversión. Las inversiones pueden ocasionar pérdidas.
Respuesta directa
Un nonce es un valor cuyo significado procede de un espacio de nombres específico del protocolo. No siempre es un número aleatorio ni un valor universal «usado una sola vez». En Ethereum, el nonce de estado de una cuenta de propiedad externa ordena y valida las transacciones de ese remitente. Un contrato puede mantener nonces de aplicación independientes en storage para permisos o intenciones firmadas. Las smart accounts ERC-4337 pueden usar un nonce estructurado de UserOperation con carriles paralelos de clave y secuencia. En el Proof of Work de Bitcoin, el nonce de la cabecera es un campo de búsqueda acotado para probar hashes candidatos.
Estos valores no son intercambiables. El nonce de una cuenta Ethereum no protege una firma arbitraria de datos tipados si la aplicación no valida su propio dominio y campo anti-replay. Un nonce de cabecera PoW no ordena transacciones de cuentas. El mismo número usado por distintos remitentes, contratos, cadenas o carriles describe estados diferentes.
Cómo funciona
- Identifique el espacio de nombres antes de leer el número: transacción EOA, estado de cuenta contractual, storage de aplicación,
UserOperationERC-4337 o cabecera PoW concreta. Fije cadena, fork y versión, cuenta u owner, contrato verificador y dominio, EntryPoint o formato de cabecera según corresponda. - Lea el estado autoritativo con un block tag explícito. Separe el nonce canónico de la EOA del recuento pending del proveedor, el valor
nonces(owner)de la aplicación, la clave y secuencia ERC-4337 y el contador local de búsqueda del minero. La coincidencia entre RPC no sustituye verificar recibo y estado canónicos. - Construya el linaje firmado. Registre remitente u owner, cadena y dominio, nonce, payload, deadline, contrato verificador, hash de transacción o mensaje y cada sustitución. En transacciones Ethereum, reglas de dominio como EIP-155 complementan el nonce; este por sí solo no evita por completo replay entre cadenas.
- Asigne dentro del carril correcto. Coordine firmantes EOA concurrentes para asignar una vez cada secuencia canónica; conserve gaps y linaje de sustituciones con el mismo nonce. En aplicaciones o smart accounts, siga las reglas atómicas de comprobación e incremento y de carriles del contrato, no un supuesto contador global.
- Envíe según las reglas de admisión correctas. Las políticas pending y de sustitución del execution client son locales; los bundlers ERC-4337 validan objetos
UserOperationsegún EntryPoint y la cuenta; una firma EIP-712 o permit puede viajar dentro de la transacción de otro. Ninguna aceptación local prueba inclusión canónica. - Siga todo el resultado. Distinga rechazado, pending, queued, sustituido, incluido con éxito, incluido con
status = 0, retirado por reorganización y finalizado. Una transacción Ethereum incluida incrementa el nonce del remitente aunque la EVM revierta; el nonce de aplicación actualizado dentro de esa llamada revierte con ella. - Concilie antes de reintentar. Verifique recibo canónico, hash de bloque, nonce del remitente, storage de aplicación, evento o recibo ERC-4337 y finalidad. En PoW, verifique cabecera completa y target, no solo nonce; al agotar el campo finito, los mineros modifican otros datos que afectan a la cabecera para crear otro espacio de búsqueda.
Ejemplos desarrollados
- Un revert incluido consume el nonce EOA. El nonce canónico del remitente es
12. Una transacción con nonce12se incluye constatus = 0, usa50,000gas a30 gweiy cuesta50,000 * 30 gwei = 0.0015 ETH. Los cambios del contrato revierten, pero el nonce canónico pasa a13. Si una reorganización retira el bloque, puede volver a12; la cartera debe revisar todo el linaje. - Los nonces de aplicación y relayer son independientes. Un owner tiene nonce EOA
18; un token ERC-2612 informanonces(owner) = 7; el nonce EOA del relayer es42. Un permit correcto consume el nonce de aplicación7, que pasa a8; la inclusión lleva el nonce del relayer a43y deja el del owner en18. Si toda la llamada revierte, el relayer sigue pasando a43, pero el storage del token vuelve a7. - Carriles ERC-4337. Con la expresión didáctica
nonce = (key << 64) | sequence, la clave5y secuencia9dan5 * 2^64 + 9 = 92,233,720,368,547,758,089; la secuencia10da92,233,720,368,547,758,090. La clave independiente6, secuencia0, da110,680,464,442,257,309,696. El paralelismo aún depende de la validación de la smart account y es independiente del nonce EOA del bundler. - Nonce de búsqueda PoW. El nonce de cabecera Bitcoin tiene
32 bits, es decir,2^32 = 4,294,967,296candidatos numéricos. A unos hipotéticos100 TH/s, recorrerlos requiere4,294,967,296 / 100,000,000,000,000 = 0.00004294967296 seconds = 42.94967296 microseconds. Los mineros cambian extraNonce de coinbase, tiempo o conjunto de transacciones para alterar la raíz de Merkle y obtener nuevas cabeceras; este campo no es estado anti-replay de cuentas.
Riesgos
- Confundir espacios EOA, contrato, aplicación, ERC-4337 y PoW.
- Leer el nonce de cadena, fork, contrato o EntryPoint incorrectos.
- Usar una respuesta RPC obsoleta, incoherente o maliciosa.
- Que firmantes concurrentes asignen el mismo nonce EOA.
- Que un gap de nonce bloquee candidatos locales posteriores.
- Tratar el nonce pending de un proveedor como estado canónico.
- Olvidar que un revert incluido consume nonce EOA y gas.
- No restaurar nonce y linaje tras una reorganización.
- Que una sustitución no satisfaga la política de comisión del nodo.
- Suponer que la sustitución borró globalmente la transacción antigua.
- Correlacionar números iguales de remitentes o dominios distintos.
- Omitir chain ID u otro separador de dominio requerido.
- No comprobar e incrementar atómicamente un nonce de aplicación.
- Owner, deadline, domain separator o token ERC-2612 incorrectos.
- Replay de firma entre cadena, contrato o versión.
- Interpretar el nonce de una cuenta contractual como contador genérico de llamadas.
- Empaquetar mal clave o ancho de secuencia ERC-4337.
- Mezclar nonce EOA del bundler y nonce
UserOperationde la smart account. - Que un upgrade de proxy o colisión de storage cambie el nonce de aplicación.
- Tratar un nonce PoW finito como autorización, estado anti-replay o prueba aislada.
Conceptos erróneos habituales
- Todo campo llamado nonce significa lo mismo y se usa globalmente una vez.
- Un nonce mayor hace una transacción más segura, rápida o final.
- Una transacción Ethereum que revierte no consume el nonce del remitente.
- Un nonce por sí solo impide cualquier replay entre cadenas, contratos y mensajes tipados.
- Toda smart account ERC-4337 tiene un contador lineal idéntico al nonce EOA.
Temas relacionados
Fuentes
- Ethereum accounts - Ethereum.org (consultado: 2026-08-13)
- Transactions - Ethereum.org (consultado: 2026-08-13)
- EIP-2681: Limit account nonce to 2^64-1 - Ethereum Improvement Proposals (consultado: 2026-08-13)
- EIP-155: Simple replay attack protection - Ethereum Improvement Proposals (consultado: 2026-08-13)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (consultado: 2026-08-13)
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (consultado: 2026-08-13)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals (consultado: 2026-08-13)
- Block Chain - Bitcoin Developer Documentation (consultado: 2026-08-13)