以太坊作为全球领先的智能合约平台,为去中心化应用(DApps)的开发提供了强大的基础设施,想要踏入以太坊开发的世界,首先需要搭建一个本地开发环境,本教程将带你一步步完成以太坊开发环境的搭建,无论你是编程新手还是有经验的开发者,都能跟着顺利完成。
准备工作
在开始之前,请确保你的计算机满足以下基本要求:
- 操作系统:推荐使用 Windows 10/11、macOS (10.14+) 或 Linux (Ubuntu 18.04+ 本教程将以 Ubuntu 为例进行演示,其他系统类似)。
- 硬件:
- CPU:双核及以上处理器。
- 内存:至少 8GB RAM,推荐 16GB 或以上,因为运行节点和编译合约会占用较多资源。
- 硬盘:至少 50GB 可用空间,用于安装软件和存储区块链数据。
- 网络:稳定的互联网连接,用于下载软件包和同步区块链数据(可选,取决于是否运行全节点)。
- 基础工具:
- Git:用于从代码仓库克隆代码。
- Node.js 和 npm:JavaScript 运行时环境和包管理器,用于安装 Truffle, Hardhat 等开发框架。
- Python:某些工具依赖 Python,建议安装 Python 3.x。
- VS Code:一款流行的代码编辑器,推荐安装 Solidity 插件。
安装基础工具
安装 Git
- Ubuntu/Debian:
sudo apt update sudo apt install git
- macOS (使用 Homebrew):
brew install git
- Windows:从 Git 官网 下载并安装。
安装完成后,验证:
git --version
安装 Node.js 和 npm
- Ubuntu/Debian:
sudo apt update sudo apt install nodejs npm
注意:某些情况下,系统自带的 Node.js 版本可能较旧,建议使用 NodeSource 仓库安装较新版本。
- macOS (使用 Homebrew):
brew install node
- Windows:从 Node.js 官网 下载 LTS 版本并安装。
安装完成后,验证:
node -v npm -v
安装 Python (可选,但推荐)
- Ubuntu/Debian:
sudo apt install python3 python3-pip
- macOS (通常已预装):
python3 --version
- Windows:从 Python 官网 下载并安装,安装时勾选 "Add Python to PATH"。
安装 VS Code 及 Solidity 插件
- 下载并安装 VS Code。
- 打开 VS Code,进入扩展商店 (Ctrl+Shift+X 或 Cmd+Shift+X),搜索 "Solidity",由 Juan Blanco 发布的官方插件或相关高评分插件并安装。
安装以太坊客户端 (Geth - Go-Ethereum)
Geth 是最常用的以太坊客户端之一,用于与以太坊网络交互,运行节点等。
- Ubuntu/Debian:
sudo apt install software-properties-common sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt update sudo apt install geth
- macOS (使用 Homebrew):
brew tap ethereum/ethereum brew install geth
- Windows:
- 访问 Geth 官网下载页面。
- 适用于 Windows 的二进制文件 (如
geth-windows-amd64-1.x.x.x.zip)。 - 下载并解压,将
geth.exe所在路径添加到系统环境变量 PATH 中。
验证安装:
geth version
安装开发框架 (Truffle 或 Hardhat)
开发框架可以大大简化智能合约的编写、测试、部署和管理流程,这里我们以 Truffle 为例进行介绍。
- 安装 Truffle:
npm install -g truffle
-g表示全局安装,方便在任意项目中使用。
验证安装:
truffle version
*(可选)Hardhat 安装**: Hardhat 是另一个流行的以太坊开发环境,以其强大的插件系统和调试功能著称。
npm install --global hardhat
验证安装:
```bash
npx hardhat --version
```
创建第一个以太坊项目
-
创建项目目录:
mkdir my-ethereum-project cd my-ethereum-project
-
初始化 Truffle 项目:
truffle init
这会创建一些标准目录结构,如
contracts/(存放智能合约)、migrations/(部署脚本)、test/(测试文件)等。 -
(可选)如果使用 Hardhat 初始化项目:
npx hardhat
然后按照提示选择 "Create a basic sample project"。
启动私有测试链 (使用 Geth)
为了不影响主网,并且无需消耗真实 ETH,我们通常在本地运行一个私有测试链。
-
初始化创世区块: 在项目目录下创建一个文件,
genesis.json如下:{ "config": { "chainId": 15, // 自定义链ID,确保唯一性 "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty": "0x4000", "gasLimit": "0xffffffff", "alloc": { "7a5b7d3f5b2e4c8a9d0f1e2d3c4b5a6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2": { // 替换成你自己的以太坊地址,可以通过 geth account new 创建 "balance": "0x200000000000000000000000000000000000000000000000000000000000000" } } } -
创建账户 (如果还没有):
geth --datadir ./data account new
按照提示输入密码,记住这个密码,后续启动节点会用到,这会创建一个新账户,并返回地址,将地址填入
genesis.json的alloc部分。 -
启动私有节点:
geth --datadir ./data --networkid 15 --nodiscover --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpccorsdomain "*" --rpcapi "eth,net,web3,personal" --unlock 0 --password <密码文件路径或直接输入密码>
--datadir ./data: 指定数据存储目录。--networkid 15: 使用与创世区块配置相同的链ID。--nodiscover: 不自动发现其他节点,因为是私有链。--rpc: 启动 RPC 服务,方便 DApp 或其他工具连接。--rpcaddr "0.0.0.0": 允许任何 IP 访问 RPC 服务(开发环境使用,生产环境需谨慎)。--rpcport 8545: RPC 服务端口,默认 8545。--rpccorsdomain "*": 允许任何来源的 CORS 请求(开发环境使用)。--rpcapi "eth,net,web3,personal": 暴露的 RPC API。--unlock 0: 解锁第一个账户(索引为 0 的账户)。--password: 指定密码文件路径或直接输入密码。
启动后,Geth 会开始同步创世区块,你可以看到类似
Successfully sealed new block的日志,表示私有链正在运行。
部署智能合约
编