Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

📝 MessageBoard DApp (Hardhat Implementation)

一个基于 Hardhat 构建的去中心化留言板应用。本项目记录了从智能合约编写、本地节点模拟到前端交互的全过程,并详细整理了在 Windows 环境下部署 Web3 应用的避坑指南。


📂 项目结构 (Project Structure)

my-dapp/
├── contracts/             # Solidity 智能合约
│   └── MessageBoard.sol
├── scripts/               # 自动化部署脚本
│   └── deploy.js
├── artifacts/             # 编译产物 (已在 .gitignore 中忽略)
├── hardhat.config.js      # Hardhat 核心配置文件
├── package.json           # 项目依赖与脚本配置
└── index.html             # DApp 前端交互页面


🚀 快速启动 (Quick Start)

1. 环境准备

确保已安装 Node.js。克隆仓库后执行:

npm install

2. 编译合约

清理旧缓存并编译 Solidity 源码:

npx hardhat clean
npx hardhat compile

3. 启动本地私链

Hardhat 会启动一个运行在 http://127.0.0.1:8545 的本地以太坊节点:

npx hardhat node

注意:启动后请记录下 Account #0 的私钥,用于导入 MetaMask。

4. 部署合约

在新的终端窗口执行部署:

npx hardhat run scripts/deploy.js --network localhost

记录输出的 Contract Address。


🛠️ 核心避坑指南 (Troubleshooting)

在本地化部署过程中,本项目成功解决了以下关键技术挑战:

1. 依赖冲突与环境净化

  • 挑战: 频繁出现 ERESOLVE unable to resolve dependency tree。
  • 方案: 严格控制 package.json,仅依赖 @nomicfoundation/hardhat-toolbox。通过 npm cache clean --force 和删除 package-lock.json 彻底重置环境。

2. 编译产物损坏 (HH604)

  • 挑战: 运行 node 时报错 missing field output。
  • 方案: 这是由于在 TS/JS 环境切换时产生的缓存冲突。通过手动删除 artifacts/ 和 cache/ 文件夹并重新编译解决。

3. MetaMask 交互异常

  • 挑战: 发送交易提示 execution reverted 或 Nonce too high。
  • 方案:
  • 网络切换: 手动添加 RPC 8545,Chain ID 必须设为 31337。
  • 重置账户: 在 MetaMask 高级设置中点击“清除活动标签数据”,同步本地节点的 Nonce 计数器。

📖 技术笔记 (Dev Notes)

  • ABI 同步: 每次修改合约代码并重新部署后,必须更新 index.html 中的 contractABI 和 Contract Address。
  • Ethers.js v6 适配: 本项目部署脚本采用了 Ethers v6 语法,使用 waitForDeployment() 替代旧版的 deployed()。
  • 配置文件: hardhat.config.js 必须采用 CommonJS 格式,通过 require 引入插件。

⚖️ 许可证 (License)

本项目采用 MIT License 许可。


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages