Blockchain explicado a los desarrolladores web: La verdad

in #spanish7 years ago (edited)

El siguiente artículo es una traducción al español de este, publicado originalmente el 14 de Junio de 2016 en el blog de Marmelab por Francois Zaninotto.

Es la tercera parte de una serie que trata sobre la blockchain enfocada a los desarrolladores web. La primera parte es una introducción a la teoría detrás de blockchain y la segunda es una implementación por desarrolladores web experimentados de un proyecto real blockchain. Puedes leer esta parte sin haber leído las siguientes.


Después de explorar la teoría de blockchain y usarla para algo real, ahora tenemos un entendimiento mejor de sus foralezas y debilidades. Sorprendentemente, la mayoría de nuestras conclusiones son muy diferentes de lo que leerás en la blogosfera. Quizás es debido a que no compartimos la fascinación ciega causada por las altas valoraciones de Bitcoin y otras. Quizás es porque la dura verdad sobre blockchain es que no está listo todavía. Sigue leyendo para entender nuestra opinión de la cadena de bloques, basada en grandes evidencias.

La tecnología no está madura todavía

Como expliqué en detalle en el artículo anterior de esta serie, desarrollar Aplicaciones Descentralizadas sobre una cadena de bloques es un sufrimiento. La comunidad de desarrolladores es pequeña, los pedazos de código disponible no funcionan, los tutoriales públicos están caducados, las bibliotecas están lisiadas por errores, a los desarrolladores les faltan herramientas, los bugs son silenciosos, etc.

No es que los desarrolladores de Ethereum y la comunidad sea mala, ellos son increíbles y están derramando mucho tiempo y habilidades en esas herramientas. Pero construir un framework blockchain conlleva una cantidad enorme de trabajo y sólo están a la mitad del camino. Ethereum no ha alcanzado el punto de usabilidad todavía. Estoy seguro de que esto cambiará en el futuro, pero no sé si es cosa de meses o de años.

**Aviso: ** no hemos desarrollado DApps para Bitcoin, pero hemos oído que es peor. En lugar de usar un lenguaje Javascript (Solidity) para los contratos inteligentes, debes usar un lenguaje ensamblado, el cual ni siquiera es Turing-completo.

La consecuencia es que los desarrolladores no quieren trabajar en proyectos Bitcoin - lo encuentran muy frustrante. Si los fuerzas a trabajar con una tecnología que odian, ellos se irán. Ya que es extremadamente difícil encontrar desarrolladores habilidosos hoy en día, deberías pensarlo dos veces antes de arriesgarte en la cadena de bloques.

La segunda consecuencia es que es imposible estimar el tiempo de construcción de un proyecto en la cadena de bloques. Si no puedes estimar tus costes, buena suerte construyendo un modelo de negocio en la cadena de bloques.

Los contratos inteligentes no pueden llamar a APIs

En nuestra experimentación blockchain, todo lo que es un poco "inteligente" en el contrato tiene que ser movido a un antiguo servicio web plano corriendo fuera de la blockchain, en un entorno de confianza. Por ejemplo, un contrato inteligente no puede descifrar si la persona pidiendo una colocación (N. del T: en el proyecto que realizaron en el anterior post) es el autor de una pull request, debido a que un contrato inteligente no puede llamar a la API de GitHub. Como consecuencia, nuestro contrato inteligente mantiene una cantidad mínima de lógica, convirtiéndose, de hecho, en un contrato tonto. No es porque nosotros quisieramos, si no porque no se puede hacer de otra manera.

Debido a su diseño, una blockchain es determinística. Esto significa que si quieres tomar la historia entera de los bloques y remplaarla localmente, debes terminar con el mismo estado que todos los demás nodos. Esto prohíbe las llamadas a APIs externas, donde las respuestas pueden cambiar en el tiempo, o de acuerdo a quien las llama.

Las cadenas de bloques son jardines amurallados. Puedes ejecutar un contrato desde el mundo exterior, pero un contrato por sí mismo no puede requerir información de una fuente fuera de la cadena de bloques. Si un contrato inteligente necesita información externa, alguien debe ponerla en la blockchain primero. Hay esfuerzos para facilitar este trabajo mediante un concepto llamado Oracles. Pero Oracles necesita un sistema de reputación y gobiernancia. Demasiado para contratos totalmente automatizados y desintermediación.

