Entendiendo los Protocolos de Consenso de Blockchain

Los protocolos de consenso permiten a una red descentralizada llegar a un acuerdo sobre el estado de un registro. Veamos las ventajas y desventajas de cada uno…

Esta es una versión traducida y adaptada del artículo Pros and Cons of Different Blockchain Consensus Protocols, publicado el 8 de marzo de 2018.

Elegir el protocolo de consenso correcto es una decisión clave para un proyecto de blockchain. Estos protocolos permiten a una red de computadoras llegar a un acuerdo sobre el estado de un registro compartido sin la necesidad de confiar en terceras partes ni en actores centralizados.

El protocolo de consenso busca asegurarse de que el próximo bloque de transacciones que sea agregado a la cadena represente “la única versión de la verdad”. Debe ser diseñado de tal modo que evite que actores maliciosos introduzcan cambios ilegítimos en el registro.

En lo que sigue, revisaremos las diferentes alternativas que han sido propuestas para la creación de protocolos de consenso en blockchain.

Proof-of-Work (PoW)

“La manera correcta de pensar sobre el concepto de la prueba de trabajo es como un medio para que un grupo de personas auto interesadas, y donde ninguna está subordinada a otra, establezcan un consenso a pesar de que existen considerables incentivos para no hacerlo. El Bitcoin podría operar perfectamente sin prueba de trabajo, siempre y cuando todos fuesen perfectamente honestos y altruistas. Si no lo son, entonces alcanzar un consenso es difícil.” — Satoshi Nakamoto Institute

El primer protocolo de consenso fue el Proof-of-Work (prueba de trabajo). Diseñado para blockchains públicas, fue introducido por Satoshi Nakamoto en el blockchain de Bitcoin, y luego adoptado por muchas otras criptomonedas.

En el protocolo de PoW, los mineros ponen sus computadoras a trabajar en resolver un acertijo criptográfico. Mientras mayor sea la capacidad de cómputo (hashrate) de un minero, mayor es su probabilidad de resolver el acertijo. El primero que lo resuelve gana el derecho a poner el siguiente bloque en la cadena, y recibe como recompensa unos bitcoins recién minados.

La prueba de trabajo fue el primer protocolo de consenso y es el más utilizado actualmente. Sin embargo, tiene algunas desventajas:

Consumo de Energía. Debido a la capacidad de cómputo requerida, PoW es costoso e intensivo en energía. Según el MIT Technology Review, “Se estima que el Bitcoin consume casi tanta energía anual como toda Nigeria”. Los cómputos que hacen los mineros para generar los bloques son inútiles. Aunque esos cómputos garantizan la seguridad de la red, es energía que no puede aplicarse a otra actividad productiva.

Vulnerabilidad. El protocolo de PoW puede ser vulnerable a los ataques de 51%. Si mineros deshonestos capturasen el 51% del poder de cómputo de la red, podrían manipular el blockchain para su propio beneficio. Por ejemplo, modificando el registro para enviar una misma moneda más de una vez.

Proof-of-Stake

Los protocolos de Proof-of-Stake (PoS) fueron diseñados para evitar las desventajas de PoW — en particular, el alto consumo de energía. PoS, en sus distintas variedades, es la alternativa más común al PoW. Al igual que PoW, también fue diseñado para blockchains públicas.

En lugar de mineros gastando energía para recibir una recompensa por minar bloques, en el PoS los nodos “validadores” deben invertir una cantidad de criptomoneda.

En vez gastar 5000 dólares en comprar computadoras sofisticadas para ganar una recompensa de minería, en PoS esos 5000 dólares se gastarían en compra criptomoneda y usarla como depósito para comprar una cantidad equivalente de probabilidad de creación de bloques.

El algoritmo de PoS elige de manera aleatoria al validador que agregará el próximo bloque, entre todos los que depositaron fondos. En este sentido, funcion como una lotería: mientras más boletos uno compre, mayores son sus chances de ganar.

Peercoin, Blackcoin y NXT son algunos de los primeros en usar PoS. Ethereum planea adoptar PoS en el futuro.

Entre los beneficios del PoS se encuentran los siguientes:

Velocidad. Provee un procesamiento más rápido de transacciones.

Eficiencia. Consume menos energía.

Menos hardware. No requiere una computadora potente.

Las desventajas del PoS incluyen:

Vulnerabilidad. Atacar un sistema de PoS requiere invertir dinero para comprar criptomoneda y depositarla. En PoW, por el contrario, hay que invertir dinero, pero también tiempo, expertise, hardware, electricidad, etc.

Concentración de riqueza. Como la tendencia de monedas permite ganar recompensas, los ricos tienden a recibir más monedas. Y esto tiende a la concentración de riqueza y del poder dentro de la red.

PoS tiene diferentes variantes. La más común es Delegated Proof-of-Stake (DPoS).

Delegated Proof-of-Stake (DPoS)

En los protocolos de consenso de DPoS, los tenedores de monedas usan sus monedas para elegir delegados, llamados “testigos”. Los testigos son quienes agregan nuevos bloques a la cadena. Los testigos con mayor cantidad de votos tienen mayor probabilidad de agregar el próximo bloque.

La diferencia entre el PoS y el DPoS es parecida a la que existe entre la democracia directa y la democracia representativa.

En PoS normal, cada usuario que tiene monedas puede depositarlas y tener la chance de ser elegido para agregar el siguiente bloque y ganar monedas a cambio.

En un sistema DPoS, cada usuario que tiene monedas puede votar por delegados.

Además de los beneficios del PoS, el DPoS ofrece dos ventajas:

Mejor distribución de las recompensas. Los usuarios eligen a los delegados que les ofrezcan mayores recompensas. Así que los pequeños usuarios (y no sólo los ricos) pueden ganar recompensas. Esto hace que el DPoS sea más descentralizado que PoW y PoS.

Seguridad de voto en tiempo real. Cualquier acción maliciosa de un testigo puede ser detectada inmediatamente por los votantes, quienes pueden expulsar al delegado corrupto.

Las desventajas del DPoS son:

Carteles. Los testigos pueden organizarse en carteles.

Facilidad de organizar un ataque. Como hay menos gente a cargo de mantener la red viva, es más fácil organizar un ataque de 51%.

Potencialmente más centralizado. Aunque el DPoS puede ser más descentralizado que los otros protocolos, potencialmente puede acabar más centralizado si hay apatía de los votantes. Sin una cantidad importante de usuarios comprometidos, el poder puede terminar concentrado en pocas manos.

Leased Proof-of-Stake (LPoS)

Otra variante de PoS es LPoS. Desarrollada por la plataforma WAVES, intenta resolver el problema de concentración de la riqueza que afecta a PoS. También busca aumentar la seguridad de la red a través de la inclusión de más participantes.

Para esto, LPoS genera incentivos para que quienes tienen pocas monedas las alquilen a los nodos.

Los nodos que alquilan las monedas adquieren mayor peso y aumentan sus probabilidades de agregar el siguiente bloque en la cadena. Esta recompensa es compartida con los que alquilaron sus monedas al nodo ganador (esto contrasta con DPoS donde los participantes no necesariamente reciben una recompensa).

Proof-of-Elapsed-Time (PoET)

Hyperledger Sawtooth, originalmente desarrollada por Intel, utiliza el Proof-of-Elapsed-Time como algoritmo de consenso.

Un aspecto notable de este algoritmo es que aplica tanto a las blockchains públicas como a las permisionadas. Permite a los nodos de una blockchain permisionada alcanzar un consenso, incluso cuando las partes no se conocen entre sí (en general, las blockchains permisionadas requieren que los usuarios se conozcan y confíen unos en otros).

PoET es similar a PoW pero sin la desventaja del alto consumo de energía.

Utiliza la computación confiable de Intel para definir aleatoriamente tiempos de espera para la construcción de bloques. La forma en que el protocolo elige al nodo que agregará el próximo bloque requiere mucha menos energía que PoW.

La desventaja, sin embargo, es que este protocolo requiere confiar en los chips de Intel. No está alineado con la filosofía de descentralización del blockchain.

Practical Byzantine Fault Tolerance (PBFT)

PBFT es el protocolo de consenso más popular para blockchains permisionadas. Es utilizado actualmente por Hyperledger Fabric.

Para entender este protoclo, primero hay que entender el problema de los generales bizantinos, que Leslie Lamport, Robert Shostak, y Marshall Pease plantearon en un paper de 1982.

Imaginemos que un grupo de generales bizantinos y sus ejércitos están sitiando un castillo y preparándose para atacar. Para vencer, deben atacar en simultáneo. Pero saben que hay al menos un traidor entre ellos.

¿Cómo hacer para lanzar un ataque exitoso si no saben quién es el actor malicioso?

En cualquier ambiente de computación distribuida (por ejemplo, el blockchain) hay un riesgo de actores maliciosos. Por eso, las fallas bizantinas son un problema para el blockchain.

PoW generalmente provee una solución que es tolerante a las fallas bizantinas. Pero los problemas de este algoritmo de consenso (alto consumo de energía), a veces, hacen que esta solución sea difícil de implementar.

En industrias como la salud, por ejemplo, puede tener más sentido depender de los votos de nodos en lugar de un algoritmo como PoW.

Esto es así porque los participantes de una blockchain en salud tienen más probabilidad de ser altruistas y operar bajo sus identidades reales que los usuarios de redes anónimas y no reguladas como el Bitcoin. En este caso, los beneficios de evitar usar PoW pueden ser superiores que los riesgos asociados con los votos de los nodos como solución a fallas bizantinas.

Aquí es donde el protocolo de Practical Byzantine Fault Tolerance ingresa. Una decisión de consenso es determinada sobre la base de las decisiones enviadas por todos los generales. Esto resuelve el problema sin el gasto de energía necesario para el PoW.

Sin embargo, sólo funciona en blockchains permisionadas ya que requiere que los agentes no sean anónimos.

Conclusión

Existe diferentes algoritmos de consenso, y no hay una respuesta clara sobre cuál sea el mejor. La selección del algoritmo dependerá, en gran medida, del tipo de aplicación que uno quiera implementar.

Si queremos implementar una blockchain pública (que requiere un consenso robusto entre muchos participantes desconocidos y en quienes no podemos confiar) tal vez debamos preferir un modelo más complejo a expensas de la velocidad (por ejemplo, el PoW de Bitcoin).

Algunas preguntas básicas a plantear son:

- ¿Cuál es la escala de nuestro proyecto?

- ¿Cuales son los requisitos de performance?

Las blockchains permisionadas suelen permitir transacciones más rápidas que las públicas.

- ¿Con token o sin token?

PoW y PoS por ejemplo, usan tokens para incentivar a los nodos de la red. PBFT y PoET no los necesitan. El uso de tokens puede ser complicado cuando se trata de un algoritmo de consenso para una solución empresarial.

Subscribe to Federico Ast
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.