Los NFT dinámicos (tokens no fungibles) son el siguiente paso en la evolución de los tokens no fungibles. Combinan la singularidad de un token no fungible con entradas dinámicas de datos dentro y fuera de la cadena. Los NFT dinámicos están diseñados para evolucionar o cambiar con el tiempo y el secreto de sus habilidades dinámicas radica en sus contratos inteligentes.
En este tutorial vamos a:
- Discutir NFT estáticos vs dinámicos
- Cree una NFT dinámica en Solidity
Si es la primera vez que aprende sobre NFT o desea crear un proyecto de NFT, le recomendamos que comience su viaje leyendo Cómo crear e implementar una colección de NFT y/o un contrato ERC721 que admita regalías de ventas.
NFT estáticos frente a dinámicos
La mayoría de las NFT creadas son estático. A NFT estático es un NFT con rasgos permanentemente inmutables registrados en la cadena de bloques que no se pueden modificar. Estos tipos de NFT son imágenes fijas, videos, archivos gif, música, elementos desbloqueables, etc. Por ejemplo, un NFT estático podría ser una imagen de un jugador de baloncesto que lanza una pelota a una canasta.
Las NFT dinámicas o dNFT son la siguiente etapa en la evolución del espacio NFT. Combinan las cualidades únicas verificables de NFT con entradas de datos dinámicas. Las entradas dinámicas a estos NFT pueden provenir de cálculos dentro o fuera de la cadena. Oráculos son un componente clave para proporcionar elementos de datos dinámicos a las NFT del mundo real. Por ejemplo, una NFT dinámica podría ser de las estadísticas de un jugador de baloncesto que se actualizan en tiempo real para reflejar el rendimiento real de ese jugador.
Los contratos inteligentes hacen posible que los NFT evolucionen con el tiempo. Cuando se solicita un token NFT, el contrato inteligente determina qué datos devolver al usuario. El contrato inteligente puede evaluar los datos en la cadena y/o los datos fuera de la cadena utilizando un Oracle para determinar cómo responder. Esto hace que las NFT dinámicas sean muy emocionantes, ya que puede tener una NFT que cambia, se actualiza y se expande con el tiempo.
Ejemplo de una NFT dinámica
No hay tantos NFT dinámicos en el mercado. Un ejemplo es el fantasma malhumorado colección en mar abierto. Tenga en cuenta que esto no es un respaldo para el proyecto Moody Ghost, solo un ejemplo de un NFT dinámico. El contrato inteligente evalúa los datos en cadena para activar el cambio de expresión de la boca del fantasma.
A continuación se muestra un ejemplo de la misma NFT de Moody Ghost con diferentes expresiones bucales que se desencadenan por datos en cadena. Lea el contrato inteligente para determinar cómo funciona esto.
Para experimentar y ver las expresiones de cambio de Moody Ghost, vaya a Open Sea y actualice los metadatos para un NFT en particular. A continuación, vuelva a cargar la página web. La imagen y los rasgos de NFT cambiarán si se justifica.
¿Cómo funciona una NFT dinámica?
Una NFT dinámica puede tener el siguiente flujo de proceso.
- Una persona o proceso realiza una solicitud a un contrato inteligente para un URI de tokens NFT
- El contrato inteligente recibe la solicitud de procesamiento
- El contrato solicita datos en cadena y los resultados se procesan
- El contrato inteligente solicita datos fuera de la cadena utilizando un Oracle y los resultados se procesan
- El contrato evalúa los datos dentro y fuera de la cadena y devuelve el medio 1 o el medio 2 al solicitante
Nota: Se pueden usar datos en la cadena, datos fuera de la cadena o una combinación de ambos para crear una NFT dinámica.
Crear una NFT dinámica
Vamos a crear un NFT dinámico en Solidity. Para este tutorial, crearemos un contrato de token ERC721 NFT muy básico. Este contrato simbólico es un contrato básico que nos permite centrarnos en los componentes del contrato que lo hacen dinámico.
La función token URI es donde reside la lógica para cambiar entre dos URI. En este ejemplo particular, la función evalúa los datos en cadena (marca de tiempo del bloque) para determinar qué URI devolver al solicitante. En este ejemplo particular, hay dos conjuntos de imágenes y archivos json implementados en ipfs.
Compile e implemente el contrato de ejemplo NFT dinámico a continuación en Remix. Lea los comentarios en el código para comprender cómo funciona el contrato inteligente.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;
//import Open Zepplin contracts
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol";
contract NFT is ERC721 {
using Strings for uint256;
uint256 private _tokenIds;
string public baseExtension = ".json";
//create two URIs.
//the contract will switch between these two URIs
string aUri = "URIaaaaaaaaaa";
string bUri = "URIbbbbbbbbbb";
constructor() ERC721("NAMEOFTOKEN", "TOKENSYMBOL") {}
//use the mint function to create an NFT
function mint()
public
returns (uint256)
{
_tokenIds += 1;
_mint(msg.sender, _tokenIds);
return _tokenIds;
}
//the token URI function will contain the logic to determine what URI to show
function tokenURI(uint256 tokenId) public view virtual override returns (string memory)
{
require(
_exists(tokenId),
"ERC721Metadata: URI query for nonexistent token"
);
//if the block timestamp is divisible by 2 show the aURI
if (block.timestamp % 2 == 0) {
return bytes(aUri).length > 0
? string(abi.encodePacked(aUri, tokenId.toString(), baseExtension))
: "";
}
//if the block timestamp is NOT divisible by 2 show the bURI
return bytes(bUri).length > 0
? string(abi.encodePacked(bUri, tokenId.toString(), baseExtension))
: "";
}
}
Pruébalo en remezclar
Después de implementar el contrato anterior en Remix, cree un token usando la función de menta. Luego use la función tokenURI para obtener el URI para el token 1. Invoque la función tokenURI varias veces para ver el cambio de URI. El ejemplo anterior ilustra una forma de crear una NFT dinámica.
URI para el token 1 devuelve auri
URI para el token 1 devuelve Buri
NFT en evolución
Hay varias formas de implementar una NFT dinámica y el ejemplo anterior es un enfoque. Otro método es almacenar todos los metadatos en la cadena de bloques para que no se puedan cambiar. Sus requisitos y caso de uso dictarán su implementación técnica.
Este código es solo para fines de aprendizaje y entretenimiento. Este código no ha sido auditado, así que utilícelo bajo su propio riesgo. Recuerde que los contratos inteligentes son experimentales y podrían contener errores.
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones