一、准备
在部署智能合约前,你需要先准备:
- MetaMask钱包
- 添加Linea链
- Linea 测试网代币
- 安装Node
- 安装 Visual Studio Code
二、获取 Infura Linea RPC 端点
1、创建 Infura 帐户后,从仪表板创建新的 API 密钥:
2、创建后,点击你的端口名,可以调出API Key
三、安装NPM和Node
1、使用下面的链接安装相关软件包:
https://nodejs.org/en/download
2、使用下面指令,查看Node和NPM版本:
node -v
npm -v
这一步可以在自己电脑终端做,右键开始菜单,点击“运行”,输入“cmd”,回车;
依次输入以上命令,可以看到当前版本号:
四、创建Truffle项目
按顺序依次运行以下指令:
mkdir linea-nft && cd linea-nft
npm init -y
npm install -g truffle
truffle init
npm install @openzeppelin/contracts @truffle/hdwallet-provider dotenv
这些命令的意思分别是:
- 创建一个空的节点存储库
- 安装Truffle
- 初始化一个简单的 Truffle 项目
- 安装必要的软件包,例如 dotenv、openzeppelin 和 HD 钱包提供商。
在步骤 4 中,我们安装 OpenZeppelin 以访问 ERC-721 ;
Dotenv 是一个有助于秘密管理的软件包。它将确保敏感信息(例如我们钱包的短语)不会公开暴露。
HD 钱包提供商是一个方便的软件包,它允许我们将 MetaMask 钱包集成到Truffle 项目中,并无缝支付 Gas/Sign 交易。
全部成功就像这样:
如果像下图这样的报错,这可能是网络问题,切换网络就行:
五、配置 Truffle 项目
在文的终端中输入“code .” 回车;
弹出的Visual Studio Code,就是你刚刚创建的Truffle 项目
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”;
(2)将新建的文件名改为“.env”,然后将上文的代码复制到VSC;
- 将< YOUR METAMASK WALLET RECOVERY PHRASE >改成你钱包助记词;
- 将< INFURA LINEA RPC URL >,改为你上文创建的API Key
(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",
}
}
};
六、创建合约(LineaNft.sol)
1、创建LineaNft.sol文件
右键点击“Contracts”,选择“New File……”,将文件命名为“LineaNft.sol”
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);
}
}
3、运行以下命令,创建合约:
truffle compile
这样就成功了:
七、将合约部署到Linea Testnet上
配置Truffle项目后,我们准备写一个部署脚本,在Linea测试网上启动我们的合约。
1、在项目的migrations文件夹中,创建一个名为1_deploy_contract.js的新文件;
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);
};
3、通过运行以下命令,将合约部署到 Linea ,并铸造 NFT
truffle migrate --network linea
如果你的网络没有问题,加载成功后就是这样的:
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
部署完成后,可在区块链浏览器查看:
往期教程:
加密狗空投教程216 – Linea(前 ConsenSys zkEVM)最全交互教程,包括:注册、API、添加钱包、基础交互、智能合约部署……(全覆盖)
加密狗空投教程241 – Linea 上的第一个 dex:EchoDEX 测试网教程
以上就是今天全部内容,更多信息请关注:
加密狗推特:https://twitter.com/JiamigouCn
电报:https://t.me/JIAMIGOU002