Tabla de contenidos
Nonce se utiliza en aplicaciones de cadena de bloques para validar transacciones. Por lo tanto, juega un papel importante en la seguridad de estos sistemas criptográficos.
El término nonce describe un dígito que solo se usa una vez. El nonce es significativo en la tecnología blockchain: allí se suma el número a toda la información que hay en un bloque.
Uno de los objetivos es poder secuenciar transacciones y así ponerlas en el orden correcto. Descubrir el nonce es una parte importante del proceso de minería en los sistemas de prueba de trabajo. Por lo tanto, el nonce juega un papel esencial para asegurar la comunicación entre dos partes.
Leer: ¿Qué es OpnSense?
Antecedentes ¿Por qué existe?
En las aplicaciones de cadena de bloques, las transacciones se enrutan de una dirección a otra dirección. En la práctica, esto podría verse así:
- En cualquier billetera de criptomonedas, que incluya, por ejemplo, moneda ETH, se realizan tres transferencias.
- La cadena de bloques ETH procesa nuevas transferencias en un bloque cada diez segundos en promedio.
- Si se hicieran tres transferencias en menos de diez segundos, la cadena de bloques no sabría cuál de estas transferencias tiene prioridad.
Del punto 3 se deduce que es necesario un método que pueda secuenciar transferencias dentro de un mismo bloque. Este es el nonce: el número único asigna a todas las transacciones un valor que determina qué transacción tiene prioridad. Un ejemplo simple serían las transacciones tituladas «Transacción-1» y «Transacción-2», donde los dígitos representan el nonce respectivamente. A través de este sistema, la cadena de bloques «sabe» qué transacciones deben priorizarse.
Problemas de priorización
El nonce asegura el orden de las transacciones, lo que puede causar problemas en algunos casos. Las transacciones a través de una cadena de bloques se basan en un proceso de subasta. Si ofrece más, se les dará preferencia a las transacciones cuyo volumen por unidad de tiempo (bloque) sea limitado. Por lo tanto, puede presentarse la siguiente situación:
- Primero se envía una transacción con un nonce de 1. El pago (en unidades de gas para la red ETH) de esta transacción es bajo, por lo que se encuentra en la lista de prioridades de la cadena de bloques.
- Se despachan otras tres transacciones con valores nonce de 2, 3 y 4. El pago en gas es alto, por lo que la cadena de bloques les da prioridad.
Las siguientes tres transacciones ahora «se atascarían» a pesar de la alta tarifa de procesamiento, ya que el nonce 1 aún no se había procesado. Esto primero debe ser aprobado por la red antes de que se aprueben todas las transacciones posteriores. En este ejemplo, el procesamiento solo se produciría cuando la red se utilice con menor intensidad. Esto da como resultado tarifas de transacción más bajas, lo que permite que se procese el nonce 1.
Cancelación y aceleración
Los usuarios pueden utilizar activamente el nonce para cancelar o acelerar las transacciones enviadas:
- Cancelación: para cancelar una transacción que está pendiente de aprobación, los usuarios pueden enviar otra transacción con el mismo nonce. Sin embargo, esta técnica no siempre funciona porque a veces puede resultar en que se aprueben todas las transacciones con el mismo nonce. Esto puede llevar a gastos significativamente más altos de lo planeado.
- Acelerar: para acelerar una transacción anterior, los usuarios pueden reenviar la misma transacción con el mismo valor de gas y un valor de gas más alto. Es probable que esto resulte en un procesamiento más rápido de la nueva transacción mientras se aborta la anterior.
El nonce en los sistemas de prueba de trabajo
En cadenas de bloques como Bitcoin y la mayoría de los sistemas PoW, el nonce también se usa para validar información en un bloque. Hay mucha información en los metadatos de cada bloque, como valores hash, marcas de tiempo, la dificultad de minería y más, y el nonce.
Durante el proceso de minería de Bitcoin, los mineros intentan descifrar este nonce. Es parte del valor hash que se encuentra para verificar un bloque. Si el valor hash del bloque y el valor hash calculado del minero coinciden, el nonce también es correcto. Si el resultado no es correcto, el nonce se incrementa en un valor de 1 durante el cálculo y el proceso comienza de nuevo. El minero que encuentre el nonce correcto primero validará el bloque y se le pagará en Bitcoin. El nonce en bitcoin alcanza longitudes de millones a billones de dígitos.
Leer: ¿Qué es timestamp?
Relación entre nonce y nivel de dificultad
Encontrar el nonce en el primer intento es extremadamente improbable. Durante el proceso de minería, los mineros suelen tener que probar una gran cantidad de valores hash hasta encontrar el valor correcto. De esta manera, se puede influir en la velocidad del bloque, que siempre debe permanecer aproximadamente estable. Si los mineros encuentran el nonce y el valor hash demasiado rápido, debido a la potencia informática excesiva en la red, la dificultad aumenta automáticamente.