¿Qué es un nonce?
Un nonce es un valor único pensado para utilizarse una sola vez en un contexto criptográfico, de blockchain o de contrato inteligente específico.En el ámbito cripto, suele entenderse como la abreviatura de «number used once» (número utilizado una sola vez).Un nonce puede ser un contador de transacciones sencillo, un campo de minería, un valor aleatorio, un dato de entrada para una firma, un ID de autorización de un contrato inteligente o un número de secuencia que impide repetir acciones.Su significado exacto depende del lugar en el que aparezca.En una cuenta de Ethereum, un nonce ayuda a ordenar las transacciones y evita que una misma transacción firmada se ejecute más de una vez.En la cabecera de un bloque de Bitcoin, el nonce es un campo que los mineros modifican mientras buscan un hash válido de Proof of Work.En un permiso de token, un nonce ayuda a impedir que se reutilice la misma aprobación firmada.En la firma ECDSA, un nonce puede ser un valor secreto específico de cada firma; una generación deficiente del nonce puede dejar expuesta una clave privada.Como la misma palabra aparece en varios sistemas cripto, conviene aclarar siempre a qué tipo de nonce se hace referencia.La idea común más importante es la unicidad.Un nonce resulta útil porque hace que una acción, un intento de hash, un mensaje, una transacción o una firma sean distintos de los demás.Esa unicidad contribuye a la protección contra ataques de repetición, al orden de las operaciones, a la minería, a la seguridad del cifrado, a la seguridad de los contratos, a la usabilidad de las wallets y a la protección de las claves privadas.Aspectos clave sobre los nonces
- Un nonce es un valor pensado para utilizarse una sola vez dentro de un contexto definido.
- Las cuentas de Ethereum utilizan nonces para ordenar las transacciones y evitar que se repitan.
- Los mineros de Bitcoin modifican el nonce de la cabecera del bloque mientras buscan un hash de Proof of Work que cumpla el objetivo.
- Los contratos inteligentes suelen utilizar nonces para impedir que se reutilicen permisos firmados, votos, reclamaciones y meta-transacciones.
- El permiso ERC-2612 utiliza nonces del titular para impedir que se reutilice la misma firma de aprobación de un token.
- Las cuentas inteligentes ERC-4337 utilizan un modelo de nonce más flexible para los flujos de abstracción de cuentas.
- EIP-155 añade protección contra ataques de repetición mediante el ID de cadena, que funciona junto con los nonces de transacción.
- Los mensajes estructurados de EIP-712 siguen necesitando comprobaciones de nonce a nivel de aplicación, ya que los datos tipados no impiden automáticamente todos los ataques de repetición.
- Los nonces de firma ECDSA deben ser secretos y únicos, porque reutilizarlos o utilizar patrones predecibles puede revelar claves privadas.
- Los usuarios no deberían cambiar manualmente los nonces de sus wallets salvo que entiendan las transacciones pendientes y el comportamiento de sustitución.
Por qué son importantes los nonces en las criptomonedas
Los nonces son importantes porque las blockchains se basan en firmas, hashes y reglas deterministas.Cualquiera que vea una firma digital válida puede copiarla exactamente.Muchos nodos pueden volver a difundir una transacción.Un contrato inteligente puede aceptar de nuevo el mismo mensaje firmado si no comprueba si ya se ha utilizado.Un minero puede probar muchas entradas de hash mientras busca un bloque válido.Una wallet puede crear muchas transacciones desde la misma dirección y debe mantenerlas en un orden válido.Los nonces ayudan a todos estos sistemas a evitar confusiones, duplicaciones, repeticiones y reutilizaciones inseguras.Sin nonces, los sistemas cripto tendrían dificultades para distinguir una acción nueva de otra antigua que se ha copiado.Un usuario podría aprobar una vez a un gastador de tokens y permitir accidentalmente que se vuelva a utilizar la misma firma.Un bridge podría procesar dos veces el mismo mensaje cross-chain.Una transacción podría repetirse en otra cadena.Una wallet de firma podría filtrar su clave privada debido a un nonce criptográfico débil.Los nonces son valores pequeños, pero protegen grandes cantidades de valor digital.Nonce de cuenta de Ethereum
El nonce de una cuenta de Ethereum es un contador asociado a una cuenta.La documentación de cuentas de Ethereum explica que una cuenta tiene un campo nonce y que solo puede ejecutarse una transacción con un nonce determinado por cuenta.
En una cuenta de propiedad externa, el nonce cuenta las transacciones enviadas desde esa cuenta.En una cuenta de contrato, el nonce está relacionado con los contratos creados por esa cuenta de contrato.Si una dirección ha enviado 25 transacciones correctas, su siguiente transacción normal debería utilizar el nonce 25.Una vez ejecutada esa transacción, la siguiente debería utilizar el nonce 26.Este sencillo contador impide que una misma transacción se ejecute dos veces.También establece un orden para las transacciones de una misma dirección.Normalmente, una transacción con nonce 27 no puede procesarse antes de que se gestione la transacción con nonce 26.Por eso una transacción atascada puede bloquear las transacciones posteriores de la misma wallet.Nonce de transacción de Ethereum
El nonce de una transacción de Ethereum forma parte de los datos de la transacción que firma una wallet.La documentación de transacciones de Ethereum describe el nonce como un contador secuencial que aumenta e indica el número de transacción de la cuenta.
El nonce de transacción ayuda a crear un hash de transacción único.También indica a la red el lugar que ocupa la transacción en la secuencia del remitente.Si dos transacciones pendientes de una misma cuenta utilizan el mismo nonce, compiten por el mismo espacio.Solo puede ejecutarse una de ellas.Esta es la idea básica para acelerar o cancelar una transacción de Ethereum.Un usuario puede enviar una transacción de sustitución con el mismo nonce y una comisión más alta.Si la red acepta la sustitución y la incluye primero, esta utiliza el nonce e impide que se ejecute la transacción anterior.Este comportamiento es útil, pero puede confundir a los usuarios que modifican manualmente los nonces sin entender la cola de transacciones pendientes.Nonce de minería de Bitcoin
El nonce de minería de Bitcoin es distinto del nonce de cuenta de Ethereum.La referencia de la blockchain de Bitcoin describe el nonce de la cabecera del bloque como un número arbitrario de 32 bits que los mineros modifican para cambiar el hash de dicha cabecera.
Los mineros calculan repetidamente el hash de los datos de la cabecera del bloque mientras modifican el nonce y otros campos ajustables.El objetivo es encontrar un hash menor o igual que el umbral objetivo actual.Si el minero prueba todos los valores posibles del nonce de 32 bits sin encontrar un bloque válido, puede actualizar la hora o modificar la transacción coinbase, lo que cambia la raíz de Merkle.Así obtiene más entradas de hash que probar.El nonce de minería no ordena las transacciones de los usuarios.Tampoco evita un ataque de repetición contra una wallet.Es una variable de búsqueda de Proof of Work.Por eso la misma palabra «nonce» puede tener significados muy distintos según la cadena y el contexto.Nonce en Proof of Work
En la minería de Proof of Work, un nonce ayuda a los mineros a crear muchos intentos de hash distintos.Una función hash criptográfica produce un resultado muy diferente cuando la entrada cambia aunque sea ligeramente.Al cambiar el nonce, cambia la entrada de la cabecera del bloque.Al cambiar la entrada, cambia el hash.Los mineros siguen probando distintos valores de nonce hasta que un hash satisface el objetivo de dificultad de la red.En este contexto, el nonce no es secreto.Una vez encontrado un bloque, cualquiera puede ver el nonce y verificar el hash.La seguridad procede del gran esfuerzo necesario para encontrar un hash válido, no de ocultar el nonce.Esto es distinto de un nonce de firma, que normalmente debe mantenerse en secreto.Los nonces de minería son herramientas públicas de búsqueda de Proof of Work.Nonce para la protección contra ataques de repetición
La protección contra ataques de repetición es uno de los usos más importantes de los nonces en el ámbito cripto.Un ataque de repetición se produce cuando alguien copia una acción firmada válida y la vuelve a enviar.Un nonce lo impide al hacer que cada acción firmada solo pueda utilizarse una vez.Cuando se ejecuta la acción, el nonce se consume, se incrementa o se marca como utilizado.Si alguien intenta volver a enviar la misma acción firmada, la comprobación del nonce falla.Esto es importante para las transacciones, las aprobaciones de tokens, las reclamaciones de contratos inteligentes, las votaciones de gobernanza, los mensajes de bridges, los inicios de sesión con wallet y las meta-transacciones.Una firma válida demuestra que una clave ha aprobado algo.Un nonce válido demuestra que la aprobación aún no se ha utilizado en ese contexto.Ambas comprobaciones son necesarias para una autorización cripto segura.La protección contra ataques de repetición convierte una firma copiada, que supondría una amenaza grave, en un duplicado rechazado.Nonce e ID de cadena de EIP-155
EIP-155 añade otra capa de protección contra ataques de repetición al incluir un ID de cadena en los datos firmados de una transacción de Ethereum.La especificación EIP-155 explica que este cambio permite que una transacción funcione en una cadena, pero no en otra que utilice un ID de cadena diferente.
Esto es importante porque muchas cadenas compatibles con EVM pueden compartir formatos de dirección y estructuras de transacción similares.El nonce de transacción impide que una misma transacción de cuenta se ejecute dos veces en la misma cadena.El ID de cadena ayuda a impedir que esa misma transacción firmada se repita en otra cadena.Ambas ideas son importantes.Una transacción puede ser única en una cadena y, aun así, resultar peligrosa si es válida en otra.Las firmas vinculadas a la cadena reducen ese riesgo.Las firmas a nivel de aplicación también deberían incluir el contexto de la cadena cuando este sea relevante.Un nonce sin el dominio correcto puede seguir siendo demasiado fácil de trasladar a otro contexto.Nonce en los datos tipados de EIP-712
EIP-712 es un estándar para firmar datos estructurados tipados.La especificación EIP-712 indica que el estándar no incorpora por sí mismo protección contra ataques de repetición.
Esto significa que los desarrolladores deben añadir esa protección en la aplicación o el contrato inteligente que verifica la firma.Un mensaje tipado puede incluir un nonce.El contrato debe comprobarlo.Tras una ejecución correcta, el contrato también debe marcar el nonce como utilizado o incrementarlo.Si el contrato verifica la firma, pero olvida actualizar el estado del nonce, la misma firma podría volver a utilizarse.EIP-712 mejora la legibilidad y la separación de dominios, pero no sustituye a un diseño cuidadoso de los nonces.Una firma segura de datos tipados debería incluir un nonce, una fecha límite, el ID de cadena, el contrato verificador y la acción exacta que se autoriza.Los usuarios deberían tratar las firmas de datos tipados como permisos reales, no como ventanas emergentes de inicio de sesión inofensivas.Nonce en los permisos ERC-2612
ERC-2612 permite al titular de un token aprobar su gasto mediante un mensaje firmado en lugar de una transacción de aprobación directa on-chain.El estándar ERC-2612 incluye una función nonces e indica que el mapeo de nonces se proporciona para proteger contra ataques de repetición.
Cuando un permiso se ejecuta correctamente, aumenta el nonce del titular.Esto invalida la misma firma de permiso para usos posteriores.ERC-2612 también incluye una fecha límite para que la aprobación firmada pueda caducar.Esto es importante porque un relayer puede recibir un permiso y elegir cuándo enviarlo.Sin una fecha límite, una firma antigua podría seguir siendo válida durante más tiempo del que espera el usuario.Sin un nonce, la misma firma de aprobación podría enviarse repetidamente.Los nonces de permisos son una de las principales razones por las que las aprobaciones sin gas pueden resultar más seguras y prácticas.También demuestran por qué los contratos inteligentes necesitan sus propios sistemas de nonce, además de los nonces normales de las transacciones de cuenta.Nonce en la abstracción de cuentas ERC-4337
La abstracción de cuentas ERC-4337 utiliza una UserOperation en lugar de una transacción normal de Ethereum procedente de una cuenta de propiedad externa.La especificación ERC-4337 define el nonce de UserOperation como un parámetro contra ataques de repetición.
También establece que las firmas deben depender del ID de cadena y de la dirección de EntryPoint para impedir repeticiones cross-chain o entre varios EntryPoint.ERC-4337 admite un modelo de nonce parcialmente abstraído.El nonce puede dividirse en una clave y una secuencia.Esto permite que las cuentas inteligentes utilicen varios carriles de nonce.Una wallet puede tener un carril para las transacciones normales y otro para las acciones administrativas o de recuperación.Este modelo es más flexible que un único contador secuencial sencillo.También es más complejo para los desarrolladores de wallets y los usuarios.La abstracción de cuentas hace que el diseño de nonces sea más potente, pero también aumenta la necesidad de interfaces de wallet más claras.Carriles de nonce
Un carril de nonce es una secuencia de nonce independiente dentro de una cuenta o un diseño de cuenta inteligente más amplio.Los carriles de nonce permiten que distintas categorías de acciones avancen en paralelo.Por ejemplo, una wallet puede usar un carril para los gastos diarios y otro para las operaciones de recuperación.Una wallet de videojuegos puede utilizar un carril para movimientos frecuentes de poco valor y otro para transferencias de activos de gran valor.Una wallet de suscripción puede usar un carril para pagos recurrentes y otro para las transacciones gestionadas por el usuario.La ventaja es que una acción atascada no bloquea todas las demás.El riesgo es que los usuarios quizá no entiendan qué carril están autorizando.Los desarrolladores deben asegurarse de que cada carril mantenga una protección sólida contra ataques de repetición.Las wallets deberían explicar los carriles de nonce solo cuando el usuario necesite conocerlos.El mejor diseño ofrece flexibilidad sin exponer a los usuarios a detalles técnicos confusos.Nonces secuenciales
Un nonce secuencial es un contador que aumenta en uno después de cada acción válida.Es el modelo más habitual para las transacciones normales de una cuenta.Los nonces secuenciales son fáciles de auditar porque establecen un orden claro.También impiden que se ejecuten dos transacciones de una misma cuenta con el mismo nonce.La desventaja es que las transacciones posteriores pueden quedar bloqueadas por una transacción anterior pendiente.Esto puede provocar que las transacciones se atasquen.Es posible que el usuario tenga que acelerar o cancelar la transacción anterior antes de que puedan avanzar las posteriores.Los nonces secuenciales son fiables, sencillos y se utilizan ampliamente.Son menos flexibles en sistemas donde deberían poder ejecutarse simultáneamente muchas acciones independientes.Por eso las cuentas de contratos inteligentes y los sistemas de autorización utilizan a veces otros patrones de nonce.Nonces aleatorios
Un nonce aleatorio es un valor único generado mediante aleatoriedad en lugar de un contador sencillo.Los nonces aleatorios resultan útiles cuando las acciones no necesitan un orden estricto.Un contrato inteligente puede almacenar un mapeo de nonces aleatorios ya utilizados.Cuando se utiliza una autorización firmada, el contrato marca ese nonce aleatorio como consumido.Si vuelve a aparecer la misma autorización, el contrato la rechaza.Los nonces aleatorios permiten que coexistan muchas acciones firmadas sin que unas bloqueen a otras.Sus desventajas son el almacenamiento y la calidad de la aleatoriedad.Es posible que el contrato tenga que guardar muchos nonces utilizados.La wallet o la aplicación debe evitar generar dos veces el mismo nonce aleatorio en el mismo contexto.Los nonces aleatorios son flexibles, pero deben controlarse cuidadosamente.Nonces de contratos inteligentes
Un nonce de contrato inteligente es cualquier sistema de nonce definido y almacenado por un contrato inteligente.Puede ser un contador para cada usuario.Puede ser un mapeo de ID de mensajes utilizados.Puede ser un índice de reclamación de un airdrop.Puede ser el estado de un voto de propuesta en gobernanza.Puede ser un hash de orden en un marketplace.Puede ser un número de secuencia de un mensaje de bridge.Los nonces de contratos inteligentes son necesarios porque los nonces normales de cuenta no protegen todas las firmas off-chain ni todas las acciones a nivel de contrato.Si un contrato acepta una firma, debe determinar si ya se ha utilizado.Un buen diseño de nonce para contratos inteligentes impide la ejecución repetida sin dificultar la experiencia del usuario.Nonce en los mensajes de inicio de sesión con wallet
Los mensajes de inicio de sesión con wallet suelen utilizar nonces aunque no se produzca ninguna transacción on-chain.Un sitio web puede pedir al usuario que firme un mensaje para demostrar que controla una dirección de wallet.El sitio web debería generar un nonce de desafío nuevo para ese intento de inicio de sesión.El mensaje firmado debería incluir el dominio, el nonce, la hora de emisión, la hora de caducidad y el propósito.Tras iniciar sesión correctamente, el servidor debería marcar el nonce como utilizado.Si un atacante roba una firma de inicio de sesión antigua, el nonce utilizado debería impedir que la repita.Sin un nonce nuevo, una firma de inicio de sesión puede funcionar como una contraseña reutilizable.Esto es peligroso porque los usuarios suelen considerar que firmar mensajes es menos importante que realizar transacciones.Los nonces de inicio de sesión con wallet forman parte de la seguridad de la cuenta.Una buena firma de inicio de sesión debería ser específica, reciente, limitada y fácil de entender.Nonce en las firmas ECDSA
La firma ECDSA utiliza un valor secreto específico para cada mensaje que suele denominarse nonce o nonce de firma.Este tipo de nonce es distinto del nonce de transacción de una cuenta.Debe ser secreto y único para cada firma.El RFC 6979 define un método determinista para generar firmas DSA y ECDSA que evita depender de generar nuevos valores aleatorios para cada firma.
El estándar de firma digital FIPS 186-5 del NIST indica que ECDSA utiliza un número secreto específico para cada mensaje durante la generación de la firma.
Si se reutiliza un nonce ECDSA o este es predecible, los atacantes podrían recuperar la clave privada.Investigaciones recientes sobre el riesgo de colisión de nonces ECDSA en actividad real de blockchain destacan las consecuencias catastróficas de una generación incorrecta de nonces.
Este es uno de los significados más graves de nonce en la seguridad cripto.Un nonce de cuenta incorrecto puede provocar que una transacción falle o se atasque.Un nonce de firma ECDSA incorrecto puede dejar expuesta toda la wallet.Nonce en el cifrado
Algunos sistemas de cifrado también utilizan nonces.En el cifrado autenticado, un nonce puede ayudar a que los resultados del cifrado sean únicos aunque se utilice la misma clave para muchos mensajes.El RFC 5116 define una interfaz para el cifrado autenticado con datos asociados y analiza algoritmos AEAD que utilizan nonces.
Las wallets de criptomonedas, las copias de seguridad cifradas, los sistemas de mensajería segura y el software de custodia pueden utilizar nonces de cifrado internamente.Estos nonces de cifrado no son lo mismo que los nonces de transacción de una blockchain.Forman parte de la protección criptográfica de los mensajes.En muchos esquemas de cifrado, reutilizar un nonce con la misma clave puede ser peligroso.Por lo general, los usuarios no gestionan estos nonces manualmente.Los desarrolladores y las bibliotecas de wallets deben gestionarlos correctamente.El software cripto seguro trata la generación de nonces como un aspecto crítico para la seguridad.Nonce y salt
Un nonce y un salt son conceptos relacionados, pero no son lo mismo.Por lo general, un nonce está pensado para ser único en un uso dentro de un protocolo o contexto de firma.Un salt suele ser un dato aleatorio o único que se añade a un hash, un proceso de contraseña, un compromiso o un cálculo de dirección para generar resultados distintos.En el ámbito cripto, puede utilizarse un salt para desplegar contratos de forma determinista o derivar compromisos.Un nonce puede utilizarse para ordenar transacciones o evitar ataques de repetición.Ambos valores pueden aportar unicidad.La diferencia está en la función de seguridad que desempeñan.Un salt suele impedir la precalculación o generar unicidad en valores derivados.Un nonce suele impedir la reutilización o aportar frescura a las acciones de un protocolo.Los desarrolladores deberían nombrar y documentar claramente estos valores para evitar errores de seguridad.Nonce y hash de transacción
Un nonce no es lo mismo que un hash de transacción.El nonce es un dato de entrada incluido en una transacción o un mensaje de protocolo.El hash de transacción es un identificador que se obtiene al aplicar un hash a los datos de la transacción firmada.Al cambiar el nonce, cambia el hash de transacción porque cambia la transacción firmada.Una wallet puede utilizar el nonce antes de que se mine la transacción.Un explorador de blockchain suele mostrar el hash de transacción después de que esta se difunda o se incluya en un bloque.El nonce indica a la red el lugar que ocupa la transacción en la secuencia del remitente.El hash de transacción ayuda a los usuarios a encontrar y verificar el registro de la transacción.Ambos son importantes, pero tienen funciones distintas.Confundirlos puede dificultar la resolución de problemas con las transacciones.Nonce y gas
Un nonce no es gas.El gas mide el trabajo computacional y el coste de ejecutar una transacción.Un nonce identifica el orden o la unicidad de una transacción.Una transacción puede tener el nonce correcto, pero poco gas o una comisión demasiado baja.También puede tener gas suficiente y un nonce incorrecto.Estos problemas provocan fallos distintos.Un problema de gas puede provocar un fallo de ejecución o reducir la prioridad de inclusión.Un problema de nonce puede hacer que la transacción sea rechazada, sustituida, retrasada o bloqueada por otra transacción anterior pendiente.Los usuarios suelen ver ambos ajustes en las herramientas avanzadas de wallet.No deberían modificar ninguno de ellos a la ligera.Nonce y creación de direcciones de contratos
Los nonces también pueden afectar a las direcciones de los contratos.En los sistemas similares a Ethereum, la dirección de un contrato creado mediante la operación create tradicional se obtiene a partir de la dirección del creador y de su nonce.Esto significa que una misma cuenta puede crear direcciones de contrato distintas a medida que cambia su nonce.Los desarrolladores deben tenerlo en cuenta al desplegar contratos, probar despliegues o predecir direcciones.Los scripts de despliegue pueden fallar si el nonce previsto no coincide con el nonce real de la cuenta.Una transacción pendiente puede cambiar el orden del despliegue.Los errores al introducir manualmente un nonce pueden hacer que los contratos se desplieguen en direcciones inesperadas.Los métodos de despliegue determinista pueden utilizar otros mecanismos, pero la gestión de nonces sigue siendo importante en los despliegues normales.Para despliegues importantes, los equipos deberían utilizar scripts de despliegue controlados y verificar las direcciones antes de anunciarlas.Una dirección de despliegue incorrecta puede confundir a los usuarios y romper integraciones.Nonce y transacciones atascadas
Una transacción suele atascarse cuando permanece pendiente con una comisión baja.Si esa transacción utiliza el siguiente nonce de la cuenta, las posteriores pueden quedar bloqueadas detrás de ella.Esto se debe a que los nonces secuenciales exigen gestionar primero los espacios de nonce anteriores.Una wallet puede mostrar como pendientes transacciones posteriores aunque tengan comisiones elevadas.El problema real puede ser una transacción anterior con un nonce más bajo.A menudo, los usuarios pueden acelerar la transacción atascada sustituyéndola por otra con el mismo nonce y una comisión más alta.También pueden cancelarla enviando una transacción de sustitución inocua con el mismo nonce y una comisión más alta.Estas acciones deben realizarse con cuidado.Sustituir el nonce equivocado puede cancelar o sobrescribir una acción que el usuario todavía quería ejecutar.La resolución de problemas con nonces es una de las razones por las que los ajustes avanzados de wallet pueden entrañar riesgos para los principiantes.Nonce y sustitución de transacciones
La sustitución de transacciones utiliza el mismo nonce para reemplazar una transacción pendiente.La transacción de sustitución compite con la original por el mismo espacio de nonce.Si la red acepta la sustitución y la confirma primero, la transacción original deja de ser válida porque el nonce ya se ha utilizado.Esto resulta útil cuando un usuario quiere aumentar la comisión de una transacción lenta.También sirve cuando quiere cancelar una transacción pendiente antes de que se confirme.La sustitución no significa que la blockchain elimine una transacción confirmada.Solo funciona mientras la transacción anterior siga pendiente.Una vez confirmada la transacción, el nonce se consume.A partir de ese momento, el usuario no puede volver a utilizarlo para otra transacción.Por eso el momento es importante al gestionar transacciones pendientes.Nonce y bridges
Los bridges utilizan nonces o ID de mensaje para impedir que se procese dos veces el mismo mensaje cross-chain.Un mensaje de bridge puede representar un depósito, una retirada, una acuñación, una quema o una llamada a un contrato.Si la cadena de destino acepta más de una vez el mismo mensaje, los activos podrían liberarse o acuñarse de forma incorrecta.Un mensaje de bridge seguro debería incluir una cadena de origen, una cadena de destino, un contrato de origen, un contrato de destino, un remitente, un destinatario, una cantidad y un nonce o ID de mensaje único.El contrato de destino debería marcar el mensaje como procesado.Si alguien vuelve a enviar el mismo mensaje, el contrato debería rechazarlo.El diseño de nonces de un bridge es especialmente importante porque conecta distintos sistemas de consenso.Un fallo de protección contra repeticiones en un bridge puede generar un riesgo sistémico entre cadenas.Los usuarios deberían considerar la seguridad del bridge por separado de la seguridad del propio token.Un token puede ser sólido aunque el sistema de mensajes del bridge no sea seguro.Nonce y gobernanza
Los sistemas de gobernanza utilizan estados similares a los nonces para impedir que se repitan votos, delegaciones y ejecuciones de propuestas.Por lo general, un voto solo debería contabilizarse una vez por instantánea de poder de voto o conforme a unas reglas de votación claramente definidas.Una delegación firmada no debería poder reutilizarse indefinidamente, salvo que el diseño lo permita de forma explícita.Una propuesta no debería ejecutarse dos veces, a menos que el contrato admita deliberadamente ejecuciones repetidas.Los mensajes de gobernanza pueden necesitar ID de propuesta, nonces de votante, ID de cadena, fechas límite y comprobaciones del estado de ejecución.Esto es especialmente importante cuando la gobernanza controla tesorerías, actualizaciones, comisiones, parámetros de riesgo o conexiones con bridges.Una acción de gobernanza repetida puede ser más peligrosa que un pago fallido.Puede cambiar las reglas de todo un protocolo.Los buenos contratos de gobernanza tratan la protección contra ataques de repetición como una función de seguridad esencial.Los votantes deberían revisar la acción que firman antes de aprobarla.Nonce y reclamaciones de airdrops
Los airdrops y los sistemas de recompensas suelen utilizar mecanismos de protección similares a los nonces para impedir reclamaciones repetidas.Un contrato puede guardar si una dirección ya ha reclamado.También puede guardar si ya se ha utilizado un índice de reclamación de Merkle.Un contrato puede utilizar un mensaje de reclamación firmado con un nonce, un ID de campaña, una cantidad de tokens, una fecha límite y una dirección del destinatario.Si falta esta protección, una reclamación válida podría reutilizarse hasta agotar las recompensas.Los buenos sistemas de reclamación vinculan la reclamación al usuario, la campaña, la cadena, el token, la cantidad y el intervalo de tiempo correctos.Los usuarios deberían tener cuidado al firmar mensajes de reclamación en sitios desconocidos.Una firma de reclamación puede autorizar algo más que una reclamación de recompensa inofensiva si el mensaje es engañoso.La protección mediante nonce impide la reutilización, pero no hace segura una primera utilización maliciosa.La claridad de la wallet sigue siendo importante.Nonce y DeFi
DeFi utiliza nonces de muchas formas poco visibles.Los permisos de tokens utilizan nonces para las aprobaciones firmadas.Las meta-transacciones utilizan nonces para las acciones sin gas.Los protocolos de préstamos pueden usar nonces para delegaciones firmadas o aprobaciones de crédito.Los sistemas de órdenes descentralizados pueden utilizar nonces o hashes de órdenes para impedir que una orden ejecutada vuelva a ejecutarse.Las opciones, las bóvedas y los productos estructurados pueden usar nonces en cotizaciones off-chain o mensajes de liquidación.Los bots de liquidación y los sistemas de trading también deben gestionar cuidadosamente los nonces de las cuentas, ya que una transacción atascada puede bloquear acciones urgentes.En DeFi, los errores con nonces pueden costar dinero rápidamente.Una firma de aprobación obsoleta puede suponer un riesgo de vaciado de la wallet.Si se olvida actualizar un nonce, un contrato puede quedar expuesto a ataques de repetición.Un nonce de transacción incorrecto puede hacer que fracase una operación rentable.Nonce y NFT
Los sistemas de NFT también utilizan nonces en listados de marketplaces, pujas, permisos, reclamaciones y transferencias basadas en firmas.Un vendedor puede firmar una orden off-chain para vender un NFT.El contrato del marketplace debe impedir que la misma orden firmada se ejecute más veces de lo permitido.Esto puede hacerse con nonces de orden, hashes de órdenes, contadores de cancelación o mapeos de estado de ejecución.Si una orden de NFT puede repetirse después de una venta o una cancelación, el vendedor podría perder un activo inesperadamente.Si una firma de puja puede repetirse después de que cambien las condiciones, el pujador podría comprar algo que ya no pretendía adquirir.Las firmas de NFT deberían incluir la dirección del contrato de la colección, el ID del token, el precio, la moneda, las condiciones del comprador o del vendedor, la hora de caducidad, el ID de cadena y el nonce.Los usuarios no deberían firmar mensajes imprecisos para poner NFT a la venta.También deberían cancelar los listados antiguos cuando sea necesario.La seguridad de los nonces forma parte de la seguridad de los marketplaces.Nonce y seguridad de las claves privadas
La calidad del nonce puede afectar directamente a la seguridad de las claves privadas en los algoritmos de firma.Esto es especialmente importante en los sistemas basados en ECDSA.Si se utiliza el mismo nonce de firma ECDSA para dos mensajes distintos, es posible recuperar la clave privada.En determinadas condiciones, los atacantes también pueden recuperar claves si los nonces de firma siguen patrones predecibles.Por eso los desarrolladores de wallets utilizan bibliotecas criptográficas revisadas.Los usuarios no deberían crear software de firma propio para wallets con activos valiosos sin una revisión criptográfica experta.Un error en el nonce de una transacción puede ser visible y subsanable.Un error en un nonce de firma puede filtrar la clave privada sin que el usuario lo advierta.Las hardware wallets y las bibliotecas de software maduras ayudan a reducir este riesgo.La generación de nonces criptográficos no admite atajos.Tipos habituales de nonces en el ámbito cripto
- Un nonce de cuenta ordena las transacciones de una cuenta de blockchain.
- Un nonce de transacción se incluye en los datos de una transacción firmada para que esta sea única.
- Los mineros de Proof of Work ajustan un nonce de minería para buscar un hash de bloque válido.
- Un nonce de permiso impide que una aprobación de token firmada se utilice más de una vez.
- Un nonce de contrato inteligente impide la ejecución repetida de autorizaciones a nivel de contrato.
- Un nonce de mensaje de bridge impide que el mismo mensaje cross-chain se procese dos veces.
- Un nonce de inicio de sesión crea un desafío nuevo de autenticación con wallet.
- Un nonce de firma es un valor secreto específico para cada mensaje que utilizan algunos algoritmos de firma digital.
- Un nonce de cifrado ayuda a que los mensajes cifrados sean únicos cuando se utiliza la misma clave.
- Un carril de nonce es una secuencia de nonce independiente utilizada en algunos diseños de cuentas inteligentes.
Errores habituales con los nonces
Un error habitual es pensar que todos los nonces significan lo mismo.Otro es modificar manualmente el nonce de una transacción sin comprobar las transacciones pendientes.Un tercer error es firmar datos tipados que no incluyen un nonce.Un cuarto error es verificar la firma de un contrato inteligente y olvidar marcar el nonce como utilizado.Un quinto error es utilizar un nonce sin ID de cadena ni separación de dominio del contrato verificador.Un sexto error es tratar EIP-712 como si ofreciera protección automática contra ataques de repetición.Un séptimo error es utilizar aleatoriedad débil para generar nonces aleatorios.Un octavo error es reutilizar o dejar expuestos los nonces de firma ECDSA.Un noveno error es asumir que un nonce impide el phishing.Un décimo error es olvidar migrar el estado de los nonces durante las actualizaciones de contratos.Buenas prácticas para desarrolladores
Define el propósito del nonce antes de escribir código.Utiliza nonces secuenciales cuando sea necesario mantener un orden estricto.Utiliza nonces aleatorios o asignados mediante un mapeo cuando las autorizaciones independientes deban ejecutarse en paralelo.Incluye el ID de cadena y la dirección del contrato verificador en los datos firmados cuando el contexto sea relevante.Incluye fechas límite o periodos de validez en las firmas off-chain.Marca los nonces como utilizados durante la ejecución correcta.Prueba los intentos de repetición en pruebas unitarias y de integración.Utiliza bibliotecas criptográficas revisadas para los nonces de firma y de cifrado.Evita crear nonces ECDSA propios, salvo que se basen en estándares revisados exhaustivamente.Documenta claramente el comportamiento de los nonces para que las wallets, los indexadores, los auditores y los usuarios puedan entenderlo.Buenas prácticas para los usuarios
Deja que tu wallet gestione los nonces de las transacciones normales, salvo que entiendas el orden de las transacciones pendientes.Comprueba si una transacción está atascada antes de enviar muchas transacciones nuevas desde la misma wallet.Utiliza con cuidado las funciones para acelerar o cancelar una transacción al sustituirla.Lee los mensajes de permisos de tokens antes de firmarlos.Antes de aprobar una firma, comprueba el gastador, la cantidad, la cadena y la aplicación, así como la fecha límite.No firmes mensajes de inicio de sesión con wallet procedentes de dominios sospechosos.No des por hecho que una firma de mensaje es segura solo porque no mueve fondos de inmediato.Utiliza software de wallet de confianza y evita herramientas de firma desconocidas.Protege las hardware wallets y los métodos de recuperación si tienes saldos de valor elevado.Recuerda que la protección mediante nonce puede impedir que una acción se repita, pero no puede hacer que una firma perjudicial sea inofensiva.Cuándo es más importante un nonce
Un nonce es especialmente importante cuando una firma puede mover valor o cambiar un estado relevante.Es importante al enviar transacciones normales de blockchain.Es importante al aprobar el gasto de tokens mediante permisos.Es importante al firmar órdenes de marketplace.Es importante al enviar mensajes de bridge.Es importante al votar o firmar delegaciones de gobernanza.Es importante al reclamar airdrops o recompensas.Es importante al iniciar sesión con una firma de wallet.Es importante al generar firmas ECDSA.Es importante siempre que la reutilización, la repetición o la previsibilidad puedan provocar pérdidas financieras.Nonce en una frase
Un nonce es un valor único que se utiliza una sola vez en un contexto de blockchain, criptográfico o de contrato inteligente para contribuir al orden de las transacciones, la minería Proof of Work, la protección contra ataques de repetición, la seguridad de las firmas y del cifrado y el funcionamiento fiable de las wallets.Preguntas frecuentes
¿Qué significa nonce en el ámbito cripto?
Nonce significa un valor único que se utiliza una sola vez en un contexto cripto específico, como un contador de transacciones, un campo de minería, un ID de mensaje firmado o un valor criptográfico de firma.¿Qué es un nonce de Ethereum?
Un nonce de Ethereum es un contador que ayuda a ordenar las transacciones de una cuenta e impide que se ejecute dos veces una transacción con el mismo nonce.¿Qué es un nonce de Bitcoin?
Un nonce de Bitcoin es un campo de la cabecera del bloque que los mineros modifican mientras buscan un hash de Proof of Work que cumpla el objetivo de la red.¿Por qué utilizan nonces las wallets?
Las wallets utilizan nonces para crear secuencias de transacciones válidas, impedir ataques de repetición, sustituir transacciones pendientes y controlar qué transacción debería ejecutarse a continuación.¿Puedo cambiar un nonce manualmente?
Sí, algunas wallets permiten modificar manualmente el nonce, pero solo debería hacerse si se entienden las transacciones pendientes y las reglas de sustitución.¿Qué ocurre si dos transacciones utilizan el mismo nonce?
Solo puede ejecutarse una transacción con el mismo remitente y nonce, así que ambas compiten por el mismo espacio.¿Por qué se ha atascado mi transacción por un nonce?
Una transacción posterior puede quedar bloqueada si sigue pendiente una transacción anterior con un nonce más bajo.¿Cómo evita un nonce los ataques de repetición?
Un nonce evita los ataques de repetición haciendo que una acción firmada solo pueda utilizarse una vez y permitiendo que el sistema rechace el mismo nonce después de que se haya consumido.¿EIP-712 gestiona automáticamente los nonces?
No. EIP-712 estructura los datos tipados, pero los desarrolladores siguen teniendo que incluir y aplicar las comprobaciones de nonce en el contrato o la aplicación.¿Qué es un nonce de permiso?
Un nonce de permiso es un nonce del titular de un token que impide que la misma aprobación firmada de token se envíe más de una vez.¿Qué es un nonce de firma?
Un nonce de firma es un valor secreto específico para cada mensaje que utilizan algunos algoritmos de firma; una gestión deficiente puede dejar expuesta una clave privada.¿Un nonce es siempre secreto?
No. Los nonces de cuenta y de minería suelen ser públicos, mientras que algunos nonces criptográficos de firma deben mantenerse en secreto.Conclusión
Nonce es una palabra pequeña con varios significados importantes en las criptomonedas.En esencia, un nonce tiene que ver con la unicidad.Esa unicidad ayuda a los sistemas cripto a distinguir una transacción, un mensaje, una firma, un intento de hash o una acción de contrato de los demás.En Ethereum, los nonces de cuenta ordenan las transacciones e impiden que una misma transacción se ejecute dos veces.En la minería de Bitcoin, el nonce de la cabecera del bloque ofrece a los mineros una variable que pueden modificar mientras buscan un hash válido de Proof of Work.En los contratos inteligentes, los nonces impiden que se repitan permisos firmados, reclamaciones, votos, órdenes y mensajes de bridges.En la abstracción de cuentas, los modelos de nonce más flexibles permiten que las wallets inteligentes admitan flujos de trabajo paralelos y una lógica de autorización avanzada.En las firmas ECDSA, la calidad del nonce puede determinar si una clave privada sigue siendo segura o puede recuperarla un atacante.Estos significados comparten el mismo principio, pero no el mismo funcionamiento.Un nonce de minería es público y se prueba repetidamente.Un nonce de cuenta es público y secuencial.Un nonce de contrato puede ser un contador almacenado o un mapeo de mensajes utilizados.Un nonce de permiso protege una aprobación firmada.Un nonce de firma debe ser secreto y generarse de forma segura.Por eso el contexto es importante siempre que aparezca la palabra.Para los usuarios, la lección más práctica es dejar que las wallets gestionen la secuencia normal de transacciones, salvo que sea realmente necesario intervenir manualmente.Los usuarios deberían tener cuidado con las transacciones atascadas, las transacciones aceleradas, los intentos de cancelación y los ajustes manuales de nonce.También deberían leer atentamente las solicitudes de firma, ya que los mensajes off-chain pueden incluir nonces y, aun así, autorizar acciones perjudiciales.Para los desarrolladores, la lección más importante es diseñar explícitamente la protección contra ataques de repetición.Toda firma que pueda mover valor o cambiar un estado relevante debería incluir un nonce, un dominio, una fecha límite cuando corresponda y detalles claros de la acción.Los contratos deben comprobar el nonce y consumirlo correctamente.Las wallets deberían mostrar en lenguaje claro qué está autorizando el usuario.El código criptográfico debería utilizar bibliotecas revisadas y métodos seguros de generación de nonces.Los errores con nonces pueden parecer pequeños durante el desarrollo, pero convertirse en problemas graves tras el despliegue.La falta de una comprobación de nonce puede permitir reclamaciones o aprobaciones repetidas.Un nonce de cuenta incorrecto puede bloquear transacciones.Un nonce ECDSA débil puede revelar una clave privada.La ausencia de un ID de cadena puede permitir ataques de repetición cross-chain.Un mensaje de bridge sin un seguimiento adecuado de nonces puede procesarse dos veces.Por tanto, la seguridad de los nonces no es un adorno técnico opcional.Forma parte de los cimientos que permiten mover criptoactivos, ejecutar contratos, buscar bloques a los mineros, firmar a las wallets y confiar en que una aprobación corresponda a una única acción prevista.También te puede interesar
ZK-Rollup
ZK-Rollup-as-a-Service
zk-SNARK
POPULAR
Criptomonedas de moda que están acaparando la atención del mercado
Volumen TOP
Las criptomonedas con mayor volumen de trading
Recién Añadidos
Criptomonedas recientemente listadas y disponibles para operar

