¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Consenso y bifurcaciones: elegir la cadena válida

Después de esta lección: Puedo elegir la cadena válida con más trabajo entre varias cadenas que compiten.

Lección de 60 min1 comandoLaboratorio de blockchain: una cadena de juguete en Python para leer, romper, minar y firmar

Cuando hay dos cadenas, todos eligen la misma

El consenso es la regla con la que muchos ordenadores, sin ningún jefe, se ponen de acuerdo en cuál es la cadena buena. Cuando dos bloques nuevos aparecen a la vez, la cadena se bifurca y hay que elegir una.

Piensa en dos copias del mismo cuaderno de apuntes que se han seguido escribiendo por separado. Necesitas una regla que no dependa de a quién creas.

Al final de esta lección

Nota

Puedo elegir la cadena válida con más trabajo entre varias cadenas que compiten.

Palabras clave

PalabraQué significa
Nodoun ordenador que guarda una copia de la cadena
Bifurcacióndos cadenas válidas que comparten un principio y se separan
Consensoel acuerdo de todos los nodos sobre una sola cadena
Trabajo de una cadenalos intentos que costó minar todos sus bloques
Bloque huérfanoun bloque de la cadena que pierde

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una bifurcación son dos cadenas válidas

Dos nodos minan un bloque casi a la vez, y cada uno lo envía a sus vecinos. Unos nodos reciben el primero y otros el segundo.

Las dos cadenas son válidas. Comparten todos los bloques hasta uno, y desde ahí se bifurcan.

La regla: la cadena válida con más trabajo

Cada nodo aplica la misma regla. Primero descarta toda cadena que no sea válida. De las que quedan, elige la que tiene más trabajo.

El trabajo es lo que costó minarla. Con la misma dificultad en todos los bloques, la cadena con más bloques tiene más trabajo.

Ejemplo: dos cadenas con dificultad 2

CadenaBloquesTrabajo (bloques por 16 elevado a 2)Resultado
A3768se descarta
B41024gana

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Qué imprime el laboratorio y en qué idioma

El script imprime en inglés: "both chains valid", "work" y "wins". Escribe True True si las dos cadenas son válidas.

Al final pregunta si el último bloque de las dos cadenas es el mismo. Es lo que define una bifurcación.

Compara dos cadenas que se bifurcan

Comando
docker exec jupyter python3 steps/fork.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Calcula el trabajo y elige

Código: python
DIFICULTAD = 2
cadenas = {"A": 3, "B": 4}

mejor = ""
mayor = 0
for nombre in cadenas:
    trabajo = cadenas[nombre] * 16 ** DIFICULTAD
    print("cadena", nombre, "bloques", cadenas[nombre], "trabajo", trabajo)
    if trabajo > mayor:
        mayor = trabajo
        mejor = nombre
print("gana la cadena", mejor)
# Cambia B a 3 bloques. ¿Quién gana ahora? Y si las dos tienen 3, ¿por qué gana la primera?

Un error frecuente

Advertencia

Mucha gente cree que gana siempre la cadena más larga. No es así. Primero hay que comprobar que la cadena es válida. Una cadena de diez bloques con uno falso se descarta antes de contar nada.

Los bloques de la rama perdida quedan huérfanos

Cuando llega un bloque más a una rama, los nodos cambian a esa rama. Los bloques de la otra quedan huérfanos.

Sus pagos vuelven a la lista de pagos pendientes y entran en bloques nuevos. Por eso un pago reciente se considera firme solo cuando hay varios bloques detrás.

Para ir más lejos

En el cuaderno del laboratorio crea dos cadenas desde un mismo principio y añade bloques distintos a cada una.

Prueba a cambiar un dato en la rama más larga. ¿Sigue ganando? ¿Qué tendrías que rehacer para que gane otra vez?

Sobre este laboratorio y su código: Laboratorio de blockchain: una cadena de juguete en Python para leer, romper, minar y firmar

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.