Inmutabilidad de blockchain: ¿por qué Bitcoin es inmutable?
La inmutabilidad de blockchain es uno de los rasgos más invocados de esta tecnología y refiere a su capacidad para conformar un registro inalterable de datos. La blockchain de Bitcoin es inmutable.
O dicho diferente, la información almacenada o compartida en la cadena de bloques de Bitcoin no puede eliminarse ni modificarse, sin que ello no salte de inmediato.
Cuando se habla de la cualidad inmutable de Bitcoin no se debe, en rigor, a «la tecnología blockchain», sino que específicamente al Proof of Work, el primer mecanismo de consenso implementado en un protocolo blockchain y motor de diferentes cadenas de bloques.
Lo más correcto sería decir que la blockchain de Bitcoin es inmutable debido al Proof of Work.
En términos muy sintéticos, la invocada inmutabilidad de blockchain se debe, básicamente, a los algoritmos de consenso y la criptografía.
Algortimos de consenso y la naturaleza inmutable del Bitcoin
Un atributo común de las plataformas que emplean la tecnología blockchain es que operan como redes descentralizadas, sin una autoridad central encargada de almacenar la información ni de validar las transacciones realizadas.
¿Cómo se toman, entonces, las decisiones? Las cadenas de bloques han incorporado en sus protocolos diferentes algoritmos de consenso, es decir mecanismos de tomas de decisiones para llegar a un acuerdo entre los distintos participantes de la red de forma descentralizada.
¿Qué sería, en concreto, aquello de la descentralización? Distribución de mineros y nodos
Al no existir en Bitcoin una autoridad, es decir un nodo central y único, todos los participantes de la red tienen una copia idéntica del libro mayor. Esos participantes son los “nodos”, los responsables de validar matemáticamente las transacciones y nuevos bloques.
Cada copia que tiene cada nodo posee el mismo histórico completo de todas las transacciones realizadas desde el origen (3 de enero del 2009).
Pero la verificación de transacciones/bloques no es en sí mismo minar, sino que implica validar que el trabajo de minería ha sido correcto, es decir las operaciones matemáticas efectuadas para la validación.
En caso de que la operación sea correcta, los nodos la agregan a su copia del libro. En caso contrario, es desechada por ellos.
Los nodos son los únicos actores del ecosistema con la facultad de validar. Los mineros, por su parte, se encargan de crear los bloques, piezas ineludibles para que las transacciones sean validadas y seguras.
Como aclara un artículo de Academy Bit2me, los nodos «no son mineros necesariamente», sino que…
«los nodos son todos aquellos ordenadores que están unidos a la red P2P Bitcoin. Los mineros también son nodos, pero con una funcionalidad activada para resolver problemas de minado, por lo que para ser un nodo no necesitas gastar electricidad más allá de lo que supone tener un ordenador encendido con conexión a Internet. La seguridad de Bitcoin (y todo sistema distribuido) es directamente proporcional a la descentralización de sus nodos«.
Si bien Bitcoin cuenta con millones de usuarios de todo el mundo, en agosto de 2018 sólo existían unos 10.000 nodos. Como la mayoría de los usuarios no posee su propio nodo, se usan nodos de otros (ej: usuarios de monederos online, de plataformas de intercambio, etc.)
¿Qué rol juegan los algoritmos de consenso?
La red de Bitcoin se encuentra programada para seguir la cadena de bloques más larga.
Si más del 51% de los nodos adoptan algo por cierto, esa sería «la verdad», al tratarse del «veredicto» de la mayoría. Esa sería «la cadena más larga», por contar con el apoyo del 51% de la red.
El sistema Proof of Work o «prueba de trabajo» exige que los nodos participantes de la red verifiquen las transacciones a través de cálculos matemáticos, que demandan una enorme cantidad de recursos computacionales.
Los nodos conectados a la red Bitcoin dedicados a la minería compiten para «minar» cada bloque de transacciones.
Quien solucione el problema con éxito recibirá una recompensa en bitcoins a cambio, es decir incentivos para el necesario proceso de verificar las transacciones.
Mediante los algoritmos de consenso, las redes descentralizadas pueden validar que las transacciones sean legítimas, sin necesidad de acudir a un tercero de confianza, como ser otra empresa, institución o ente central.
Para confirmar que las transacciones realizadas son válidas, los nodos usan algoritmos que permiten verificar -para empezar- que tal usuario efectivamente tiene -por ejemplo- los 2 bitcoins que quiere enviar.
El poder o complejidad computacional que requiere la verificación de una transacción proporciona seguridad al sistema, ya que una vez alcanzado el consenso se necesitaría de una gigantezca cantidad de tiempo y consumo de energía para realizar cambios en la cadena de bloques.
Pese a su seguridad, la intensidad de recursos que supone el Proof of Work ha sido objeto de críticas y debates, principalmente por su creciente demanda de energía y por el hecho de que la minería se ha concentrado entre unos pocos (los que pueden pagar mejores equipos, o los que operan en lugares con energía eléctrica barata), amenazando con «centralizar» las redes por naturaleza descentralizadas.
Existen otros tantos métodos de consenso, como ser Proof of Stake, Proof of Authority, Delegated Proof of Stake, Proof of Weight, Byzantine Fault Tolerance, Directed Acyclic Graphs, entre otros tantos.
En el caso particular de Bitcoin, es su sistema Proof of Work lo que hace que la blockchain de Bitcoin sea inmutable y a prueba de manipulaciones.
¿Para qué se usa el hashing en los protocolos blockchain?
Las funciones hash son cruciales para la autenticación. Se consideran como una huella digital del contenido, dado que produce una cadena de caracteres única para un determinado archivo, mensaje, datos. Una variación mínima cambiará el resultado por completo.
Ademas de convertir una cantidad de contenido en un conjunto fijo y relativamente corto de caracteres, estas funciones matemáticas permiten verificar que dos archivos sean exactamente los mismos.
Al generar una huella digital de un conjunto de datos, el hash sirve para verificar que dichos datos no han sido alterados.
Es uno de los elementos que hacen posible la integración de los bloques, la creación de un registro inmutable de datos.
El hashing se emplea en los protocolos blockchain para crear firmas digitales y para integrar bloques de transacciones, conformando así el libro mayor inmutable.
Cifrado de clave pública / privada
También conocido como encriptación asimétrica, se trata de un método de cifrado que utiliza 2 claves:
- una clave pública
- una clave privada
Los usuarios comparten la clave pública, pero jamás la clave privada.
Ambas claves se encuentran matemáticamente vinculadas. En otras palabras, el contenido que se encripta usando la clave pública sólo podrá ser descifrado usando la clave privada.
Por ejemplo, si Roberto quiere enviarle un mensaje a Carlitos por medio del cifrado asimétrico, Roberto puede utilizar la clave pública de Carlitos para encriptar el mensaje. Una vez cifrado con la clave pública de Carlitos, el único modo de desencriptar ese mensaje sería usando la clave privada de Carlitos.
La importancia de este mecanismo es que posibilita a los usuarios intercambiar mensajes o datos sin tener que intercambiar sus claves privadas.
La inmutabilidad de blockchain: la integración en cadena
Para registrar una transacción en la cadena de bloques, se requiere firmar la misma con una clave privada antes de su envío, garantizando de esta manera que nadie pueda alterar el contenido de dicha transacción.
Una vez propagada la transacción por la red, cada participante usará la firma digital para verificar su identidad (comprobando que la firma es efectivamente de tal usuario y no alguien pasándose por él) y la integridad (garantizando que los datos no han sido alterados por terceros). En caso contrario, la transacción será descartada de la red.
Para evitar las alteraciones, los datos contenidos en una blockchain se encuentran ligados entre sí a través de una estructura en cadena, donde cada bloque (como si fuera cada eslabón) está vinculado con su bloque anterior y posterior.
Conjugando los métodos de encriptación mencionados (el hash, la autenticación de clave pública / privada y las firmas digitales), los protocolos como el Proof of Work proporcionan una forma segura de enviar información a lo largo de una red.
Permite, a grandes rasgos, verificar quién envió la información, quién la recibió y sobre todo: que dichos datos no se han alterado en el camino.
Para acercarse a entender un poco más terminemos por el origen.
El «bloque Genesis» es el primer bloque en una blockchain, el primer eslabón de la cadena, el cual se encuentra codificado en la red y contiene los parámetros iniciales de la cadena. El 3 de enero de 2009 a las 18:15:05 horas (GMT) se generó el primer bloque de la cadena de bloques de Bitcoin.
Cuando las transacciones desde un «bloque Génesis» se validan, las mismas generan su hash para así identificar dicho bloque. Como dijimos, el hash opera como su huella digital.
Una vez el segundo bloque sea validado, las transacciones de este segundo bloque, así como el hash del primer bloque, se usan como entradas para crear el hash del segundo bloque.
Esta operación se realiza para cada bloque subsiguiente en la cadena, vinculando así los bloques entre sí.
Al ligar los bloques de este modo, el hash del bloque más reciente incorpora todas las transacciones que se han producido en la cadena hasta ese momento.
«…al acordar el valor hash más reciente, los mineros pueden llegar fácilmente a un consenso sobre el ‘estado actual de la cadena'», explica Roy Walker en un extenso y clarísimo artículo en Medium acerca de los protocolos blockchain más conocidos.
Por ello, en teoría un hacker no podría hackear un bloque. Dado que los bloques se encuentran enlazados unos a otros, si se tratara de modificar los datos contenidos en un bloque ya validado, cambiaría también el hash de cada bloque subsiguiente, causando «un efecto dominó en el resto de la cadena», grafica Walker.
En caso de que esto ocurra, esa anomalía sería detectada por los nodos que participan de la red.
Cualquier cambio de los datos almacenados en la blockchain de Bitcoin, por mínimo que fuera, quedaría instantánea y plenamente identificado.
Es, en este sentido, que la tecnología blockchain de Bitcoin ha sido concebida desde su génesis para garantizar la inmutabilidad de los datos que en ella se almacenan y ejecutan, utilizando para ello Proof of Work.
Fuentes: Academy Bit2me, Roy Walker Artículo en Medium,, BBVA, Mango Research