Para esta simulación vamos a utilizar un fantástico simulador online llamado "Blockchain Demo" creado por Anders Brownworth que intenta explicar la tecnología basándose en conceptos simples utilizando una demostración web.
El simulador nos muestra un límite de 5 bloques por lo que realizaremos la tarea en grupos de 5 compañeros o compañeras.
1. Inicio
Accedemos al simulador de Blockchain
Para realizar nuestro reto vamos a utilizar un simulador de blockchain de https://andersbrownworth.com
- Accedemos los 5 componentes del grupo a la vez a través del navegador.
- Encontramos 5 bloques, cada componente será el encargado de uno de ellos.
- Realizamos el reparto y estaremos listos para comenzar.
2. Minamos el primer bloque
Partes del bloque
El bloque tiene 5 artes:
- Nº del bloque --> se genera automáticamente
- Nonce --> el algoritmo lo cambiará miles de veces para generar el hash.
- Datos --> es la información que introducimos nosotros y que se almacena en el bloque.
- Hash del bloque anterior --> el algoritmo lo toma automáticamente del bloque anterior y sirve para crear la cadena.
- Hash del bloque --> se obtiene aplicando el algoritmo de hash al conjunto de datos anteriores:
SHA256 (Número de bloque, Nonce, Datos, Hash del bloque anterior) --> Hash
Introducimos la información en los datos
Podemos poner nuestro nombre.
A continuación pulsamos en "Minar". ¡¡Ya estamos minando!!
Prueba de trabajo (PoW)
- En este caso y para ir más rápido el hash debe comenzar con 4 ceros.
- Esta condición es la que hace que el minado tarde un tiempo, pues el algoritmo empieza a probar cambiando el Nonce desde 1 hasta encontrar el hash correcto.
- Normalmente tardará 2 ó 3 segundos. cuanto más alto sea el Nonce, más pruebas ha realizado y más tiempo ha tardado.
- En el Bitcoin la condición ya va por unos 20 ceros y es lo que aumenta la dificultad del minado cada cuatro años aproximadamente.
3. Creamos la red
Minamos los 5 bloques
- Cada minero del grupo debe minar los 5 bloques empezando por el 1 hasta el 5, introduciendo como dato el nombre de sus compañeros o compañeras en cada bloque.
- Hay que tener cuidado con los espacios que también se minan y pueden ocasionar un hash diferente aunque parezcan los mismos datos.
- Si todo es correcto todos deberían tener la misma cadena.
- En una blockchain real cada minero sólo minaría un bloque que se comparte de forma automática con los demás por la red descentralizada P2P. El resto valida el bloque comprobando que todo es correcto.
4. Pruebas con los bloques
Comprobamos que no se pueden modificar.
- Si ahora uno de los mineros altera en el bloque 3 por ejemplo, algún dato como añadir una letra, ¿qué ocurre?.
- Si mina también los bloques siguientes 4 y 5 de su cadena, ¿estarían validados sus cambios?.
- En un blockchain real los demás mineros no pararían de minar nuevos bloques aumentando constantemente la cadena.
- ¿Qué tendría que pasar para que la versión de la cadena modificada fuera la correcta?. Recuerda lo del ataque del 51%.
- Si todos los mineros crean nuevos bloques, ¿Quién se lleva la recompensa?.
- ¿Se te ocurren otras pruebas para realizar?