NUEVO: Helius adquiere Light Protocol
qué es la prueba de historia
Blog/Fundamentos

Prueba de historia, prueba de participación y prueba de trabajo: explicación

Developer Experience Engineer0xIchigo en X0xIchigo en LinkedIn0xIchigo en GitHub
18 min de lectura

¿De qué trata este artículo?

Las blockchains son libros contables distribuidos que registran transacciones en una red de computadoras. Los algoritmos de consenso son fundamentales para las blockchains porque permiten llegar a acuerdos sobre el estado del libro contable. Facilitan la colaboración entre participantes que no confían entre sí y eliminan la necesidad de que una entidad centralizada valide los datos antes de añadirlos a la blockchain. Sin algoritmos de consenso, no habría forma de garantizar que todos los nodos estén de acuerdo sobre el estado de la blockchain. Seríamos vulnerables a numerosos vectores de ataque, tendríamos problemas de doble gasto, pondríamos en riesgo la inmutabilidad y no contaríamos con una buena forma de resolver desacuerdos o bifurcaciones.

En este artículo profundizaremos en los algoritmos de consenso, su importancia y los distintos tipos que usan las blockchains populares. El objetivo es ofrecerte una comprensión integral de qué son los algoritmos de consenso, por qué es importante entender cómo funcionan y cómo operan algunos de los más populares.

Por qué debes aprender sobre los algoritmos de consenso

Es importante que entiendas los algoritmos de consenso para desarrollar eficazmente sobre la blockchain que elijas por las siguientes razones:

  • Saber cómo alcanza el consenso tu blockchain influye en las decisiones de arquitectura durante el desarrollo de tu aplicación descentralizada (dApp). Te harás preguntas como: ¿cuáles son los costos de implementación? ¿Cuántas transacciones debe enviar un usuario para utilizar eficazmente esta dApp? ¿Cuánto cuesta enviar una transacción? La pregunta más importante será: ¿cuál es su tiempo hasta la finalidad? Es decir, ¿cuánto tarda una transacción en confirmarse y añadirse a la blockchain?
  • Conocer las características de rendimiento y latencia de un algoritmo de consenso puede ayudarte a elegir la blockchain adecuada para implementar tu dApp. Hacer preguntas sobre la arquitectura de tu dApp te permitirá detectar áreas donde puedes optimizar el rendimiento
  • Conocer los problemas de seguridad de cada algoritmo te ayudará a diseñar aplicaciones más seguras. ¿Cuáles son los vectores de ataque de tu blockchain? ¿Qué implicaciones de diseño existen para el desarrollo de contratos inteligentes?
  • Conocer el funcionamiento interno del algoritmo de consenso de tu blockchain te permite comprender los matices de sus mecanismos de votación y participar activamente en la gobernanza
  • Conocer los incentivos económicos específicos de cada algoritmo de consenso ayuda a fomentar la participación en la red. ¿Cómo puedo participar en la red y obtener recompensas? ¿Qué conductas puedo evitar para no recibir penalizaciones?
  • Conocer los fundamentos de los algoritmos de consenso te ayudará a entender mejor los algoritmos nuevos o actualizados. ¿Cómo puedes entender la prueba de participación delegada o la prueba de participación arrendada si no entiendes la prueba de participación?

¿Qué es un algoritmo de consenso?

Uno de los principales desafíos de la computación distribuida es lograr un rendimiento confiable del sistema incluso cuando algunos de sus componentes fallan. Este asunto se describe en el problema de los generales bizantinos. El problema plantea un experimento mental en el que todos los participantes del sistema deben acordar una estrategia para evitar el fracaso. Destaca las dificultades de alcanzar un acuerdo en una red donde algunos participantes pueden actuar de forma impredecible o maliciosa. Para mitigar esto, se necesitan procesos de coordinación resilientes que establezcan una única fuente de verdad. Esto garantiza que todos los participantes actúen de manera confiable en toda la red. Llamamos algoritmos de consenso a los procesos que ayudan al sistema a acordar una única fuente de verdad.

