EIP-2535 Diamond 项目使用教程

EIP-2535 Diamond 项目使用教程

diamond-3-hardhatEIP-2535 Diamond reference implementation using Hardhat and Solidity 0.8.*项目地址:https://gitcode.com/gh_mirrors/di/diamond-3-hardhat

本文档基于开源项目 mudgen/diamond-3-hardhat 编写,旨在帮助用户了解项目的目录结构、启动文件和配置文件。

1. 项目的目录结构及介绍

diamond-3-hardhat/
├── contracts/
│   ├── facets/
│   ├── upgrades/
│   ├── Diamond.sol
│   ├── DiamondCutFacet.sol
│   ├── DiamondLoupeFacet.sol
│   ├── OwnershipFacet.sol
├── scripts/
│   ├── deploy.js
├── test/
│   ├── diamondTest.js
├── .env.example
├── .gitattributes
├── .gitignore
├── .prettierignore
├── .prettierrc
├── hardhat.config.ts
├── LICENSE
├── package.json
├── README.md
├── tsconfig.json
├── yarn.lock

目录结构介绍

  • contracts/: 包含所有智能合约文件。
    • facets/: 存放各个 facet 合约。
    • upgrades/: 存放升级相关的合约。
    • Diamond.sol: 主钻石合约。
    • DiamondCutFacet.sol: 用于切割钻石的 facet。
    • DiamondLoupeFacet.sol: 用于查看钻石信息的 facet。
    • OwnershipFacet.sol: 用于管理钻石所有权的 facet。
  • scripts/: 包含部署脚本。
    • deploy.js: 部署钻石合约的脚本。
  • test/: 包含测试脚本。
    • diamondTest.js: 钻石合约的测试脚本。
  • .env.example: 环境变量示例文件。
  • .gitattributes: Git 属性配置文件。
  • .gitignore: Git 忽略文件配置。
  • .prettierignore: Prettier 忽略文件配置。
  • .prettierrc: Prettier 配置文件。
  • hardhat.config.ts: Hardhat 配置文件。
  • LICENSE: 项目许可证。
  • package.json: 项目依赖和脚本配置。
  • README.md: 项目说明文档。
  • tsconfig.json: TypeScript 配置文件。
  • yarn.lock: Yarn 锁定文件。

2. 项目的启动文件介绍

scripts/deploy.js

deploy.js 是项目的启动文件,用于部署钻石合约。以下是该文件的主要内容:

const hre = require("hardhat");

async function main() {
  const DiamondCutFacet = await hre.ethers.getContractFactory("DiamondCutFacet");
  const diamondCutFacet = await DiamondCutFacet.deploy();
  await diamondCutFacet.deployed();

  const Diamond = await hre.ethers.getContractFactory("Diamond");
  const diamond = await Diamond.deploy(ownerAddress, diamondCutFacet.address);
  await diamond.deployed();

  console.log("Diamond deployed to:", diamond.address);
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });

启动步骤

  1. 部署 DiamondCutFacet 合约。
  2. 部署 Diamond 合约,并传入钻石的所有者地址和 DiamondCutFacet 合约地址。
  3. 输出钻石合约的部署地址。

3. 项目的配置文件介绍

hardhat.config.ts

hardhat.config.ts 是 Hardhat 的配置文件,用于配置网络、编译器和其他 Hardhat 相关的设置。以下是该文件的主要内容:

import { HardhatUserConfig } from "hardhat/config";
import "@nomiclabs/hardhat-waffle";
import "@nomiclabs/hardhat-ethers";
import "hardhat-gas-reporter";
import "solidity-coverage";

const config: HardhatUserConfig = {
  solidity: "0.8.0",
  networks: {
    hardhat: {
      chainId: 1337
    },
    // 其他网络配置
  },
  gasReporter: {

diamond-3-hardhatEIP-2535 Diamond reference implementation using Hardhat and Solidity 0.8.*项目地址:https://gitcode.com/gh_mirrors/di/diamond-3-hardhat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羿漪沁Halbert

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值