Deceye – Turning transparency into depth

Deceye – Turning transparency into depth

Por Álvaro Borreguero y Fernando González.

 

¿DeFi? ¿DAOs? ¿En qué consiste eso? ¿Qué papel juegan?Deceye es una plataforma que permite a los usuarios conocer el estado de cada una de las DAOs que actualmente se encuentran catalogadas.

El ecosistema DeFi, Decentralized Finances, en castellano Finanzas Descentralizadas, engloba a todos aquellos servicios financieros que gracias a la tecnología blockchain pueden evitar la intermediación que ofrece un banco tradicional.

Dentro de este ecosistema, y al igual que en las finanzas tradicionales, existen “entidades” que ofrecen diferentes servicios según el propósito individual. Estas organizaciones descentralizadas son conocidas como DAOs, que operan de forma independiente y gracias a los Smart Contracts, lo que les aporta una gran fiabilidad y transparencia. Además, las decisiones dentro de estas entidades se realizan mediante votaciones descentralizadas entre los holders de los tokens de cada DAO.

El propósito de los DAOs.

Como ya hemos mencionado el propósito de cada DAO puede ser diferente y generalmente encontraremos los siguientes tipos:

  • Préstamos: estos protocolos permiten a los usuarios prestar y tomar prestados criptoactivos con la expectativa de un reembolso con intereses.

  • Exchanges: hacen posible el intercambio de criptoactivos entre usuarios sin depender de una autoridad central.

  • Staking: permite a los usuarios participar en la validación de transacciones de los protocolos Proof-of-Stake, lo que genera recompensas económicas.

  • Derivados: Los derivados de DeFi permiten a los usuarios cubrir riesgos y especular sobre los precios de los activos sin depender de intermediarios financieros tradicionales.

Ahora bien, ¿qué es Deceye?

Deceye es una plataforma que permite a los usuarios conocer el estado de cada una de las DAOs  que actualmente se encuentran catalogadas. Ofrece dos grupos principales de métricas.

Métricas de gobernanza: engloba todo el tratamiento de las votaciones dentro de cada DAO, como métricas de participación, volumen de votos, grado de descentralización…etc.

Métricas de tesorería: en este grupo se encuentran las relacionadas con el propio token de la DAO y con su nivel de tesorería repartido en diferentes tokens.

Pocas páginas actualmente se involucran en el proceso de gobernanza de las DAOs, o lo hacen de forma poco generalizada y comparable entre dos o más DAOs, lo que hace que Deceye tenga un valor añadido frente a la competencia. Estas métricas e indicadores, previamente normalizados para los diferentes tipos de DAOs, nos permiten comparar entre ellas y obtener información de gran valor.

Arquitectura

La arquitectura de Deceye está compuesta por varias tecnologías. Python junto con la librería de Web3 nos permite conectarnos a los nodos de Infura para obtener toda la información de la propia blockchain evitando así cualquier tipo de fraude. Esta información es normalizada y almacenada en una base de datos de MongoDB, la cual está expuesta a través de una API Rest con NodeJS. 

Esta API está protegida y gestionada por Kong, el cual permite a nuestra página web obtener toda la información necesaria. Además, permite gestionar accesos por API Keys para conectar nuestra API a otros proyectos. Por último, Kong está monitorizado por  Prometheus y Grafana.

La arquitectura de Deceye

Extracción datos Blockchain

 

En primer lugar, hay que comprender que existen diferentes redes de blockchain donde las DAOs interactúan. Actualmente Deceye extrae información de las redes de Ethereum y Polygon, que son de las más populares en este ecosistema. Para poder interactuar con los Smart Contracts, de donde sacaremos la mayoría de la información, es necesario conectarse a un nodo que se encuentre en dicha red. Cómo mantener un nodo es costoso, actualmente se están utilizando los que proporciona Infura.

Para comunicarnos con los Smart Contracts es necesario conocer cómo se comportan y entender su funcionamiento, por lo que deberemos tener unas nociones sobre Solidity, su lenguaje de programación en la red de Ethereum. Destacar que la red de Polygon es una blockchain de capa 2 sobre la red de Ethereum, por lo que también comprende este lenguaje de programación.

Para una primera aproximación vamos a explicar dos de las interacciones más comunes dentro de la extracción de datos de datos en estas redes, que son la lectura de eventos y la interacción con las funciones de los SmartContrats.

