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 
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。