Blockchain: sobre confianza y certeza. La verdad sobre los consensos
Desde Bitcoin hasta criptomonedas, de seguimiento a certeza. Blockchain es la tecnología que nos hará confiar en que lo que nos dicen que es cierto de hecho lo es.
Si no conoces mucho Blockchain, te recomiendo antes que leas este post:
? Cómo funciona Blockchain: para dummies
Hemos oído que la magia del Blockchain es que no hace falta confiar en una única agencia/banco/compañía, será la “red” en lo que confiemos.
¿Cómo es esto posible? Con los algoritmos de consenso.
¿Qué es un algoritmo de consenso?
En Blockchain un algoritmo de consenso es el mecanismo usado, por una red Blockchain, para seleccionar el estado correcto de un registro después de realizar una transacción. De esta manera lo que indique el algoritmo de consenso se convierte en la verdad que todos los nodos deben seguir.
Esto se hace normalmente seleccionando la mayoría de entre todos los estados propuestos. Bitcoin, el primer Blockchain, usa “Proof of Work (PoW)”: cualquier propuesta de estado del registro llega con el resultado de un cálculo complejo de hash que requiere bastante potencia de cálculo. La verificación del cálculo es, sin embargo, bastante rápida y sencilla por lo que no resulta rentable enviar un estado falso. Por otra parte, el estado (que se trabaja por bloques de transacciones) tiene una referencia al estado anterior y el resultado del cálculo de su hash por lo que todo está enlazado y no es posible cambiar un bloque del pasado sin cambiar todos los siguientes.

El problema de PoW como algoritmo de consenso
PoW es un método para asegurar que el registro (el nombre usado para el conjunto de bloques que almacenan todas las operaciones, recordemos “ledger” en inglés) es inmutable. Se fundamenta en un principio básico: es demasiado costoso convertirse (o convencer) en el 51% de la red (los participantes) y también es muy costoso recalcular todos los bloques.
¿Es realmente tan complejo? Como con otras cosas, depende del volumen. Debería ser mayor que el bocado más grande que pueda digerir un atacante. Las redes públicas como Ethereum o Bitcoin se consideran suficientemente grandes para resistir un ataque del 51%. Pero las más pequeñas no: Ethereum Classic es una red más pequeña (una versión antigua de Ethereum que no siguió la actualización hard-fork). Y fue atacada (lo puedes ver en este artículo de CCN). Aunque no es el único caso, conoce qué es un ataque del 51% en Blockchain.
Por otro lado, la debilidad de la red puede no residir en un ataque. Una lectura más profunda muestra que unas pocas compañías/consorcios que tengan acceso a electricidad barata pueden dominar una red. No será ya independiente. La electricidad es básicamente el único factor importante. Los ASICs son piezas de hardware muy especializadas que tienen una capacidad de cómputo muy alta con un consumo de electricidad muy pequeño, comparado con un PC, y son más baratas que las GPUs para el minado. Minado es el nombre que se le da al proceso de cálculos sobre el bloque. El dominio de una red por una única entidad puede comprometer su foco, sus actualizaciones y su neutralidad, como poco.
¿Qué alternativas hay a PoW?
Las alternativas a PoW dependen de muchos factores. ¿Es una red pública o privada? ¿Se requiere anonimato? ¿Quién queremos que tenga más influencia?
Redes privadas: Proof of Authority
Las redes privadas suelen elegir “Proof of Authority (PoA)” (traducible como “prueba de autor”) porque todos los participantes involucrados son entidades conocidas. Hay que ser aceptado para participar en ellas (también llamadas permisionadas). PoA significa que, al coste de no ser anónimos (debe haber al menos alguien que conozca quién está involucrado en la operación), se obtiene la seguridad ofrecida por la red Blockchain. Cada participante en la operación la firma con su certificado digital. Esto, junto a los contratos legales adecuados, protege a cada una de las partes de fraude en la transacción. Pero como decíamos está limitado a las redes privadas.
En próximos artículos discutiremos otras opciones para redes permisionadas: BFT, RAFT, Zero Knowledge Proofs, etc.
Redes públicas: Proof of Stakes y Proof of Elapsed Time
Ahí es donde aparece «Proof of Stakes (PoS)« (traducible como “prueba de inversión”) que es un proceso en el que el validador de un bloque depende de la inversión de ese validador en la red. Se basa en la idea de que cuanto más se tiene invertido en la red (y por tanto más se puede perder) te vuelves más fiable validando transacciones. Esto puede, sin embargo, también llevar a una centralización indeseable.
Otra aproximación sería seleccionar un validador aleatoriamente. «Proof of Elapsed Time (POET)» tiene esa intención. Este método intenta seleccionar que el validador sea el primero en completar un bloque después de esperar un tiempo aleatorio. Esencialmente es un método similar a PoW pero sin los grandes requisitos de consumo. Para asignar aleatoriamente ese tiempo de espera y certificar que el validador ha esperado el tiempo correspondiente se requiere de un entorno de computación segura. La pregunta es: si se requiere un entorno de computación segura ¿Por qué no usar ese entorno para la validación en vez de calcular sólo el tiempo de espera?

ProgPoW: un PoW más complejo
ProgPoW es una evolución de PoW diseñador para la red Ethereum. ProgPoW intenta compensar el poder de las ASICs al calcular PoW cambiando el algoritmo para que sea necesario tener una GPU. Si esto reequilibra un poco las capacidades de cómputo de las granjas de ASIC con la de los usuarios de casa, aún no lo sabemos. Pero ProgPoW es el primer algoritmo de consenso que nos cuenta una de las verdades ocultas de Blockchain: no confías en nadie en particular, intentas confiar en la mayoría y, aun así, tendrás dudas.
¿Traerá ProgPoW el equilibrio a la fuerza tan sólo cambiando el algoritmo? No es probable, pronto los diseñadores de ASIC resolverán también este problema y probablemente aparecerá en el mercado una nueva generación de ASICs con mayores capacidades.
Pensando en algo más allá de la evolución algorítmica
Sin embargo, el movimiento de creación de ProgPoW es bastante ingenioso: se enfrenta al problema y crea una nueva e innovadora forma de resolverlo: si la amenaza cambia, cambia tus defensas.
Podría haber dos nuevas aproximaciones a la centralización del dominio de la red:
- Cambiar el algoritmo de consenso frecuentemente para comprometer a las ASICs y a las grandes compañías de minado y que pierdan parte de interés o se convierta en algo demasiado inestable para ellas.
- Evolucionar los algoritmos de consenso a una nueva generación: el consenso social, el paso más allá de PoS.
La primera opción es auto explicativa, ¿y la segunda?
Lo que podríamos llamar “consenso social” sería un método para que no sólo los algoritmos tengan el control, sino también lo que los participantes piensen de los validadores, algo así como ingeniería social inversa: cuanta más confianza generes en la red, mayores capacidades como validador se tienen.
No vamos a comenzar una discusión sobre la confianza. PoS sugiere que esté relacionada con el valor de los activos, pero hay otras opciones como las redes de reputación (al estilo eBay, con el número de transacciones y la satisfacción de los clientes), círculos de confianza con entrada bajo invitación, redes de reputación al estilo publicaciones científicas, etc.
Al final nos encontramos con que hay hueco y necesidad para una nueva generación de consensos y, por tanto, de redes de Blockchain.