Lectura de Eventos


Los eventos nos permiten seguir el flujo de las acciones de los SmartContracts, a continuación se muestra la función de votación del SmartContract de Lido asociado al proxy 0x2e59A20f205bB85a89C53f1936454680651E618e.

Deceye: función de votación del SmartContract de Lido asociado al proxy

El siguiente código de ejemplo muestra cómo obtener los eventos “CastVote” entre dos bloques específicos. Además mostramos de manera legible el id de la propuesta que se ha votado, quién, qué y con cuánto poder se ha votado. Recordemos que el poder de votación de cada usuario reside generalmente en la cantidad de tokens que tenga  de la DAO.

El siguiente código de ejemplo muestra cómo obtener los eventos “CastVote” entre dos bloques específicosDeceye: El siguiente código de ejemplo muestra cómo obtener los eventos “CastVote” entre dos bloques específicos

NOTA: para obtener la API es necesario registrarse en Infura. En el caso de la ABI accediendo a este enlace podemos encontrar en el apartado Contract > Code > Contract ABI en la parte inferior.

Aunque estemos interactuando con 0x2e59A20f205bB85a89C53f1936454680651E618e es necesario obtener la ABI del contrato 0x72fb5253AD16307B9E773d2A78CaC58E309d5Ba4 ya que el primero actúa como proxy redirigiendo al segundo por razones de seguridad.

Funciones SmartContracts

En este paso vamos a llamar a la función “balancesOfAt” del SmartContract asociado al token LDO con la dirección 0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32. En este caso no se trata de un proxy por lo que la obtención de la ABI será sobre esa misma dirección.

Deceye: función “balancesOfAt” del SmartContract asociado al token LDO

Esta función devuelve la cantidad de token de una address en un bloque específico, no se entrará en detalle en las subfunciones que utiliza ya que deberíamos analizarlo en profundidad para comprender del todo su funcionamiento.

Deceye es una plataforma que permite a los usuarios conocer el estado de cada una de las DAOs  que actualmente se encuentran catalogadas

 

NOTA: La llamada a funciones de lectura en la blockchain es gratuita, en el caso de querer realizar alguna operación de escritura debemos tener en cuenta que será necesario firmar dicha operación, lo que supondrá un gasto de ETH desde la address con la que firmemos la operación. En el caso de Deceye no se utilizan ya que solo monitoreamos la red.

Conclusión

La colaboración entre Kairós DS y Carbono Solutions que ha dado pie a Deceye ha generado un impacto significativo en la generación de oportunidad y la capacitación de nuestros compañeros en los campos de la tecnología blockchain, la ciencia de datos y DeFi. Ambas empresas han trabajado de forma conjunta para generar un entorno estimulante y desafiante para los equipos en prácticas que hemos participado en este proyecto y para el personal más experimentado que ha colaborado en el desarrollo. 

Actualmente, la demanda de talento tecnológico, y en concreto, en el mundo crypto y DeFi ha llevado a la generación de equipos como el de Deceye. En nuestro caso, nos ha dado pie entrar en Kairós DS como desarrolladores de software, analistas de datos, expertos en criptografía, así como contribuir a nuestro crecimiento y la mejora continua de nuestra empresa y de la propia plataforma.

Álvaro Borreguero y Fernando González.

La Developer Experience en los equipos de desarrollo.

La Developer Experience en los equipos de desarrollo.

La importancia de la Developer Experience en la productividad de los equipos de desarrollo.

 

En el mundo del desarrollo de software, la productividad y la capacidad de generar valor de manera continua para los clientes son objetivos fundamentales. Como líder de equipo, una de tus principales preocupaciones debe ser asegurar que nada impida a tu equipo seguir entregando valor de manera eficiente. En este contexto, la Developer Experience (DevEx) se convierte en un aspecto crucial que no debe ser ignorado.

¿Qué es la Developer Experience?

 

La Developer Experience, o experiencia del desarrollador, se refiere a la suma de percepciones y sentimientos que tienen los desarrolladores al interactuar con el entorno de desarrollo, las herramientas, los procesos y la cultura organizacional. Una buena DevEx no solo mejora la satisfacción y el bienestar de los desarrolladores y un menor índice de rotación en la organización sino que también aumenta significativamente su productividad, lo que se traduce en una entrega de valor más rápida y eficiente para los clientes.

