Despliegue de un token CRC1155 en Conflux

Despliegue de un token CRC1155 en Conflux

image

Un token CRC1155 es similar a un token CRC721 sólo que con más características y funciones de eficiencia de gas. A diferencia del CRC721, el CRC1155 permite crear varias copias de varios NFT en una sola transacción. Esto también se llama acuñación por lotes y es muy eficiente en cuanto al gas. También se le conoce como el Estándar Multi token ya que puede actuar tanto como token fungible como no fungible.
Este tutorial se centra en el uso de Hardhat y js-conflux-sdk para escribir, desplegar e interactuar con un contrato inteligente compatible con CRC1155 en la red de prueba Conflux.
Requisitos:

  • Una cartera Conflux. Usted puede obtener una aquí y utilizar el grifo(faucet) Conflux para obtener CFX de prueba.
  • Clona este repositorio para tener la plantilla esquelética. Tenga en cuenta que se puede generar una estructura de carpetas similar ejecutando npx hardhat init en una carpeta vacía y seleccionando la opción avanzada Typechain.

Tenga en cuenta que hardhat instalará algunos archivos y módulos como hardhat.config.ts y ethersjs que no se utilizan en este tutorial, podemos ignorarlos.
¡Vamos a sumergirnos!
En primer lugar, se necesita una comprensión de alto nivel del contrato inteligente. Para facilitar las cosas, hemos utilizado el estándar ERC1155 de Openzeppelin, creamos un nuevo contrato llamado CRC1155 que hereda directamente del contrato ERC1155 ya hecho de OpenZeppelin.

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; 
contract CRC1155 is ERC1155

Esto significa que podemos seguir escribiendo las funciones adicionales para nuestra NFT ERC1155 sin preocuparnos de las funciones básicas. El contrato tiene un constructor que establece el URI base del token.

constructor(string memory _globalURI) ERC1155(_globalURI) 
{}

Permite a cualquier persona acuñar por lotes NFTs a una dirección _to gratis

function mintToken( address _to, uint256[] calldata _tokenIds, uint256[] calldata _amounts)
external {
_mintBatch(_to, _tokenIds, _amounts, "0x00");
}

También contiene dos funciones puras que devuelven el nombre y el símbolo del NFT CRC1155

function name() public pure returns (string memory) {
return "Conflux 1155";
}
function symbol() public pure returns (string memory) { 
return "CFX1155"; 
}

Ahora, vamos a sumergirnos en el script de despliegue e interacción de contratos.

Para desplegar el contrato token, usaremos el js-conflux-sdk en lugar de ethersjs para crear nuestro contrato y objetos de red. Ya que estamos escribiendo nuestros scripts de despliegue en typescript, necesitamos importar todos los módulos necesarios, que incluyen el abi y el bytecode de nuestro contrato CRC1155 compilado y el propio módulo Conflux.

import { abi, bytecode } from
'../artifacts/contracts/CRC1155.sol/CRC1155.json'
import { Conflux } from 'js-conflux-sdk'

El abi y el bytecode de un contrato se generan automáticamente cada vez que se ejecuta un script hardhat o se compila un contrato, se guardan en la carpeta de artefactos.

Para interactuar con Conflux, necesitas inicializar una instancia de red usando el sdk de Conflux. En este ejemplo, estamos inicializando una instancia de testnet

const testnet = 'https://test.confluxrpc.com'
const cfx = new Conflux({
url: testnet,
networkId: 1,
logger: console,
})

Ahora podemos utilizar cfx para crear una nueva instancia de contrato y enviar la transacción de despliegue

const contract = cfx.Contract({ abi, bytecode })
//deploy contract
const txReceipt = await contract.constructor(globalURI).sendTransaction({ from: acct }).executed()

A partir del recibo de la transacción, podemos obtener la dirección del contrato recién desplegado y pasar a interactuar con él

//get deployed contract instance
const nftContract = cfx.Contract({ abi, address: txReceipt.contractCreated })
//call the mint function
const tx = await nftContract.mintToken(acct.toString(), [0, 1, 2, 3, 4], [5, 4, 3, 2, 1]) .sendTransaction({ from: acct.toString() })
npx hardhat run scripts/deploy.ts

Hemos desplegado con éxito un token CRC1155 en la red Conflux Core testnet utilizando hardhat y js-conflux-sdk.
Para entender y aprender más sobre los métodos de js-conflux-sdk, consulte la documentación en github.
Aquí se ha desplegado y verificado una muestra.

Conecta con nosotros:

Website / Github / Twitter / Discord / Telegram / Reddit / YouTube / Forum

Artículo/blog traducido por Nico y revisado por Alex

1 Like