Nonce significa number only used once, que se traduce al español como número utilizado una vez. Que tiene una utilidad muy importante en las criptomonedas, en particular en la minería.
Este número es agregado a un bloque, junto con otra información, y es modificado múltiples veces para que cuando el bloque pase por una función de hash el resultado sea diferente. El objetivo es conseguir un resultado en particular que cumpla con los requerimientos de dificultad.
Es al final número que los mineros deben encontrar para resolver el bloque, y cambio obtener criptomonedas de la blockchain en la que están trabajando.
Si todo te ha parecido un poco complicado no te preocupes, ahora lo vamos a ver más en detalle.
Contenido
¿Cuál es su función?
Es difícil explicar un concepto como el Nonce sin antes entender como funciona la minería en Bitcoin u otras criptomonedas que utilizan un método de consenso llamado Prueba de Trabajo.
Potablemente, si has estado leyendo sobre criptomonedas, has llegado al concepto de cadena de bloques o blockchain. Esta es la piedra fundamental de las criptomonedas.
En función de poder asegurar la cadena de bloques, la información de bloques anteriores al que un minero está buscando es encriptada o “hasheada” en una serie de letras y números.
Para eso, se toma cierta información del bloque anterior más la del nuevo, junto con el nonce, y se pasa por una función que retorna un resultado de una longitud determinada. Esto es lo que se conoce como hash, y es muy importante porque siempre arroja el mismo resultado ante la misma información.
Esa característica es importante, porque hace que los bloques estén relacionados entre sí al tener el nuevo la información del bloque anterior. Si la cambiara y apuntara a otro bloque, entonces el hash también lo haría.
La particularidad de que la función que genera el hash siempre produzca el mismo resultado cada vez que se ingresa la misma información se la conoce determinística.
Función que permite comprobar rápidamente que el hash es válido para la información dada, pero no predecir que cambiar de la información para obtener un valor particular.
Aquí es donde entra el nonce, ya que es esa información que deseamos cambiar para obtener un valor diferente de hash y por ende encontrar el valor correcto para que el bloque sea válido en la blockchain.
Pero no podemos elegir un nonce en particular para acercarnos al resultado.
¿Cómo funciona la minería?
Para agregar un nuevo bloque a la cadena es necesario de los mineros, los cuales utilizan una gran cantidad de poder de procesamiento para encontrar uno válido.
Pueden ser personas o compañías, que utilizando ordenadores o ASIC (hardware específico para la tarea de minar), encuentran los bloques.
A cambio de esta tarea ellos reciben criptomonedas, siempre y cuando sean capaces de encontrar el hash correcto (llamado hash objetivo) para ese bloque y sean los primeros.
Algo que comienza en la cabecera del bloque y en donde encontramos distintos valores importantes:
- Número de versión del bloque
- Marca de tiempo
- Hash del bloque anterior (esto es lo que los vincula)
- Hash del la raíz de Merkle (que apunta a las transacciones)
- Hash objetivo
- Nonce
La información en general del bloque es importante, por lo que no se puede cambiar. Sin embargo, el nonce es un valor cuyo único objetivo es utilizarse una vez. Por eso es la información que se elige modificar hasta dar finalmente con el hash que interesa.
Si el bloque consigue un hash que este por debajo del objetivo, entonces el bloque es agregado a la blockchain. Caso contrario, el minero deberá seguir probando hasta encontrar el nonce correcto.
Al final todo esto conlleva un esfuerzo muy grande en hardware y electricidad, por eso son recompensados con criptomonedas. Un ejemplo de esto son los 6,25 BTC de recompensas que ofrece Bitcoin a momento de escribir esto.
¿Cómo encontrar el nonce?
Encontrar cual es el nonce correcto necesita de mucho poder de cálculo, ya que se trata de una tarea de prueba y error. No se puede determinar que nonce llevara a un resultado determinado, por lo que no hay más remedio que probar distintos.
Un minero por tanto debe crear un nuevo nonce, agregarlo a la cabecera del bloque que busca validar, luego pasarlo por la función hash y finalmente compararlo con el hash objetivo.
Si ha alcanzado el requerimiento, entonces el minero ha conseguido la solución y así su recompensa. Caso contrario, deberá seguir probando hasta hallar con el correcto.
Es muy difícil que un minero encuentre el nonce correcto en sus primeros intentos, lo más normal es que deba probar millones de opciones antes de hallar el que le sirva.
Cuanto mayor sea el nivel de dificultad, mayor será la cantidad que deba probar antes de encontrar un nonce que le permita alcanzar un hash inferior al necesario. Esto es lo que permite ajustar la dificultad de la minería y hacer que cada bloque tarde lo que está estipulado.
La dificultad es igual para todos los mineros en la red, ya que se encuentra en la cabecera y no sería un bloque válido si la misma no cumpliera eso. Por tanto, todos los mineros tienen las mismas posibilidades de encontrar el hash correcto.
Cada cierto tiempo, en Bitcoin es cada 2016 bloques, se actualiza la dificultad par reflejar los cambios del poder de cómputo de la red. Cada minero evalúa la velocidad con la que se han creado los últimos bloques y determina la próxima dificultad.
Tiene la intención de hacerlo de forma correcta, es decir que no puede poner una dificultad baja para encontrar más rápido el nonce, ya que cuando sea turno de otro nodo de verificar el bloque lo daría como inválido.
¿Qué es un Nonce dorado?
Encontrar el nonce correcto para alcanzar el hash objetivo es la tarea más importante de los mineros, por eso se utilizan tantos recursos.
Al final, el nonce que satisface las necesidades para generar el nuevo bloque se lo conoce como Golden Nonce o Nonce Dorado.
Un término que ha surgido a partir del billete o boleto dorado de lotería que es el que te da acceso al gran premio. También podría provenir del ticket dorado para la fábrica de chocolate de Willy Wonka.
Otras aplicaciones del Nonce
El nonce no es un concepto novedoso ni algo inventado solo para las criptomonedas. Se han estado utilizando en otros aspectos relacionados con la seguridad en cuestiones informáticas.
Algunas aplicaciones tienen que ver con la recuperación y la identificación en aplicaciones, la firma electrónica, la encriptación de información y mucho más.
Si has utilizad alguna vez una medida de seguridad llamada doble factor de autenticación o has hecho una compra online, entonces has utilizado el nonce, aunque no es algo que hayas visto como tal, sino que funciona por detrás de esos servicios.
Resumen
- Un nonce es el “número utilizado una vez” (por sus siglas en inglés). Se refiere al número que el minero tiene que encontrar para poder resolver el bloque antes de integrarlo a la blockchain.
- Gracias a descubrir este número, el minero es recompensado con criptomonedas por el tiempo y otros recursos que consumió en la tarea.
- Encontrar el nonce es una tara muy difícil que requiere de ciertos recursos, lo cual es considerado una forma de eliminar los mineros menos eficientes.
- Se necesita gran poder computacional para poder encontrar un nonce si se quiere ser rentable en la minería.
- Este número no solo se utiliza para las criptomonedas, sino también para otras aplicaciones en red como pueden ser la autenticación de las compras online, implementación de doble factor de autenticación o cualquier otro mecanismo en donde se requiera recuperar una cuenta o identificarte.
Agrega un Comentario