Construyendo Ethereum Dapps

Aplicaciones descentralizadas en la cadena de bloques de Ethereum. (Nota al lector: este es la primera parte de no sé cuantas).

En este breve tutorial vamos a hablar de Ethereum, blockchain, plataformas y aplicaciones descentralizadas, si no has escuchado nada de esto estas en buen lugar y además si has programado en JavaScript esto será aún más sencillo.

A menos de que hayan estado en una cueva el ultimo par de años se habrán enterado de las criptomonedas, incluso algunos habrán comprado y/o vendido bitcoin o alguna otra.

Después de haber experimentado con algunas criptomonedas, empecé a voltear la cara a Ethereum por su potencial y por que la infraestructura de desarrollo es bastante amigable, aunque no hay mucha documentación y la que existe esta obviamente en inglés y fragmentada, esto ya esta cambiando, además de que la tecnología avanza a un ritmo inalcanzable, espero que al terminar de escribir esto no este ya obsoleto.

A medida que el sistema del núcleo (core system) de Ehereum llegaba a ser más estable, su documentación empezaba a reflejar más cercanamente las ultimas versiones de las APIs y muchos artículos y blogs comenzaron a aparecer.

Estoy seguro que a medida de que Ethereum siga su evolución veremos más solicitudes para el puesto de trabajo recién nombrado Ethereum Dapp Developer.

Pero primero ¿qué es Ethereum ?.

Según Wikipedia Ethereum es una plataforma open source, descentralizada que permite la creación de acuerdos de contratos inteligentes entre pares, basada en el modelo blockchain. Cualquier desarrollador puede crear y publicar aplicaciones distribuidas que realicen contratos inteligentes. Ethereum también provee una ficha de criptomoneda que se llama ‘ether’. Se puede intercambiar ether entre cuentas diferentes y también es utilizado para compensar los nodos participantes por los cálculos realizados.

Brevemente la cadena de bloques es una base de datos que es asegurada y mantenida por un gran número de nodos en todo el mundo. La información es almacenada en bloques, los cuales son sellados en el tiempo y vinculados a otros formando una cadena. La cadena de bloques asegura que toda la información almacenada en la cadena sea segura y no cambie nunca, lo que hace que la cadena de bloques sea tan interesante.

A través de un mecanismo de consenso, la cadena de bloques es ‘trustless’, lo que significa es que uno no tiene que basar su confianza en la integridad de una tercera parte.

Vitalik Buterin, creador de Ethereum, en su white paper sobre Ethereum de 2014 pensó en dar un paso más allá a lo que sería el solo ser una calculadora o un gran libro de cuentas.

The key component is this idea of a Turing-complete blockchain. … As a data structure, it works kind of the same way that Bitcoin works, except the difference in Ethereum is, it has this built-in programming language.

En español, el componente clave es esta idea de una cadena de bloques de Turing completa… como estructura de datos, esta trabaja de manera similar a Bitcoin, excepto que la gran diferencia es que tiene este lenguaje de programación incorporado.

Ethereum permite a los desarrolladores crear pequeños contratos inteligentes en el blockchain. Tales piezas de código son auto-contenidas y definen el acuerdos entre múltiples partes. Por ejemplo, podemos realizar micropagos instantáneamente si se cumple las condiciones por las que fue creado dicho acuerdo (toda transacción implica un gas o combustible del cual hablaremos en otra publicación ya que tendremos que ahondar entre las cadenas de bloques publicas y privadas).

¿Pero por qué es importante la cadena de bloques ?

Por primera vez, la cadena de bloques habilita una forma segura para enviar valor a través de internet sin necesidad de una tercera parte o identidad confiable, esto condujo al surgimiento del Bitcoin y otras criptomonedas.

Entonces la cadena de bloques es una solución “Third Trusted Party” y en segundo lugar es una solución al problema del “Double Spending”, doble gasto, el cual Satoshi Nakamoto dejo claramente establecido en su manifesto. Estos dos conceptos son super importantes por que de la noche a la mañana aparecen soluciones con blockchain hasta para resolver la hambruna mundial y en mi opinión, no en cualquier escenario deberíamos utilizar blockchain.

¿realmente necesitamos unacadena de bloque?

Cuando damos a otra persona una moneda de un peso o una manzana hemos transferido sin lugar a ninguna duda la propiedad de este peso o manzana a esa persona y solo podremos recuperarlo si quiere devolvérnoslo voluntariamente (o por la fuerza), pero no podremos gastar ese objeto físico de nuevo si no lo recuperamos. Pero por supuesto en sistemas digitales no es tan sencillo, hablaremos de ellos más adelante.

CNBC afirma que actualmente existen 35,000 desarrolladores sobre Ethereum (más que en cualquier otro criptosistema ) y más de 500 startups desarrollando en esta plataforma. (Junio de 2017)

Según Consesys, en un dato más reciente, la comunidad de desarrolladores alcanza ya los 250,000, la verdad es un dato difícil de rastrear, lo que si es evidente es que la cadena de bloques de Ethereum es sin duda la plataforma de contratos inteligentes mas activa que existe.

Algunos ejemplo aplicaciones desarrolladas en la cadena de bloques de Ethereum.

Ethlance es una red de trabajo creado sobre la cadena de bloques de Ethereum.
Weifund una plataforma sencilla para proyectos que buscan financiamiento crowdfunding, tipo Fondeadora pero bien hecho.

En el sector bancario se desarrollan ya varias aplicaciones pero pues no tenemos mucha información por que generalmente son cadenas privadas.

Ahora, no todo es miel sobre hojuelas, como todo sistema creado por humanos este crea sus injusticias y tiene fallas. Las principales críticas, para tenerlas en consideración, son las siguientes:

Falta de escabilidad y centralización.

Tal vez esta es la critica más valida de Ethereum, la falta de escabilidad, como dice el mismo Vitalik Buterin. La red actualmente es capaz de manejar alrededor de 5 transacciones por segundo, lo cual esta muy lejos de la capacidad que necesitaría Ethereum si quiere llegar a ser la espina dorsal del internet de valor. En contraste una aplicación como Uber maneja 12 viajes por segundo. Los desarrolladores de Ethereum están trabajando en varias soluciones técnicas para incrementar la capacidad transaccional. Estas incluyen plasma, sharding, the raiden network y cambiar el mecanismo de consenso de prueba de trabajo a prueba de participación( proof of work vs proof stake) de los cual hablaremos también más adelante.

Centralización

Centralización es también un gran problema discutible que será mucho mayor para Ethereum que para Bitcoin. El ledger o libro de cuentas que llevas los cambios de tu balance es asegurado por miles de nodos en lugar de un servidor centralizado. En otras palabras, una tercera parte maliciosa tendria que atacar miles de computadoras al mismo tiempo, en lugar de un solo servidor. El libro es seguro por que es descentralizado. En algunas críticas a Bitcoin se ha comentado que si el tamaño de la cadena llega a ser muy grande será extremadamente difícil para los usuarios normales correr nodos. Este ha sido un gran problema para Bitcoin y la cadena de bloques de Ethereum esta creciendo aún más rápido que la de Bitcoin.

El cambio a — Proof of Stake, prueba de participación ayudará a ambos, escalabilidad y descentralización, pero cambiar el mecanismo de consenso a estas alturas del juego no esta tan fácil. El consenso en — Proof of Work, prueba de trabajo es alcanzado a través del minado, en el cual los mineros usan grandes cantidades de poder computacional para resolver un rompecabezas criptográfico con la finalidad de agregar bloques a la cadena y obtener el bloque en recompensa . Por el otro lado en prueba de participación, la probabilidad de agregar un bloque no esta basada en el poder computacional, sino en la cantidad de riqueza retenida por el staker o minter.

Esto elimina el gran gasto de energía a nivel mundial necesario para correr el GPU pero también genera criticas. Algunos piensan que es irresponsable siquiera intentar dicha transición criticando la falta de revisión del código por los pares o puntos de los nodos y lo ven como un componente no seguro y probado en la red. El detalle del debate lo pueden leer con detenimiento en PoW vs PoS.

Otra debilidad de Ethereum es el tipo de culto que se ha formado alrededor de su creador. Sin lugar a dudas, Vitalik Buterin es un tipo brillante y esta actuando como el dictador benevolente de Ethereum. Sin embargo, Buterin es un dictador en el sentido en que debido a la gran influencia en la comunidad de Ehtereum tiene un gran impacto en las decisiones futuras del desarrollo, esto lo convierte en un punto de falla en un mundo que aspira a un internet de valor.

Mientras que los contratos inteligentes son elogiados ampliamente, debe mencionarse que también tienen sus desventajas.

Primero de todo, los contratos inteligentes son tan buenos como la forma que se programan- Un hacker robó $50 millones del DAO original debido a un código deficiente el año pasado.

Segundo, la inmutabilidad puede ser un gran problema si el contrato tiene un error en este.

Los contratos inteligentes son, por ahora, solamente útiles para realmente simples contratos. Los contratos funcionan para dividir riesgos entre partes y entender la complejidad, de esto tenemos una gran materia y nomenclatura legal que definir. La mayoría de los contratos no pueden ser preparados y/o reducidos a un conjunto fácil y verificable de requerimientos.

Tercero, los contratos inteligentes ignoran el contexto social en el cual el contrato opera.

Cuarto, los contratos inteligentes necesitan datos confiables de entrada para llegar a una correcta ejecución. Por lo tanto cada tercera parte debe ser confiable o es necesario un oráculo (para hacer esto un poco más complejo).

Mientras que confiar en terceras partes trae de nuevo la preocupación de centralización los oráculos no son lo suficientemente maduros o desarrollados para ser utilizado a corto plazo. Los mercados de predicción , otras cadenas de bloques y el internet de las cosas pueden comenzar a tomar un papel importante en este respecto

Finalmente, los contratos inteligentes levantan interes, dudas e inquietudes legales, hay muchas lagunas y temas no previstos aún por resolver.

Por ejemplo el caso de esta empresas que perdió el equivalente a medio millón de euros en criptomonedas por errores en el código y/o en el deploy, están debatiendo al respecto.

Otro factor que contribuye a la debilidad de Ethereum es la noticia acerca de que ha alcanzado proporciones de una burbuja, que eventualmente tendrá que reventar. Proyectos sin prueba de concepto, que consisten solo en un ensayo y un sitio web están levantando muchos millones a través de sus ofertas iniciales (ICO’s). Tomemos por ejemplo el proyecto Gnosis. Gnosis es un mercado de predicción, ¡vendió su ICO en 15 minutos!. Reuniendo alrededor de 15 millones. Sin embargo, solo el 5% de todos los tokens fueron distribuidos, lo que significa que fue valuada en 300 millones de USD. ¡eso es mucho dinero! para una ICO que fue basada en un whitepaper y una versión alfa sin una prueba real de concepto. Y esta evidente sobrevaloración no es poco común en el mundo de especulación de las ICOS. A la par que, celebridades como Jamie Fox, Paris Hilton y Floyd Mayweather están felizmente promoviendo sus ICOs en las redes sociales. Esto nos recuerda la irracionalidad de los mercados durante la burbuja de las punto com, cuando celebridades públicamente promovían acciones y sitios como pets.com fueron valuados en $300 millones de USD.

Debido a que las valuaciones de ls ICO estaban fuera de control, — países como China de hecho ya las prohibieron, la calidad de los proyectos en la red de Ethereum iba en detrimento. Si mi startup es valuada en $300 millones después de año y medio de trabajo y a mí me toca digamos un 10%, ¿ cuanto incentivo puedo tener para seguir trabajando ? Simplemente puedo vender mis tokens y retirarme. Para participar en la locura de las ICO, a muchos desarrolladores parece no importarles si tienen un producto funcional o no. No tienen que , mientras conozcan gente que tire el dinero en su proyecto de cualquier forma. Si esto te emociona, aquí hay una guía para obtener ganancia del hype de las ICOS:

  • Paso 1: Lanza un sitio web con una frase pegajosa como: “La primer (…..) distribuida (…..) sin precedentes, que democratiza y rompe los tradicionales (…..), empoderando ciudadanos y beneficiando a los titulares y socios a través de una tecnología basada en la confianza de la cadena de bloques. Algo así, más o menos.
  • Paso 2: Escribe un mediocre white paper y se vago acerca de como el proyecto realmente tiene sentido económico.
  • Paso 3: Di que de hecho ya desarrollaste la DApp.
  • Paso 4: Retírate y lucra.

Sin regulación, los desarrolladores creen que solo deben atender los más evidentes reclamos acerca del futuro del proyecto. Para tu salud financiera, haz este ejercicio cuando inviertas en una ICO. Realiza una búsqueda rápida en Google para “nombre del proyecto” + scam . Si te da cientos de resultados, tal vez es tiempo de reconsiderar los planes. Si no, entonces pregúntate: ¿este proyecto esta solucionando un problema real ? ¿por qué debe ser esta una solución descentralizada ? ¿el proyecto realmente se beneficia de una red punto a punto ? ¿realmente este proyecto necesita un token ? ¿para que es el token ? ¿y podemos solucionarlo sin un token ? ¿tienen un prototipo funcional?

