skka3134

skka3134

email
telegram

hardhat开发合约

  1. 首先需要一个科学上网的工具,6 元一个月嘎嘎好用
    https://mxwljsq.com/user/shop
  2. 安装 WSL,WSL 是 Linux 的 Windows 子系统,使用管理员权限打开 powershell,一步到位.
wsl --install
  1. 安装写代码的工具 vscode,安装插件,点击左下角小图标,连接到 WSL。
    image
    image
  2. 安装 curl,curl 是一个命令行下工作的文件传输工具
mkdir folder
cd folder
sudo apt-get install curl
  1. 安装 nvm,nvm 可用来 nodejs 的版本控制
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
  1. 安装 nodejs,nodejs 是 JavaScript 的环境
nvm install --lts

如果使用 hardhat 或者要在 vscode 中编辑 solidity 文件,需要安装插件,黄颜色的支持 hardhat

solidity

image
选择开发工具。目前主流的开发工具分别是:Remix,Truffle,Hardhat,Foundry
Remix:最最简单的开发工具,非常适合初学者使用,他有着完善的 GUI 功能,可以减少很大的代码量。
Truffle:最古老的开发工具,相比与 Remix,安装到本地,不需要网络支持,同时也有着 GUI
Hardhat:是目前最主流的开发框架,同样安装到本地,没有 GUI,相比于 Truffle,灵活性更好
Foundry:是一款新兴的开发框架, 用于最好的灵活性,对于初学者来说,如果只关注合约本身,不需要学习 JavaScript,只需要学习 solidity 语言即可。
使用 hardhat 步骤

  1. 初始化一个项目
npm init
  1. 安装 hardhat(旧版本的交互和部署合约的方法可能已经失效)
npm install hardhat
  1. 初始化 hardhat 项目
npx hardhat init
  1. 安装依赖
    @openzeppelin/contracts erc20,erc21 的标准等
    @openzeppelin/contracts-upgradeable 可升级的 erc20,erc721 等
    @chainlink/contracts 用于随机数请求,合约自动化执行等
    dotenv 存储重要信息
    @nomiclabs/hardhat-ethers 可用于部署合约
    @openzeppelin/hardhat-upgrades 用于部署代理合约
    @openzeppelin/hardhat-defender 用于合约安全防护
    @nomiclabs/hardhat-etherscan 部署合约后自动在区块链浏览器上自动验证
    chai 合约测试
    @openzeppelin/test-helpers openzeppelin 团队的合约测试
npm install @openzeppelin/contracts
npm install @openzeppelin/contracts-upgradeable
npm install @chainlink/contracts
npm install dotenv
npm install @nomicfoundation/hardhat-toolbox
npm install @nomiclabs/hardhat-ethers
npm install @openzeppelin/hardhat-upgrades 
npm install @openzeppelin/hardhat-defender
npm install @nomiclabs/hardhat-etherscan 
npm install chai 
npm install @openzeppelin/test-helpers
  1. 创建一个 .env 文件去存储关键信息
MNEMONIC=""
ALCHEMY_API_KEY=""
etherscanKey=""
DEFENDER_TEAM_API_KEY=""
DEFENDER_TEAM_API_SECRET_KEY=""
  1. 修改 hardhat.config.js
require('dotenv').config()
require("@nomicfoundation/hardhat-toolbox");
require('@nomiclabs/hardhat-ethers');
require('@openzeppelin/hardhat-upgrades');
require("@openzeppelin/hardhat-defender");
require("@nomiclabs/hardhat-etherscan");
module.exports = {
  solidity: {
    version: '0.8.17',
    settings: {
      optimizer: {
        enabled: true,
        runs: 200,
      },
    },
  },
  networks: {
    sepolia: {
      url: `https://eth-sepolia.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`,
      accounts: [process.env.MNEMONIC]
    },
  },
   etherscan: {
     apiKey: process.env.etherscanKey,
   },
   defender: {
     apiKey: process.env.DEFENDER_TEAM_API_KEY,
     apiSecret: process.env.DEFENDER_TEAM_API_SECRET_KEY,
   },
};
  1. 使用 Wizard 开发合约 https://docs.openzeppelin.com/contracts/4.x/wizard
  1. 编译合约
npx hardhat compile 
  1. 部署合约脚本(ethers6.0 可能不适用)
async function main() {
  const [deployer] = await ethers.getSigners();
  console.log("Deploying contracts with the account:", deployer.address);
  const DragonToken = await ethers.deployContract("DragonToken");
  console.log("Token address:", await DragonToken.getAddress());
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });
  1. 启动 hardhat 本地网络
npx hardhat node
  1. 部署到 hardhat 本地网络
npx hardhat run ./scripts/deploy.js --network localhost 
  1. 部署到 sepolia 测试网
npx hardhat run ./scripts/deploy.js --network sepolia 
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。