Imagina una intersección urbana muy transitada sin semáforos. Sería un caos absoluto: automóviles, camiones, bicicletas y peatones intentarían avanzar por su cuenta y competirían por su turno para cruzar. Habría accidentes, malentendidos y desconfianza entre los participantes. Por suerte, tenemos semáforos. Los semáforos ponen orden: indican quién avanza y quién se detiene, y se adaptan a las condiciones en tiempo real. Lo más importante es que todos estamos de acuerdo con los semáforos. Todos aceptamos las reglas y que estas se apliquen de manera uniforme.

Los algoritmos de consenso son los semáforos de las blockchains. Establecen las reglas para añadir transacciones a una blockchain. Crean un flujo de datos seguro y eficiente en toda la red al dar “luz verde” o “luz roja” a las transacciones y bloques válidos o no válidos. Estas reglas se aplican de forma uniforme, segura y transparente. Los algoritmos de consenso se adaptan a las condiciones cambiantes de la red para mantener un rendimiento óptimo sin dejar de operar dentro de estas reglas.

Los algoritmos de consenso son fundamentales para las blockchains. Sin ellos, no tendríamos una forma uniforme de validar datos en un entorno adverso. En su lugar, habría un caos total. Tanto que probablemente volveríamos a depender de una autoridad central para la validación, agotados por los ataques Sybil y el doble gasto. Necesitamos algoritmos de consenso para que nuestras blockchains permanezcan seguras, inmutables y descentralizadas.

¿Qué es la prueba de trabajo?

La prueba de trabajo (PoW) es una forma de prueba criptográfica en la que una parte (el demostrador) demuestra a otra (el verificador) que ha utilizado una cantidad específica de potencia computacional. El verificador puede comprobar fácilmente este gasto. Moni Naor y Cynthia Dwork la inventaron en 1993 para disuadir los ataques DoS y el spam en una red. Más tarde se formalizó en un artículo de 1999 de Markus Jakobsson y Ari Juels.

Bitcoin popularizó la prueba de trabajo como base del consenso en una red descentralizada sin permisos. Satoshi Nakamoto explica en el documento técnico de Bitcoin cómo puede utilizarse la prueba de trabajo para crear una versión de dinero electrónico puramente entre pares sin intermediarios. Otras blockchains populares que utilizan un algoritmo de consenso basado en PoW son Litecoin, Kadena, Monero y Ethereum Classic. Entonces, ¿cómo funciona?

Cómo funciona

Las blockchains de prueba de trabajo exigen que los participantes de la red resuelvan un problema matemático complejo utilizando una cantidad considerable de potencia computacional. El objetivo es adivinar un número hexadecimal de 64 dígitos conocido como hash. Encontrar este hash parece fácil, pero no lo es cuando consideras que surge de aplicar el algoritmo SHA256 a toda la información de las transacciones de un bloque junto con un nonce aleatorio (”número utilizado una sola vez). El primer participante que resuelve el problema puede añadir a la blockchain el siguiente bloque de transacciones y recibe como recompensa una cantidad predeterminada de criptomonedas. Este proceso de validar transacciones y añadirlas a la blockchain se conoce como minería, y los participantes de la red se denominan mineros.

Ventajas y desventajas

Lo bueno de las blockchains de prueba de trabajo es que cualquiera puede participar en la minería, lo que fomenta una red distribuida y descentralizada. Se necesita una enorme potencia computacional para atacar una red PoW. Esto hace que ejecutar un ataque del 51 % sea prohibitivamente difícil para una sola entidad, aunque en teoría sigue siendo posible. Un ataque del 51 % ocurre cuando una entidad maliciosa controla la mayor parte de la potencia de hashing de la red y puede manipular el historial de transacciones. La prueba de trabajo es un algoritmo de consenso relativamente fácil de entender que se ha implementado y probado a escala mediante Bitcoin.

Aunque suena ventajoso, la prueba de trabajo tiene varias desventajas. Los altos costos del hardware de minería y de la electricidad pueden provocar, y ya han provocado, la centralización de la minería en zonas con costos energéticos bajos. Estas grandes barreras de entrada para una minería rentable hacen que las recompensas se distribuyan de forma desigual y favorezcan a quienes pueden pagar equipos de minería potentes. Esto ha llevado a la creación de enormes granjas de minería de Bitcoin. Su consumo energético intensivo también ha generado diversas preocupaciones ambientales. Esta es una de las principales razones por las que Ethereum migró a la prueba de participación con su actualización llamada The Merge. Entonces, ¿qué es la prueba de participación?

¿Qué es la prueba de participación?

La prueba de participación (PoS) busca solucionar los problemas de consumo computacional y energético asociados con la prueba de trabajo. En lugar de depender de la potencia computacional para proteger la red, la prueba de participación selecciona validadores según la cantidad de tokens que mantienen en staking en la red. Peercoin fue la primera criptomoneda en utilizar la prueba de participación en 2012, aunque la empleó junto con un sistema de prueba de trabajo.

Cómo funciona

En la prueba de participación, los mineros se reemplazan por validadores que proponen bloques y votan por ellos. Estos validadores deben bloquear una cantidad determinada de tokens como su participación en la red. La red selecciona un validador para validar el siguiente bloque de transacciones según varios factores, como el tamaño de su participación o el tiempo que la ha mantenido. Después, los demás validadores verifican y certifican el bloque propuesto. Si certifican que el bloque es válido, este se añade a la blockchain. Por esta tarea, los validadores reciben comisiones de transacción y, en ocasiones, tokens recién acuñados como recompensa por sus esfuerzos de validación. Si certifican que el bloque no es válido, este no se añade a la blockchain y el validador recibe una penalización. Estos validadores sufren un “slashing”, lo que significa que pierden parte de su participación. Estas penalizaciones de slashing existen para disuadir a los actores maliciosos de proponer bloques fraudulentos o crear discrepancias en el libro contable.

Ventajas y desventajas

La prueba de participación aborda directamente el problema del alto consumo energético. El cambio de Ethereum de la prueba de trabajo a la prueba de participación redujo un 99,84 % el consumo energético de la red. Los algoritmos de prueba de participación son más rápidos y adecuados para escalar porque están diseñados para ofrecer un mayor rendimiento. También buscan alcanzar la finalidad con mayor rapidez, por lo que las transacciones se confirman y añaden a la blockchain más rápido. Además, los validadores tienen incentivos financieros para mantener una infraestructura de validación excepcional, lo que reduce los tiempos de validación. Los algoritmos de prueba de participación también son más adecuados para procesar transacciones en paralelo y aplicar sharding. El sharding divide la red en partes más pequeñas, o “shards”, que procesan transacciones de forma independiente y paralela.

Sin embargo, la prueba de participación tiene sus propias desventajas. Aunque consume menos energía, las recompensas de los validadores podrían ser inferiores a las de sus equivalentes en la prueba de trabajo. Esto podría atraer a menos participantes y reducir la seguridad de la red. La distribución inicial del token también puede afectar la equidad y descentralización de la red si no se gestiona correctamente. En este caso, quienes tienen una mayor participación ejercen una influencia desproporcionada sobre la red. Otro posible problema es que los validadores podrían no tener nada que perder al votar por varias bifurcaciones de la blockchain, a diferencia de la prueba de trabajo, donde tendrían que dividir su potencia computacional. Es necesario establecer ciertas condiciones de slashing para evitar este tipo de conducta.

Variantes de la prueba de participación

Entre las blockchains destacadas que utilizan la prueba de participación se encuentran:

Ethereum

Ethereum utiliza un algoritmo LMD-GHOST con Casper-FFG, conocido como Gasper. LMD-GHOST se utiliza para acumular votos y garantizar que los nodos seleccionen fácilmente la bifurcación correcta cuando aparece una. Casper-FFG (Casper the Friendly Finality Gadget) eleva ciertos bloques al estado de “finalizados” para que quienes se incorporen a la red siempre se sincronicen con la cadena canónica.

Cardano

Cardano utiliza una variante de la prueba de participación llamada Ourobros, el primer protocolo de prueba de participación cuya seguridad puede demostrarse. Se basa en investigaciones revisadas por pares y está diseñado pensando en la escalabilidad y la seguridad. Puedes obtener más información aquí

Near

Near utiliza la prueba de participación con umbral, una forma determinista de permitir que un gran número de participantes mantenga la red tomando decisiones durante intervalos específicos. Puedes obtener más información aquí

Algorand

Algorand utiliza la prueba de participación pura, un enfoque más igualitario de la prueba de participación basado en el consenso bizantino. Puedes obtener más información aquí

Como puedes ver, existen muchas variantes de la prueba de participación. La mayoría de las blockchains de prueba de participación utiliza alguna variante del diseño original, pero la modifica para adaptarla a sus necesidades y optimizar casos de uso específicos. Una de las variantes más conocidas y utilizadas es la prueba de participación delegada.

¿Qué es la prueba de participación delegada?

La prueba de participación delegada es una evolución de la prueba de participación diseñada para mejorar la eficiencia y el carácter democrático de los procesos de validación de una blockchain. Daniel Larimer la desarrolló en 2014 y desde entonces se ha implementado en varias blockchains destacadas, como BitShares, EOS, TRON y SUI.

Cómo funciona

En la prueba de participación delegada, los titulares de tokens votan por un grupo de delegados para que validen y creen nuevos bloques en su nombre. Los titulares de tokens eligen a los delegados y el poder de voto está relacionado con la cantidad de tokens que poseen. Para votar, los usuarios agrupan sus tokens en un pool de staking y los vinculan con un delegado determinado. Los delegados tienen incentivos para actuar con honestidad, ya que pueden ser destituidos mediante una votación si realizan actividades maliciosas o no mantienen un tiempo de actividad suficiente. Cuando validan un bloque, reciben como recompensa las comisiones de transacción correspondientes. Después, distribuyen esas recompensas entre los usuarios que los apoyaron según la participación de cada uno. Es importante señalar que estos delegados validan bloques de forma determinista y de acuerdo con un calendario público. Existe un límite para la cantidad de delegados de cada bloque, por lo que se rotan periódicamente.

Ventajas y desventajas

La prueba de participación delegada ofrece muchas de las ventajas de la prueba de participación: cualquiera puede convertirse en delegado, su baja barrera de entrada la hace más accesible y descentralizada, ofrece un mejor rendimiento porque solo requiere una cantidad limitada de delegados y no necesita mucha energía para operar la red.

Sin embargo, la prueba de participación delegada no es perfecta. Solo requiere una cantidad limitada de delegados para cada bloque nuevo. Esto genera preocupación porque un grupo pequeño podría ejercer una influencia desproporcionada sobre la verificación de transacciones y las decisiones de gobernanza. Este límite abre la posibilidad de que los delegados conspiren para actuar de forma maliciosa, lo que reduce considerablemente el umbral para un ataque del 51 %. Los titulares de tokens también podrían sobornar a los delegados para que actúen de manera maliciosa en su nombre. Más importante aún, los usuarios no están obligados a participar en las elecciones de delegados. La apatía de los votantes podría agravar los riesgos de centralización mencionados.

¿Qué es la prueba de historia?

La prueba de historia no es un algoritmo de consenso.

