Criptoeconomía: la revolución Blockchain.

Parte 1.

A partir del white paper: “Bitcoin: A Peer-to-Peer Electronic Cash System” de claros tintes libertarios y en el cual se da lugar a un ecosistema de intercambio de dinero entre pares o “peers”, comenzó a utilizarse un término que tuvo origen en los movimientos cypherpunks de la década de los 70: Criptoeconomía.

“A cypherpunk is any activist advocating widespread use of strong cryptography and privacy-enhancing technologies as a route to social and political change”

Un sistema cripteconómico, es aquel donde los individuos son responsables del manejo de sus cuentas y verificar sus transacciones, donde además no existe regulación de ninguna entidad centralizada como bancos o gobiernos.

Si bien la lógica y herramientas criptográficas existen desde Shannon y Bool, se necesitaron de nuevos conceptos y tecnologías disruptivas para que un ecosistema de este tipo pueda funcionar.

Todo esto puede existir en la actualidad gracias a la tecnología Blockchain.

Un nuevo concepto.

Para definir qué es un sistema criptoeconómico primero tenemos que entender cómo funciona. El núcleo tecnológico que inició esta revolución se llama Blockchain y surgió en el año 2008 como parte del sistema P2P de intercambio de valor llamado Bitcoin de la mano del pseudónimo Satoshi Nakamoto.

“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks” — Es el primer mensaje de la historia registrado en Blockchain.

El problema de los generales bizantinos.

Para explicar por qué es necesaria la tecnología blockchain, es usual plantear desde el punto de vista informático, el problema de Los generales bizantinos.

Supongamos un escenario de guerra en el que tenemos un grupo de m generales bizantinos que están asediando una ciudad desde distintos lugares y tienen que ponerse de acuerdo para atacar o retirarse de forma coordinada. Entre los generales hay solo uno que puede cursar la orden por ser el comandante. El resto se dice que son tenientes y se sabe que uno o más de los generales puede ser un traidor. — Wikipedia
Uno de los casos del problema

Básicamente el problema plantea cómo coordinar acciones o mejor dicho como obtener consenso en un ecosistema en el que no se confía (a.k.a Internet). De esto se trata Blockchain, de generar un consenso entre las partes que forman una red partiendo de la idea de que cualquiera de estas puede no ser confiable o peor aún, un posible atacante.

¿Qué es?

Básicamente es un registro público contable de todas las transacciones hechas desde su creación y que sirve para coordinar los nodos que validan las transacciones realizadas en un momento determinado de tiempo.

¿Cómo funciona?

La resolución al problema de los generales se logra con una combinación de criptografía, matemática y algoritmos de consenso que trataremos de explicar de la forma más sintética posible.

Buckle up, this shit is about to get technical.

1. Identidad

Para empezar, la gran mayoría de las cadenas de bloques (blockchain) existentes se basan en el uso de criptografía asimétrica o public key cryptography para la generaciones de direcciones y claves asociadas que representan al usuario y permiten realizar transacciones en dichas cadenas.

Particularmente, y por propiedades puramente criptográficas, la función que más se utiliza es ECDSA o Elliptic Curve Digital Signature Algorithm

Representación gráfica de ECDSA

Si bien esta función posee un montón de propiedades interesantes, particularmente lo que importa es que dado un hash firmado y un mensaje, es posible obtener la clave pública que lo generó, al mismo tiempo que nunca se comprometió la clave privada o la identidad de quien es el usuario que realizó la transacción.

Ejemplo en Ethereum:

msg = “The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”
privkey = 0x00bd54c4690f456e5a80f7f7e7ed9d479d670d90502ae0471324c5532e8fe31b

Al firmar el msg con la privkey usando ECsign(), obtengo:

r: <Buffer 09 9c e7 89 f9 b7 7d 72 64 15 35 41 6a 5f 22 f4 a0 d7 c0 57 8f 26 cf ad fa e5 bc c5 93 b9 a2 99>,
s: <Buffer 7c e5 1d 81 9d c6 aa 0f 18 9b a9 6c 5c a7 ea d6 13 50 0b 7a 89 ee c2 5a cc f5 0c fc a5 fd f4 be>,
v: 28

