16 de febrero de 2024
La diferencia entre Bitcoin y Ethereum

El otro día me dio por empezar a documentarme acerca de la creación de una "DApp" y estuve descubriendo una gran cantidad de cosas interesantes. No voy, de momento, a hacer la DApp, por las razones que ahora voy a exponer.

De entrada, la opción más obvia que cualquiera se plantea es hacer esa DApp en Ethereum, que es la plataforma con más alcance y que tiene la cartera MetaMask instalada en varios millones de ordenadores. El problema es cuando hablamos de precios: alojar 1 MB en Ethereum cuesta a fecha de hoy 18,75 ETH, algo más de 49.000€. Un giga cuesta 1.024 veces más, no hay descuento por volumen. Luego, la simple descarga de ese MB cuesta 50 céntimos, que tampoco es poco. Esto hace completamente inviable alojar cualquier tipo de aplicación en Ethereum, salvo que se usen trucos para dejar allí algún pequeño registro y alojar de manera centralizada todos los datos.

Estos precios no obedecen a la especulación con la moneda ETH, sino a la estructura misma de Ethereum, que replica toda la información en cada uno de sus nodos, y a fecha de hoy esos nodos superan los 6.000. Si yo tuviese que pagar el alojamiento de albertonoguera.com multiplicado por 6.000, necesitaría 20.000€ al mes.

Actualmente, para instalar un nodo de Ethereum te piden 16GB de RAM y mínimo 1TB de espacio en disco, y ya se te avisa de que esas cifras van a seguir creciendo con el tiempo.

Entonces, ¿de qué forma ha permitido Ethereum que cualquiera agregue libremente su servidor a la red y encarezca los costes sin haber planteado algún mecanismo de fragmentación de los datos? Pues no lo sé, probablemente por la estulticia de Vitalik Buterin o la codicia de quienes ven subir el precio del ETH.

Lo que la gente está haciendo es usar Ethereum sólo como procesador de pagos y poner el alojamiento por su cuenta, o usar Polygon. Polygon es una cadena de bloques de "capa 2", es decir, que simplemente pone sus servidores a almacenar datos y procesar transacciones y luego sincroniza algunos de esos datos con Ethereum, buscando las horas de menos ocupación. Esto es el fracaso del modelo descentralizado, pero es que no hay otra forma de abaratar los costes. A la gente le gusta decir que tiene una DApp en Polygon, y a Polygon le gusta decirles que tienen una aplicación descentralizada.

Lo mínimo que debe tener una aplicación para llamarse descentralizada es el alojamiento de sus datos contables en la cadena de bloques, tengan esos datos relevancia económica o no. Se puede aceptar que imágenes u otros archivos de contenido se alojen fuera, pero si los datos que representan tu estado en la aplicación no están al alcance del contrato inteligente, no tienes la seguridad de que ese contrato vaya a cumplirse. Aparte, en el momento en el que hay una parte de la aplicación en servidores externos, tienes el riesgo de que la aplicación deje de funcionar de repente y se convierta dentro de la cadena en un cadáver que no consiga ejecutarse.

Para poner solución a esto, Gavin Wood, uno de los creadores de Ethereum, ha creado Polkadot. En Polkadot sí que se fragmentan los datos y así se aloja cada aplicación en unos pocos servidores y los costes no son tan exagerados, aunque sin duda siguen siendo mayores que en un alojamiento "normal" en Azure o similar.

Pero Polkadot no funciona, la gente no está haciendo aplicaciones, hay poco movimiento. Wood no parece un gran comunicador, es un tío conceptuoso, se ha montado una película de parachains, capa 0 y otras ideas muy de Power Point que no van a ninguna parte. La idea de Wood es tener dos tipos de nodos que conformen dos capas: un tipo de nodo más central, que aporte las funciones básicas, y otro tipo de nodo más especializado que conecte ya con las aplicaciones, pensando también en mensajes entre los nodos y una sincronización mucho más compleja. Todo esto no hay quien lo entienda y la gente lo que quiere es que le den una IP con un protocolo JSON-RPC para ir mandando comandos, pero Wood no muestra ese protocolo en ningún momento (aunque seguro que existe) y encamina a la gente a montar unos frameworks pesados e incómodos. Mientras tanto, la gente de Solana está haciendo lo mismo que Wood pero sin tantos rollos y está produciendo mejor documentación y creciendo un poco más.

Pero ni Polkadot ni Solana van, de momento, a funcionar, porque no tienen acceso a los móviles. Las DApps, salvo en su capacidad para procesar pagos con tokens, son aplicaciones de los años 90, son webs para PC que funcionan mediante extensiones en los navegadores. Esto las limita demasiado.

He estado investigando la documentación de Solana, que me ha parecido algo más accesible, para ver si se puede ahí hacer algo. En principio, sí que te muestran los protocolos JSON-RPC, pero luego los ejemplos de uso los tienen en el framework Next y el lenguaje TypeScript, que son tecnologías que yo ni uso ni quiero usar para hacer dos llamadas HTTP.

Porque el problema viene con las carteras, las llamadas wallet que la gente conecta a estas webs para ir pagando. Esas carteras no pueden acceder a todos los token sino a los que los desarrolladores han habilitado, de modo que MetaMask no puede acceder al token de Solana y hay que usar una cartera mucho más minoritaria llamada Phantom. Pero Phantom no es hegemónica ni mucho menos y comparte protagonismo con Solflare, Exodus, Glow, Atomic y unas cuantas más, aparte de las que van saliendo, de modo que la gente de Solana no ha encontrado otra forma de facilitar el acceso a sus DApps que abstrayendo todo esto en un framework de Next y TypeScript, lo que te obliga a instalarte unos paquetes bastante pesados y perder bastantes horas intentando entender los códigos.

Es probablemente por todo esto que no haya aparecido ninguna aplicación medianamente relevante entre estas DApps, y lo poco que hay se basa en compraventas o especulaciones del token mismo, pero usuarios que encuentren algo útil para su vida diaria no hay apenas.

Si tuviese que desarrollar una DApp por obligación, elegiría Polygon y me centraría en la API de Ethereum. El contrato inteligente lo haría con Solidity, la parte de mi servidor con PHP y la parte del cliente con el Javascript mínimo, haciendo llamadas directamente a window.ethereum.

Pero, mientras el duopolio Android-iOS no abra las puertas, las DApps no van a despegar. Trust Wallet incluyó en su aplicación móvil un pequeño navegador de DApps y Apple le cortó en seco y le obligó a retirarlo. Parece que en Android sí que está funcionando, pero lo que hace falta son aplicaciones DApp móviles nativas, las pequeñas web dentro de los móviles ya se ha visto que no acaban de funcionar.

Es posible que algún día Google mueva pieza, y ahí estaríamos ante una nueva etapa en las DApps, ahí sí que entrarían muchos desarrolladores.

Los problemas con Hacienda:

El otro problema que tienen las DApps, al menos en España, tienen que ver con Hacienda. Se ha explicado ya lo que hay que hacer: declarar el staking como rendimientos del capital y las plusvalías igual que con cualquier otro activo. Pero el problema es que, en una consulta vinculante, Hacienda aclara que el rendimiento del staking debe declararse al momento de su percepción al cambio a euros de ese momento. Esto tampoco es que parezca nada del otro mundo, pero lo cierto es que el staking se paga cada día, y eso obliga a contabilizar cada año 365 tipos de cambio por cada token sobre el que hagamos staking. Y luego, en ese mismo instante, hay que anotar una compra de ese token a su valor de cotización de ese momento, porque luego, al cambiarlo a euros, deberemos pagar la plusvalía. Y todo esto no te lo está dando nadie hecho, las wallets no dan extractos como si fuesen un broker, lo tienes que ir anotando tú.

Pienso que Hacienda ha hecho esto porque sabía que iba a poner palos en las ruedas, porque cuando alguien cobra un dividendo en acciones se le permite no tributar nada hasta que vende esas acciones, y ahí la plusvalía se calcula poniendo el precio de compra a cero. Esto es muchísimo más simple.

Esto afecta a las DApps porque la función principal de sus contratos inteligentes es permitir a los usuarios ganar dinero con algún tipo de juego, porque para eso se hacen las DApps, para cruzar operaciones monetarias con las reglas ya fijadas en el smart contract. A ver quién se pone a ganar incentivos en cinco o seis tokens distintos y luego es capaz de declarar las cosas bien a Hacienda.

El Bitcoin es diferente:

Ninguno de estos problemas afecta al Bitcoin, porque los únicos datos que se guardan en la cadena son los saldos del token y las transacciones. Hay activos ahora mismo algo más de 16.000 nodos del Bitcoin y el precio medio por transacción es de algo más de 5€. Actualmente, la instalación de un nodo completo de Bitcoin sólo requiere 7 GB de disco y 2 GB de RAM.

El Bitcoin tiene su cadena de bloques escrita desde cero y diseñada para la función que desempeña, por eso no se ve afectado por los problemas de escalabilidad. La estructura de una cadena de bloques está pensada para almacenar datos críticos de poco volumen, y es probable que usar eso para datos poco importantes y de gran volumen, como los que generan las DApps, simplemente no sea una buena idea.

15:50:07 ---------------------



© A. Noguera