¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Conoce nuestra marca.¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Conoce nuestra marca.techbiz
Borja Gómez 05/12/2018 Cargando comentarios…
Si estás empezando a sumergirte en el mundo de Blockchain, muy probablemente te hayas preguntado ¿quién decide qué se escribe en la blockchain? ¿quién valida las transacciones en una red de blockchain?
Pues bien, la respuesta más correcta, es “depende”. Cada red de blockchain decide cómo va a decidir cuáles son las transacciones, utilizando lo que se denomina algoritmo de consenso.
El consenso en la red de blockchain se refiere al proceso de lograr un acuerdo entre los distintos participantes de la red sobre las transacciones que van a escribirse en la cadena.
Dicho de otra manera, el consenso es el responsable de que todos los nodos de la blockchain tengan los mismos datos, evitando a su vez su manipulación.
La forma de implementar esto en la red es lo que se conoce como “algoritmo o mecanismo de consenso” y forma parte del *core *de la misma, aunque hay algunas implementaciones de redes que permiten seleccionar el algoritmo entre varios disponibles.
A continuación veremos los principales mecanismos de consenso que existen a día de hoy.
El algoritmo de Prueba de Trabajo fue el primero de los mecanismos utilizados en Blockchain. Sus orígenes se remontan a hace 20 años, cuando apareció Hashcash, que fue el primer sistema PoW.
La base del mismo es que, para establecer relaciones entre dos desconocidos que van a intervenir en un sistema, es necesario que ambos prueben de alguna manera su interés, y la forma de garantizar este interés es demostrar que han dedicado cierta cantidad de recursos (prueba de trabajo).
Sin embargo, no es válida cualquier prueba de trabajo, ya que para que dicha prueba sea viable, debe ser fácil de probar.
Un ejemplo de una prueba de trabajo podría ser el siguiente:
Encontrar una página de un libro en la que la cuarta letra sea una “a”, y la penúltima sea una “m*”.*
Para encontrarlo, necesito ir comprobando las páginas una a una para ver si se cumple la condición.
Puedo empezar por el principio, por el final, por el medio… No hay ninguna estrategia más allá que ir comprobando páginas, lo que sin duda requeriría un trabajo por parte de aquel que quiera aportar dicha prueba.
Además, sería bastante fácil de comprobar, ya que cuando el interesado comunique la página, sólo tendría que comprobar si es cierto con tan solo acudir a la página indicada.
La idea detrás de la prueba de trabajo sobre un conjunto de datos es aplicar una función a los datos, y comprobar si se cumple una condición pactada previamente.
El algoritmo de Prueba de Trabajo más famoso es el de Bitcoin. En él se crea un bloque con cierta información entre la que se encuentra:
Sobre este “bloque” (que es una sucesión de bytes) se aplica una función Hash SHA-256 obteniendo siempre un conjunto de 64 dígitos hexadecimales. Es importante resaltar que una función es Hash es determinista, lo que significa que aplicada sobre una entrada concreta siempre nos dará el mismo resultado.
Una vez obtenido el resultado, se comprueba si es número obtenido es menor a un número dado, comprobando si el resultado comienza con un número de ceros (0) determinado, en cuyo caso se da por válido el bloque y se dejan de buscar nuevos valores “nonce”.
En las redes de Bitcoin y Ethereum, y en general en las redes PoW, el primer nodo que encuentra un bloque válido es recompensado por el trabajo completado, por lo que los miembros del sistema compiten.
En principio esto no era un riesgo debido a la gran distribución de los nodos; sin embargo, el minado de bitcoin se va haciendo más especializado con grupos de usuarios invirtiendo en complejos sistemas de minado.
Esto conlleva un riesgo de centralización en torno a un grupo reducido de usuarios que, potencialmente, podrían llevar a cabo un ataque a la cadena de forma que solo se aceptasen aquellos bloques que este grupo quisiera.
El algoritmo de Proof of Stake (PoS) busca acabar con las ineficiencias asociadas al PoW. En este mecanismo hay dos tipos de nodos: nodos regulares, que almacenan una copia de la cadena y a los que se pueden hacer consultas, y nodos validadores (no mineros).
La probabilidad que tiene un participante de ser elegido para validar un bloque, ganando una recompensa por ello, se decide en relación a la la cantidad de fondos (criptomonedas o tokens asignados mediante algún sistema particular) que apueste.
Dichos fondos pasan ser una garantía de la buena fe del validador. En caso de que la transacción se detecte como ilegítima, el validador perderá sus fondos y, en caso contrario, recibirá una recompensa por la validación del nodo.
La idea detrás de este algoritmo es bastante aceptada, existiendo distintas variaciones para buscar optimizar los resultados, evitando, por ejemplo, que unos pocos nodos con muchos fondos se conviertan en los únicos nodos con capacidad de decisión.
Sin embargo, la necesidad de conocer los nodos validadores y el gran poder que tienen frente al resto de nodos hace que sea un protocolo poco adecuado para redes de tipo público.
Algunas de las variaciones más importantes del mecanismo de Proof of Authority son:
El mecanismo de prueba de autoridad puede entenderse como una variación del PoS. En PoA las validaciones se efectúan de igual modo por nodos validadores. La diferencia reside en que la capacidad de validar no viene marcada por la cantidad de fondos que tiene la cuenta, sino en la propia “Identidad” o legitimidad de la misma.
El mecanismo de obtención de estatus “validador” debe ser conocido de antemano y claro, ya que de él depende la mantenibilidad de la red.
Pese a que algunos tachan este algoritmo de ser poco descentralizado (lo cual es cierto), de alguna forma tiene un encaje perfecto en redes de consorcio, ya sean privadas o semipúblicas.
En este tipo de redes, la identidad de los nodos viene avalada por su posición en el consorcio o en la sociedad, de forma que la reputación del responsable del nodo desincentiva totalmente la tentación de actuar fraudulentamente.
El mecanismo BFT (Bizantinum Fault Tolerance) está inspirado en el conocido problema de los generales bizantinos.
En este problema, un número de generales debe tomar una decisión de tipo booleano (sí o no, atacar o no) a la vez para que la estrategia tenga éxito.
El problema viene cuando se introduce la posibilidad de que uno o más de los generales sea un traidor, y proporcione una información errónea que aboque el ataque a un fracaso.
La idea detrás del mismo es poder identificar si uno de los nodos está diciendo la verdad o no a la hora de transmitir un mensaje.
En el caso de una red blockchain con BFT, todos los nodos deben ser conocidos, por lo que deben ser redes que no necesiten cambiar frecuentemente. Éstos nodos intercambian información que, potencialmente, puede ser correcta o incorrecta.
El algoritmo se basa en la honestidad de la mayoría de los validadores, de forma que en caso de que alguno de los nodos no lo fuera, el resto descartaría el intento de fraude.
BFT tiene sentido cuando todos los participantes en el proceso se conoce entre ellos y son no son propensos a cambiar. Un buen ejemplo es la votación de los compañeros de piso sobre el tema de las reparaciones.
La implementación más relevante de este tipo de mecanismos es Instambul Byzantine Fault Tolerance (IBFT).
Si has llegado hasta aquí, ahora sabes un poco más sobre los distintos algoritmos de consenso y también cómo ésto afecta a las características de una red de blockchain.
Como ocurre frecuentemente cuando comparamos tecnologías, no parece muy correcto pensar en términos de correcto o incorrecto: hay muchas aproximaciones distintas y debemos valorar bien todas ellas para elegir aquella que más cuadre con nuestro objetivo, asumiendo las restricciones y mitigando los riesgos.
Además, la mayoría de implementaciones de blockchain son *open source, *por lo que siempre están abiertas de aceptar la colaboración de la comunidad. Y tú, ¿te animas?
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.
Cuéntanos qué te parece.