En el primera parte, vimos una descripción general de y la relación entre bloques y transacciones. Luego vimos un problema de acuerdo a las órdenes de transacciones que explicamos aquí:
Mantener el orden de las transacciones que se transmiten a otros nodos en la red de igual a igual de un (como Bitcoin). Las transacciones no se procesan necesariamente en el orden en que se crean, por lo que el sistema debe crear una forma de evitar el doble gasto. Para lograr esto, las transacciones deben transferirse nodo por nodo junto con la red. Tenga en cuenta que no hay garantía de que el orden de recepción de las transacciones por nodos se corresponda con el orden de su creación.
Esto significa que se necesita un mecanismo para que toda la red de pueda acordar el orden de las transacciones. El sistema coloca las transacciones en un grupo de bloques y luego las organiza conectando cada bloque al anterior mediante una función de "hash", que es un mecanismo matemático. Estos bloques están conectados entre sí como cadenas en una línea en una secuencia de tiempo. Cada bloque guarda una salida de hash de su bloque anterior.
El siguiente problema a resolver es que cada nodo puede crear arbitrariamente un bloque de transacciones y transmitirlo en la red como una sugerencia para el siguiente bloque. Si, en un momento dado, nodos diferentes crean bloques diferentes, ¿cuál debería considerarse válido? Mientras los bloques se puedan recibir en diferentes órdenes en diferentes partes de la red, no se puede confiar en ningún orden.
La tecnología ha resuelto este problema mediante la introducción de un rompecabezas a juego. Cualquier bloque que quiera agregarse a la cadena de bloques, debe contener una respuesta en su contenido para un "rompecabezas matemático" único. Esa respuesta se llama "Prueba de trabajo". Un nodo que crea un bloque debe poder demostrar que tiene suficientes recursos computacionales para resolver el "rompecabezas matemático". Por ejemplo, un nodo debe poder encontrar un número aleatorio (nonce) con el cual pueda generar la salida de hash del siguiente bloque que comienza con un cierto número de ceros.
La cantidad de ceros al comienzo del hash de un bloque varía debido a la dificultad de la red (cuanto más poder de hash tiene una red, más ceros debe tener el hash de un bloque), pero el proceso de verificación es muy simple y se puede hacer. mediante la verificación del hash con respecto a los datos de entrada.
Resolver este enigma matemático requiere mucho tiempo y su complicación es ajustable, por ejemplo, la complejidad del enigma se puede ajustar para que el tiempo promedio de su solución por un nodo en la red de bitcoin (para crear un bloque) sea de 10 minutos.
La posibilidad de crear más de un bloque en el sistema durante el tiempo asignado es muy baja. El primer nodo que resuelve el rompecabezas transmite su propio bloque al resto de los nodos en la cadena de bloques. Si en una circunstancia especial se crea más de un bloque a la vez, se llevan a la creación de diferentes ramas. Sin embargo, el rompecabezas matemático es lo suficientemente complejo para que la cadena de bloques se estabilice rápidamente y todos los nodos coincidirán en el orden de la cadena de los bloques recientes.
Por otro lado, la red reconoce solo la cadena más larga como válida. Como resultado, es casi imposible para un invasor o atacante definir una transacción falsa porque no solo tienen que generar un bloque que haya resuelto el problema matemático, sino que también deben recrear bloques previos de manera similar a como lo hacen otros nodos. La red los considera válidos.