lunes, 17 de junio de 2019

Blockchain como una gigantesca máquina virtual


Confieso que no se me había ocurrido hasta ahora entenderlo de esa forma.

Blockchain es una tecnología que no resulta sencilla de entender y que, quizá, tampoco ha sido demasiado claramente explicada. Pero en lo que se puede ir entendiendo más fácilmente de blockchain, uno se hace a la idea de cómo son los bloques, cómo se unen formando cadenas, cómo se gestionan transacciones o el uso que se hace de la criptografía.

Pero parecen existir otras perspectivas, quizá más rompedoras, y ligadas al concepto de 'smart contracts' o, mejor aún, de aplicaciones distribuidas.

En las primeras páginas del libro 'Mastering Ethereum' de Andreas M. Antonopoulos y Gavin Wood. me sorprendió que hablasen de Ethereum como una máquina virtual a la que, incluso, ponen nombre: Ethereum Virtual Machine (EVM). De hecho, ya en el segundo párrafo del primer capítulo, nos dicen:

Ethereum is a deterministic but practically unbounded state machine, consisting of a globally accesible singleton state and a virtual machine that applies changes to that state.

Unas páginas más adelante nos dicen:

Ethereum state transitions are processed by the Ethereum Virtual Machine (EVM), a stack based virtual machine that executes bytecode (machine language instructions), EVM programs called "smart contracts" are written in high-level languages (e.g. Solidity) and compiled to bytecode for execution on the EVM.


Es una original forma de entenderlo pero, seguramente, resulte clave. Ethereum, aunque también tiene transacciones e incluso su propia critpomoneda ('ether'), pone mucho foco en los smart contracts y las aplicaciones distribuidas, es decir, sin perder elementos de plataformas anteriores de blockchain, se orienta a la ejecución distribuida de software.

Para que la construcción de esas aplicaciones sea eficiente y, digamos universal, en el sentido de independiente de hardware y sistema operativo, conviene se ejecuten y, por tanto, compilen, en el mismo entorno de máquina virtual. Con la particularidad adicional de que la información que usan las aplicaciones forma parte de ese estado único, conocido y compartido por todos los intervinientes, y que reside en la cadena de bloques.

Y dado que Ethereum es una plataforma pública de blockchain, y muy popular, aspira probablemente a la universalidad y, por tanto, esa máquina virtual y ese estado único sean ubicuos ('pervasive') y, por tanto, hayamos convertido a blockchain en una gigantesca máquina virtual.

Es, desde luego, una forma de entender blockchain muy diferente. al menos a mi me lo parece, y que abre nuevas y ambiciosas perspectivas, quizás el propio futuro de blockchain.

miércoles, 12 de junio de 2019

Vídeo: Hoy vengo a hablar de mi libro, La Carrera Digital



Ya he anunciado en este blog la publicación de mi primer libro, 'La Carrera Digital' que acaba de ver la luz en Mayo. En este vídeo, intento explicar un poco la temática del libro y su planteamiento. Espero que te interese.

Aprovecho para anunciar que la presentación oficial tendrá lugar en Madrid el día 25 de Junio a las 19:30 en la sede de la Escuela de Organización Industrial. Por supuesto, estaré encantado de verte y firmarte un ejemplar. No es imprescindible pero, si quieres acudir, es bueno que te apuntes en esta página.



Dónde encontrar el libro

Si tienes interés en adquirir el libro en los siguientes sitios:

Agradecimiento:

Un profundo agradecimiento a Luis Pavía por la filmación y producción del vídeo.


lunes, 10 de junio de 2019

Empatía tecnológica


Quizá, más que de empatía tecnológica, debería hablar de empatía a la hora de comunicar la tecnología.

Creo que en la comunicación de la tecnología, ya sea a nivel de publicidad comercial, ya sea en publicaciones desde las más sencillas como los blogs o las más complejas como los libros, o incluso en la educación en tecnología, se tiende a caer en dos extremos igualmente erróneos o, al menos, igualmente poco acertados.

Por un lado tenemos el extremo simplista, aquel que apenas explica e incluso entiende la tecnología, que la rodea de mitos y lugares comunes e, incluso, con cierta frecuencia, de fantasías y errores conceptuales. Este extremo es habitual en la información comercial o en la divulgación de baja calidad.

El otro extremo es el contrario, el tipo gurú, aquel que, pleno de conocimiento, explica la tecnología sólo para los muy iniciados (quienes, tal vez, no necesiten ya esa comunicación) y, con frecuencia, centrándose mucho en detalles algorítmicos o de implementación y perdiendo (o al menos no transmitiendo) aspectos más generales como el porqué de esa tecnología, la arquitectura o funcionalidad de alto nivel, el esquema general, los beneficios para el negocio, cómo compara con otras similares, etc. Es decir, le falta perspectiva y cercanía.

En ambos casos, pero especialmente en este segundo, creo que se adolece de una cierta empatía, de ponerse en el lugar de quien recibe esa comunicación, de la persona que, con una honrada curiosidad o aspiración al conocimiento o, quizá, necesitada de un desarrollo profesional o empeñado en un desarrollo personal, o incluso, preso de una necesidad de su empresa, aspira a entender, insisto a entender, una tecnología.

Me ha surgido esta reflexión leyendo el libro 'Mastering Ethereum' de Andreas M. Antonopoulos y Gavin Wood, un libro que me ha sido muy recomendado como referencia en el ámbito de blockchain en general, y del blockchain público, Smart Contracts y Ethereum en particular. Un libro que aún estoy leyendo y que, en el punto en que me encuentro, me parece excelente...pero al que, sin embargo, en sus primeras páginas no he tenido más remedio que 'afearle' esa falta de empatía con el lector no tan especializado como los autores, con quien busca, antes que los detalles, una cierta perspectiva. Pero este es sólo un ejemplo, y probablemente no el peor ni mucho menos puesto que, como digo, por lo demás, el libro me parece muy, muy bueno y de un profundo conocimiento.

En realidad, estoy hablando de un problema generalizado, en mi opinión en la comunicación y educación en tecnología. Una perjudicial polarización entre el simplismo y la erudición cuando creo que, la situación más beneficiosa es justo la intermedia: el explicar la tecnología con rigor y conocimiento, pero de forma simple y proporcionando perspectiva amplia y un contexto de alto nivel que la sitúe en su punto justo. 

Y dado lo importante que es la tecnología en el mundo actual, y lo importante que lo será en el mundo futuro. Y dado que lo previsible es que la tecnología siga evolucionando y surjan nuevos conceptos y soluciones. Y dado que para conseguir una implantación efectiva de las tecnologías y una adopción real por las empresas necesitamos que directivos y profesionales entiendan, entiendan de verdad, las tecnologías, haremos bien en mejorar nuestra comunicación acerca de la tecnología y en incrementar esa empatía tecnológica.

lunes, 3 de junio de 2019

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í 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.