WEB3DEV Español

Cover image for Explicado - Qué es el Byzantine Fault Tolerance (BFT) en la Blockchain
Hector
Hector

Posted on • Updated on

Explicado - Qué es el Byzantine Fault Tolerance (BFT) en la Blockchain

Aprende sobre BFT, Problemas Clásicos Generales y sus Soluciones: PBFT y FBA

Image description

La tecnología blockchain se vuelve, rápidamente, una solución popular para crear sistemas descentralizados seguros que permiten interacciones confiables punto a punto. Estos sistemas, típicamente, dependen de redes de nodos distribuídas para validar transacciones y mantener la integridad de la blockchain. Sin embargo, en un sistema distribuído, es posible que algunos nodos sean defectuosos o malignos, lo cual puede provocar que información incorrecta o conflictiva sea transmitida en la red.

Esto puede causar problemas significativos para lograr el consenso, lo cual es esencial para mantener la integridad de la blockchain. Los algoritmos de Tolerancia de Fallos Bizantinos (Byzantine Fault Tolerance, BFT) son diseñados para permitir que los sistemas distribuídos toleren nodos malignos o con fallos, mientras mantienen los consensos de los nodos restantes.

TLDR; ¿No tienes tiempo para leer? Aquí hay un video que te ayudará a entender qué es la tolerancia de fallos bizantinos en la blockchain, los problemas generales clásicos y sus soluciones: PBFT y FBA en detalle

https://youtu.be/sF7p-RUQXNI

¿Qué es la Tolerancia de Fallos Bizantinos?

La Tolerancia de Fallos Bizantinos es una propiedad de sistemas distribuídos que permiten la función correcta, incluso si algunos de los nodos de la red son malignos o tienen fallas. Una falla Bizantina es un fallo donde un nodo de un sistema distribuído provee información incorrecta o engañosa a otros nodos.

En un fallo Bizantino, no es posible distinguir entre nodos que fallan y nodos que proveen la información correcta. Los algoritmos BFT están diseñados para tolerar las fallas Bizantinas, asegurando que el sistema pueda lograr el consenso, incluso si algunos de los nodos proveen información incorrecta.

Los algoritmos BFT funcionan dividiendo los nodos en la red en grupos y requiriendo que intercambien mensajes entre sí. Intercambiando mensajes, los nodos pueden validar la información que es proveída por otros nodos y asegurar que todos los nodos concuerden con el estatus actual del sistema. Hay varios algoritmos BFT, que son usualmente usados en la tecnología blockchain, incluyendo Tolerancia de Fallos Prácticos Bizantinos (Practical Byzantine Fault Tolerance, PBFT), Acuerdo Bizantino Federado (Federated Byzantine Agreement, FBA) y otros.

Problemas Generales Bizantinos Clásicos

El clásico Problema General Bizantino es un problema muy bien conocido en sistemas distribuídos, que ilustra los retos de lograr el consenso en una red con nodos malignos o con fallas. El problema es el siguiente: un grupo de generales Bizantinos rodean una ciudad y deben coordinar su ataque. Los generales sólo pueden comunicarse, los unos con los otros, a través de mensajeros, y algunos de los mensajeros puede que sean traidores, quienes enviarán información falsa a los demás generales.

Image description

En este escenario, los generales deben acordar un plan de ataque, pero no pueden confiar en la información que fue proveída por sus mensajeros. Si la mayoría de los mensajeros son traidores, puede que los generales no sean capaces de coordinar sus ataques efectivamente, y que el ataque falle. El problema es similar a los retos que enfrentan las redes de blockchain, donde los nodos deben acordar el estado actual de la red pero, algunos nodos puede que sean malignos o tengan fallas.

Tolerancia de Fallos Prácticos Bizantinos (Practical Byzantine Fault Tolerance, PBFT)

La Tolerancia de Fallos Prácticos Bizantinos (Practical Byzantine Fault Tolerance, PBFT) es uno de los algoritmos BFT más conocidos, usado en la tecnología blockchain. PBFT está diseñado para que sea rápido y eficiente mientras provee una Tolerancia de Fallo Bizantino fuerte. Con el PBFT, los nodos están divididos en tres grupos: un nodo líder, un conjunto de réplicas de nodos y un conjunto de nodos clientes.

