🇪🇸 Fracada: Un protocolo para fraccionar los NFTs

:cuba: :es: Traducción de Fracada: A protocol for fractionalizing NFTs publicado por dcSpark, compañía basada en el desarrollo sobre blockchains y enfocada en Cardano.

Introducción

Los tokens no fungibles (NFT) han encontrado una aplicación muy popular como representación on-chain de diferentes activos, especialmente de obras de arte.

Un paso natural es el fraccionamiento de los NFT: ¿qué pasa si tienes un NFT que quieres compartir con tus amigos, o si compran un NFT juntos, cómo puedes indicar la propiedad compartida?

Aquí presentamos un protocolo en el que puedes fraccionar tu NFT y obtener una cantidad limitada de tokens que representan fracciones de ese NFT (y pueden ser rastreadas hasta él).

Diseño

El contrato recibirá el NFT para bloquearlo y un número en el canjeador (redeemer ) que indica cuántas fracciones (tokens) del NFT hay que acuñar, o cuántas fracciones (tokens) hay que recibir para devolver el NFT para después quemar las fracciones (tokens) .

Fraccionamiento del NFT

El fraccionamiento se realiza en dos pasos:

  1. Bloquear el NFT en el contrato.
  2. Acuñar los tokens y pagar a la llave pública que bloqueó el NFT en el paso anterior.

Bloqueo del NFT

Este paso bloquea el NFT en el contrato con el dato (datum) que contiene la clase de activo nft y el propietario, establecemos la cantidad de fracciones a 0 (no hay fracciones todavía)

Off-chain

Construimos el datum y lo bloqueamos en el script:

image

Acuñación de los tokens

Para acuñar y pagar los tokens que representan las fracciones, utilizamos la política de acuñación y el validador de fracciones conjuntamente:

La política de acuñación permitirá la acuñación si el token se paga desde el validador hacia el validador otra vez, y se acuña realmente la cantidad especificada de tokens.

El validador comprobará que la cantidad de fracciones en el datum cambia de 0 al número real, el propietario se conserva en el datum, y se acuña el número correcto de tokens.

off-chain

El código off-chain buscará el UTxO que contiene el NFT, actualizará la fracción total en el datum (gastando y devolviendo el NFT al validador) y utilizará el script de acuñación para acuñar los tokens que representan las fracciones:

image

Validador on-chain

La ruta de gasto de acuñación en el validador comprobará que el NFT no ha sido fraccionado todavía (el contador de fracciones en el datum de entrada es 0), y que el nuevo recuento coincide con la cantidad de tokens solicitada, que se acuña la cantidad solicitada y se conserva el propietario en el datum.

image

Script de acuñación

El script de acuñación debe comprobar que se acuña la cantidad solicitada de tokens y que se gasta y bloquea el NFT desde el validador de fraccionesNFT

image

Devolución del NFT

Para devolver el NFT:

Usuario: tiene que proporcionar todos los tokens acuñados.

Off-chain: el contrato tiene que quemar los tokens y pagar el NFT

Validador on-chain: verifica que se pague el NFT al usuario y que se quemen los tokens correctos.

Script de acuñación: Quema la cantidad solicitada de tokens

image

Off-chain

Para recuperar el NFT, el firmante tiene que reunir todas los tokens que representan las fracciones y quemarlas mientras gasta el NFT del contrato.

Al devolver el NFT, buscamos el NFT en los UTxOs bloqueados por el contrato, extraemos el datum para encontrar los tokens a quemar, y devolvemos el NFT al firmante:

image

Validador on-chain

El validador sólo liberará el NFT al firmante si se queman los token que representan las fracciones.

image

Script de acuñación

El script de acuñación debe comprobar que sólo se quema la cantidad solicitada de tokens y que se devuelva el NFT al firmante.

image

Conclusión

Este es un contrato simple que muestra algunas técnicas útiles para el desarrollo de contratos inteligentes en Plutus: acuñar y quemar, usar el datum para mantener el estado del protocolo, interrelacionar scripts de acuñación y validadores, filtrado y selección de utxo, validadores de múltiples rutas de gasto, y más.

Aunque la aplicación inicial de fraccionar un NFT para compartirlo con los amigos es casi una novedad, el protocolo central de bloquear un token y emitir una serie de tokens especiales, devolviendo el token inicial después de que se quemen los tokens especiales puede ser parte integral de otros protocolos como el de gobernanza (donde bloqueas tus tokens de gobernanza a cambio de tokens de votación), control de acceso/inicialización de procesos (bloquear un token de control te devolverá tokens/NFTs para iniciar máquinas de estado de dApp), etc. Al fin y al cabo, todas las dApps de eUTxO utilizarán NFTs.

El proyecto completo se puede encontrar aquí.

Como recordatorio, el código de este proyecto no está auditado, pero lo presentamos con el objetivo de compartir el conocimiento de los contratos inteligentes y colaborar con la comunidad.

¡Gracias a nuestro desarrollador principal de Plutus por escribir el blogpost y codificar el proyecto!

1 Like

Muy bueno, gracias Leo !!