Componentes clave de la Developer Experience

1. Herramientas y tecnología: Las herramientas que los desarrolladores utilizan a diario son fundamentales para su experiencia. Esto incluye editores de código, sistemas de control de versiones, plataformas de integración continua, y otras herramientas de desarrollo. Es crucial que estas herramientas sean robustas, rápidas, y fáciles de usar.

2. Documentación: La documentación clara y accesible es esencial para una buena DX. Esto incluye documentación de código, guías de usuario para herramientas internas, y procesos de desarrollo. Una buena documentación reduce el tiempo que los desarrolladores pasan buscando información y aumenta su eficiencia.

3. Ambiente de desarrollo: El entorno de desarrollo incluye tanto el entorno físico como el digital. Un entorno físico cómodo y bien diseñado, junto con un entorno digital que funcione sin problemas, puede mejorar significativamente la productividad
y la satisfacción de los desarrolladores.

4. Procesos y prácticas: Los procesos de desarrollo deben ser eficientes y bien definidos. Esto incluye metodologías ágiles, revisión de código, gestión de versiones, y despliegue continuo. Procesos bien diseñados y ágiles ayudan a minimizar las interrupciones y permiten a los desarrolladores centrarse en lo que mejor saben hacer: desarrollar soluciones de negocio a través del código.

5. Cultura y comunicación: Una cultura organizacional positiva que fomente la colaboración, el aprendizaje continuo y el reconocimiento es vital. La comunicación abierta y efectiva dentro del equipo y con otros equipos es esencial para resolver problemas rápidamente y evitar malentendidos. Dar y recibir feedback de forma continua y/o a demanda, siempre con un enfoque de mejora continua, fomenta esta
cultura.

¿Qué podemos hacer como líderes para optimizar la Developer Experience?

 

Un líder técnico (o no técnico) de un equipo de desarrollo debe prestar atención a los siguientes aspectos:

1. Ser parte del equipo: Las decisiones que se tomen y, sobre todo, las consecuencias resultantes de las mismas, el equipo necesita percibir que su líder es partícipe de ellas y las “sufre” con ellos. El equipo ve a su líder a su lado y no en un pedestal.

2. Evaluación y selección de herramientas: Involucrar a los desarrolladores en el proceso de evaluación y selección de las herramientas a utilizar por el equipo para asegurarse de que realmente cubren sus necesidades y mejoran su productividad.

3. Mejora continua de la documentación: Fomentar una cultura de documentación continua de modo que esté actualizada y accesible. Generar un ambiente colaborativo donde los desarrolladores puedan contribuir y mejorar la información existente.

4. Optimización del entorno de desarrollo: Asegurar que las estaciones de trabajo, las redes, los servidores o los servicios que sean necesarios para el desempeño de los equipos de desarrollo estén optimizados para el trabajo.

5. Adopción de metodologías ágiles: Llevar a cabo prácticas ágiles que, muy importante, se adapten a tu equipo. Metodologías como Scrum o Kanban pueden ayudar a organizar el trabajo, mejorar la visibilidad del progreso y facilitar la comunicación.

6. Fomento de la cultura y la comunicación: Promover una cultura de apoyo y colaboración, donde la comunicación entre los miembros del equipo sea abierta y la retroalimentación constructiva. Es fundamental que todos los miembros del equipo se sientan valorados y escuchados.

7. Capacitación y desarrollo profesional: Invertir en la formación continua del equipo, proporcionando oportunidades para que los desarrolladores aprendan nuevas habilidades y tecnologías. Esto no solo mejora la DevEx, sino que también beneficia a la organización al tener un equipo más capacitado y motivado, lo que conlleva menos rotación de personal.

8. Automatización de tareas repetitivas: Identificar aquellas tareas repetitivas que pueden ser automatizadas. La automatización no solo libera tiempo valioso para los desarrolladores, sino que también reduce el riesgo de errores humanos.

Conclusión

 

Cuando, como líder de un equipo de desarrollo, te enfocas en mejorar la DevEx mediante la optimización de herramientas, procesos, documentación, entorno y cultura, estarás cerca de asegurar que tu equipo está en la mejor posición para sobresalir.

Un equipo de desarrollo que trabaja en un entorno favorable no solo es más feliz, sino también más productivo, lo que en última instancia  beneficia a toda la organización y a sus clientes.