#6 Bitcoins parte 1: Blockchain
¿Te cuesta entender el mundo del Bitcoin? Empieza por este post donde te explico como funciona la tecnología Blockchain que lo soporta.
Hola soy Francisco Fernández @franferparra, Principal Director de Accenture y esta es mi newsletter dedicada a entender la tecnología a través de la simplificación. Porque no es lo mismo Simple que Fácil!
Feliz año nuevo, retomo la newsletter después de la navidad con un tema de actualidad: el Bitcoin.
En un principio pensé que podría hacer un resumen del funcionamiento del Bitcoin en un solo post, pero a medida que empecé a investigar he preferido partirlo en tres.
En este primero vamos a ver los fundamentos de la cadena de bloques o Blockchain que es el soporte tecnológico que permite crear monedas digitales.
En el siguiente post hablaremos del funcionamiento concreto del Bitcoin, y de su política monetaria en comparación con el dinero fiduciario.
En el último veremos las dudas y beneficios que plantean las criptomonedas.
Blockchain
Blockchain es una gran base de datos descentralizada que guarda un libro apuntes de transacciones entre los usuarios de la red. Entendemos por transacción cualquier intercambio de Tokens. Un Token es una representación digital de “algo que tiene valor”. Por ejemplo, una criptomoneda como el Bitcoin es un Token de Blockchain
Base de datos descentralizada vs Base de datos de un banco
Vamos a empezar con el concepto descentralizado, para ello vamos a ver cómo funcionan hoy las bases de datos de los bancos. Yo tengo mis ahorros en un depósito en el banco X, es decir hay un registro en una base de datos de este banco que guarda un valor numérico. Si quiero añadir fondos accedo a través de los sistemas del banco que modifican esa base de datos. Esto es, tengo un intermediario propietario de la base de datos que es responsable de escribir las transacciones, custodiar y mantener la base de datos.
En el caso de Blockchain existen miles de ordenadores conectados entre sí formando una red. Mis transacciones y saldo junto con las del resto de usuarios, se guardan en una única base de datos que se copia en todos los nodos y no hay ninguna entidad que se encargue de mantener y centralizar la información.
A estos ordenadores conectados se les denomina Nodos Mineros o simplemente Mineros (más abajo está la explicación de por qué se les llama así)
Esta descentralización hace que, si se cae un nodo o entra uno nuevo, la información de las transacciones no se vea alterada. También la hace mucho más difícil de ser atacada ya que la información está copiada en miles de nodos.
Estructura de Cadena de bloques
A diferencia de las bases de datos tradicionales donde la información se almacena en tablas, las transacciones en Blockchain se guardan en bloques y se encadenan con una secuencia establecida por procesos criptográficos.
Vamos a intentar verlo en un ejemplo. Partimos de tres amigos que se van a intercambiar Bitcoins
Saldo inicial: Pedro tiene un saldo inicial de 5 Bitcoins (BTC), Luis y Juan tienen un saldo inicial de 0 BTC
Transacciones
Transacción 1: Pedro envía a Luis 2 BTC
Transacción 2: Pedro envía a Juan 1 BTC
Transacción 3: Luis envía a Juan 1 BTC
Transacción 4: Luis envía a Pedro 1 BTC
Saldo final: Pedro tiene 2 BTC, Luis 1 BTC y Juan 2 BTC
Estas transacciones se escriben en tres bloques:
Parece claro que el orden de los bloques es vital para que el sistema funcione porque si cambio el orden se estarían enviando BTC desde usuarios que no tienen saldo. Por lo tanto, tengo que encadenar estos bloques de tal manera que sea imposible alterar esa secuencia y evite lo que se llama el “Doble gasto” (riesgo de que una criptomoneda sea duplicada, sería análogo a falsificar un billete).
Ahora empieza lo duro… Para establecer la secuencia de bloques se utiliza una función criptográfica llamada HASH. Para simplificar podemos decir que esta función es una serie de procesos matemáticos que ante un input devuelve un output único, en el caso del Bitcoin es una secuencia de 40 letras y números (con una codificación de 256 bits). Para entenderlo, la función Hash transforma cualquier input en una cadena de 40 caracteres, ya sea un número, una frase, un libro entero o un conjunto de transacciones.
Fuente: https://academy.bit2me.com/sha256-algoritmo-bitcoin/
Con tan solo cambiar un bit de las transacciones del bloque ese código de 40 caracteres cambiará (en el ejemplo anterior solo con añadir un punto la final de la frase “Hoy está nublado” el resultado es completamente diferente). Así que el Hash de cada bloque es como la huella dactilar de una persona.
Una propiedad básica de la función Hash es que no puedo reconstruir el bloque a partir de su Hash, de la misma forma que no puedo decir a partir de una huella dactilar si se trata de un hombre, de pelo castaño, de 1,80 metros de altura, etc.
¿Cómo garantizamos la secuencia de bloques? Pues utilizando en el encabezado del bloque el Hash del bloque anterior.
De esta forma tenemos a los bloques encadenados y garantizamos la secuencia. También la función Hash garantiza que no se puedan alterar las transacciones de los bloques una vez escritos. Si en este ejemplo yo quisiese alterar las transacciones del bloque 2 cambiaría su Hash y por tanto no coincidiría con la cabecera del bloque 3 así que no sería aceptado ese cambio. Si quisiese cambiar las transacciones del bloque 1 tendría que cambiar las cabeceras de todos los bloques posteriores lo que hace casi imposible modificar un bloque ya escrito.
¿Cómo se crea un bloque?
Añadir bloques en la red Blockchain es un proceso en el que todos los mineros de la red participan y que está regido por el propio protocolo y definición del Blockchain. Para crear un bloque nuevo, a todos los mineros de la red se les propone un problema matemático a resolver, y comienza una competición por ser el primero. El minero que lo resuelve tiene el derecho de inscribir ese bloque y recibe como recompensa una cantidad de Bitcoins. En Bitcoin cada 10 mínutos se está escribiendo un bloque
Veamos los pasos que se dan para que se escriba o se “Mine un bloque”:
Transacciones: Los usuarios de la red realizan sus transacciones. En nuestro ejemplo los envíos de BTC entre Pedro, Luis y Juan. En el próximo post veremos cómo se realizan esas transacciones de BTC y hablaremos de las claves públicas, privadas, direcciones Bitcoin y Wallets.
Formación. Los mineros forman los bloques cogiendo las transacciones “pendientes” (es decir, que no estén en ningún bloque ya escrito). A este bloque se le llama “Bloque Candidato”. Cada minero incluye las transacciones que quiere hasta llenar el bloque con un tamaño máximo de 1MB (¿por qué esta cifra? Pues es uno de los parámetros de diseño originales del protocolo de Blockchain, pero actualmente está en debate la escalabilidad del Bitcoin por cosas como esta).
Prueba de trabajo (Proof of work - PoW). Este es el problema matemático a resolver por los mineros de la red. Otra vez necesitamos recurrir a la función criptográfica Hash (algoritmo que transforma el contenido de un bloque en una cadena de 40 caracteres codificados en 256 bytes de ceros y unos).
En nuestro ejemplo, si quisiésemos escribir el bloque 4 el problema matemático lanzado a la red sería encontrar un número (incógnita o “Nonce”) que hace que el Hash de todo eso, de una cadena de 256 bytes donde los 30 primeros bytes sean 0.
Este problema solo se puede resolver a base de prueba y error, es decir, de ir poniendo números aleatorios en Nonce (‘number that can be only used once’) hasta que damos con el objetivo. Por lo tanto, estamos ante un problema que solo se puede resolver a base de fuerza bruta, de probar y probar números a la mayor velocidad.
Aquí radica la complejidad de la minería de Bitcoins y porqué es necesario tener mucho poder de computación e invertir en equipos y en gasto eléctrico. Cuantas más pruebas por segundo pueda hacer más probabilidades tengo de dar con ese número que resuelve el problema.
De hecho, a medida que crece la potencia de computación (más mineros con mejores ordenadores) el protocolo de Bitcoin ajusta la dificultad para que el tiempo medio de minado de un bloque sea de 10 minutos. La dificultad la podemos simplificar diciendo que son el número de 0 por los que tiene que empezar el Hash objetivo. Aproximadamente cada 2016 bloques se ajusta la dificultad.
En el próximo post veremos como este ajuste de la dificultad y el ajuste de la recompensa son parte de la política monetaria de Bitcoin.
Transmisión. Cuando un minero encuentra una solución al problema matemático envía al resto de mineros el bloque y la solución para que lo validen. En este momento el Minero que ha resuelto el problema añade un apunte al inicio del bloque con los Bitcoins que le corresponden como recompensa.
Verificación: El resto de los nodos verifican que las transacciones incluidas en el bloque son transacciones pendientes y no inscritas en ningún bloque anterior, que la cantidad de BTC que se asigna al minero es correcta, y que el resultado de la Prueba de Trabajo es correcto
Confirmación. El bloque se inscribe y genera su nuevo Hash (huella dactilar) que será la cabecera del siguiente bloque a ser minado. En este momento todos los mineros vuelven a empezar el proceso desde cero, es decir, tienen que formar nuevos bloques con las transacciones pendientes y encabezarlos con el Hash del último bloque creado para comenzar con la Prueba de Trabajo.
Beneficios de la red Blockchain
Una vez visto el funcionamiento de la cadena de bloques veamos porque es una tecnología que sirve para crear una moneda puramente digital que genere confianza entre los usuarios.
Tenemos una base de datos única, verificable y transparente. Las transacciones son validadas por todos los nodos de la red y quedan escritas en la cadena de bloques para ser consultadas
Es inmutable. Gracias a las funciones criptográficas que hemos visto no se puede alterar ni el contenido de los bloques ni la secuencia de estos.
Es descentralizada. No depende de ningún organismo que centralice y que añada complejidad y opacidad al proceso. Además, añade seguridad ante un ataque teniendo miles de copias distribuidas.
Bola extra: ¿Por qué se llama Mineros?
Es una referencia a los mineros que extraen oro. Los mineros gastan en equipos (perforadoras, molinos, etc.) y energía (electricidad y fuel) para excavar y extraer el oro que tiene un valor en el mercado. Los nodos de la red emplean recursos computacionales (ordenadores) y energéticos (electricidad) para obtener una recompensa en forma de Bitcoin. Además, cada vez es más difícil extraer oro de la tierra, de la misma forma que cada vez es más difícil minar bloques de Blockchain.
Hasta aquí el primer post dedicado al Bitcoin y al Blockchain. Sé que no es una lectura fácil, pero creo que es necesaria para entender después cómo funciona el Bitcoin o cualquier otra criptomoneda.
Como siempre si os ha gustado podéis darle al ❤ , dejar comentarios o mejor aún compartirla entre vuestros amigos y en las redes sociales.
Hasta el próximo post
Referencias
Principal referencia en español: Bit2me
Videos en español muy sencillos y bien explicados: Canal youtube Crypto Español
Acojonante Fran! Vaya tela explicar esta tecnología. Te confieso que es la 1ª vez que lo empiezo a entender. ;)