不坚固地部署NFT智能合约
#javascript #web3 #区块链 #nft

如果您是Web3的新手,或者只是从坚固的开始,则建立一个端到头的ERC721或1155智能合约来部署您的NFT集合并不是一件容易的事。在此博客文章中,我们将探讨如何使用Infura的NFT API/SDK使用专门使用JavaScript部署集合。

支持的网络:
INFURA的NFT SDK支持各种网络,包括仲裁,雪崩(C链),以太坊,棕榈和多边形。重要的是要注意,Palm TestNet网络上的写操作仅由SDK支持,而可以使用REST API执行读取操作。

入门:
在进入代码之前,请确保您在系统上安装了最新版本的node.js。完成此操作后,让我们初始化一个新项目并安装必要的库。

获得测试资金:
前往faucet.infura.io抓住一些Sepolia Eth,我们将需要它来部署合同。

创建一个新的项目目录:

mkdir new_project
cd new_project
npm init -y

安装所需的库:

npm install -S @infura/sdk
npm i dotenv

创建一个.env文件:
在项目root目录中创建.ENV文件并添加以下数据:

INFURA_API_KEY=<API-KEY>
INFURA_API_KEY_SECRET=<API-KEY-SECRET>
WALLET_PUBLIC_ADDRESS=<WALLET-PUBLIC-ADDRESS>
WALLET_PRIVATE_KEY=<WALLET-PRIVATE-KEY>

用您自己的infura项目凭据替换占位符,并在受支持的网络上添加一个钱包地址及其私钥。

创建您的Contrancuri:
这将是指固定的JSON代码的链接,该链接告诉我们的程序您的收藏集的元数据是什么样的。从下面的示例中,我的看起来像这样:
{
“描述”:“ Jet”,
“图像”:“ https://gateway.pinata.cloud/ipfs/QmWtgDewkagKn7ZYTFyHfkJ3uYCnmL3gfdWdSQpXs4VCaN/jet_img3.png”,
“名称”:“我的飞机NFT”
}
图像链接到飞机的图片。我的元数据表明该集合中只有1个令牌,但是只要它们是唯一的,您就可以继续添加到每个令牌的JSON文件中。

代码实现:
现在我们已经设置了项目并安装了所需的库,让我们深入了解代码。

// Import the libraries and load the environment variables.
const { SDK, Auth, TEMPLATES } = require('@infura/sdk');
require('dotenv').config();

// Create Auth object
const auth = new Auth({
  projectId: process.env.INFURA_API_KEY,
  secretId: process.env.INFURA_API_KEY_SECRET,
  privateKey: process.env.WALLET_PRIVATE_KEY,
  rpcUrl: process.env.RPC_URL,
  chainId: 11155111,
});

// Instantiate SDK
const sdk = new SDK(auth);

async function deployContract() {
  try {
    const newContract = await sdk.deploy({
      template: TEMPLATES.ERC721Mintable,
      params: {
        name: 'Airplanes',
        symbol: 'JET',
        contractURI: 'https://gateway.pinata.cloud/ipfs/Qmbta8RRbdXjyvXwkuqmbsXkZ8ZRoMezNsP7g6n9Db1Mx1',
      },
    });
    console.log('Contract address:', newContract.contractAddress);
  } catch (error) {
    console.error('An error occurred:', error);
  }
}

deployContract();

解释:
上面的代码展示了使用Infura的NFT SDK实现的基本实现。首先,我们导入必要的库,并从.env文件加载环境变量。然后使用提供的凭据。

创建身份对象。

接下来,我们将SDK与Auth对象实例化。在deployContract函数中,我们利用sdk.deploy方法来部署新的NFT合同。我们将模板指定为TEMPLATES.ERC721Mintable,并提供其他参数,例如合同名称,符号和Contracturi。

成功部署后,合同地址已记录到控制台。该地址代表新部署的NFT合同。

恭喜!您已成功部署了ERC721Mintable NFT,现在是Sepolia Testnet上的令牌的所有者。想要证明吗?您可以检查一下Sepolia Etherscan