Pruebas de “Confiabilidad”

Blockchain Pruebas de Confiabilidad

Pruebas de “Confiabilidad”

En cualquier Blockchain, el mayor reto a solucionar es el de poner de acuerdo a todos los participantes en lo que se ha hecho de forma que nadie pueda saltarse las normas. Para ello se utilizan los protocolos de consenso y pruebas de confiabilidad, dentro de muchos de estos protocolos, la forma de añadir transacciones a la red es la de agruparlas en bloques, verificar que son correctas y “minarlas”.

Dado que en redes públicas cualquiera puede ser minero, la forma de intentar minimizar los posibles ataques ( soft forks, intentar crear una cadena más larga… ) es introducir una limitación que obligue a los mineros a probar (“Proof-of”)  que han realizado cierto gasto para que su bloque se tenga en cuenta.

Tipos de pruebas más comunes

La prueba de trabajo es la forma más conocida de probar que un nodo cumple las exigencias para añadir un bloque de transacciones a una blockchain, es decir, “minar” (buscar) un hash que prueba que aproximadamente ha tardado 10 minutos (en el caso del bitcoin) en procesar ese bloque. Esto es lo que hace la red de bitcoin, que fue la primera, y la mayoría de redes públicas que han adoptado un protocolo similar.

Esto es necesario porque cualquier persona en el mundo puede conectarse a la red y publicar bloques, además de que el número de validadores es potencialmente infinito, por lo que tampoco podemos establecer de forma sencilla un sistema para saber si existe una mayoría de nodos que quieran añadir un bloque. Sin embargo, el mayor problema de las pruebas de trabajo es que su uso de energía es extremadamente alto (https://www.extremetech.com/extreme/259882-bitcoin-mining-now-uses-power-159-countries), por ello se están desarrollando alternativas, siendo la más popular la prueba de participación y en la que más nos centraremos, ya que además es ideal para redes privadas.

Prueba de trabajo

Este tipo de prueba consiste en resolver un hash, el cual se compone de los datos de la transacción y un número aleatorio. El minero debe ir cambiando este número aleatorio hasta que el código hash de la misma sea menor que un valor definido (o dicho de otra forma, comience por un número concreto de 0s). Garantiza que de media se va a tardar X minutos/segundos en encontrar la solución al problema, y además evoluciona con el hardware. Es decir, la dificultad/tiempo de procesado se controla de forma muy sencilla disminuyendo el conjunto de valores válidos, lo cual permite que la red se autorregule a la evolución hardware de forma sencilla y autónoma. Por ejemplo, si en lugar de encontrar un resultado menor que 1000, se fuerza a encontrar uno menor que 100, se tardará 10 veces más en encontrar una solución.

Esta solución se utiliza en casi todas las redes públicas, bitcoin, Ethereum…. ya que aunque su coste energético es elevado, la minería sigue siendo rentable en países cuya energía es más barata (como China).

Prueba de participación

Este tipo de prueba es más compleja de implementar, pero tiene muchas ventajas sobre la prueba de trabajo, ya que no gasta energía, en lugar de probar que hemos resuelto un algoritmo (lo cual utiliza mucha energía), se basa en probar que somos uno de los validadores asignados (si se conocen los validadores previamente) o en apostar algún concepto que en caso de perderse debido a que la transacción es ilegal, sirva como disuasión a los mineros/validadores para no continuar firmado transacciones inválidas.

En redes privadas

En las redes privadas (normalmente entre empresas), el caso sencillo, en el que a priori se conocen los validadores asignados, en este caso el objetivo de los mineros/validadores es mantener un servicio al cliente (el cual pagará por este servicio en forma de comisiones, facturas…), por lo que no hace falta que reciban premios. Prueba de participación se utiliza en diversas tecnologías (Hyperledger Fabric, Monax…) orientadas a redes Enterprise. Además, dado que estas redes no tienen un número de actores tan grande como puede tener una red pública, también se puede disminuir el tiempo de confirmación de una transacción a tiempos inferiores al segundo.

En redes públicas

En las redes públicas, a día de hoy el pionero entre las más grandes es Ethereum, se está comenzando a implementar, sin embargo, en este tipo de redes no es tan sencillo, ya que al ser públicas no podemos conocer el número de validadores, ni tenemos una cantidad pequeña de actores. Para Ethereum, dentro de su algoritmo CASPER (que va incluido en el hard-fork metrópolis), los validadores, en lugar de resolver un algoritmo (prueba de trabajo) como hacían hasta la fecha, van a apostar una parte de sus Ether (dinero). Estos Ether les serán devueltos cuando el bloque se añada a la blockchain de forma correcta. Por lo que si alguien intenta introducir bloques inválidos, va a perder Ether.

Mucha gente discute que este tipo de algoritmos en redes públicas beneficia el hecho de que los ricos controlen la red (ya que pueden apostar más dinero), sin embargo, dado que la minería a día de hoy está muy “profesionalizada”, la realidad es que para minar de forma efectiva se necesita igualmente una gran cantidad de dinero.

Otras

Además de las dos vistas anteriormente, que son las más conocidas, se han propuesto otras, que por ahora no han tenido mucho éxito, como la “Prueba de tiempo transcurrido”, una prueba que se basa en una propuesta de Intel de incluir en sus CPUs un sistema hardware que es capaz de garantizar criptográficamente que la CPU ha pasado cierto tiempo “esperando”, esto consigue los mismos beneficios que Proof of work, y si no se demuestra vulnerable, no implicaría un uso excesivo de energía.