Skip to content

wonglaitung/ethereum

Repository files navigation

Ethereum Development Toolkit - 初学者友好版

欢迎来到以太坊开发工具包!本项目是一个功能丰富的区块链开发学习平台,专为初学者设计,包含Web3钱包验证服务、稳定币合约、可升级合约示例和多签钱包合约等组件。

无论你是区块链开发的新手,还是希望深入了解以太坊技术的开发者,这个工具包都能帮助你快速上手并理解核心概念。

项目概述

本项目包含以下四个核心组件,每个组件都配有详细的文档和示例:

  1. Web3钱包验证服务 - 一个基于Express.js的Web服务,用于验证用户是否真正持有其提供的Web3钱包地址。通过挑战-响应机制确保地址有效且用户拥有私钥。
  2. 稳定币合约 - 基于Solidity的ERC20标准稳定币实现,具备铸造、销毁、所有权管理等特性,是学习代币开发的绝佳示例。
  3. 智能合约示例 - 包含可升级合约的示例实现(Counter和CounterV2),帮助你理解智能合约升级的原理和实践。
  4. 多签钱包合约 - 实现了一个基础的多签钱包合约,允许多个签名者共同管理资金,是学习多签机制的优秀案例。

为什么选择这个工具包?

  • 初学者友好 - 每个组件都有详细的说明和使用示例
  • 完整生态系统 - 涵盖了Web3前端、后端服务和智能合约开发
  • 实用性强 - 所有组件都基于真实的业务场景设计
  • 易于扩展 - 清晰的代码结构,方便你在此基础上构建自己的项目

快速开始 - 5分钟上手指南

环境要求

  • Node.js (版本14或更高)
  • npm (通常随Node.js一起安装)
  • Git

安装步骤

  1. 克隆项目仓库:

    git clone <repository-url>
    cd ethereum
  2. 安装项目依赖:

    npm install
  3. 对于各个智能合约子项目(如stablecoin、smart_contracts、multisigwallet),也需要分别安装依赖:

    cd stablecoin && npm install && cd ..
    cd smart_contracts && npm install && cd ..
    cd multisigwallet && npm install && cd ..

启动Web3钱包验证服务(推荐初学者第一步)

  1. 运行服务:

    node server.js
  2. 在浏览器中访问 http://localhost:3000 使用Web界面进行钱包验证。

  3. 或者使用命令行工具:

    node cli_web3.js

恭喜!你已经成功运行了第一个区块链应用。接下来可以尝试验证你的MetaMask钱包地址。

详细使用指南

Web3钱包验证服务 - 验证钱包所有权

Web3钱包验证服务是本项目的核心组件,它实现了银行级的钱包验证机制,确保用户真正拥有其声称的钱包地址。

工作原理

  1. 用户提交钱包地址 - 用户在网页上输入钱包地址
  2. 银行生成挑战消息 - 系统创建一个包含唯一ID、时间戳和银行标识的特殊消息
  3. 用户进行签名 - 用户使用MetaMask等钱包对挑战消息进行数字签名(无费用)
  4. 银行验证签名 - 系统使用加密技术验证签名是否由该地址的私钥创建

启动服务

  1. 运行服务:

    node server.js
  2. 在浏览器中访问 http://localhost:3000 使用Web界面进行钱包验证。

  3. 或者使用命令行工具:

    node cli_web3.js

安全特性

  • 防钓鱼保护 - 挑战消息中包含银行标识,确保用户知道这是银行请求
  • 防重放攻击 - 每个挑战ID只能使用一次,5分钟后自动过期
  • 严格的地址验证 - 多层检查确保地址格式正确

稳定币合约 - 发行自己的代币

稳定币合约是基于Solidity的ERC20标准代币实现,具备完整的代币功能。

核心功能

  • 标准ERC20功能(转账、授权等)
  • 所有权管理机制
  • 铸造和销毁功能
  • approveAndCall扩展功能

部署和使用

  1. 进入stablecoin目录并编译合约:

    cd stablecoin
    npx hardhat compile
  2. 部署合约:

    npx hardhat run scripts/deploy.js --network local
  3. 使用stablecoin.html界面与合约交互

可升级合约示例 - 学习合约升级

本示例展示了如何实现可升级的智能合约,这是生产环境中非常重要的技术。

组件说明

  • Counter.sol: 基础可升级计数器合约
  • CounterV2.sol: 升级版计数器合约,添加了重置功能

