Solidez – Programación Token ERC-721

ERC significa Solicitud de comentarios de Ethereum, mientras que 721 es el número de identificación de la propuesta. Es una interfaz estándar para tokens no fungibles (NFT) , tiene un conjunto de reglas que facilitan el trabajo con NFT. Dado que se supone que cada token ERC721 es único, estos no son intercambiables y tampoco divisibles. Solo puede intercambiar tokens en unidades completas, y cada uno tiene una identificación única. El token ERC-721 es un estándar gratuito y abierto que describe cómo crear tokens no fungibles (NFT) o tokens únicos en la red de string de bloques de Ethereum. El token ERC-721 también se conoce como el estándar Solidity Smart Contract que es heredable.

Diferentes funciones de ERC-721

En la red Ethereum , un token es básicamente un contrato inteligente que sigue algunas reglas comunes, implementa un conjunto estándar de funciones que pueden compartir todos los demás contratos de token, como:

Funciones similares a ERC-20:

1. Nombre: el trabajo de esta función ERC-721 es decirle a los contratos y aplicaciones externos el nombre de este token. La implementación de esta función se puede hacer como se muestra a continuación:

Solidity

contract ContractName {
  function name() constant returns (string name){
    return "My NFT";
  }
}

2. Símbolo: esta función proporciona programas externos con el nombre abreviado del token o el símbolo. Esto también proporciona compatibilidad con el estándar de token ERC20. Esta función podría implementarse como se muestra a continuación:

Solidity

contract ContractName {
 function symbol() constant returns (string symbol){
   return "MNFT";
 }
}

3. totalSupply: Devuelve la cantidad total de tokens almacenados por el contrato.

Solidity

contract ContractName {
 uint256 private totalSupply = 1000;
 function totalSupply() constant returns (uint256 sup){
   return totalSupply;
 }
}

4. balanceOf: esta función devuelve la cantidad de tokens en la cuenta del propietario, generalmente se usa para encontrar cuántos tokens posee la dirección.

Solidity

contract MyNFT {
  mapping(address => uint) private balances;
  function balanceOf(address _owner) constant returns (uint balance)
  {
    return balances[_owner];
  }
}

Funciones de propiedad:

  1. propietarioDe: El propósito de esta función es devolver la dirección del propietario de un token. Se hace referencia al token ERC721 en la red blockchain a través de una identificación única. Usando esta ID podemos determinar el propietario de un token.
  2. aprobar: esta función otorga a otra entidad permiso para transferir tokens en nombre del propietario.
  3. takeOwnership: esta función actúa como una función de retiro porque una parte externa puede llamarla para retirar tokens de la cuenta de otro usuario. Por lo tanto, esta función se puede utilizar cuando un usuario ha sido aprobado para poseer una cierta cantidad de tokens y desea retirar dichos tokens del saldo de otro usuario.
  4. transferencia: esta función permite al propietario del token transferirlo a otro usuario, de forma similar a como funcionan otros tokens/monedas digitales.
  5. tokenOfOwnerByIndex: el propietario de cada NFT puede poseer más de un token a la vez. Sin embargo, debido a que cada token tiene una ID única , puede ser difícil realizar un seguimiento de los tokens individuales que un usuario puede poseer. Para hacer esto, el contrato inteligente mantiene un registro de las identificaciones de cada token que posee cada usuario. Dado que los tokens propiedad de los usuarios se registran, cada token individual propiedad de un usuario puede recuperarse por su índice en la lista ( array ) de tokens propiedad del usuario, la función » tokenOfOwnerByIndex » nos permite recuperar un token en este método.

Función de metadatos:

1. tokenMetadata: esta función de metadatos nos permite descubrir los metadatos de un token o el enlace a sus datos.

Eventos: los eventos se activan cada vez que un contrato los llama. Una vez que se activan, se transmiten a cualquier programa de escucha. Los programas externos escuchan los eventos de la string de bloques para ejecutar la lógica una vez que se activa el evento en función de la información que proporciona el evento. El estándar ERC721 define dos eventos que son los siguientes:

Transferencia: este evento se activa cada vez que un token cambia de manos y se transmite cuando la propiedad de un token pasa de un usuario a otro. Detalla lo siguiente:

  • Qué cuenta envió el token.
  • Qué cuenta recibió el token.
  • Qué token (por ID) se transfirió.

