Si estás leyendo esto muy probablemente ya sepas qué es Blockchain. Si no es el caso, para aquí, y primero empápate sobre ello.
La descentralización de Blockchain requiere de un mecanismo por el cual todos los participantes en la red estén de acuerdo sobre el contenido de almacenado en la cadena de bloques.
Pues eso, ni más ni menos, es lo que son los mecanismos de consenso.
Su objetivo principal es verificar que la información que se introduzca en el Blockchain sea correcta. Cumpliéndolo, se asegura que el ultimo bloque añadido contenga realmente todas las transacciones de la red, y se previene insertar bloques duplicados o maliciosos.

Tolerancia Bizantina a Fallas (BFT)
¿Cómo puede una red distribuida de nodos acordar una decisión, siendo bastante probable que algunos de ellos fallen o actúen de manera maliciosa?
Este es el fundamento del llamado problema de los generales bizantinos, que dio origen al concepto de tolerancia bizantina a fallas.
El problema de los generales bizantinos fue concebido allá por el 1982, y es un dilema que ilustra cómo un grupo de generales Bizantinos tienen problemas de comunicación cuando intentan consensuar el siguiente movimiento táctico.
El dilema asume que cada general tiene su propio ejército y que cada grupo está ubicado en diferentes lugares alrededor de la ciudad que pretenden atacar.
Los generales deben ponerse de acuerdo en atacar o retirarse. No importa si atacan o se retiran, siempre que todos los generales lleguen a un consenso, es decir, acuerden una decisión común para ejecutarla de manera coordinada.
Estos serían los requisitos:
- Cada general tiene que decidir: atacar o retirarse.
- Una vez que se toma la decisión, no se puede cambiar.
- Todos los generales tienen que ponerse de acuerdo sobre la misma decisión y ejecutarla de manera sincronizada.
Los problemas de comunicación surgen por el hecho de que un general solo puede comunicarse con otro a través de mensajes que son enviados por un mensajero.
En consecuencia, el principal desafío del problema de los generales bizantinos es que los mensajes pueden retrasarse, destruirse o perderse de alguna manera.
Además de eso, uno o más generales pueden elegir actuar maliciosamente y enviar un mensaje fraudulento para confundir a los demás generales, lo que lleva a un fracaso total.

Aplicando el dilema de los generales Bizantinos a Blockchain
Cada general representa un nodo de red, y los nodos deben llegar a un consenso sobre el estado actual del sistema.
La mayoría de los participantes dentro de una red distribuida deben estar de acuerdo y ejecutar la misma acción para evitar una falla total.
La única forma de lograr el consenso en este tipo de sistemas distribuidos es tener al menos ⅔ o más nodos de red confiables y honestos.
Esto significa que si la mayoría de la red decide actuar maliciosamente, el sistema es susceptible a ataques (como el ataque del 51%).
Principales características de un sistema BFT
- La tolerancia a fallas bizantinas (BFT) es la propiedad de un sistema que es capaz de resistir la clase de fallas derivadas del problema de los generales bizantinos.
- Un sistema BFT puede continuar funcionando incluso si algunos de los nodos fallan o actúan maliciosamente.
- Hay más de una posible solución al problema de los generales bizantinos y, por lo tanto, múltiples formas de construir un sistema BFT.
- Existen diferentes enfoques para que una cadena de bloques logre la tolerancia a fallas bizantinas y esto nos lleva a los llamados algoritmos de consenso.
Listado de mecanismos de consenso populares
Existen bastantes mecanismos de consenso, y de hecho cada día surgen nuevos que tratan de mejorar los actuales.
Lo que les hace diferente es fundamentalmente la forma en que delegan y recompensan la verificación de las transacciones.
De entre todos ellos, el mecanismo de Prueba de trabajo usando por Bitcoin sigue siendo el que domina entre las plataformas Blockchain en la actualidad.
Prueba de trabajo (PoW)
Es el algoritmo de consenso primogénito usado en Blockchain. Es en el que se base el consenso en la red de Bitcoin.
Como cualquier otro mecanismo de consenso, se usa para confirmar las nuevas transacciones y crear nuevos bloques en el Blockchain.
Pasos del mecanismo de consenso Prueba de trabajo (PoW)
- Los usuarios de la red intercambian tokens digitales entre ellos (transacciones), que serán agrupadas en bloques que finalmente quedarán guardados en el Blockchain.
- Existen ciertos nodos denominados mineros, que tratan de añadir nuevos bloques (minar) a la cadena de bloques para recibir las recompensas que se dan por ello.
- Los mineros compiten entre ellos para validar un bloque, con las transacciones que dicho bloque contiene, y ser capaz de añadirlo a Blockchain.
- Una vez el minero valida un bloque, los nodos distribuidos de la red deben entrar en consenso para aceptar su resolución.
- Si hay consenso, el bloque se agregará a la red y el minero recibirá la recompensa.

La forma de validar los bloques con sus transacciones es resolver un problema matemático para el que se necesita un alto nivel computacional.
Existen muchos tipos de problemas de este estilo que se pueden usar para este cometido. Quizás de los más conocidos es el de resolver una función hash, de tal modo que se sea capaz de llegar a conocer la entrada, sabiendo la salida y el algoritmo utilizado.
En el siguiente ejemplo puedes ver cómo es el funcionamiento habitual de cualquier algoritmo Hash. Se tiene una entrada y una vez se introduce en el algoritmo, éste genera una salida llamada Hash.

Lo interesante de estos algoritmos es que siempre se obtiene el mismo resultado si la entrada permanece inmutable, y que dado el hash es terriblemente complicado conocer la entrada.
Se necesitaría 10 * 3.92 * 10 ^ 56
minutos para descifrar un hash SHA256 utilizando toda la potencia minera de toda la red Bitcoin. Es decir… mucho tiempo.
A medida que la red crece, el problema también lo hace y el algoritmo necesita más y más potencia para ser resuelto.
Prueba de participación (PoS)
Es el mecanismo de consenso que se utiliza en la red de Ethereum.
Cambia la forma en que se validan los bloques.
Los propietarios ofrecen sus monedas como garantía por la posibilidad de validar bloques.
Los validadores se seleccionan aleatoriamente para minar el bloque. Así los nodos no compiten entre sí como en el mecanismo de prueba de trabajo.
Seguridad en el mecanismo de prueba de participación
El famoso ataque del 51% es una de las preocupaciones más presentes cuando se usa este mecanismo de consenso.
Pero tan famoso es, como poco probable.
Sólo si se diera el caso que alguien controlara el 51% de una criptomoneda, podría utilizar esa mayoría para alterar la cadena de bloques.
Además, los mineros que intenten revertir los bloques, perderían el 100% de su apuesta. Esto es un incentivo para que los mineros actúen de buena fe en beneficio de la criptomoneda.
Hay muchas funciones de seguridad que no se anuncian para evitar crear oportunidades para evadirlas.
PoS vs PoW
- El mecanismo de prueba de participación es más eficiente. No se necesita mucha energía para minar un bloque.
- Usando prueba de participación se es más inmune a la centralización, ya que invita a que más nodos formen parte de la red.
- El algoritmo de consenso de prueba de participación tiene unas barreras de entrada más bajas, ya que no se necesita de un hardware especial para minar.

