Una parte central de cada blockchain es el algoritmo de minería, tomemos como ejemplo el algoritmo de bitcoin. Se llama SHA-256, abreviatura de “algoritmo de hash seguro de 256 bits”. Toma una entrada que puede ser cualquier cosa, texto, números o incluso un archivo de computadora de cualquier longitud. La salida producida se llama “hash” y tendrá la misma longitud cada vez, 256 bits en el código de máquina.
La misma entrada dará la misma salida cada vez, no es aleatoria. Pero si realiza un pequeño cambio en la entrada, la salida cambiará por completo.
También es lo que se llama una función unidireccional, lo que significa que si solo tienes la salida no puedes calcular qué entrada fue, solo puedes adivinar cuál fue la entrada, y las probabilidades de acertar es de 1 en 2 ^ 256, lo cual es bastante imposible, en otras palabras, es seguro.
Ahora que sabemos lo que hace el algoritmo, vamos a demostrar cómo funciona una Blockchain con un simple ejemplo de una transacción.
Aquí tenemos a Alice y Bob junto con su balance de bitcoins. Digamos que Alicia le debe a Bob 2 bitcoins.
Para que Alice envíe a Bob esos 2 bitcoin, Alice transmite un mensaje con la transacción que desea hacer a todos los mineros de la red.
En esa transmisión, Alice le da a los mineros la dirección pública de Bob, la cantidad de bitcoins que le gustaría enviar, junto con una firma digital y su clave pública. La firma se hace con la clave privada de Alice y los mineros pueden validar que Alice, de hecho, es la propietaria de los bitcoins y que quiere realizar la transacción.
Una vez que los mineros están seguros de que la transacción es válida, pueden ponerla en un bloque junto con muchas otras transacciones e intentar minar el bloque. Esto se hace poniendo el bloque a través del algoritmo SHA-256. La salida debe comenzar con una cierta cantidad en 0 para que se considere válida. La cantidad de 0 necesarios depende de lo que se denomina la “dificultad”, que cambia según la potencia informática que haya en la red.
Para generar un hash de salida con la cantidad deseada de 0 al principio, los mineros agregan lo que se llama un “número nonce” al bloque antes de ejecutarlo a través del algoritmo. Debido a que un pequeño cambio en la entrada cambia completamente la salida, los mineros intentan realizar operaciones aleatorias hasta que encuentran un hash de salida válido.
Una vez que se mina el bloque, el minero transmite ese bloque recién minado a todos los demás mineros. Luego, se aseguran de que el bloque sea válido para que puedan agregarlo a su copia de la blockchain y la transacción esté completa. Pero en el bloque, los mineros también deben incluir el hash de salida del bloque anterior para que todos los bloques se unan entre sí, de ahí el nombre Block CHAIN (Cadena Bloque). Esta es una parte importante debido a la forma en que la confianza funciona en el sistema.
Cada minero tiene su propia copia de la blockchain en su computadora y todos confían en la blockchain que tenga más trabajo computacional, la blockchain más larga. Si un minero cambia una transacción en un bloque anterior, el hash de salida para ese bloque cambiará, lo que lleva a todos los hashes después de que también se modifique debido a que a los bloques les gustan los hashes. El minero tendría que rehacer todo el trabajo para hacer que cualquiera acepte su blockchain como la correcta. Entonces, si un minero quisiera hacer trampa, necesitaría más del 50% del poder de computación de las redes, lo cual es muy poco probable. Ataques de red como este son llamados ataques del 51%.
El modelo para hacer que las computadoras funcionen con el fin de producir bloques se llama Proof of Work (PoW), también existen otros modelos como Proof of Stake (PoS) que no requieren tanta potencia de computación y están destinados a requerir menos electricidad. Al mismo tiempo poder escalar a más usuarios.
¡Y eso es lo básico de cómo funciona una blockchain!