Debido a que la calidad de los proyectos en la red de Ethereum ha ido en detrimento, se puede observar la relación con los hacks durante las ICOS. Se estima que $225 millones de USD en Ethereum han sido robados de en actividades relaciones a las ICOS. El termino ‘scam coins’ se ha vuelto popular entre aquellos desarrolladores que están probablemente en el paso 3 de mi no única y de autoría guía o plan detallado para la libertad financiera. Entre algunos ejemplos de estafas podemos mencionar Onecoin, Paycoin y el reciente REcoin y DRC investigado por la SEC. Existen muchos proyectos más los cuales sospecho son poco legítimos pero bajo el riesgo de perder la cordura, no vale la pena ahondar más. Como un buen marco de referencia, en un momento existió un ICO para una criptomoneda que en su sitio www.ponzi.io , no, no es broma, literalmente establecía que fue el primer esquema piramidal distribuido. EL proyecto recibió un fondeo de millones (realmente quisiera que fuera una broma).

Investigadores de la Universidad de Cagliari establecieron:

“en los primeros 1.5 años de vida del Ethereum, han existido una multitud de experimentos para implementar esquemas Ponzi como smart contracts: de hecho ∼ 10% de 1384 de los contratos con código fuente verificado en etherscan.io son esquemas Ponzi.

Además de una gran número de estafas, esquemas Ponzi y hacks, la percibida area gris regulatoria también resultó en esta practica maliciosa generalizada (o spoofing) de precio en las ordenes y esquemas “Pump and Dump”, todo esto inevitablemente atrae la atención de los reguladores los cuales traen consigo la ultima y tal vez el mayor de los temas: incertidumbre legal.

Para finalizar, mencionemos una referencia obligada para obtener más información acerca de las capacidades y especificaciones de Ethereum, esta es la Ethereum Foundation en www.ethereum.org.

La Enterprise Ethereum Alliance (EEA) es una red de académicos, compañias y startups que tienen como objetivo compartir conocimiento y definir ‘software de grado empresarial (lo que sea que eso signifique) capaz de manejar el mas complejo, altamente demandas aplicaciones a la velocidad del negocio (lo que sea que eso signifique) ’.

Esta red es muy extensa, con miembros como JP Morgan, Microsoft, Master Card, Intel, Deloitte, BP, etc, etc, etc. Considerando los posibles casos de uso para la tecnología blockchain, es lógico suponer que una gran variedad de compañías quieren experimentar con sus propias implementaciones para incrementar eficiencia dentro de sus respectivos sectores.

Algunos miembros de la Enterprise Ethereum Alliance

Se comenta muy a menudo que la EEA es un factor que conduce la valuación de Ethereum, pero no es el caso ( o mejor dicho, no debe serlo). Las compañías están experimentando con la entrega de cadenas privadas para uso interno y cadenas de consorcios, en las cuales diferentes partes con relaciones existentes pueden beneficiarse de tener un libro compartido para un casa de uso en especifico.

Esta cadenas de bloques ‘permitidas’ son ‘forks’ ( fork en español significa tenedor, en en el ámbito tecnológico se refiere a una bifurcación del software) o versiones privadas de Ethereum. Un fork privado de Ethereum permite a las compañías restringir el acceso de usuarios a ciertas partes. Los nodos para asegurar la red son suministrados por las compañías involucradas. Por que existen pocas partes en la red, existe mas flexibilidad en cambiar las reglas de la cadena de bloques, revertir transacciones, modificar balances, etc. Ademas existen menos costos por transacción por que existen menos nodos y riesgos comunes en cadenas de bloques publicas como el 51% de ataques no son posibles, por que todos los que validan son conocidos.

Hasta aquí la parte teórica, en la siguiente publicación pondremos manos a la obra, hablaremos desde la arquitectura, herramientas, hasta APIs, frameworks de desarrollo y por supuesto del lenguaje Solidity.

Les dejo algunas lecturas y herramientas adicionales, no obligatorias pero altamente recomendables.

Manual en linea http://solidity.readthedocs.io/en/latest/

Sitio para programar en Solidity https://ethfiddle.com/

Ethereum Remix — Web IDE

Como construir una democracia en blockchain — DAO https://www.ethereum.org/dao

La Universidad de Nicosia en Chipre fue de las primeras en ofrecer un grado de maestría en monedas digitales ( Msc in Digital Currency ). Ellos incluso dan un curso introductor básico y gratuito donde al termino obtienes un certificado. Aquí les dejo el vinculo.

El año pasado, Ethereum pasó de 310 USD a 10 centavos en un solo día, esta fuera del alcance de esta publicación pero aquí les dejo este breve artículo.

Y finalmente, este Curso de Desarrollo de Aplicaciones Ethereum Dapps en KMMX en CDMX.

Curso de Desarrollo de Aplicaciones Descentralizadas en Ethereum con Solidity en KMMX, Ciudad de México.
;-)

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.