Creando un proyecto NFT

Esta guía describe el siguiente flujo de trabajo:

  • Crear su proyecto

  • Personalización de los parámetros de los tokens

  • Despliegue de su contrato de tokens

  • Minting y envío de tokens

  • Creación de la aplicación NFT

Introducción

Los tokens no fungibles, o NFT, son una parte importante del mundo digital descentralizado.

En esta guía aprenderemos a escribir, desplegar, acuñar y transferir nuestros propios NFT. También aprenderemos a construir un sitio web dapp que podamos compartir con otros usuarios, para que también puedan acuñar y transferir tokens.

Crea tu proyecto

Si eres nuevo en la plataforma y no has creado un proyecto antes, visita Configuración para conocer los requisitos de instalación necesarios y familiarizarte con el proceso antes de continuar.

Ahora vamos a crear un nuevo proyecto y, en la lista de selección de plantillas, seleccionamos la plantilla CW721 con metadatos en cadena.

$ archway new basic-nft
✔ Select a chain to use › Archway Testnet
✔ Choose a name for your contract … basic-nft
✔ Choose a starter template › CW721 with on-chain metadata
Creating Archway project basic-nft...
🔧   Destination: /Users/testuser/basic-nft ...
🔧   project-name: basic-nft ...
🔧   Generating template ...
[ 1/19]   Done: .cargo/                                                                                                           🔧   Moving generated files into: `/Users/testuser/basic-nft`...
💡   Initializing a fresh Git repository
✨   Done! New project created /Users/testuser/basic-nft

Diseña tus tokens

Los metadatos de los activos son un elemento fundamental para cualquier NFT. Define información como el nombre, la URL de la imagen y otras propiedades que los mercados de NFT pueden utilizar para mostrar información relevante a los usuarios. Aquí se almacena información como la rareza, los rasgos personalizados, etc.

En este ejemplo, mantendremos nuestros metadatos en la cadena. En otras palabras, el contrato almacenará los metadatos en su estado interno.

En el código cw721-base, los metadatos NFT están contenidos en la propiedad extension de la estructura TokenInfo:

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct TokenInfo<T> {
    /// The owner of the newly minted NFT
    pub owner: Addr,
    /// Approvals are stored here, as we clear them all upon transfer and cannot accumulate much
    pub approvals: Vec<Approval>,
    /// Universal resource identifier for this NFT
    /// Should point to a JSON file that conforms to the ERC721
    /// Metadata JSON Schema
    pub token_uri: Option<String>,
    /// You can add any custom metadata here when you extend cw721-base
    pub extension: T,
}

Para utilizar esta propiedad de extensión, así es como definimos nuestros metadatos en la plantilla CW721 con metadatos en cadena que clonamos en nuestro proyecto.

#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)]
pub struct Trait {
    pub display_type: Option<String>,
    pub trait_type: String,
    pub value: String,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug, Default)]
pub struct Metadata {
    pub image: Option<String>,
    pub image_data: Option<String>,
    pub external_url: Option<String>,
    pub description: Option<String>,
    pub name: Option<String>,
    pub attributes: Option<Vec<Trait>>,
    pub background_color: Option<String>,
    pub animation_url: Option<String>,
    pub youtube_url: Option<String>,
}

Información

Este código se encuentra en src/lib.rs de su proyecto. También puede verlo aquí.

Last updated