升级流程

  1. 部署基础合约:

    cd smart_contracts
    npx hardhat compile
    npx hardhat run scripts/deploy.js --network local
  2. 升级到V2版本:

    npx hardhat run scripts/upgrade.js --network local

多签钱包合约 - 共同管理资金

多签钱包合约允许多个签名者共同管理资金,是学习多签机制的优秀案例。

部署和使用

  1. 进入multisigwallet目录并编译合约:

    cd multisigwallet
    npx hardhat compile
  2. 部署合约:

    npx hardhat run scripts/deploy.js --network local
  3. 执行多签交易:

    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 # 多签钱包合约实现

初学者学习路径建议

  1. 第一步 - 运行Web3钱包验证服务,理解Web3与传统Web的区别
  2. 第二步 - 部署稳定币合约,学习ERC20代币标准
  3. 第三步 - 体验合约升级过程,理解可升级合约的重要性
  4. 第四步 - 使用多签钱包,理解多方协作的区块链应用

技术栈介绍

核心技术

  • 后端: Node.js, Express.js - 用于构建Web3钱包验证服务
  • 区块链开发: Solidity, Hardhat - 用于编写和部署智能合约
  • Web3库: ethers.js, web3.js - 用于与区块链交互
  • 前端: HTML, JavaScript - 用于构建用户界面
  • 测试框架: Hardhat内置测试工具 - 用于测试智能合约
  • 安全合约库: OpenZeppelin - 用于构建安全的智能合约

为什么选择这些技术?

  1. Node.js/Express.js - 简单易学,适合构建Web3应用的后端服务
  2. Solidity - 以太坊智能合约的标准编程语言
  3. Hardhat - 功能强大的开发环境,提供编译、测试、部署等全套工具
  4. ethers.js - 轻量级且功能完整的Web3库,易于集成到前端应用
  5. OpenZeppelin - 经过审计的合约库,提供安全的合约实现

常见问题解答

1. 我是区块链开发新手,应该从哪里开始?

建议从Web3钱包验证服务开始:

  1. 运行 node server.js 启动服务
  2. 访问 http://localhost:3000
  3. 使用MetaMask钱包进行地址验证体验

2. 需要安装哪些工具才能运行这个项目?

你需要安装:

  • Node.js (版本14或更高)
  • npm (通常随Node.js一起安装)
  • Git

3. 如何部署智能合约到本地测试网络?

每个合约目录下都有部署脚本:

# 进入合约目录
cd stablecoin
# 编译合约
npx hardhat compile
# 部署合约
npx hardhat run scripts/deploy.js --network local

4. 如何与部署的合约进行交互?

项目提供了HTML界面文件用于与合约交互:

  • stablecoin.html - 与稳定币合约交互
  • contract.html - 部署和调用合约
  • transaction.html - 查看代币活动记录

5. 什么是挑战-响应机制?

挑战-响应机制是一种安全的身份验证方法:

  1. 服务器生成一个唯一的挑战消息
  2. 用户使用私钥对挑战消息进行签名
  3. 服务器验证签名的有效性
  4. 如果验证通过,确认用户拥有该地址的私钥

这种方法确保用户不仅知道钱包地址,还拥有对应私钥,而无需转移任何资产。

6. 为什么使用可升级合约?

可升级合约允许在不迁移数据的情况下修复bug或添加功能:

  • 用户数据保存在代理合约中
  • 逻辑实现在逻辑合约中
  • 升级时只需部署新的逻辑合约
  • 通过OpenZeppelin的UUPS模式实现安全升级

7. 多签钱包有什么实际应用?

多签钱包在以下场景中非常有用:

  • 企业资金管理(需要多个授权人签名)
  • DAO组织资金管理
  • 交易所热钱包安全
  • 重要账户的安全保护

学习资源推荐

入门资料

进阶学习

贡献指南

欢迎任何形式的贡献!你可以:

  1. 提交bug报告
  2. 提交功能请求
  3. 创建pull request改进代码
  4. 完善文档

许可证

本项目采用MIT许可证。详情请见 LICENSE 文件。

联系方式

如有任何问题或建议,请通过以下方式联系:

  • 提交GitHub Issue
  • 发送邮件至项目维护者

About

本项目是一个功能丰富的区块链开发学习平台,专为初学者设计,包含Web3钱包验证服务、稳定币合约、可升级合约示例和多签钱包合约等组件。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors