Tabla de Contenidos
ToggleEn un anterior artículo del blog hicimos una introducción a las generaciones de la blockchains y explicamos la primera de ellas, iniciada por el revolucionario Bitcoin.
En este artículo vamos a tratar las innovaciones de la segunda generación, empezada por Ethereum, la segunda blockchain y criptomoneda más grande de la galaxia (aún no se han descubierto blockchains en otras galaxias).
Ethereum fue propuesto en 2013 por Vitalik Buterin, un joven programador y entusiasta de Bitcoin. La idea de Vitalik era que una blockchain podía permitir aplicaciones descentralizadas (dapps) con un lenguaje de propósito general. De ahí que la visión de Ethereum fuera funcionar como una especie de ordenador mundial e incluso ser la base del Internet descentralizado (web 3.0).
En este ordenador mundial la ejecución de aplicaciones se paga con la moneda nativa de la blockchain, el ether (ETH). Su lenguaje, llamado Solidity, ha permitido que escribir contratos inteligentes (contratos hechos con código informático que se cumplen automáticamente) y aplicaciones descentralizadas (apps que no depende de un ente central, sino de la misma comunidad de usuarios que la utilizan) sea accesible para todos los programadores del mundo. Otra narrativa que también ha ido aumentando en Ethereum es la de las finanzas descentralizadas o DeFi.
Ethereum finalmente fue lanzado en 2014, con una práctica que pasó a ser la norma en la industria (y también criticada por muchos), un pre-minado para financiar el desarrollo.
Ethereum es Turing-completo. En el mundo de las criptomonedas esto viene a significar que los contratos y dapps pueden ser tan complejos como uno quiera. Mientras que en Bitcoin se usaba un lenguaje muy simple (y seguro), el Bitcoin Script, en Ethereum se usa uno con mayor superficie de ataque (más riesgo), pero que permite muchas más cosas.
Además en Ethereum se usan lenguajes de alto nivel, es decir, lenguajes que son más fáciles de aprender y usar para programadores. Una vez escrito el contrato o la dapp, el código pasa por un compilador y se «traduce» al lenguaje nativo de Ethereum (llamado bytecode). Ethereum no entiende los lenguajes de alto nivel, sólo el bytecode (de igual manera que un ordenador entiende código binario pero no JavaScript o Python).
En la práctica casi nadie entiende bytecode y el lenguaje más usado es Solidity (que se ha vuelto estándar en la industria de contratos inteligentes). Uno de los grandes problemas de Solidity es que no optimiza la seguridad y los exploits o hacks son frecuentes, resultando en el robo de grandes cantidades de dinero. Otros lenguajes como Lisp van en la línea de maximizar la seguridad.
Un término popularizado con la segunda generación de blockchains es el gas. El gas es una unidad que refleja el coste computacional de realizar una operación. Por ejemplo una suma podría costar 1 gas y una multiplicación 8 gas.
La metáfora usada es que la ejecución de contratos gasta gasolina (gas) y se paga con ether. El precio del gas (en ether) puede aumentar si hay mucha demanda de transacciones o bajar si hay menos.
Es similar a cómo en Bitcoin se paga una comisión en función del peso de tu transacción. La unidad usada para medir el precio del gas es el Gwei o 0,000000001 ether (sí, más fácil usar Gwei).
Poniéndole un coste monetario a la ejecución de contratos evitamos que se abuse de la red. Esto es especialmente importante hablando de un lenguaje Turing-completo porque se podría escribir código que resultara en una ejecución interminable (como un bucle infinito).
Si quieres saber más sobre cómo funciona el GAS en ethereum, puedes consultar este artículo.
El bytecode (lenguaje nativo) se ejecuta por los ordenadores de la red (nodos y mineros) en la Ethereum Virtual Machine (EVM). Hay que tener especial atención en que si el gas pagado para la ejecución es menor al gas necesario, la transacción es inválida y no se procesa.
A diferencia del modelo UTXO de Bitcoin en el que la red monitoriza las monedas como «outputs de transacciones«, en Ethereum se adopta un modelo de cuentas. En este sistema la red monitoriza unos balances y datos pertenecientes a cuentas. Una implicación de esto es que el ether es una moneda más fungible que bitcoin.
Un uso común de los contratos en Ethereum es crear un libro de contabilidad dentro del propio de Ethereum, es decir, crear un nuevo token. El estándar más usado es el ERC-20 y permite crear nuevos tokens con mucha facilidad, sin necesidad de lanzar una nueva blockchain.
Como no deja de ser un contrato en Ethereum, para hacer transferencias de tokens hay que pagar el gas en ether.
De la misma forma que tenemos tokens fungibles (ERC-20), podemos crear tokens no fungibles que se han popularizado recientemente. Sin embargo, al contrario de lo que se piensa, esta innovación no empezó en Ethereum sino en Bitcoin con Counterparty. Lo mismo ocurre con los dominios descentralizados (Ethereum Name Service) que empezaron sobre Bitcoin con Namecoin.
Como hemos visto Ethereum tiene un enfoque hacia la innovación permitiendo mucha más flexibilidad que Bitcoin. Mientras que Bitcoin domina el nicho de reserva de valor, Ethereum domina el nicho de contratos inteligentes (aunque también tenga uso monetario).
Pero en el mercado de plataformas de contratos inteligentes y aplicaciones descentralizadas se ha dado una explosión cámbrica. Ethereum ahora se encuentra rodeado de competidores, las blockchains de tercera generación. Y el propio Ethereum está en camino de volverse una blockchain de tercera generación.
Pero esto es todo por ahora, ¡la última generación la veremos en un próximo artículo!.