En el mundo real, muy pocas aplicaciones trabajan en aislamento. Todas las aplicaciones que hemos construido en los 3 últimos años confían en APIs externas - para la administración de identidades, pagos, fuentes de datos en vivo, procesamiento de imagen, almacenamiento, etc. Las capacidades limitadas de los contratos inteligentes los hacen inútiles en situaciones del mundo real.

Necesitas un doctorado para entenderlo

Si lees el primer post de esta serie, probablemente pensarás que tienes un buen entendimiento básico de la cadena de bloques. Ahora, ve y lee este artículo. Soy un ingeniero experimentado con sólo 20 años de experiencia en desarrollo web, y no puedo entender nada más alla de la referencia a Jurassic Park. Términos como two-way-pegged blockchains”, “pre-determined Host Oracle Contract”, y expresiones como “The M-S result, combined with our inability to feed (non-BB) a revelation mechanism, means that Oracles are out” (N. del T: me ha sido imposible traducirlas correctamente), me hacen sentir como un novato.

El concepto de la cadena de bloques es complejo. Existen implementaciones basadas en raros patrones de diseño, los cuales no aprenderás en la escuela. El vocabulario blockchain es cabalístico.

Desarrollar aplicaciones descentralizadas encima de cadenas de bloques requiere de entender conceptos muy complicados de ajustar en el cerebro de un programador experimentado. Mi opinión es que no hay suficientes desarrolladores habilidosos para dar soporte a la revolución prometida por la cadena de bloques. Y nunca ocurrirá, mientras sea tan difícil de comprender.

Como censecuencia, la mayoría de apps descentralizadas tienen muchos bugs. Un artículo reciente estableció que los contratos inteligentes contienen un error por cada diez líneas de código, haciendo a Ethereum un "caramelo para hackers". Esto no sería un gran problema si encontrar errores fuera fácil. Desafortunadamente, como explicamos en el artículo anterior, no puedes actualizar un contrato inteligente. Tienes que crear un nuevo contrato, transferir toda la información y nodos al nuevo contrato y experar que la cadena de bloques propague los cambios. Los antiguos contratos con bugs y las transacciones permanecen para siempre en la cadena de bloques.

El poder del desarrollador

Los autores blockchain sugieren usar el "código como ley". Esto también significa "bugs como ley", ya que todo software contiene errores. Estos pueden ser usados por programadores inteligentes (criminales, NSA, etc) para evitar jugar de acuerdo a las reglas. Los bugs son muy comunes, incluso en proyectos open-source. Bitcoin, por ejemlo, sufrió muchos bugs críticos conocidos como "robos cibernéticos". Así que dejar las claves a los desarrolladores también significa darles un poder extraordinario a desarrolladores mediocres.

No quiero causarte medo, desconfianza o duda en ti, pero los escenarios posibles en una sociedad gobernada por máquinas no terminan en mi mente con un final feliz.

Incluso si no consideramos a los desarrolladores mediocres, dar el poder a buenos desarrolladores también es peligroso. El problema es que los desarrolladores son irresponsables (sin intención de ofender - yo también soy desarrollador). No es que sean pueriles, es que nadie les enseñó a escribir las leyes.

Tampoco han sido elegidos por la gente. Si no estás de acuerdo con la dirección que toma Bitcoin (favoreciendo a la especulación más que a las aplicaciones prácticas) peor para ti - no hay nada que puedas hacer para cambiarlo. Esto está sucediendo actualmente: la red Bitcoin sufre una crisis severa debido a las discrepancias entre un pequeño núcleo de desarrolladores.

Las decisiones de media docena de desarroladorres pueden causar el colapso de diez mil millones de dólares en capitalización de mercado. Pero nadie los hará responsables en caso de fracasar.

Desperdicio de recursos

Una cadena de bloques no es rentable. De hecho es un enorme gasto de recursos.

Toma la replicación de datos por ejemplo. La cadena de bloques replica todas las transacciones a través de todos los nodos. Los ingenieros han inventado durante mucho tiempo estrategias de replicación con mejores eficiencias de espacios. Compara a la Bockchain con el conjunto de discos RAID6 por ejemplo:

En una red Blockchain, 10 nodos de un 1GB cada uno permiten un volumen total de replicación de 1GB. Puedes perder 9 nodos en la red y todavía será posible recuperar la información completa.