Más precisamente, es un componente que ayuda a alcanzar el consenso. La confusión probablemente surge de su terminología: para quienes conocen la prueba de trabajo y la prueba de participación, el término “prueba de X” suele implicar un algoritmo de consenso. La prueba de historia es fundamental para la arquitectura de Solana y está profundamente integrada en el ordenamiento de transacciones y la ejecución de programas. Debido a su relevancia dentro de la red, es fácil confundirla con el algoritmo de consenso de Solana.

Entonces, ¿por qué hablamos de ella si no es un algoritmo de consenso? La prueba de historia aborda un problema fundamental de los sistemas distribuidos: acordar el tiempo o la secuencia de los eventos. Solana utiliza la prueba de historia como una especie de algoritmo de “preconsenso” para agilizar el consenso y procesar las transacciones eficientemente. Gracias a esto, los validadores pueden procesar transacciones en paralelo, lo que mejora el rendimiento y reduce la latencia. Por tanto, la prueba de historia es un componente que ayuda a alcanzar el consenso. Es mejor pensar en ella como un reloj descentralizado para la red: permite demostrar el tiempo y el orden en que ocurrieron los eventos sin depender de un tercero.

Limitaciones de los enfoques tradicionales

Tradicionalmente, las blockchains se sincronizan mediante bloques, que son grandes conjuntos de transacciones. Esto significa que una transacción no puede procesarse hasta que haya transcurrido un período específico. Esto se conoce como tiempo de bloque. En la prueba de trabajo, los tiempos de bloque deben ser amplios —Bitcoin produce un bloque aproximadamente cada 10 minutos— para reducir la probabilidad de que varios validadores produzcan un bloque nuevo al mismo tiempo. En la prueba de participación no existe esa restricción, pero los validadores necesitan marcas de tiempo para determinar el orden de los bloques entrantes. La solución habitual es añadir una marca de tiempo del reloj de pared a cada bloque. Sin embargo, esta marca de tiempo solo es válida si supera la mediana de las marcas de tiempo de los 11 bloques anteriores y es inferior a la “hora ajustada por la red” más dos horas. La hora ajustada por la red es la mediana de las marcas de tiempo que devuelven todos los nodos conectados contigo. Esta solución no es ideal debido a la desviación de los relojes y la latencia de la red. Entonces, ¿qué hacemos?

Prueba de historia

Solana adopta un enfoque radical para este problema llamado prueba de historia. En pocas palabras, la prueba de historia permite demostrar el tiempo en una red adversarial. Actúa como una función criptográfica de marcado de tiempo que permite a los nodos acordar un orden de eventos sin tener que comunicarse entre sí. Esto se consigue mediante una función hash secuencial resistente a preimágenes —una función difícil de invertir— para crear una cadena de hashes donde cada hash depende del anterior. Los nodos líderes aplican marcas de tiempo a los bloques mediante estas pruebas criptográficas para demostrar que ha transcurrido cierto tiempo desde la última prueba. Como todos los hashes están encadenados, se crea un registro histórico que demuestra que los datos existían en un momento determinado.

Este enfoque único utiliza funciones de demora verificable (VDF), funciones cuyo cálculo tarda muchísimo tiempo, pero cuyos resultados pueden verificarse rápidamente. Las funciones de demora verificable se utilizan para crear hashes que dependen tanto del hash anterior como del tiempo transcurrido. Esto permite crear una cronología verificable de los eventos. El uso de funciones de demora verificable garantiza esta propiedad, ya que alterar un hash exigiría volver a calcular todos los hashes anteriores. Esto añade otra capa de seguridad e integridad a Solana porque solo existe una cronología verificable de los eventos.

Una analogía sencilla

Imagina una ciudad medieval llena de intercambios comerciales, anuncios, debates y disputas. La ciudad depende de un pregonero como fuente central de información. Este anuncia las noticias importantes a viva voz y se asegura de que todos estén informados. Un día, el pregonero enferma y ya no puede cumplir con sus funciones. La ciudad cae en el caos: nadie puede ponerse de acuerdo sobre qué ocurrió y cuándo, quién dijo qué ni en qué secuencia sucedieron los eventos.

Entonces aparece un escriba muy meticuloso. Se sienta en medio de la plaza con una tinta y una pluma únicas que utiliza para registrar cada evento en su diario. La tinta es especial: cambia de color según la última anotación del diario. Todos pueden consultar el diario del escriba y confirmar tanto el orden como el momento de los eventos sin tener que preguntar a cada persona. Este diario se convierte en la fuente de verdad indiscutible de la ciudad y elimina la necesidad del pregonero, ya que las personas pueden hacer anuncios importantes sin él. La tinta cambiante garantiza una fuente de verdad permanente e inmutable que valida todas las anotaciones anteriores. Si reemplazas la ciudad por una red, el diario por un libro contable y la tinta cambiante por una función hash criptográfica, obtienes uno de los métodos de sincronización más confiables. Ese es el poder de la prueba de historia.

Ventajas y desventajas

La prueba de historia permite tiempos de bloque más cortos, procesar una gran cantidad de transacciones por segundo y contar con una única fuente de tiempo verificable antes del consenso. También permite optimizar los recursos: los nodos pueden procesar transacciones sin esperar el consenso, lo que mejora el paralelismo y el uso eficiente de la potencia computacional. Las funciones de demora verificable añaden otra capa de seguridad porque modificar las transacciones exigiría volver a calcular el hash secuencial. Esto sería muy costoso y fácil de detectar. Además, cualquiera puede verificar el orden y el momento de las transacciones gracias a las marcas de tiempo criptográficas. Sabemos con certeza cuándo ocurrió una transacción sin tener que preocuparnos por la validez de las marcas de tiempo del reloj de pared. Esto fomenta la transparencia y la rendición de cuentas, principios esenciales del espíritu de las criptomonedas.

Ten en cuenta que la prueba de historia no es perfecta. Este modelo añade mucha complejidad a la arquitectura de red de Solana, lo que dificulta su comprensión y puede aumentar el riesgo de errores o vulnerabilidades. Debido al cálculo intensivo que requieren las funciones de demora verificable, los nodos de Solana necesitan hardware más potente. Esto eleva el costo de participar en la red a corto plazo. Gracias a la ley de Moore, esta barrera de hardware debería disminuir con el tiempo a medida que el hardware potente, antes costoso, se vuelva más accesible y asequible. La ley de Moore observa que la cantidad de transistores de un microchip se duplica aproximadamente cada dos años, lo que aumenta la potencia computacional.

Conclusión

¡Felicitaciones! En este tutorial profundizamos en los detalles de los algoritmos de consenso: qué son, por qué debes conocerlos y cuáles son algunas de sus implementaciones populares. A estas alturas, deberías tener una comprensión integral de estos algoritmos. Entenderlos no es solo un ejercicio académico, sino una necesidad práctica. Te permite comprender los fundamentos de las redes sobre las que desarrollas e influye directamente en tu capacidad para crear aplicaciones sólidas y eficientes. Así puedes contribuir de forma significativa a las comunidades blockchain de las que formas parte. En el panorama de la tecnología blockchain, que evoluciona rápidamente, este conocimiento es indispensable.

De cara al futuro, podemos esperar la aparición de algoritmos de consenso más innovadores. También podemos esperar que los modelos actuales se actualicen y ajusten para superar los desafíos más recientes de escalabilidad, seguridad y eficiencia. Ya seas inversionista, desarrollador o entusiasta de las blockchains, este es un momento emocionante para involucrarte con este tipo de tecnología patentada. Tu conocimiento de los algoritmos de consenso te sitúa a la vanguardia de la innovación y te permite desenvolverte en este espacio mientras continúa su trayectoria ascendente.

Si llegaste hasta aquí, anon, ¡gracias!

Recursos adicionales / Lecturas complementarias

Suscríbete a Helius

Mantente al día con las novedades del desarrollo en Solana y recibe actualizaciones cuando publiquemos

Imagen ampliada