允许SSH连接 如果你需要远程管理)
从零开始:手把手教你搭建以太坊节点**

在去中心化的世界里,运行一个以太坊节点不仅是参与网络、支持区块链安全与可验证性的重要方式,更是深入理解区块链工作机制、进行应用开发或数据分析的基础,本文将为你详细介绍如何在主流操作系统上搭建一个以太坊节点,涵盖从准备工作到运行维护的全过程。
为什么需要运行以太坊节点?
在开始之前,我们先明确一下运行以太坊节点的意义:
- 数据自主与可验证性:无需信任第三方服务商,你可以直接获取和验证以太坊网络上的所有数据,确保数据的真实性和完整性。
- 支持网络健康:每个节点都是以太坊网络的重要组成部分,更多的节点意味着网络更去中心化、抗审查能力更强、交易广播更高效。
- 开发与测试:对于DApp开发者来说,运行自己的测试节点是开发和调试智能合约的必备条件。
- 参与网络治理:某些以太坊协议的升级或治理投票可能需要节点操作者参与。
- 数据获取与分析:研究人员或分析师可以通过自己的节点获取原始数据进行研究。
以太坊节点的类型
在搭建之前,你需要选择适合自己的节点类型,以太坊主要有以下几种节点类型:
-
全节点 (Full Node):
- 特点:存储以太坊区块链上的所有数据,包括所有区块、交易和状态,它可以独立验证所有交易和区块,并与网络其他节点完全同步。
- 优点:功能最全面,数据最完整,支持所有以太坊协议功能。
- 缺点:对硬件(尤其是存储空间)要求最高,同步时间较长。
- 存储需求:截至2024年初,以太坊主网数据已超过TB级别,并且持续增长,需要大容量硬盘(建议1TB以上SSD,并预留未来扩展空间)。
-
归档节点 (Archive Node):
- 特点:是全节点的超集,除了存储所有当前数据外,还会存储历史状态数据(即每个区块对应的状态根)。
- 优点:可以查询任何历史区块的完整状态,对于需要历史数据分析的应用或研究至关重要。
- 缺点:对存储空间要求极高(目前可能需要数TB甚至更多),同步和数据维护时间更长。
-
精简节点 (Pruned Node) / 快速同步节点 (Fast Sync Node):
- 特点:这是目前大多数全节点采用的一种同步方式(如Geth的--syncmode=fast),它首先下载区块头,然后同步最新的状态数据,最后下载历史区块体,相比全同步,它更快且占用更少存储空间,但早期历史状态数据可能不完整。
- 优点:同步速度快,存储需求相对全节点较小(但仍需数百GB到1TB+)。
- 缺点:无法查询到同步点之前的历史完整状态。
-
轻节点 (Light Node):
- 特点:只下载区块头,并通过与全节点的交互来获取特定交易或状态的信息,不存储全部数据。
- 优点:对硬件要求极低,适合移动设备或资源受限环境。
- 缺点:依赖其他全节点获取数据,安全性相对较低,功能有限。
对于大多数希望深度参与网络和支持完整功能的用户来说,运行一个全节点(采用快速同步模式)是首选,本文将以快速同步的全节点为例进行介绍。

搭建以太坊节点的准备工作
-
硬件要求:
- CPU:多核64位处理器,建议Intel i5或同等及以上性能。
- 内存 (RAM):至少8GB,推荐16GB或以上,尤其是在运行其他服务或进行开发时。
- 存储:
- 类型:强烈推荐使用SSD(固态硬盘),能显著提高同步和查询速度。
- 容量:主网至少1TB可用空间,归档节点需要数TB,考虑到数据增长,建议预留更大空间。
- 网络:稳定、可靠的网络连接,带宽建议10Mbps以上,且能长期保持在线,节点需要与网络其他节点持续通信。
-
操作系统:
- Linux (推荐):如Ubuntu Server (20.04 LTS 或 22.04 LTS),稳定性好,资源占用相对较低,是运行节点的首选。
- Windows:也可以运行,但配置可能稍复杂,性能和稳定性通常不如Linux。
- macOS:支持,但Apple Silicon (M1/M2) 和 Intel 芯片配置略有不同。
-
软件工具:
- 以太坊客户端软件:最常用的有 Geth (Go语言编写,功能全面,用户多)、Prysm (Python/Go,专注PoS,常作为验证者客户端)、Lodestar (Node.js,专注PoS)、Nethermind (.NET) 等,本文将以 Geth 为例进行讲解,因为其全节点功能最为成熟和广泛使用。
- 终端/命令行工具。
- (可选)防火墙配置工具。
以太坊节点搭建步骤 (以 Geth 为例,Ubuntu 为例)

安装 Geth
-
更新系统包:
sudo apt update sudo apt upgrade -y
-
安装依赖:
sudo apt install -y build-essential unzip
-
下载 Geth: 访问 Geth 官方 GitHub Releases 页面 获取最新稳定版的下载链接,假设最新版本是
13.6:wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.6-4e8c994e.tar.gz
-
解压:
tar -xvf geth-linux-amd64-1.13.6-4e8c994e.tar.gz
-
移动到系统路径 (可选但推荐):
sudo mv geth-linux-amd64-1.13.6-4e8c994e/geth /usr/local/bin/
-
验证安装:
geth version
如果看到版本信息,则安装成功。
配置节点与启动同步
-
创建数据目录: 用于存放区块链数据,建议放在大容量硬盘上。
mkdir -p ~/ethereum/mainnet
-
启动 Geth 进行同步: 基本启动命令如下:
geth --datadir ~/ethereum/mainnet --syncmode fast --http --http.addr "0.0.0.0" --http.port "8545" --http.vhosts "*" --ws --ws.addr "0.0.0.0" --ws.port "8546" --ws.origins "*"
参数解释:
--datadir ~/ethereum/mainnet:指定数据存储目录。--syncmode fast:使用快速同步模式。--http --http.addr "0.0.0.0" --http.port "8545" --http.vhosts "*":启用HTTP-RPC服务,允许局域网内或特定IP访问(0.0.0表示所有接口,生产环境请注意安全限制)。--ws --ws.addr "0.0.0.0" --ws.port "8546" --ws.origins "*":启用WebSocket-RPC服务,方便Web应用连接。
-
首次启动: 执行上述命令后,Geth会开始连接到以太坊网络,并开始快速同步,这个过程可能需要数天到数周时间,具体取决于你的网络带宽和硬盘速度,期间你会看到同步进度(如"Block X/Y"或"Syncing XXX%")。
配置防火墙 (可选但推荐)
为了安全,你应该只开放必要的端口(如HTTP-RPC的8545,WebSocket的8546)给特定IP,或者只允许本地访问。
使用UFW (Uncomplicated Firewall):
# 允许本地访问HTTP-RPC sudo ufw allow from 127.0.0.1 to any port 8545 # 允许本地访问WebSocket sudo ufw allow from 127.0.0.1 to any port 8546 # 如果需要局域网内其他设备访问,可以允许特定IP段,