skka3134

skka3134

email
telegram

ERC20

  1. 開始一個新的工程
npm init
  1. 安裝 hardhat
npm install hardhat
  1. 初始化 hardhat
npx hardhat/npx hardhat init
  1. 安裝依賴
npm install @openzeppelin/contracts
npm install @openzeppelin/contracts-upgradeable
npm install @chainlink/contracts
npm install dotenv


npm install @openzeppelin/hardhat-upgrades 
npm install @nomiclabs/hardhat-ethers
npm install @openzeppelin/hardhat-defender
npm install @nomiclabs/hardhat-etherscan 
npm install chai 
npm install @openzeppelin/test-helpers 
  1. 修改 hardhat.config.js
require("@nomicfoundation/hardhat-toolbox");
require('dotenv').config()
// require('@nomiclabs/hardhat-ethers');
// require('@openzeppelin/hardhat-upgrades');
// require("@openzeppelin/hardhat-defender");
// require("@nomiclabs/hardhat-etherscan");
module.exports = {
  solidity: {
    version: '0.8.19',
    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. 創建一個.env 文件存儲
MNEMONIC=""
SEPOLIA_PRIVATE_KEY=""
SEPOLIA_PRIVATE_KEY=""
SEPOLIA_PRIVATE_KEY=""
ALCHEMY_API_KEY=""

  1. 使用 Wizard 開發合約 https://docs.openzeppelin.com/contracts/4.x/wizard
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

/// @custom:security-contact [email protected]
contract DragonToken is ERC20, ERC20Burnable, Ownable {
    constructor() ERC20("DragonToken", "DTK") {
        _mint(msg.sender, 10000 * 10 ** decimals());
    }

    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }
}
  1. 編譯
npx hardhat compile 
  1. 部署腳本
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
npx hardhat run ./scripts/deploy.js --network localhost 
  1. 部署 sepolia 網絡
npx hardhat run ./scripts/deploy.js --network sepolia 

0xb02a44bB533DA6BeF058c66Dc5d0d7F2ca38C50a
13. 在 remix 中交互 https://remix.ethereum.org/

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