Blockchain es una tecnología muy relevante en el panorama actual pero no es precisamente una tecnología sencilla de entender. Quizá porque es intrínsecamente compleja, quizá porque, en realidad, más que una tecnología por sí misma es una combinación de tecnologías que proporcionan la base para una diversidad de soluciones y casos de uso. Así que agradezco cualquier aportación que ayude a estructurar y hacer más digerible el mundo del blockchain. He comenzado a leer una las obras más relevantes publicadas actualmente, a saber, el libro 'Mastering Ethereum' de Andreas M. Antonopoulos y Gavin Wood. En el primer capítulo, de intención divulgativa, los autores identifican los ocho componentes que ellos entienden que suelen estar presentes en todas las plataformas de blockchain públicas. Y estos son los componentes que identifican: Una red Peer-to-Peer que conecte a los participantes y propague las transacciones y los bloques de transacciones verificadas Mensajes, en forma de transacciones, que representen cambios de estado. Un conjunto de reglas de consenso, que gobiernen lo que constituye una transacción y qué transacciones son válidas. Una máquina de estados que procese las transacciones con arreglo a las reglas de consenso. Una cadena de bloques securizada mediante criptografía que recoja todas las transacciones verificadas y aceptadas Un algoritmo de consenso que descentralice el control sobre la cadena de bloques haciendo que los participantes colaboren en el cumplimiento de las reglas de consenso. Un esquema de incentivos que asegure económicamente la máquina de estados en un entorno abierto. Una o más implementaciones de lo anterior en un entorno abierto. Y luego, hacen un 'mapping' a los ocho componentes específicamente de Ethereum. Y se traduce en lo siguiente: Red Peer-to-Peer: En concreto, Etehereum se ejecuta sobre la red denominada 'Ethereum main network' que se encuentra a nivel de protocolo TCP en el puerto 30303. Reglas de consenso: Ethereum dispone de unas reglas de consenso descritas la especificación de referencia (Yellow Paper). Transacciones: Las transacciones en Ethereum son mensajes de red que incluyen entre otras cosas. al emisor/receptor, el valor y la carga de datos (payload). Máquina de estados: En Ethereum existe la 'Ethereum Virtual Machine' (EVM), una máquina virtual que ejecuta bytecodes y cuyos programas, los llamados contratos inteligentes, se escriben en lenguajes de alto nivel y se compilan a bytecodes para su ejecución. Estructuras de datos: El estado de Ethereum se almacena localmente en cada nodo, como una base de datos, que contiene las transacciones y el estado del sistema en una estructura de datos serializada. Algoritmo de consenso: Ethereum adopta un mecanismos de consenso similar al de Bitcoin en que se usa la firma secuencial de bloques, ponderada por la importancia de la prueba de trabajo ('Proof of Work', PoW) para determinar la cadena más larga y, por tanto, el estado actual. Seguridad económica: Ethereum usa 'Ethash' como algoritmo de PoW. Clientes: Existen ya varias implementaciones de clientes interoperables de los cuales, los más relevantes son 'Go-Ethereum (Geth)' y 'Parity'. Hay que reconocer que esta explicación, por sí misma, tampoco es precisamente cristalina, pero, aunque todavía hay mucho que 'rascar' para entender realmente blockchain en general, y Ethereum en particular, la identificación de estos ocho componentes creo que ayuda a poner, al menos, esa estructura que voy buscando.

Los ocho componentes de una blockchain pública y los ocho componentes de Ethereum

Blockchain es una tecnología muy relevante en el panorama actual pero no es precisamente una tecnología sencilla de entender. Quizá porque es intrínsecamente compleja, quizá porque, en realidad, más que una tecnología por sí misma es una combinación de tecnologías que proporcionan la base para una diversidad de soluciones y casos de uso.   Así…