¿Qué es el número Nonce?

Qué es el número Nonce
7 min read

Uno de los temas más importantes en el mundo de la criptografía de criptomonedas es el “Nonce”. En este artículo te explicaremos qué es exactamente y cuál es su función en el mundo de las criptomonedas.

El nonce se caracteriza por ser un número aleatorio y de un solo uso. Se utiliza en sistemas criptográficos, concretamente en los denominados protocolos de autenticación. Estos números son generados a través de un generador de números aleatorios. Los generadores pueden ser o bien de software o de hardware. Una vez generados los números son usados en una función criptográfica específica.

El número se utiliza para la programación de la función. Una vez ha sido usado, el número no puede volver a usarse jamás. De aquí viene la difícil implementación del “Nonce”. Para que el proceso se cumpla correctamente debe garantizarse que dicho número no se repetirá jamás en la existencia del sistema criptográfico, lo cual no es tarea fácil.

Gracias a la generación aleatoria de estos números se garantiza la seguridad de la función criptográfica en la que se utilice. Por ello en su generación no puede haber ningún patrón reconocible, ya que de lo contrario se podrían romper los sistemas criptográficos y con ello la seguridad de nuestros activos digitales.

¿Cómo funciona el Nonce?

Cuando Satoshi diseñó la primera criptomoneda, Bitcoin, incluyó en su funcionamiento un fuerte uso de la criptografía. Bitcoin utiliza la criptografía asimétrica lo cual significa que al emitir una transacción o minar un bloque la red hace uso de la función hash llamada SHA-256. Esta función hace posible la generación de cadenas de textos únicas e irrepetibles.

Al igual que Bitcoin, muchas otras criptomonedas utilizan la criptografía para su funcionamiento por lo que el Nonce es mucho más importante de lo que pensábamos. No obstante, el funcionamiento del Nonce no se limita solo a la blockchain.

El nonce es un campo de 34 bits o 4 bytes que, como ya hemos mencionado anteriormente, no debe repetirse. Para ello es necesaria una variante de tiempo que haga imposible su repetición. 

En el caso de Bitcoin, el nonce participa en la generación de un Block ID o Hash de bloque. Este Block ID se crea a través del algoritmo de consenso llamado Proof of Work o Prueba de trabajo. Uno de los cometidos del Nonce es ayudar en la verificación de que la prueba de trabajo se ha realizado de forma exitosa. La tarea más difícil de este proceso es encontrarlo.

Esto se debe a que cada bloque que forma la blockchain cuenta con un identificador irrepetible. Dicho Block ID se trata de un Hash SHA-256 que cuenta con unas características únicas como resultado de un proceso extremadamente costoso de minería.

En Bitcoin, cuando los mineros se preparan para comenzar la minería tienen en cuenta un conjunto de parámetros otorgados por la red. Entre dichos parámetros se encuentra el Hash Target o Target. El Hash Target se trata de un número de 256 bits de ancho que presenta cada nodo de Bitcoin. Este número dicta el límite máximo de valor decimal de un Block ID en un momento determinado, es decir, lo que debe medir un hash para que sea aceptado por la red. 

Mientras menor sea el Hash Target, más complicado será encontrar el Hash de bloque válido. Para encontrar la combinación adecuada los mineros deben tener en cuenta datos como la versión, el Merkle Root, el hash de bloque anterior, la marca de tiempo del bloque y la dificultad de la red y el nonce generado por el minero. Con todos ellos el minero comenzará el proceso de generación del Bloque ID. Este es otro de los procesos en los que es crucial el Nonce.

En el caso de que el minero genere un valor decimal de hash diferente al marcado por el Target tendrá que volver a comenzar el proceso generando un nuevo Nonce y recalculando el resto de datos. Esto significa calcular un nuevo hash hasta encontrar la solución correcta. En el proceso se pueden calcular miles de millones de Nonces. Una vez se haya encontrado el correcto, el minero podrá acceder a la recompensa de bloque.

Aunque el nonce ha contribuido en todo este proceso constantemente, su trabajo aún no ha terminado. Una vez el minero ha resuelto el problema, esta solución pasa a la red con todos sus datos, entre ellos el Nonce. Cuando los nodos reciben toda la información se encargan de verificar si la solución de los mineros es realmente válida para el problema planteado por la red.

En este caso, llevar a cabo la verificación tan solo tomará un segundo, ya que es un procedimiento muy sencillo. Esto se debe al Nonce generado. Con este número es muy fácil comprobar la validez del nuevo hash.

 

 

 

Qué es el número Nonce

Nonce en las Blockchain

El nonce también tiene un papel importante en las blockchains de criptomonedas derivadas de Bitcoin, entre ellas Dash o Litecoin.

Esto se debe a que estas criptomonedas tienen en su programación el uso del Nonce. Cabe destacar que todo sistema que emplee el mecanismo de consenso Proof of Work o Prueba de trabajo utilizará el Nonce en su funcionamiento.

Sin embargo, otras blockchains distintas a las que utilizan el Proof of Work (PoW) también pueden emplear el Nonce. Las blockchains que incluyen el protocolo de Proof of Stake (PoS) también lo utilizan. Podemos encontrar ejemplos como Stellar, NEO o Waves. No solo existen blockchains PoS o PoW.

Las blockchains que utilizan protocolos como la Prueba de Tiempo Transcurrido (PoET) o la Prueba de Autoridad (PoA) también se suman a su uso.

Cabe destacar que el Nonce es usado en los protocolos PoS, PoET o PoA con otros objetivos, ya que la dificultad de cálculo es menor que en protocolos como Proof of Work.

Sin embargo, el procedimiento sigue siendo generar un número aleatorio que garantice un alto nivel de seguridad criptográfica en la cadena de bloques.

El Nonce es un número clave tanto en la tecnología blockchain como en la criptografía. Gracias a este número aleatorio las acciones que realizamos en las blockchains son mucho más seguras.