Diamonds Contracts en Ethereum

Un diamond contract es un tipo de contrato que obtiene sus funciones externas de otros contratos denominados «facets». El número de facets que pueden apuntarse a un diamond contract es prácticamente ilimitado. Gracias a esta característica pueden aprovechar funciones de otros contractos para acelerar el desarrollo de aplicaciones o brindar acceso a funciones de integración a terceras aplicaciones.

Así, una vez desplegados, estos contratos pueden mantener el control sobre una aplicación descentralizada o servidor de puente para interconectar diversas aplicaciones al mismo tiempo. De esta forma es posible crear contratos que permitan a protocolos DeFi, como AAVE o LIDO, realizar operaciones conjuntas, con un menor coste y sin exponer los protocolos a riesgos adicionales que podrían darse de la creación de otros contratos generados por un tercero.

Los diamond contract estarían bajo el control de la gobernanza de la plataforma que los realiza, permitiendo:

  1. Mantener un alto nivel de seguridad y agilidad.
  2. Desarrollo de los contratos y sus funciones dentro de la comunidad.
  3. Mayor transparencia, ya que los contratos mantendrían un historial de todas las actualizaciones y modificaciones de los contratos lógicos adjuntos. Esto es fundamental para los contratos actualizables y todo el potencial que permiten.

Contratos actualizables en Ethereum

Precisamente, es esta tercera características la que revoluciona por completo los contratos inteligentes en Ethereum, ya que los diamond contract abren la puerta para la generación de los llamados contratos modulares, actualizables y sin límite de tamaño.

La capacidad de actualización de estos contratos es tal, que es posible añadir/sustituir/eliminar partes de un contrato dejando otras partes sin modificar. Y que éstos puedan ser fácilmente reutilizables sin afectar negativamente a las plataformas que hacen uso de estos contratos. El potencial de esta funcionalidad es tal, que sería posible reparar graves errores en los contratos de los protocolos rápidamente. Todo ello, sin afectar negativamente al resto de funciones no relacionadas, pudiendo detectarse y repararse de forma más rápida y concisa.

Ejemplo de un diamond contract

Principales motivos para su creación

  1. En primer lugar, estos contratos pueden ser asignados a una única dirección, con el beneficio de contar con una funcionalidad contractual ilimitada. El uso de una única dirección para la funcionalidad del contrato facilita el despliegue, las pruebas y la integración con otros contratos inteligentes, software e interfaces de usuario.
  2. Un Diamond Contract no tiene un tamaño máximo.
  3. Proporciona una forma de organizar el código y los datos del contrato. Es posible que quiera construir un sistema de contratos con mucha funcionalidad.
  4. Proporciona una forma sistemática de aislar las diferentes funcionalidades y conectarlas entre sí, compartiendo los datos entre ellas de forma eficiente.
  5. Permiten añadir/sustituir/eliminar funcionalidad. Como los diamond contract no tienen un tamaño máximo de contrato, no existe un límite para la cantidad de funcionalidad que se puede añadir a los diamantes con el tiempo. Los diamond contract pueden ser actualizables o inmutables. También es posible crear un diamond contract actualizable y, posteriormente, eliminar su capacidad de actualización.
  6. Los diamond contracts son transparentes.

Ayudando al desarrollo de aplicaciones más complejas y seguras

El EIP-2535 es el que identifica esta propuesta que aún está en desarrollo en Ethereum (EIP de Ethereum Improvement Proposal), todavía en su ultima etapa de revisión y desarrollo.

De ser aprobado y agregado su soporte de manera oficial sobre Ethereum, algo que seguramente ocurrirá después de Merge, estaríamos ante un enorme avance en el desarrollo de smart contracts, ya que permitiría crear aplicaciones más complejas y seguras. Hay que tener en cuenta que los diamonds contracts son una mejora de los conocidos EIP-1538 (Transparent Contract Standard), ya retirados.

Ethereum ha revolucionado el mundo de las aplicaciones descentralizadas. La creación de su máquina virtual (EVM) y el lenguaje de programación Solidity, así como los estándares ERC-20 (para utility tokens) o los ERC-721 y ERC-1155 (para NFTs) son ejemplo de ese enorme avance. A todo ello se unen ahora los diamond contracts, que ayudarán a mejorar el desarrollo de las DApps del futuro y su impacto en los usuarios.

También puedes seguirnos en nuestros canales de Telegram Twitter

José Maldonado

Por José Maldonado

Activista y bloguero de tecnología, software libre y blockchain.

Esta web utiliza cookies. Puedes ver aquí la Política de Cookies. Si continuas navegando estás aceptándola    Ver
Privacidad