这是一个基于Hardhat框架开发的ERC20代币示例项目,包含Solidity智能合约和Java后端服务。该项目演示了如何创建、部署ERC20代币,并通过Java Web服务与其进行交互。
.
├── Hardhat-module # Hardhat项目模块
│ ├── contracts # Solidity智能合约
│ ├── scripts # 部署脚本
│ ├── test # 合约测试
│ └── README.md # Hardhat模块详细说明
├── Web3-module # Java Web服务模块
│ ├── src # Java源码
│ │ ├── controller # REST控制器
│ │ ├── service # 业务逻辑层
│ │ └── config # 配置文件
│ └── pom.xml # Maven配置
└── pom.xml # 根项目Maven配置
- 基于OpenZeppelin的ERC20标准实现自定义代币(MyToken)
- 使用Hardhat进行合约编译、部署和测试
- 提供完整的Java Web服务与智能合约交互
- 支持查询代币名称、总供应量、账户余额
- 支持代币转账功能
- Solidity ^0.8.20
- Hardhat 开发框架
- OpenZeppelin 合约库
- Java 17
- Spring Boot 3.3.4
- Web3j 4.14.0
- Maven 构建工具
cd Hardhat-module
npx hardhat node或者使用持久化链:
ganache --db ./ganache-data --accounts 20 --defaultBalanceEther 10000 --host 127.0.0.1 --port 8545 --deterministicnpx hardhat run scripts/deploy.js --network localhost记录输出的合约地址,用于后续配置。
编辑 Web3-module/src/main/resources/application.properties 文件,更新以下配置:
ethereum.rpc.url=http://127.0.0.1:8545
ethereum.admin.private-key=YOUR_PRIVATE_KEY
ethereum.contract.address=DEPLOYED_CONTRACT_ADDRESScd Web3-module
./mvnw spring-boot:run服务将在 http://localhost:8080 启动。
GET /api/token-name- 获取代币名称GET /api/total-supply- 获取代币总供应量GET /api/balance?address={address}- 查询账户余额POST /api/transfer?to={to}&amount={amount}- 转账代币GET /api/account-balance?address={address}- 查询账户ETH余额
npx hardhat compileweb3j generate solidity --abiFile artifacts/abi/MyToken.json --outputDir java --package org.guang.web3module.servicenpx hardhat test --network localhost本项目仅供学习和参考使用。