欢迎来到以太坊开发工具包!本项目是一个功能丰富的区块链开发学习平台,专为初学者设计,包含Web3钱包验证服务、稳定币合约、可升级合约示例和多签钱包合约等组件。
无论你是区块链开发的新手,还是希望深入了解以太坊技术的开发者,这个工具包都能帮助你快速上手并理解核心概念。
本项目包含以下四个核心组件,每个组件都配有详细的文档和示例:
- Web3钱包验证服务 - 一个基于Express.js的Web服务,用于验证用户是否真正持有其提供的Web3钱包地址。通过挑战-响应机制确保地址有效且用户拥有私钥。
- 稳定币合约 - 基于Solidity的ERC20标准稳定币实现,具备铸造、销毁、所有权管理等特性,是学习代币开发的绝佳示例。
- 智能合约示例 - 包含可升级合约的示例实现(Counter和CounterV2),帮助你理解智能合约升级的原理和实践。
- 多签钱包合约 - 实现了一个基础的多签钱包合约,允许多个签名者共同管理资金,是学习多签机制的优秀案例。
- 初学者友好 - 每个组件都有详细的说明和使用示例
- 完整生态系统 - 涵盖了Web3前端、后端服务和智能合约开发
- 实用性强 - 所有组件都基于真实的业务场景设计
- 易于扩展 - 清晰的代码结构,方便你在此基础上构建自己的项目
- Node.js (版本14或更高)
- npm (通常随Node.js一起安装)
- Git
-
克隆项目仓库:
git clone <repository-url> cd ethereum
-
安装项目依赖:
npm install
-
对于各个智能合约子项目(如stablecoin、smart_contracts、multisigwallet),也需要分别安装依赖:
cd stablecoin && npm install && cd .. cd smart_contracts && npm install && cd .. cd multisigwallet && npm install && cd ..
-
运行服务:
node server.js
-
在浏览器中访问
http://localhost:3000使用Web界面进行钱包验证。 -
或者使用命令行工具:
node cli_web3.js
恭喜!你已经成功运行了第一个区块链应用。接下来可以尝试验证你的MetaMask钱包地址。
Web3钱包验证服务是本项目的核心组件,它实现了银行级的钱包验证机制,确保用户真正拥有其声称的钱包地址。
- 用户提交钱包地址 - 用户在网页上输入钱包地址
- 银行生成挑战消息 - 系统创建一个包含唯一ID、时间戳和银行标识的特殊消息
- 用户进行签名 - 用户使用MetaMask等钱包对挑战消息进行数字签名(无费用)
- 银行验证签名 - 系统使用加密技术验证签名是否由该地址的私钥创建
-
运行服务:
node server.js
-
在浏览器中访问
http://localhost:3000使用Web界面进行钱包验证。 -
或者使用命令行工具:
node cli_web3.js
- 防钓鱼保护 - 挑战消息中包含银行标识,确保用户知道这是银行请求
- 防重放攻击 - 每个挑战ID只能使用一次,5分钟后自动过期
- 严格的地址验证 - 多层检查确保地址格式正确
稳定币合约是基于Solidity的ERC20标准代币实现,具备完整的代币功能。
- 标准ERC20功能(转账、授权等)
- 所有权管理机制
- 铸造和销毁功能
- approveAndCall扩展功能
-
进入stablecoin目录并编译合约:
cd stablecoin npx hardhat compile -
部署合约:
npx hardhat run scripts/deploy.js --network local -
使用stablecoin.html界面与合约交互
本示例展示了如何实现可升级的智能合约,这是生产环境中非常重要的技术。
- Counter.sol: 基础可升级计数器合约
- CounterV2.sol: 升级版计数器合约,添加了重置功能
-
部署基础合约:
cd smart_contracts npx hardhat compile npx hardhat run scripts/deploy.js --network local
-
升级到V2版本:
npx hardhat run scripts/upgrade.js --network local
多签钱包合约允许多个签名者共同管理资金,是学习多签机制的优秀案例。
-
进入multisigwallet目录并编译合约:
cd multisigwallet npx hardhat compile -
部署合约:
npx hardhat run scripts/deploy.js --network local -
执行多签交易:
npx hardhat run scripts/execute.js --network local
ethereum/
├── server.js # Web3钱包验证服务后端
├── cli_web3.js # 命令行验证工具
├── public/ # Web前端静态资源
│ └── index.html # Web3钱包验证前端界面
├── stablecoin/ # 稳定币合约
│ ├── contracts/
│ │ └── TokenERC20.sol # 稳定币合约实现
│ └── scripts/
│ └── deploy.js # 部署脚本
├── smart_contracts/ # 智能合约示例
│ ├── contracts/
│ │ ├── Counter.sol # 基础可升级计数器合约
│ │ └── CounterV2.sol # 升级版计数器合约
│ └── scripts/
│ ├── deploy.js # 部署脚本
│ └── upgrade.js # 升级脚本
└── multisigwallet/ # 多签钱包合约
└── contracts/
└── MultiSigWallet.sol # 多签钱包合约实现
- 第一步 - 运行Web3钱包验证服务,理解Web3与传统Web的区别
- 第二步 - 部署稳定币合约,学习ERC20代币标准
- 第三步 - 体验合约升级过程,理解可升级合约的重要性
- 第四步 - 使用多签钱包,理解多方协作的区块链应用
- 后端: Node.js, Express.js - 用于构建Web3钱包验证服务
- 区块链开发: Solidity, Hardhat - 用于编写和部署智能合约
- Web3库: ethers.js, web3.js - 用于与区块链交互
- 前端: HTML, JavaScript - 用于构建用户界面
- 测试框架: Hardhat内置测试工具 - 用于测试智能合约
- 安全合约库: OpenZeppelin - 用于构建安全的智能合约
- Node.js/Express.js - 简单易学,适合构建Web3应用的后端服务
- Solidity - 以太坊智能合约的标准编程语言
- Hardhat - 功能强大的开发环境,提供编译、测试、部署等全套工具
- ethers.js - 轻量级且功能完整的Web3库,易于集成到前端应用
- OpenZeppelin - 经过审计的合约库,提供安全的合约实现
建议从Web3钱包验证服务开始:
- 运行
node server.js启动服务 - 访问
http://localhost:3000 - 使用MetaMask钱包进行地址验证体验
你需要安装:
- Node.js (版本14或更高)
- npm (通常随Node.js一起安装)
- Git
每个合约目录下都有部署脚本:
# 进入合约目录
cd stablecoin
# 编译合约
npx hardhat compile
# 部署合约
npx hardhat run scripts/deploy.js --network local项目提供了HTML界面文件用于与合约交互:
- stablecoin.html - 与稳定币合约交互
- contract.html - 部署和调用合约
- transaction.html - 查看代币活动记录
挑战-响应机制是一种安全的身份验证方法:
- 服务器生成一个唯一的挑战消息
- 用户使用私钥对挑战消息进行签名
- 服务器验证签名的有效性
- 如果验证通过,确认用户拥有该地址的私钥
这种方法确保用户不仅知道钱包地址,还拥有对应私钥,而无需转移任何资产。
可升级合约允许在不迁移数据的情况下修复bug或添加功能:
- 用户数据保存在代理合约中
- 逻辑实现在逻辑合约中
- 升级时只需部署新的逻辑合约
- 通过OpenZeppelin的UUPS模式实现安全升级
多签钱包在以下场景中非常有用:
- 企业资金管理(需要多个授权人签名)
- DAO组织资金管理
- 交易所热钱包安全
- 重要账户的安全保护
欢迎任何形式的贡献!你可以:
- 提交bug报告
- 提交功能请求
- 创建pull request改进代码
- 完善文档
本项目采用MIT许可证。详情请见 LICENSE 文件。
如有任何问题或建议,请通过以下方式联系:
- 提交GitHub Issue
- 发送邮件至项目维护者