El nodo líder es responsable por proponer bloques o transacciones nuevas a la red. Los nodos réplica son responsables por validar la propuesta, intercambiando mensajes el uno con el otro. Si dos tercios de los nodos réplica concuerdan con la propuesta, se considera que está validado y el líder nodo lo añade al blockchain.

PBFT se asegura que todos los nodos en la red tengan una copia de la blockchain y puedan validar bloques nuevos o transacciones nuevas, antes que sean añadidos a la blockchain.

Unas de las ventajas principales del PBFT es que provee una Tolerancia de Falla Bizantina fuerte, es decir, puede tolerar un gran número de nodos malignos o con fallas. Adicionalmente, PBFT es relativamente rápido, comparado con otros algoritmos de consenso, ya que sólo requiere pocas rondas de comunicación entre nodos, antes que el consenso se logre.

Desventajas del PBFT

A pesar de las muchas ventajas, PBFT tiene severas limitaciones. Una de las desventajas principal del PBFT es que requiere un alto nivel de conexión de red entre los nodos. Si los nodos no son capaces de comunicarse entre sí, rápida y confiablemente, el consenso no se puede lograr y puede que la red se fragmente.

Adicionalmente, PBFT no está bien diseñado para redes con un largo número de nodos, ya que el número de mensajes requeridos para lograr el consenso se incrementa exponencialmente, así como el número de nodos en la red crece.

Acuerdo Bizantino Federado (FBA)

El Acuerdo Bizantino Federado (Federated Byzantine Agreement, FBA) es un algoritmo BFT que está diseñado para que sea más flexible y escalable que PBFT. FBA está basado en la idea que los grupos de nodos federados se dividan en subredes más pequeñas, cada uno con sus propios mecánicos de consensos. Los nodos en la subred se comunican entre sí para lograr el consenso del estado de la red, y luego las subredes se comunican entre sí para acordar el estado global.

FBA está diseñado para que sea más flexible que PBFT porque le permite a los nodos que elijan cuál subred pueden trabajar.

Los nodos pueden elegir unirse a múltiples subredes o sólo una, dependiendo de sus necesidades y recursos.

Adicionalmente, FBA está diseñado para ser más escalable que PBFT porque no requiere que todos los nodos se comuniquen entre sí directamente. En cambio, los nodos se comunican con un subconjunto de otros nodos, reduciendo la cantidad de comunicación requerida para cada consenso.

Limitaciones del FBA

Mientras que el FBA tiene muchas ventajas sobre PBFT, también tiene algunas limitaciones. Una de las limitaciones principales del FBA es que es más complejo que PBFT, ya que requiere nodos para administrar múltiples subredes y mecanismos de consenso. Esto puede hacer que sea más difícil de implementar y mantener, particularmente para redes pequeñas con recursos limitados.

Adicionalmente, FBA es aún tecnología, relativamente, nueva y hay experiencias limitadas del mundo real, usándolo en redes blockchain de gran escala. Como resultado, aún no está claro qué tan bien el FBA se desempeñará en la práctica, particularmente en redes con un gran número de nodos o en las redes con altos niveles de congestión de red.

PBFT vs FBA: Una Tablero de Comparación

Para resumir las diferencias entre PBFT y FBA, hemos compilado una tabla de comparación:

Image description

Conclusión

La Tolerancia de Falla Bizantina es una propiedad esencial para crear redes de blockchain seguras y descentralizadas. PBFT y FBA son dos algoritmos BFT populares que ofrecen ventajas y limitaciones distintas.

PBFT es ideal para redes con con un pequeño número de nodos y gran conectividad de red, mientras que FBA es más escalable y flexible, pero más complejo de mantener e implementar.

Ultimadamente, la elección de cuál algoritmo BFT usar dependerá de las necesidades y recursos específicos de la red blockchain.

Este artículo es una traducción de Learn With Whiteboard, hecha por Héctor Botero. Puedes encontrar el artículo original aquí.
Sería genial escucharte en nuestro Discord, puedes contarnos tus ideas, comentarios, sugerencias y dejarnos saber lo que necesitas.
Si prefieres puedes escribirnos a @web3dev_es en Twitter.

Discussion (0)