Saltar al contenido

Arquitectura de cadenas de bloques: Lo básico

Hasta ahora, hemos bailado alrededor de los detalles de “crear un bloque”, o la minería. La minería es el proceso de poner en marcha un trabajo en el mundo real (en forma de electricidad) para crear un bloque válido que sea aceptado por el resto de la red.

Los mineros son el equivalente a la red de procesamiento de una compañía de tarjetas de crédito. Toman las transacciones pendientes, verifican que sean criptográficamente exactas y las empaquetan en bloques para ser almacenadas en la cadena de bloques.

Arquitectura de cadenas de bloques: Lo básico
Arquitectura de cadenas de bloques: Lo básico

En un nivel alto, el proceso de minería implica el hash de un bloque potencial, comprobando si el hash se ajusta a las reglas de dificultad actuales, y si no, cambiando el nonce en la cabecera del bloque y haciendo el hash de nuevo.

Hashing

Las funciones Hashing tienen unas cuantas propiedades que las hacen deseables para crear pruebas de trabajo, un concepto clave en la red de Bitcoin específicamente:

  • Las funciones de hash convierten un dato arbitrariamente grande en una salida de hash de longitud fija
  • Son uno a uno: la misma entrada siempre proporcionará la misma salida de hash
  • Son funciones unidireccionales: es imposible “trabajar hacia atrás”, y reconstruir la entrada dada una salida de hash.

Algunos esquemas de hashing comunes se pueden encontrar aquí. Como referencia, Bitcoin utiliza el algoritmo de hashing SHA-256 para la prueba de trabajo.

Ve aquí para ver más de cerca las alternativas a la arquitectura de prueba de trabajo.

Debido al hash, editar incluso un solo trozo de la cabecera del bloque resultará en un hash diferente. Por lo tanto, al cambiar el noce se creará un nuevo valor de hash para cotejarlo con las reglas de dificultad actuales. Este proceso debe hacerse una y otra vez para cada nuevo bloque potencial, hasta que se encuentre un hash válido.

Cuando un minero encuentra la configuración correcta de los datos dentro de una plantilla de bloque que resulta en un hash válido, es trivialmente fácil para todos los demás nodos realizar la misma función de hash en ese bloque, y verificar que, de hecho, resulta en un hash válido.

Incentivo a la minería

Los mineros deben tener algún incentivo para realizar el trabajo necesario para crear un bloque válido. En Bitcoin, este incentivo es la creación de nuevas monedas a través de la transacción de la base de monedas. Se trata de una transacción especial que existe en cada bloque, que no tiene entradas y que tiene una única salida que apunta a una dirección que (presumiblemente) controla el minero. Si el bloque de un minero es aceptado por la red, su dirección se acredita con esta nueva moneda.

La “dificultad” de la minería se ajusta típicamente con el tiempo a medida que la red crece. La dificultad es una regla de consenso que define cuánto trabajo debe hacerse para crear un bloque válido. Los bloques son válidos cuando su encabezado se acelera para producir un resultado que pruebe que se ha hecho suficiente trabajo.

¿Cómo se demuestra esto? El hachís debe ajustarse a un cierto formato. En Bitcoin, a un alto nivel, este formato es “el hash del bloque debe comenzar con un cierto número de ceros”.

El bloque 488485 de Bitcoin, por ejemplo, tiene un hash de 0000000000000000008c8aa76452c5b0b422be963b1f9813538ec374178a6826.Este es un hash que comienza con 18 ceros. Teniendo en cuenta las propiedades de las funciones de hash definidas anteriormente, es extremadamente difícil encontrar un hash resultante de una estructura de bloques arbitraria que comience con el nivel de dificultad actual de 18 ceros.

Cualquier otro actor de la red puede confiar en que si reciben este bloque, debe haber necesitado mucha potencia de computación para encontrar la combinación correcta de datos para generarlo. Para compensar a los mineros por su tiempo y energía, la red global está de acuerdo en que el minero puede incluir como recompensa una transacción de acuñación de nuevas monedas.