Lo cual produce el hash firmado:

0x099ce789f9b77d72641535416a5f22f4a0d7c0578f26cfadfae5bcc593b9a2997ce51d819dc6aa0f189ba96c5ca7ead613500b7a89eec25accf50cfca5fdf4be01
Es importante destacar que un hash es el resultado de una función irreversible, no se puede “desencriptar”. Esto provee seguridad e integridad ya que de modificarse un bit cambia completamente el resultado.

Teniendo este output y el mensaje original msg puedo utilizar ECrecover() para obtener finalmente la address pública asociada con esa transacción:

0x0e4625ec25d062b49cc89ecf4bf8b3da9d38035b

El resultado y todo “registro” de estas transacciones quedan asentados en este libró contable descentralizado y público llamado Blockchain.

2. Consenso

Ya vimos cómo se crean transacciones de forma segura y anónima para que sean registradas en Blockchain. El nuevo problema es cómo definir si la transacción es válida o no.

Ya que estas cadenas de bloques están formadas por múltiples nodos conectados entre si y pudiendo estos ser confiables o “traidores” es necesario llegar a un consenso sobre cuales transacciones son válidas y cuales no. En sistemas económicos esto se traduce en resolver problemas, entre otros, de “double spending”.

En el paper original de Satoshi Nakamoto se presenta una solución llamada Proof Of Work

“To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proofof-work system similar to Adam Back’s Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash”. — Satoshi

Dicho de otra forma, es un sistema en el que se necesita incorporar poder de cómputo o hashing power a la red para resolver problemas computacionalmente complejos, de tal manera que valide transacciones y al mismo tiempo desincentive potenciales atacantes.

La mejor analogía para este tipo de resolución se encuentra, desde mi punto de vista, en el libro “Mastering Bitcoin”, donde su autor Andreas Antonopoulos compara el algoritmo PoW con un juego de Sudoku.

“Es relativamente difícil resolver un problema de Sudoku y seguramente te lleve un tiempo, pero es muy fácil y rápido verificar que se ha resuelto correctamente”. — Mastering Bitcoin

Pero los nodos que realicen estos cálculos no solamente tienen que entregar poder de cómputo a la red sino que además, la dificultad y cantidad necesaria de ciclos de operación son cada vez más altas, de hecho crecen exponencialmente. Siguiendo la analogía podemos decir que equivale a resolver problemas de Sudoku cada vez más grandes y complejos. Esto se debe al ajuste de dificultad en la red y es necesario, entre otras cosas, por la ley de Moore.

Ahora, una vez que estas transacciones están en la red necesitan ser confirmadas como válidas. La forma de validarlas, como vimos anteriormente es resolviendo cálculos y entregando hashing power a la red, de tal forma que dichas transacciones puedan ser incluidas en un bloque. Resolver estos bloques transforma un nodo en un “miner” de la red.

Un bloque es una estructura de datos que contiene una x cantidad de transacciones pero además un timestamp (sello de tiempo) y, lo que es más importante, un hash del bloque inmediato anterior, por eso se dice que los bloques están encadenados o que forman una “cadena de bloques”.

Estructura interna de un bloque.

Por lo tanto cada uno de estos bloques no solo valida las transacciones que incluye en si mismo sino además todas las transacciones hechas previamente, mientras más larga sea la cadena y mientras más abajo o atrás estén nuestras transacciones, mayor es el nivel de seguridad.

Esto resuelve entonces el problema de “double spending” ya que las transacciones hechas en un momento determinado tiempo quedan registradas, pero además desincentiva a los atacantes y logra el consenso necesario para validar las transacciones y bloques.

Ahora, si el hashing power para validar bloques y transacciones en una red blockchain es cada vez más complejo y presenta un mayor costo eléctrico:

¿Por qué habría uno de destinar recursos a dicha red?

La respuesta es sencilla: porque existe un incentivo económico.


Esta es la primera parte de la serie Criptoeconmía: La revolución Blockchain

Más información en https://cryptologic.io

Like what you read? Give Maxi Dev a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.