从零开始,以太坊安装部署全指南
以太坊作为全球领先的智能合约平台和去中心化应用(DApps)的底层生态系统,吸引了无数开发者和用户,无论是想搭建自己的以太坊节点、运行测试网应用,还是参与网络验证,掌握以太坊的安装部署都是第一步,本文将为您提供一份详尽的以太坊安装部署全指南,帮助您顺利完成环境搭建。
部署前的准备工作
在开始安装部署之前,做好充分的准备可以让整个过程更加顺畅:
-
明确部署目标:
- 全节点(Full Node):存储以太坊区块链的所有数据,参与网络验证和同步,提供最高的数据完整性和独立性,对硬件要求较高。
- 归档节点(Archive Node):除了存储所有区块,还存储了所有历史状态数据,对存储空间要求极大,但能查询任何历史状态。
- 轻客户端(Light Client):只下载区块头,不存储完整数据,资源占用少,但功能有限。
- 私有链/测试网节点:用于开发和测试,不连接主网,资源消耗相对较小。 本文主要介绍全节点和测试网节点的部署。
-
硬件要求:
- CPU:多核64位处理器,建议Intel Core i5或同等及以上。
- 内存(RAM):至少8GB,推荐16GB或以上,全节点同步时内存占用较高。
- 存储(HDD/SSD):
- 全节点:当前主网数据大小已超过TB级别,且持续增长,建议至少2TB高速SSD(NVMe更佳)。
- 测试网:空间需求小,几十GB到几百GB SSD即可。
- 网络:稳定的宽带连接,建议带宽10Mbps以上,因为需要下载大量区块链数据并保持同步。
-
操作系统:
- Linux(推荐):如Ubuntu (20.04 LTS或22.04 LTS)、Debian等,以太坊客户端在Linux上通常性能最佳,稳定性也高。
- Windows:支持,但配置可能稍复杂,部分客户端功能可能受限。
- macOS:支持,Apple Silicon (M1/M2) 也已逐渐得到支持。 本文将以Ubuntu 20.04 LTS为例进行介绍,其他系统可参考类似步骤。
-
其他工具:
git:用于克隆客户端代码库。build-essential:编译工具链(如果从源码编译)。wget或curl:下载文件。
选择以太坊客户端
以太坊网络由多种客户端实现组成,它们遵循相同的以太坊规范(ETH2.0的信标链和ETH1.1的执行层),常见的选择包括:
- 执行层客户端 (负责处理交易和智能合约):
- Geth:最流行、历史最悠久的客户端之一,功能丰富,支持全节点、轻节点等,有较好的文档和社区支持。
- Nethermind:.NET Core实现,性能优秀,模块化设计。
- Besu:由ConsenSys开发,Java实现,支持EVM和标准以太坊,也支持一些企业级特性。
- Erigon:Go实现,注重性能和效率,采用不同的架构,正在 gaining popularity。
- 共识层客户端 (负责验证PoS区块和参与验证):
- Lodestar (TypeScript)
- Lodestar (Python - Prysm)
- Teku (Java)
- Nimbus (Nim)
- Prysm (Go)
对于初学者,Geth (执行层) + Lodestar/Prysm/ Teku (共识层) 是比较常见且文档相对齐全的组合,本文将以 Geth 为例介绍执行层部署,共识层部署相对独立,可后续根据需求添加。
以太坊客户端安装与部署 (以Geth为例)
安装依赖
打开终端,更新系统包列表并安装必要的依赖:
sudo apt update sudo apt upgrade -y sudo apt install -y build-essential git wget curl
下载并安装Geth
Geth提供了预编译的二进制文件,推荐直接下载安装,避免从源码编译的复杂性。
- 访问Geth官方GitHub Releases页面:https://github.com/ethereum/go-ethereum/releases
- 下载对应系统的最新稳定版:对于Ubuntu Linux 64位,下载
geth-alltools-linux-amd64-<version>-<commit>.这样的文件。tar.gz
- 使用wget下载(请替换为最新版本链接):
wget https://gethstore.blob.core.windows.net/builds/geth-alltools-linux-amd64-1.13.6-4c6963b5.tar.gz
- 解压:
tar -xvzf geth-alltools-linux-amd64-1.13.6-4c6963b5.tar.gz
- 移动到系统PATH:
sudo cp geth-alltools-linux-amd64-1.13.6-4c6963b5/geth /usr/local/bin/ sudo cp geth-alltools-linux-amd64-1.13.6-4c6963b5/rlp /usr/local/bin/ # 可选,RLP编码工具
- 验证安装:
geth version
如果显示版本信息,则安装成功。
初始化节点 (可选,对于私有链或特定网络)
如果您要运行一个私有链,或者需要为特定网络(如旧版测试网)初始化创世块,需要提供一个创世块JSON文件。
- 创建创世文件:创建
genesis.json。 - 初始化:
geth --datadir ./myethereumdata init genesis.json
这会在 ./myethereumdata 目录下创建必要的文件夹和初始状态。
启动以太坊节点
- 连接到主网 (Mainnet):
geth --datadir ./myethereumdata
首次启动会开始同步主网数据,这可能需要很长时间(几天到几周,取决于您的硬件和网络速度),同步期间,终端会显示同步进度。
-
常用启动参数:
--http:启用HTTP-RPC服务,默认端口8545,方便DApp连接。--http.addr "0.0.0.0":允许HTTP-RPC从任何IP访问(生产环境需谨慎,建议设置防火墙或白名单)。--http.api "eth,net,web3":指定开放的API接口。--ws:启用WebSocket-RPC服务,默认端口8546。--ws.addr "0.0.0.0":允许WebSocket-RPC从任何IP访问。--ws.api "eth,net,web3":指定开放的WebSocket API接口。--syncmode "full":设置同步模式,"full"为全节点同步(默认),"fast"为快速同步(已不推荐,新版本默认full),"light"为轻节点。--gcmode "full":垃圾回收模式,"full"为全节点保留,"archive"为归档节点(保留所有历史状态)。--cache 8192:设置缓存大小(MB),有助于提高同步速度,根据您的内存调整。
示例(启动主网节点,并开启HTTP-RPC):
geth --datadir ./myethereumdata --http --http.addr "0.0.0.0" --http.api "eth,net,web3"
-
连接到测试网 (如Sepolia):
以太坊有多个测试网,如Sepolia、Goerli (即将淘汰),连接到测试网可以快速同步,适合开发和测试。
geth --datadir ./testnetdata --sepolia --http --http.addr "0.0.0.0" --http.api "eth,net,web3"
--sepolia 参数指定连接到Sepolia测试网,测试网数据量小,同步通常很快。
节点管理
- 后台运行:使用
nohup或screen/tmux工具让节点在后台运行。 例如使用nohup:nohup geth --datadir ./myethereumdata --http --http.addr "0.0.0.0