En una piscina RAID6, 10 discos duros de 1GB cada uno permiten un volumen total de replicación de 8GB. Puedes perder 2 HDD en la piscina y todavía será posible recuperar la información completa.

Los nodos de minería requieren hardware muy caro, con tarjetas GPU de gama alta y una enorme cantidad de memoria.

Y no es sólo comprar hardware caro, 99.99% de la computación es simplemente desperdiciada. Todos los mineros que compiten en minar un bloque corriendo caros desafíos matemáticos. En Bitcoin, un sólo nodo gana cada 10 minutos, y actualmente es muy útil para una cadena crear un bloque. La computación realizada por todos los otros nodos es desechada.

La blockchain de Ethereum está tratando de arreglar esto. ellos planean cambiar desde un algoritmo de consenso proof-of-work a proof-of-stake, el cual es mucho menos intensivo en recursos. Pero proof-of-stake también inconvenientes, tales como dar más poder a las personas o empresas que poseen altas cantidades de criptomonedas. Además, está lejos de estar listo (se espera que en al menos un año desde ahora).

Este gasto de almacenamiento, CPU y memoria se traduce en un enorme gasto de energía. De acuerdo a una granja de minado bitcoin, la consumición de energía fue de 240kWh por bitcoin en 2014 (N. del T: aquí puedes ver el precio medio del kWh en España es de 0.12€ a día de hoy (lo cual supone 29€ por bitcoin). Las granjas de minados son motores distribuidos que convierten la electricidad en calor. Una cadena de bloques es a corto plazo, un caro radiador . La eficiencia energética es un problema

Muy caro

¿Quién paga por todo el gasto de energía? Las compañías que publican y usan los contratos inteligentes. Si, tú, si intentas correr un negocio en la cadena de bloques. Cuando pagas por una transacción en la cadena de bloques, también pagas el 99.99% del correr de la red a completa velocidad para nada. Esto hace caro a las transacciones blockchain.

Una transacción promedia en Bitcoin requiere una comisión de 0.0002 BTC (0.11$). El precio está creciendo. No es realmente más barato que la comisión de transacción de un banco (a no ser que consideres una transferencia entre dos países con diferentes monedas, por supuesto).

Para ZeroDollarHomepage (N. del T: el proyecto que desarrollaron en el post anterior), ejecutar un script de 10 líneas de código mediante el método Ethereum cuesta un céntimo de dólar. Esto es insanamente caro. Amazon Lambda, por ejemplo, cuesta $0.0000002 por request (después del primer millon de consultas cada mes).

Es normal pagar por costes de hosting cuando usas una plataforma, pero los costes de Blockchain son más elevados que los PaaS más caros.

Volatilidad y especulación

Podrías decir que el coste de blockchain no es un gran problema mientras la gente esté dispuesta a usar la red y pagar por las transacciones. Es una cuestión de suministro y demanda, y la demanda para blockchain y las criptomonedas es actualmente lo suficientemente alta para hacerlo rentable. Pero esta alta demanda conduce a la especulación, por lo tanto el precio de computación y almacenamiento en una cadena de bloques es altamente volátil.

Algún analista compara Bitcoin con un esquema tipo Ponzi, y predice que el valor de mercado colapsará una vez que el interés general desaparezca.

Si construimos un negocio basado en la cadena de bloques de Ethereum, la mayoría de nuestros gastos serán en Ether. Si no minamos para nosotros mismos tendremos que pagar por ese Ether en dinero real. Pero mientras el valor del Ether y el dólar puede variar 10 veces en un año, nuestro negocio puede moverse de rentable a sin valor en la misma franja de tiempo. Y no podemos hacer nada contra esto. Por otra parte, si minamos por nosotros mismos, lo cual es actualmente asequible (corriendo un servidor pequeño para cubrir los gastos en Ether) quizás la moneda se vuelva más cara cuando grandes granjas de minado se muevan de Bitcoin a Ethereum.

La gran volatilidad de las criptomonedas prohíbe cualquier negocio rentable a largo plazo en la blockchain - excepto la especulación.

Lento como el infierno

Comparado a otras innovaciones basadas en ordenadores y redes, la cadena de bloques es muy lenta. Expertos dicen que debes esperar 6 bloques para asegurarte de que una transacción es legítima. Esto significa más de 1 minuto en Ethereum, o más de una hora en Bitcoin.

En un servidor tradicional, la ejecución de un anuncio tarda alrededor de 100ms. Si has usado nuestro servidor de anuncios ZeroDollarHomepage, porbablemente tuvieras una experiencia muy diferente: la programación de un anuncio lleva alrededor de un minuto. El transporte de la red y la replicación de cuentas es una pequeña parte de esa duración; la mayoría del tiempo es gastado esperando a que la red mine la transacción, y añadiendo algunos bloques más después de eso. En genral, la blockchain de Ethereum es mucho más lenta que la computación tradicional.

Para los usuarios finales, cada segundo cuenta. La tendencia en Optimización Web se enfoca en conseguir beneficios ganando uno o dos segundos en tiempo de descarga. Apostar en una tecnología que requiere que una transacción sea conocida por el mundo entero no es la mejor manera de hacer negocio.

Mercado libre y anarquía

Una de las promesas de la blockchain es liberar a los mercados que requieran de un intermediario. No más abogados, banqueros o burócratas. ¿Una gran oportunidad para nuevos negocios?

Excepto que esos intermediarios actualmente reportan actividades criminales a las autoridades (gobiernos y fuerzas del orden). Si borras a los intermediarios, también borras a la policía y dejas que los criminales proliferen. La primera aplicación Bitcoin a escala era llamada Silk Road. Fue un mercado online para todo lo ilegal: drogas, armas, pornografía infantil, etc. Sin mencionar la habilidad de usar bitcoins para evasión fiscal.

Incluso quienes proponen una economía de libre mercado reconocen que un cierto nivel de regulación es necesario para evitar el caos total. Poner en funcionamiento un negocio es una tierra llena de criminales sin policía no es rentable - a no ser que también seas un criminal. Por ejemplo, la bancarrota de Mt. Gox en 2014 costó aproximadamente 450 millones de dólares a los usuarios de Bitcoin.

Al igual que tomó mucho tiempo a los gobiernos controlar internet (que era, y sigue siendo, un refugio para criminales), tomará mucho tiempo para que nuestros jueces controlen la anarquía desatada por las cadenas de bloques. Esta puede llevar la promesa de un futuro mejor a largo plazo, pero para el futuro cercano, mejor que estés armado.

Realmente necesitas una cadena de bloques

Una gran parte de la expectación alrededor de blockchain viene de que la gente no entiende sus deficiencias. ellos probalemente usarían otra solución si estuvieran mejor informados. Aquí hay algunas malas razones sobre por qué probablemente no deberías elegir la tecnología blockchain.

Puedes usar una blockchain privada: cerca del 80% de los proyectos blockchain sobre los que he oído hablar, especialmente en finanzas, están basados en cadenas de bloques privadas. Esto destruye completamente el propósito principal, el cual es conseguir acuerdo entre dos partes en desconfianza. Si un proyecto necesita correr en una blockchain privada, entonces sólo partes en confianza pueden entrar en ella, y no tienes un problema de confianza. En una red confiable tienes muchísimas herramientas para compartir un libro de cuentas de hechos - mucho mejor optimizado que una blockchain (por ejemplo, un servicio web).

Ofrece una manera de mantener distribuido el consenso: Lo hace, pero sólo si este consenso es escrito como código. Por ejemplo, una compañia que trabaja con derechos de distribución nos contactó recientemente para construir una plataforma internacional para retribuciones a artistas en la blockchain. Excepto cuando dos países están en desacuerdo sobre como pagar a titulares de derechos, ambos tienen contratos válidos. Sólo una corte puede decidir que contrato gana. Ningún contrato inteligente puede reemplazar a eso.

Es segura: la criptografía asimétrica es uno de los puntos fuertes de blockchain. Sin embargo, la tecnología blockchain, como cualquier otra, es segura sólo hasta que alguien encuentra una vulnerabilidad. Ya ha ocurrido en el pasado. La ciencia de computación detrás de la cadena de bloques es tan compleja que muy pocos desarrolladores pueden contribuir o revisar el código. Considera a los contratos inteligentes y las cadenas de bloques como relativamente menos seguras que, diría, TSL en la web (mediante HTTPS). Aunque el software funcione perfectamente, no previene del fraude. ¿Recuerda el problema de doble gasto del primer post? Este producen que la gente intente llevarlos a cabo regularmente en blockchain (mira los últimos 200 dobles gastos en la cadena de bloques de Bitcoin).

Es transparente: todas las transacciones son públicas, y exponen ubicación y dirección IP. Pero ninguna información personal transita jamás - sólo hashes anónimos. Incluso el creador de Bitcoin es un misterio. Así que la transparencia de blockchain no previene del crimen o del fraude. También la transparencia es usualmente un inconveniente para los negocios. ¿Estás dispuesto a apostar por un negocio en una tecnología que permite a todo el mundo hacer un registro de todas tus transacciones, y exponer tu código a los hackers?

La información es replicada y segura: claro, pero con el coste de tu estrategia de replicación. Amazon S3 replica cada bit e información al menos 3 veces con el 100% de tiempo de actividad, por una fracción del precio. Y si actualmente necesitas un historial completo de transacciones, usa un almacenaje de eventos.

Conecta a compañeros anónimos: Pero si es sólo para un almacenamiento compartido (por ejemplo, si no necesitas ordenar hechos), entonces con los típicos protocolos de red peer-to-peer tienes suficiente.

Es moderno: no puedo argumentar sobre eso, gritar la palabra "blockchain" en voz alta es actualmente una gran manera de agarrar un presupuesto de innovación. Sin embargo, muchos de los productos brillantes que pretenden ejecutarse en la cadena de bloques son meramente presentaciones powerpint. Además conseguirás mejores resultados con muchas otras tecnologías. Sin mencionar que la palabra blockchain también evoca lavado de dinero, fraude fiscal y pornografía.

Si quieres construir tu negocio en la cadena de bloques, estar seguro de lo que necesitas en tu caso será muy útil.

Conclusión

Las cadenas de bloques son una idea muy interesante con enormes posibles implicaciones. Pero ¿están las implementaciones actuales preparadas para el poder disruptivo de las aplicaciones de la próxima década?

En el lado técnico, algunas características elementales son simplemente no realizables. Las cadenas de bloques no son suficiente, ni amigables con los desarrolladoes y dan demasiado poder a una pequeña liga de programadores extraordinarios sin trasfondo político y económico.

Por el lado de los negocios, la cadena de bloques se está moviendo muy rápido, es cara y a menudo exagerada. Los costes pueden variar mucho sin ninguna razón. Construir un negocio en tal inestable plataforma es un increíble riesgo.

Mi opinión es que tenemos que esperar. La blockchain no está preparada. Necesita más madurez, otra aplicación asesina más allá de la ingeniería de la especulación, una comunidad de desarrolladores más grande, más responsabilidad ecológica y económica. ¿Cuánto tardará? ¿Quizás un año o dos? Nadie puede decirlo.

Para ser honesto, esta conclusión me sorprende. La mayoría de las publicaciones sobre la cadena de bloques sugieren lo contrario. Ellos dicen "es el momento", "no pierdas el tren", o "el negocio gigante de la próxima década está siendo construido en la blockchain ahora mismo". Quizás ellos están equivocados o quizás nosotros estamos equivocados. Hemos intentado argumentar este análisis con fuertes evidencias. Si tienes una opinión diferente, por favor, deja tu comentario abajo.

Seguiremos los desarrollos en diferentes proyectos blockchain de cerca. ¡Asegúrate de que sigues este blog para noticias relacionadas!

Sort:  

Hola @mondeja. ¿Tienes permiso del autor para publicar su traducción?

Hola @pgarcgo, ¿te vale esto? No sé ni por qué pierdo el tiempo en subirlo. Ahora respóndeme tú: si no lo tuviera ¿que harías?

Pefecto! Si no lo tuvieras, te votaría con mi cuenta a título personal, porque me parece un gran trabajo, como la mayoría de tus posts, pero no te podría proponer para ser votado por Steem Guild. El tema, es que tenemos reglas, una de ellas es tener permiso para traducir, otra que no sea sobre steem o criptomonedas. No porque no sean temas importantes, sino porque hay otros proyectos de cureo que se encargan de ello.

Tu serie de programación en python era (o es) lo suficientemente excepcional como para incluirla, como habrás visto (aún siendo el cripto el tema de base).

Un post un tanto desalentador, pero pensando que es de 2016 me parece que hay un avance significativo del tema, ¿Qué piensas sobre el panorama actual?

Mejor, las cosas están creciendo rápido, pero aún le queda.

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 64507.66
ETH 3080.07
USDT 1.00
SBD 3.85