Aprobación: este evento se activa cada vez que un usuario aprueba la propiedad de un token para que lo tome otro usuario (es decir, cada vez que se ejecuta la aprobación). Detalla las siguientes cosas:  

  • La dirección de la cuenta que actualmente posee el token.
  • La dirección de la cuenta que puede poseer el token en el futuro.
  •  Qué token (por ID) está aprobado para transferir su propiedad.
     

Pasos para crear e implementar contratos inteligentes ERC-721

Dado que implementar contratos inteligentes en la red principal de Ethereum costará algunos éteres reales, aquí se implementará el contrato inteligente en la red de prueba de Ropsten. Pero para comenzar con todas estas cosas, uno necesita tener una billetera ETH, para eso se requiere una extensión de navegador Metamask , después de esto, se requiere alguna prueba ETH que se puede obtener de forma gratuita yendo al grifo Ropsten.

Ethereum Remix IDE se puede usar para crear e implementar el contrato inteligente que se crea siguiendo los pasos a continuación:

Paso 1: especificar el tipo de licencia SPDX, es una adición después de la versión 0.6.8 de Solidity.

// SPDX-License-Identifier: MIT

Paso 2: Declarar la versión de solidez que es 0.8.0.

pragma solidity 0.8.0;

Paso 3: Importación de contratos ERC-721:

import "https://github.com/0xcert/ethereum-erc721/src/contracts/tokens/nf-token-metadata.sol";
import "https://github.com/0xcert/ethereum-erc721/src/contracts/ownership/ownable.sol";

Paso 4:  iniciar el contrato llamado myNFT y mencionar que está extendiendo los contratos NFTokenMetadata y Ownable

contract myNFT is NFTokenMetadata, Ownable {

Paso 5:  Inicializar el constructor y configurar el nombre (nftName) y un símbolo (nftSymbol) de nuestro token.

constructor() {
   nftName = "gfg NFT";
   nftSymbol = "GFG";
 }

Paso 6:  Ahora declara una función mint que toma tres argumentos:

  • variable _to de tipo dirección que almacenará la dirección del receptor del token NFT.
  • variable _tokenId de uint256 (entero sin signo de 256 bits de tamaño) tipo que contendrá la identificación del token.
  • variable _uri de tipo string que almacenará la URI del archivo JSON. 

Al declarar mint como medio externo, se puede acceder desde otros contratos inteligentes y fuera del ámbito propio.

El siguiente paso es acuñar el token. «Acuñar un NFT» se refiere al acto de publicar una instancia única de su token ERC-721 en la red de string de bloques. Después de eso, configure el URI del token usando la identificación del token y el URI del archivo JSON. Hay un URI de token en un NFT que es un identificador único de cómo «se ve» el token. Un URI puede ser una llamada de API a través de HTTPS, un hash de IPFS o cualquier otra cosa que sea única.

// declaration of function mint : 
function mint(address _to, uint256 _tokenId, string calldata _uri) external onlyOwner {
  super._mint(_to, _tokenId);
  super._setTokenUri(_tokenId, _uri);
}
}

A continuación se muestra el código completo para implementar los contratos inteligentes ERC-721:

Solidity

// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
  
import "https://github.com/0xcert/ethereum-erc721/src/contracts/tokens/nf-token-metadata.sol";
import "https://github.com/0xcert/ethereum-erc721/src/contracts/ownership/ownable.sol";
  
contract myNFT is NFTokenMetadata, Ownable {
  
 constructor() {
   nftName = "gfg NFT";
   nftSymbol = "GFG";
 }
  
 function mint(address _to, uint256 _tokenId, string calldata _uri) external onlyOwner {
   super._mint(_to, _tokenId);
   super._setTokenUri(_tokenId, _uri);
 }
  
}

Implemente el código en Ethereum Remix IDE haciendo clic en el botón Implementar.

Deploy

 

Se puede hacer clic en el menú desplegable «MYNFT AT address (MEMORY)» para ver diferentes opciones como aprobar, acuñar y otras donde se necesita poner la dirección, y luego se pueden realizar diferentes operaciones como esta:

MYNFT AT

 

Después de una implementación exitosa, se puede ver el estado, el hash de la transacción y todos los demás detalles en la parte inferior derecha de esta manera. 

status

 

Publicación traducida automáticamente

Artículo escrito por harshkanodiya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *