Listado

Primeros pasos con blockchain

Durante todo el año pasado hubo mucho movimiento por un tema que aún está candente: la tecnología blockchain. Para conocer un poco más su funcionamiento, en Redradix hemos trabajado en un producto interno que nos ha permitido sacar aprendizajes de este nuevo ecosistema. Y hemos llegado a una importante conclusión: estas tecnologías tienen muchas ventajas, pero siempre que su uso esté completamente justificado.

Autor/a

Fecha de publicación

29/4/2022

Compartir

Twitter

LinkedIn

En parte por un gran crecimiento en valor -y porque cada vez más entidades y estados están adoptando su uso-, esta tecnología ha llegado incluso a usuarios que, a priori, estarían más alejados de este nuevo ecosistema, ya sea en forma de tokens (la “moneda” digital), de videojuegos P2E (Play to earn: un modelo de videojuego que premia a los jugadores con tokens tras realizar, eso sí, una inversión inicial) o de aplicaciones descentralizadas.

En relación con esta última categoría, la de las aplicaciones descentralizadas -también conocidas como DAPP (Decentralized Application)-, dentro del ecosistema del desarrollo también ha tenido lugar un importante movimiento bajo el nombre de “Web3”, introduciendo un “nuevo” termino: los smart contracts (contratos inteligentes).

Pero, ¿qué es un contrato inteligente?

Es una pieza de lógica, un programa que se despliega en una chain para que esta lo ejecute, aprovechando la naturaleza inmutable, transparente y incorruptible de la cadena. Una vez desplegado este código es totalmente abierto y legible y, sobre todo, imposible de modificar, por lo que ni siquiera los propios creadores del código podrían modificar de manera oculta lo que por él pasa. Esto nos proporciona un sistema perfecto para aquellos registros de datos que deben permanecer incorruptibles y trazables.

Entonces, ¿por qué no se usan smart contracts para todo?

Porque para poder asegurar todas esas ventajas, hay que hacer ciertas concesiones:

  • Una vez desplegado, es imposible modificar un contrato inteligente, por lo que es imposible actualizarlo frente a un posible defecto de código o la adición de alguna funcionalidad.
  • La ejecución en una blockchain es muy cara, ya que para poder participar en ese registro de datos global y seguro hay que pagar un coste llamado “gas”, que es el “coste de ejecución” de ese contrato. Se trata de un precio variable, ya que cuanto mejor sea el código, más barato será este gasto. Además, dependiendo de lo congestionada que esté la cadena en la que se aloja el contrato, más caro será ese coste de ejecución. Por desgracia, en la mayoría de DAPPs ese coste de ejecución se traslada al usuario.
  • El desarrollo no es tan ágil como el resto de las tecnologías generalizadas en el desarrollo web.

Como norma general siempre hay que usar la herramienta adecuada para cada producto. Así que si en un producto no son realmente necesarias las propiedades o ventajas que aporta una blockchain, lo más seguro es que no requiera un contrato inteligente. Y en ese caso es mejor, en cuanto a tiempos y mantenimiento, usar un desarrollo web “de toda la vida”.

Nuestro sistema de votación

Con esto en mente y con el objetivo de conocer las implicaciones de un desarrollo de este estilo, desde Redradix comenzamos el desarrollo de un producto propio basado en blockchain: una herramienta con la que poder realizar votaciones de todo tipo.

Gracias a distintas herramientas de desarrollo especializadas (como Hardhat y ether.js), en muy poco tiempo pudimos dar forma a un MVP que, usando una interfaz web, interactúa con un contrato inteligente para crear un registro trazable e incorruptible de votaciones, lo que hace imposible que se amañen los resultados.

No solo eso, también nos añadimos el reto de hacerlo totalmente “gratis” para el usuario, evitando trasladar el coste de ejecución, de forma que generamos una herramienta más accesible. Esto lo conseguimos utilizando una tecnología llamada IOTA que, sin profundizar en el lado técnico, aprovecha el sistema de capas de Ethereum (o cualquier otra blockchain con sistema de capas), añadiendo en una de las capas superiores una chain tipo DAG (Grafo acíclico dirigido, palabreja matemática), que forma un conjunto de nodos. Al añadir un nodo a esta red, estamos contribuyendo a descongestionar la red total, y el “premio” que recibimos por participar en esta red, lo utilizamos para “pagar” el gas, los costes de ejecución.

Trabajar en este proyecto nos ha permitido sacar interesantes conclusiones:

  • Teniendo presentes todas las particularidades, desarrollar un contrato inteligente no es muy distinto del desarrollo web habitual, no supone un paradigma completamente nuevo.
  • Aún estamos viendo el estado inicial de este ecosistema, por lo que hay que evitar acoplarnos a ciertas tecnologías. Con esto en mente, decidimos desarrollar nuestro contrato en Solidity, el lenguaje estándar creado para este propósito, aun cuando IOTA nos permite crear contratos en Rust o TypeScript, entre otros.
  • No hay que hacer concesiones en cuanto a la transparencia. Si en nuestro desarrollo generásemos un único punto por donde “deben” pasar los datos, estaríamos centralizando. Esto, en sí mismo no es malo, pero puede dar lugar a una opacidad que carece de sentido, ya que eliminamos la mayor ventaja que tenemos con un contrato inteligente, añadiendo todas sus desventajas.

La conclusión más importante a la que hemos llegado es la que avanzaba al inicio: esta tecnología nos trae ventajas, pero hay que usarla de manera muy pragmática en este tipo de proyectos.

Relacionados

Extendiendo el principio de colocalización

Hace un tiempo publicamos un artículo sobre el principio de colocalización, una traducción libre del artículo “Colocation” de Kent C. Dodds. Hoy nos gustaría profundizar en este principio, explicando a dónde nos ha llevado en RedRadix.

26/3/2024

Construir sobre cimientos sólidos: la clave de las auditorías de código

La calidad del código es fundamental para el éxito a largo plazo de un proyecto. Sin embargo, a medida que este crece es común que el código acumule complejidad no deseada y que esta impacte en su mantenimiento y eficiencia. Por eso aquí hablamos de por qué y cómo hacer una buena auditoría del código front-end de un proyecto.

5/3/2024

Button Text