Introducción
Un algoritmo de consenso es un mecanismo mediante el cual los usuarios y programas pueden coordinar sus acciones en una red distribuida. Garantiza que todos los participantes de la red lleguen a un acuerdo sobre el estado actual de los datos, incluso si algunos nodos fallan. En otras palabras, el consenso ayuda a mantener la resiliencia del sistema (para obtener más información, consulte Explicación de las misiones de los generales bizantinos).
En una estructura centralizada, una entidad tiene poder sobre todo el sistema. En la mayoría de los casos, estos órganos tienen derecho a realizar los cambios que consideren convenientes: no existe un sistema de gobernanza complejo para llegar a un consenso entre múltiples administradores.
En un entorno descentralizado, el mecanismo de funcionamiento es completamente diferente. Por ejemplo, si hablamos de una base de datos distribuida, ¿cómo podemos obtener el consentimiento de todos los participantes de la red sobre qué datos se pueden agregar a la red?
Lograr un consenso en un entorno en el que las partes no pueden confiar entre sí fue uno de los avances más importantes en la industria, que allanó el camino para el surgimiento de las cadenas de bloques. En este artículo, veremos la importancia de los algoritmos de consenso para el correcto funcionamiento de las criptomonedas y los libros de contabilidad distribuidos.
Algoritmos de consenso y criptomonedas
En las redes de criptomonedas, los saldos de los usuarios se registran en una base de datos: la cadena de bloques. Cada usuario (nodo) debe poseer una copia idéntica de la base de datos. De lo contrario, la información variará, lo que violará los principios de confiabilidad y apertura de toda la red de criptomonedas.
La criptografía de clave pública garantiza que partes no autorizadas no puedan acceder a sus monedas. Sin embargo, los usuarios también necesitan una forma fiable de comprobar si los fondos se han gastado o no.
Satoshi Nakamoto, el creador de Bitcoin, propuso el sistema Proof of Work para coordinar a los usuarios de la red. A continuación, veremos cómo funciona PoW, pero primero identificaremos las características comunes de la mayoría de los algoritmos de consenso existentes.
El primero es el requisito para que los usuarios que quieran agregar bloques (los llamaremos validadores) proporcionen algún tipo de participación a cambio. Una acción o participación es un valor determinado que un validador debe presentar como garantía de un trabajo honesto: si los validadores intentan engañar al sistema, perderán su parte. La participación puede ser potencia informática, criptomonedas o reputación.
Quizás se haga una pregunta lógica: ¿por qué arriesgarían sus propios recursos? El caso es que aquí existe un sistema especial de recompensa por el trabajo. Por lo general, las recompensas se emiten en forma de tokens de protocolo nativo y los fondos para ellas se obtienen de las tarifas de los usuarios y de las criptomonedas recién creadas, o a veces de ambas.
Otra característica importante es la transparencia para identificar actividades fraudulentas. La producción de bloques debería ser costosa y la verificación del trabajo realizado debería ser barata y accesible para los usuarios comunes. De esta forma, cualquiera puede comprobar y controlar el trabajo de los validadores.
Tipos de algoritmos de consenso
Prueba de trabajo (PoW)
La prueba de trabajo (PoW) se convirtió en el progenitor de todos los demás algoritmos de consenso en blockchain. Se implementó por primera vez en Bitcoin, pero el concepto en sí apareció mucho antes. En Prueba de trabajo, los validadores (llamados mineros) procesan los datos que desean agregar hasta que obtienen una solución adecuada a un rompecabezas criptográfico.
Un hash es un conjunto aleatorio de letras y números que se crea cuando los datos se procesan mediante una función hash. Si vuelve a aplicar hash a los mismos datos, obtendrá el mismo resultado, pero si cambia incluso un valor, el hash será completamente diferente.
Al observar el resultado, no podrá saber qué información se pasó a través de la función. Por esta razón, los hashes son excelentes para demostrar algo que sabías antes de cierto tiempo. Puede darle a alguien ese hash y luego proporcionarle la información inicial para que la persona pueda ejecutarlo a través de la función y ver si el resultado coincide.
En Prueba de trabajo, el protocolo establece las condiciones para la confirmación (validación) de un bloque. Por ejemplo, puede configurar que solo el bloque cuyo hash comience con 00 sea válido. La única forma de que un minero cree un bloque válido es simplemente iterar sobre los datos de entrada. Los validadores configuran el programa para producir resultados diferentes cada vez que se aplica el hash hasta que se genera el hash correcto.
En las cadenas de bloques grandes es extremadamente difícil encontrar un hash adecuado: necesitarás todo un almacén de equipos especiales para procesar una gran cantidad de datos (con unidades tipo ASIC) para ser competitivo y poder crear un bloque válido.
En la minería, lo que está en juego es el coste de dichos equipos y la electricidad gastada en el trabajo. El hardware tipo ASIC (Circuito Integrado de Aplicación Específica) está diseñado para una sola tarea, por lo que no puede usarse para nada más que la minería de criptomonedas. La única forma de recuperar la inversión inicial es mediante la minería y recompensas por agregar un bloque con éxito.
Para la red, basta con asegurarse de haber creado realmente el bloque correcto. Incluso si sus ASIC realizaron billones de combinaciones para obtener el hash correcto, para comprobar su exactitud basta con pasar los datos a través de la función una vez. Si sus datos producen un hash válido, la red aceptará el bloque como válido y recibirá una recompensa. De lo contrario, la red rechaza tu solicitud de agregar un bloque y podrás decir que perdiste tiempo y electricidad.
Prueba de participación (PoS)
La Prueba de participación (PoS) apareció en los primeros días de Bitcoin como una alternativa a la Prueba de trabajo. El sistema PoS no requiere la participación de mineros, el uso de equipos especiales o un consumo masivo de electricidad: una computadora personal común y corriente será suficiente.
Además, tendrás que hacer tu propia aportación. PoS no utiliza un recurso externo (electricidad o equipo), sino uno interno: la criptomoneda. Los requisitos pueden variar entre protocolos, pero generalmente existe una cantidad mínima de fondos que le otorga al propietario el derecho a participar.
Durante el período de apuesta, los fondos se bloquean en la billetera (no se pueden mover durante la apuesta). En la mayoría de los casos, usted acuerda con otros validadores qué transacciones pasarán al siguiente bloque. En cierto sentido, los validadores pujan por el bloque que quieren agregar a la cadena de bloques, pero el derecho a elegir el bloque permanece en el protocolo.
Los validadores cuyo bloque sea seleccionado recibirán una parte de las tarifas de transacción dependiendo del tamaño de su participación. Cuantos más fondos se hayan bloqueado en la billetera, mayor será la recompensa. Sin embargo, si intenta engañar al sistema y agregar transacciones no válidas, los atacantes corren el riesgo de perder parte (o la totalidad) de su parte. Por lo tanto, PoS funciona de manera similar a PoW: actuar honestamente es más rentable que intentar engañar al sistema.
Este mecanismo no proporciona recompensas a los validadores en forma de monedas de nueva creación. Con este algoritmo, la moneda nativa de blockchain debe emitirse de otra manera, como a través de una oferta inicial (ICO o IEO), o lanzando el protocolo en PoW y luego cambiando a PoS.
Hasta la fecha, el Proof of Stake en su forma pura sólo se ha implementado en unas pocas criptomonedas con una red relativamente pequeña, por esta razón todavía es difícil decir con certeza si puede convertirse en una alternativa viable al PoW. Aunque este algoritmo parece teóricamente sólido, en la práctica todo sucede de manera un poco diferente.
Una vez que PoS se implementa dentro de una red con una gran cantidad de fondos, entran en juego en el sistema teorías de juegos y diversos incentivos financieros. Si alguien quiere “piratear” un sistema PoS, sólo será con garantía de beneficio, por lo que sólo podremos averiguar qué posibilidades hay de que esto ocurra en la red.
Muy pronto se llevarán a cabo pruebas a gran escala de PoS: como parte de la actualización de la red Ethereum (también conocida como Ethereum 2.0), se implementará el protocolo Casper.
Otros algoritmos de consenso
La prueba de trabajo y la prueba de participación son los algoritmos de consenso de los que más se habla, pero hay muchos otros que tienen sus propias ventajas y desventajas. Le recomendamos que se familiarice con ellos con más detalle en los siguientes artículos:
Prueba de trabajo diferida
Cómo funciona la prueba de participación arrendada
Explicación de la prueba de autoridad.
Explicación de la evidencia de combustión.
Aclaración sobre la prueba de participación delegada
Algoritmo de consenso híbrido
Reanudar
Los mecanismos de consenso son vitales para el funcionamiento de los sistemas distribuidos. Muchos creen que la mayor innovación de Bitcoin fue el uso de Prueba de trabajo, que permite a los usuarios ponerse de acuerdo sobre un conjunto común de hechos.
Hoy en día, los algoritmos de consenso respaldan no solo los sistemas de dinero digital, sino también las cadenas de bloques, lo que permite a los desarrolladores ejecutar código en una red distribuida. Ahora son la piedra angular de la tecnología blockchain y son fundamentales para la viabilidad a largo plazo de varias redes existentes.
De todos los algoritmos de consenso, la Prueba de trabajo sigue siendo dominante, por la sencilla razón de que aún no se ha propuesto una alternativa que sea más confiable y segura. Sin embargo, existe una gran cantidad de investigación y desarrollo para reemplazar PoW, y probablemente solo veamos más.