Contenido
Un algoritmo de consenso es un mecanismo que permite a los usuarios o máquinas coordinarse en un entorno distribuido. Debe garantizar que todos los agentes del sistema puedan ponerse de acuerdo respecto a una fuente única de verdad, incluso en el caso de que algunos de ellos fallen. En otras palabras, el sistema debe ser
tolerante a faltas (ver también
Guía sobre Tolerancia a Faltas Bizantinas).
En un esquema centralizado, una entidad única tiene poder sobre todo el sistema. En la mayoría de casos, podrá realizar los cambios que quiera –no existe ningún sistema de gobernanza complejo para alcanzar consenso entre muchos administradores.
Pero en un esquema descentralizado, la historia cambia por completo. Digamos que estamos trabajando con una base de datos distribuida –¿cómo nos ponemos de acuerdo respecto a qué entradas añadir?
Superar dicho desafío en un entorno en el que extraños no confían entre sí fue, quizás, el desarrollo más importante que allanó el camino a las
blockchains. En este artículo, analizaremos de qué manera los algoritmos de consenso resultan vitales para el funcionamiento de las criptomonedas y libros mayores distribuidos (distributed ledgers).
En las
criptomonedas, los balances de los usuarios se registran en una base de datos –la
blockchain. Resulta esencial que todo el mundo (o para ser más precisos, cada
nodo) mantenga una copia idéntica de la base de datos. De lo contrario, pronto se acabaría teniendo información contradictoria, lo que socavaría el propósito fundamental de la red de la criptomoneda.
La
criptografía de clave pública garantiza que los usuarios no puedan gastarse las
monedas de otros. Pero sigue siendo necesaria una fuente de verdad única en la que los usuarios se apoyen, para poder determinar si los fondos han sido ya gastados.
Satoshi Nakamoto, el creador de
Bitcoin, propuso un sistema
Proof of Work para coordinar a los participantes. En breve, analizaremos cómo funciona PoW -pero primero, identificaremos algunos de los rasgos comunes de los múltiples algoritmos de consenso que existen.
En primer lugar, exigiremos a los usuarios que quieran añadir
bloques (los llamaremos
validadores) que aporten un
stake (una participación). Dicho stake es algún tipo de valor que el validador deberá adelantar, y que lo disuadirá de actuar de forma deshonesta. Si hace trampas, perderá su stake. Ejemplos de stake incluyen la potencia computacional, criptomonedas o, incluso, la reputación.
¿Por qué iban a tomarse la molestia de arriesgar sus propios recursos? Pues, porque también hay disponible una recompensa. Habitualmente, ésta consiste en la propia criptomoneda nativa del protocolo -bajo la forma de comisiones pagadas por los usuarios, unidades de la criptomoneda recién generadas, o ambas cosas.
La última cosa que necesitamos es
transparencia. Debemos ser capaces de detectar cuándo alguien hace trampas. Idealmente, debería resultar costoso producir
bloques, pero barato para cualquiera validarlos. Esto garantizará a los usuarios mantener bajo control a los validadores.
Proof of Work (PoW)
Proof of Work (PoW) es el algoritmo de consenso pionero de las blockchains. Fue implementado por primera vez en Bitcoin, pero el concepto en sí existe desde hace cierto tiempo. En Proof of Work, los validadores (a los que se denomina
mineros) someten a
hash los datos que desean añadir, hasta que logran producir un solución concreta.
Un
hash es una serie de letras y números, aparentemente arbitrarios, que se genera cuando procesas datos a través de una
función hash. Si procesas los mismos datos a través de ella de nuevo, obtendrás siempre el mismo output. Sin embargo, si cambias tan sólo un pequeño detalle, el aspecto de tu hash será completamente distinto.
Fijándote en el output, probablemente no podrás determinar qué información fue introducida en la función. Por ese motivo éstas resultan útiles para demostrar que conocías un fragmento de información antes de cierto momento. Puedes entregarle a alguien el hash, y cuando posteriormente reveles los datos, la persona podrá procesarlos mediante la función para asegurarse de que el output es el mismo.
En Proof of Work, el protocolo establece condiciones que determinan la validez de un bloque. Éste podría decir, por ejemplo, que sólo un bloque cuyo hash empiece por 00 será válido. La única forma de que un minero logre crear uno que presente esa combinación, será procesando a fuerza bruta los inputs. El minero podrá ir ajustando un parámetro de sus datos para así ir produciendo resultados distintos en cada prueba, hasta dar con el hash correcto.
Con las principales blockchains, la barra se establece increíblemente alta. Para competir con otros mineros, necesitarías un almacén lleno de hardware de hashing especial (
ASIC) para tener la oportunidad de producir un bloque válido.
Tu stake, al
minar, es el costo de estas máquinas y la electricidad requerida para operarlas. Los ASIC están diseñados para un propósito, por lo que no tienen uso en aplicaciones fuera de la minería de
criptomonedas. La única forma de recuperar tu inversión inicial es minando, lo que produce una recompensa significativa si agregas con éxito un nuevo bloque a la blockchain.
Es trivial que la red verifique que realmente has creado el bloque correcto. Incluso si has intentado billones de combinaciones para obtener el hash correcto, solo necesitan ejecutar tus datos a través de una función una vez. Si tus datos producen un hash válido, serán aceptados y obtendrás una recompensa. De lo contrario, la red lo rechazará y habrás perdido tiempo y electricidad por nada.
Proof of Stake (PoS)
Proof of Stake (PoS) se propuso en los primeros días de Bitcoin como una alternativa a Proof of Work.En un sistema PoS, no existe un concepto de mineros, hardware especializado o consumo masivo de energía. Todo lo que necesitas es una PC normal.
Pues no todo. Aún necesitas poner algo de piel en el juego. En PoS, no presentas un recurso externo (como electricidad o hardware), sino uno interno: la criptomoneda. Las reglas difieren con cada protocolo, pero generalmente hay una cantidad mínima de fondos que debes tener para ser elegible para el
staking.
A partir de ahí, puedes bloquear tus fondos en un
monedero (no se pueden mover mientras estás haciendo staking). Por lo general, estarás de acuerdo con otros validadores sobre qué transacciones irán al siguiente bloque. En cierto sentido, está apostando por el bloque que se seleccionará, y el protocolo elegirá uno.
Si tu bloque es seleccionado, recibirás una proporción de las comisiones de transacción, según tu stake. Cuantos más fondos haya bloqueados, más ganarás. Pero si intentas hacer trampa al proponer transacciones no válidas, perderás una parte (o la totalidad) de tu stake. Por lo tanto, tenemos un mecanismo similar al PoW:actuar honestamente es más rentable que actuar deshonestamente.
En general, no hay monedas recién creadas como parte de la recompensa para los validadores. Por lo tanto, la moneda nativa de la blockchain debe emitirse de alguna otra manera. Esto se puede hacer a través de una distribución inicial (es decir, una
ICO o
IEO) o haciendo que el protocolo se inicie con PoW antes de pasar a PoS.
Hasta la fecha, Proof of stake puro sólo se ha implementado realmente en criptomonedas más pequeñas. Por lo tanto, no está claro si puede servir como una alternativa viable a PoW. Si bien parece teóricamente sólido, será muy diferente en la práctica.
Una vez que PoS se implementa en una red con una gran cantidad de valor, el sistema se convierte en un campo de juego de
teoría de juegos e incentivos financieros. Cualquier persona con el conocimiento para "hackear" un sistema PoS probablemente solo lo haría si pudiera sacar provecho de él; por lo tanto, la única forma de averiguar si es factible es en una red en vivo.
Pronto veremos PoS probado a gran escala:
Casper se implementará como parte de una serie de actualizaciones a la red Ethereum (conocidas colectivamente como
Ethereum 2.0).
Proof of Work y Proof of Stake son los algoritmos de consenso más discutidos. Pero hay una gran variedad de otros, todos con sus propias ventajas y desventajas. Echa un vistazo a los siguientes artículos:
Los mecanismos para lograr el consenso son vitales para el funcionamiento de los sistemas distribuidos. Muchos creen que la mayor innovación en Bitcoin fue el uso de Proof of Work para permitir a los usuarios ponerse de acuerdo sobre un conjunto compartido de hechos.
Los algoritmos de consenso actuales sustentan no solo los sistemas de dinero digital, sino también las blockchains que permiten a los desarrolladores ejecutar código en una red distribuida. Ahora son una piedra angular de la tecnología blockchain y son fundamentales para la viabilidad a largo plazo de las diversas redes existentes.
De todos los algoritmos de consenso, Proof of Work sigue siendo la oferta dominante. Aún no se ha propuesto una alternativa que sea más confiable y más segura. Dicho esto, hay una enorme cantidad de investigación y desarrollo en reemplazos para PoW, y es probable que veamos más de ellos en los próximos años.