馃嚜馃嚫 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 !!