Prueba de formulación (PoF)
Es el mecanismo de consenso utilizado por FLETA, una plataforma de servicios Blockchain.
Este mecanismo incluye los denominados observadores, los formuladores y un grupo de sincronización.
Formuladores
Son la columna vertebral del algoritmo. Cada formulador tiene un ranking asignado que se calcula usando una fórmula específica.
En cada fase o ronda de minado, cada formulador tendrá al menos una oportunidad para minar un bloque. Aquí reside la esencia de este algoritmo.
Observadores
Su objetivo principal es prevenir de los ataques DDoS y mantener la seguridad de la cadena de bloques.
Grupo de sincronización
Es el encargado de, una vez validado el bloque, hacer el broadcast a la red.
Principales características del PoF
Este mecanismo de consenso no exige un alto recurso computacional, ni depende de lo grande que sea la apuesta de un nodo. Por eso reduce la competencia a la hora de crear nuevos bloques, porque cada usuario tendrá su turno.
Además imposibilita la creación de cualquier tipo de fork.
Tolerancia Bizantina a Falla Delegada (dBFT)
A primera vista, el mecanismo de consenso de dBFT es similar al de prueba de participación.
Mediante un proceso de votación, los poseedores de tokens NEO tienen derecho (independientemente de la cantidad de moneda en posesión) a votar por los delegados.
Cualquiera puede convertirse en delegado, siempre que cumpla con tener una conexión a Internet confiable, un equipo adecuado, una identidad validada y 1,000 GAS, que es la recompensa que reciben los usuarios por su actividad en la red.
Entre todos los delegados, se elige al azar un ‘orador’, que es el que construirá el nuevo bloque con las transacciones que se desea validar.
Una vez validado, enviará su propuesta a los delegados electos. Entre ellos pueden compartir las propuestas, para comprobar la precisión de los datos y validar si el ‘orador’ no fue malintencionado.
Si más de 2/3 de los delegados llegan a un consenso y lo validan, el bloque se agregará a la red.
Principales características del dBFT
- El punto fuerte del mecanismo de consenso dBFT es que permite llegar a un consenso incluso cuando hay uno o más delegados corruptos.
- Debido a que los delegados deben operar bajo identidades reales, se pierde el anonimato.
- Exige cierto grado de centralización.
Prueba de tiempo transcurrido (PoET)
Otro algoritmo de consenso centrado en minimizar el consumo elevado de recursos para minar y que trata de hacer el proceso más eficiente en ese aspecto.
Utiliza un tiempo transcurrido generado de forma aleatoria para decidir quién debe minar el bloque. Participantes externos pueden verificar los resultados de esta ‘lotería’, mejorando si cabe la transparencia.
Principales características del PoET
- PoET sigue un sistema de lotería que distribuye las posibilidades de ganar por igual entre los participantes de la red, dando a cada nodo la misma oportunidad.
- Genera un tiempo de espera aleatorio para cada nodo en la red blockchain; cada nodo debe dormir durante ese tiempo.
- El nodo con el tiempo de espera más corto se despertará primero y podrá enviar un nuevo bloque a la cadena de bloques.
- Consume menos energía que el mecanismo de consenso de prueba de trabajo, porque permite que un nodo entre en suspensión y cambie a otras tareas durante el tiempo especificado, lo que aumenta la eficiencia energética de la red
Prueba de participación delegada (DPOS)
Es un sistema de consenso diseñado para blockchains altamente escalables. No por ello presta menos atención a la seguridad y robustez del sistema.
Los participantes de la red eligen por votación una serie de delegados.
El proceso de votación hace uso de algoritmos de reputación y además se tiene en cuenta la cantidad de tokens que tiene cada usuario. Cuantos más tokens tiene un usuario, mayor cantidad de votos puede recibir, y por tanto más posibilidades de formar parte del grupo de delegados final.
La cantidad de delegados está previamente definida y limitada y debido a su elección por votación, se asume una confianza parcial en ellos.
Una vez creado el grupo de delegados, entre ellos definen una rotación para que cada vez le toque a uno producir un bloque.
Si cuando le llega el turno a un delegado, éste no está disponible, perderá su turno y el siguiente en cola será el que mine.
Para favorecer la descentralización es habitual que las decisiones relacionadas con el funcionamiento de la red, sean sometidas siempre a votación.
Principales características del DPOS
- Ofrece Tolerancia a Fallas Bizantinas (BFT)
- Se centra en un sistema de votación que tiene en cuenta la reputación de los usuarios.
- Optimiza el uso de recursos de la red.
- Promueve cierta centralización ya que el sistema de votación tiene en cuenta los tokens que cada usuario posee.
Acuerdo Bizantino Federado (FBA)
Para entender este mecanismo de consenso se necesita comprender el problema de los generales bizantinos.
En el FBA cada general bizantino es responsable de su propia cadena de bloques.
Un nodo no tiene que ser conocido y verificado con anticipación, la membresía está abierta y el control está descentralizado.
Los nodos pueden elegir en quién confían. Los consensos de todo el sistema surgen de las decisiones tomadas por los nodos individuales.
Se suele utilizar por su alto rendimiento y escalabilidad y por su bajo coste de transacción.
Prueba de Autorizad (PoA)
Se base en el mecanismo de consenso de prueba de participación (PoS), pero cambia lo que se apuesta, que en lugar de monedas, será reputación.
Las transacciones y los bloques son validados por estas cuentas aprobadas, conocidas como validadores, que actúan como moderadores del sistema.
Los validadores ejecutan un software el cual permite incluir transacciones en bloques. El proceso está automatizado y no requiere que los validadores estén monitoreando constantemente.
Principales características del PoA
- Identidades válidas y confiables.
- Los validadores necesitan confirmar sus identidades reales.
- Dificultad para convertirse en validador.
- Se debe estar dispuesto a invertir dinero y poner en juego la reputación.
- Estándar para la aprobación de validadores.
- El método para seleccionar validadores debe ser igual para todos los candidatos.
Algoritmo de consenso del obelisco
Incorpora el concepto de red de confianza.
Este concepto distribuye la influencia entre varios nodos de la red y toma decisiones por consenso según la puntuación de influencia de cada nodo.
Cada nodo se suscribe a un número determinado de otros nodos de red, y la densidad de la red de suscriptores de un nodo determina su influencia en la red.
Hay dos tipos de nodos que participan en el algoritmo de consenso de obelisco:
- Nodos generadores de bloques.
- Recopilan nuevas transacciones, las autentican, y empaquetan las que están verificadas en un nuevo bloque, que luego transmiten a la red.
- Nodos de consenso.
- Recopilan los bloques generados por los nodos generadores de bloques y los colocan en un contenedor separado (aparte de la cadena de bloques).
- Identifican el bloque que fue creado por el mayor número de generadores de bloques. Este bloque se llama ganador local y califica para ser agregado a la cadena de bloques. Cada uno de esos nodos de consenso mantiene las estadísticas necesarias sobre los ganadores locales (según lo informado por otros nodos).
- Cuando la mayoría de los nodos de consenso han informado ganadores locales, califica como ganador global y continúa siendo parte de la cadena de bloques. Sin embargo, si los nodos deciden lo contrario, tomará una de las siguientes acciones según los datos disponibles y los registros locales:
- Volver a sincronizarse con la red.
- Dejar de participar en el consenso o la creación de bloques.
- Mantener su blockchain y solicitar una parada de emergencia.
Los roles son intercambiables y los nodos pueden tomar cualquiera.
Prueba de quemadura (PoB)
PoB a menudo se llama un sistema PoW sin desperdicio de energía.
Opera según el principio de permitir a los mineros “quemar” tokens de moneda virtual para ganarse el derecho de escribir bloques en proporción a los token quemados.
En lugar de invertir dinero en costosos equipos informáticos, este protocolo de consenso “quema” tokens enviándolos a una dirección donde no se pueden recuperar.
Al enviar las monedas a la tierra de nunca jamás, obtiene un privilegio de por vida para extraer en el sistema basado en un proceso de selección aleatorio.
Prueba de capacidad (PoC)
El protocolo de prueba de capacidad implica un proceso de dos pasos; el trazado y la minería.
Trazado
Los mineros generan previamente fragmentos de datos (gráficos), que contienen todos los cálculos necesarios para la creación de bloques.
Minería
El software de minería lee automáticamente los gráficos e intenta crear cada bloque.
Principales características del PoC
- Usan el espacio libre en el disco duro de un dispositivo para almacenar soluciones a un problema de hashing.
- El principal beneficio de un sistema PoC es su eficiencia en comparación con los sistemas de prueba de trabajo (PoW) y prueba de participación (PoS).
- Los datos de minería se pueden borrar fácilmente y la unidad se puede reutilizar para cualquier otro propósito de almacenamiento de datos.
- No hay necesidad de hardware dedicado o actualización constante de discos duros.