加密狗空投教程276 — 在 Linea 上部署 ERC-721 智能合约

一、准备在部署智能合约前,你需要先准备:MetaMask钱包添加Linea链Linea 测试网代币安装Node安装 Visual Studio Code二、获取 Infura Linea RPC 端点1、创建 Infura 帐户后,从仪表板创建新的 API 密钥:2、创建后,点击你的端口名,可以调出

image-1688710165991

一、准备

在部署智能合约前,你需要先准备:

  • MetaMask钱包
  • 添加Linea链
  • Linea 测试网代币
  • 安装Node
  • 安装 Visual Studio Code

二、获取 Infura Linea RPC 端点

1、创建 Infura 帐户后,从仪表板创建新的 API 密钥:

image-1688710201202

2、创建后,点击你的端口名,可以调出API Key

image-1688712106025

三、安装NPM和Node

1、使用下面的链接安装相关软件包:

https://nodejs.org/en/download

2、使用下面指令,查看Node和NPM版本:

node -v
npm -v

这一步可以在自己电脑终端做,右键开始菜单,点击“运行”,输入“cmd”,回车;

依次输入以上命令,可以看到当前版本号:

image-1688712381247

四、创建Truffle项目

按顺序依次运行以下指令:

mkdir linea-nft && cd linea-nft
npm init -y
npm install -g truffle
truffle init
npm install @openzeppelin/contracts @truffle/hdwallet-provider dotenv

这些命令的意思分别是:

  1. 创建一个空的节点存储库
  2. 安装Truffle
  3. 初始化一个简单的 Truffle 项目
  4. 安装必要的软件包,例如 dotenv、openzeppelin 和 HD 钱包提供商。

在步骤 4 中,我们安装 OpenZeppelin 以访问 ERC-721 ;

Dotenv 是一个有助于秘密管理的软件包。它将确保敏感信息(例如我们钱包的短语)不会公开暴露。

HD 钱包提供商是一个方便的软件包,它允许我们将 MetaMask 钱包集成到Truffle 项目中,并无缝支付 Gas/Sign 交易。

全部成功就像这样:

image-1688712722284

如果像下图这样的报错,这可能是网络问题,切换网络就行:

image-1688712784144

五、配置 Truffle 项目

在文的终端中输入“code .” 回车;

弹出的Visual Studio Code,就是你刚刚创建的Truffle 项目

image-1688712841914

1、点击右上方的两个视图按钮,点开“+”号旁边的下拉菜单,点击“Command Prompt”,选择“cmd”;

2、添加钱包助记词,并使用 Infura RPC 向 Linea 测试网发出请求,所需代码如下:

MNEMONIC = "< YOUR METAMASK WALLET RECOVERY PHRASE >"
INFURA_RPC = "< INFURA LINEA RPC URL >"

实操如下:

(1)在Visual Studio Code的操作栏,右键选择“New File”;

image-1688712904640

(2)将新建的文件名改为“.env”,然后将上文的代码复制到VSC;

  • 将< YOUR METAMASK WALLET RECOVERY PHRASE >改成你钱包助记词;

image-1688712935305

  • 将< INFURA LINEA RPC URL >,改为你上文创建的API Key

image-1688712965280

(3)找到 truffle.config.js,将下面的代码粘贴在里面:

require('dotenv').config();
const HDWalletProvider = require('@truffle/hdwallet-provider');
const { MNEMONIC, INFURA_RPC } = process.env;
module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*"
    },
    linea: {
      provider: () => new HDWalletProvider(MNEMONIC, INFURA_RPC),
      network_id: '59140',
    }
  },
  compilers: {
    solc: {
      version: "0.8.19",
    }
  }
};

image-1688713022236

六、创建合约(LineaNft.sol)

1、创建LineaNft.sol文件

右键点击“Contracts”,选择“New File……”,将文件命名为“LineaNft.sol”

image-1688713379914

2、然后粘贴如下代码:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract LineaNft is ERC721URIStorage {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;
    string private _metadataUrl;
    constructor() ERC721("Linea NFT", "LNFT") {
        // Set metadata of the NFT
        _metadataUrl = "ipfs://QmUyZoK21qb8YknXGfDB34RTY8vMqPb6Bsj9U9iLEnyrZR";
        // Mint NFT
        _mintNFT();
    }
    function _mintNFT() private {
        _tokenIds.increment();
        uint256 newItemId = _tokenIds.current();
        _mint(msg.sender, newItemId);
        _setTokenURI(newItemId, _metadataUrl);
    }
}

image-1688713544290

3、运行以下命令,创建合约:

truffle compile

image-1688713561269

这样就成功了:

image-1688713592669

七、将合约部署到Linea Testnet上

配置Truffle项目后,我们准备写一个部署脚本,在Linea测试网上启动我们的合约。

1、在项目的migrations文件夹中,创建一个名为1_deploy_contract.js的新文件;

image-1688713616967

2、添加以下代码:

// Get instance of the Linea NFT contract
const lineaNftContract = artifacts.require("LineaNft");
module.exports = function (deployer) {
    // Deploy the contract to Linea
    deployer.deploy(lineaNftContract);
};

image-1688713641204

3、通过运行以下命令,将合约部署到 Linea ,并铸造 NFT

truffle migrate --network linea

image-1688713660108

如果你的网络没有问题,加载成功后就是这样的:

Starting migrations…
======================
> Network name: 'linea'
> Network id: 59140
> Block gas limit: 61000000 (0x3a2c940)
1_deploy_contract.js
====================
Deploying 'LineaNft'
 - - - - - - - - - - 
> transaction hash: 0x528016684927c412b8541e2029e5e7d39862f3ac6326e6b214ab8c105dd144fc
> Blocks: 2 Seconds: 17
> contract address: 0xD5B63A037FfF90ca3a73506e7546E543dE42Cav4
> block number: 849147
> block timestamp: 1685960558
> account: 0xc361Fc33b99F88612257ac8cC2d852A5CEe0E312
> balance: 0.180090609510837606
> gas used: 2245875 (0x2244f3)
> gas price: 2.500000008 gwei
> value sent: 0 ETH
> total cost: 0.005614687517967 ETH
> Saving artifacts
 - - - - - - - - - - - - - - - - - - -
> Total cost: 0.005614687517967 ETH
Summary
=======
> Total deployments: 1
> Final cost: 0.005614687517967 ETH

部署完成后,可在区块链浏览器查看:

image-1688713698288

往期教程:

加密狗空投教程216 – Linea(前 ConsenSys zkEVM)最全交互教程,包括:注册、API、添加钱包、基础交互、智能合约部署……(全覆盖)

加密狗空投教程241 – Linea 上的第一个 dex:EchoDEX 测试网教程

以上就是今天全部内容,更多信息请关注:

加密狗推特:https://twitter.com/JiamigouCn

电报:https://t.me/JIAMIGOU002

给TA打赏
共{{data.count}}人
人已打赏
评测攻略

加密狗空投教程275 -- Zora Network主网全流程指南

2023-7-4 16:39:44

评测攻略

加密狗空投教程277 -- 2周提高LayerZero 的 TX 方法和必做项 (预计在4季度发空投)

2023-7-7 16:38:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索