在去中心化的世界里,运行一个以太坊节点意味着你成为了一个独立验证网络交易和状态的全参与者,无论是开发者进行DApp测试,还是希望深入参与以太坊生态的爱好者,亦或是看重数据主权和隐私的用户,安装并运行自己的以太坊节点都是一项非常有价值的技能,本文将以主流的执行客户端Geth为例,为你详细介绍在Linux(以Ubuntu为例)和macOS系统上安装以太坊节点的步骤。
为什么需要运行以太坊节点?
在开始安装之前,了解运行节点的好处能让你更有动力:
- 数据自主与隐私:所有数据都存储在你自己的设备上,无需依赖第三方服务商。
- 完全控制:你可以直接与以太坊网络交互,例如发送交易、部署合约,而无需通过中间API。
- 开发与测试:对于开发者来说,拥有一个本地节点是开发和测试DApp的理想环境,可以避免测试网的拥堵和限制。
- 支持网络:每个节点都是以太坊网络去中心化的重要组成部分,越多节点运行,网络越健壮。
- 探索与分析:你可以直接查询链上数据,进行各种自定义分析。
准备工作
在开始安装之前,请确保你的系统满足以下基本要求:
- 硬件:
- CPU:现代多核处理器(推荐Intel i5或同等及以上)。
- 内存:至少8GB RAM,建议16GB或以上,尤其是同步主网时。
- 存储:SSD固态硬盘是必须的!主网数据目前已有数TB大小,并且持续增长,建议至少有1TB可用空间,推荐2TB或更多。
- 网络:稳定的互联网连接,建议带宽越高越好,因为同步和运行节点会持续上传和下载数据。
- 软件:
- Linux (Ubuntu 20.04/22.04 LTS 或其他主流发行版) 或 macOS (10.15 Catalina 或更高版本)。
- 基本的命令行操作知识。
- 如果选择同步主网,需要有足够的耐心和持续的电力/存储支持。
安装步骤 (以Geth为例)
Geth是以太坊最流行的执行客户端之一,这里我们介绍如何安装Geth并启动一个全节点。
(一) 在Linux (Ubuntu) 上安装
-
更新系统包列表 打开终端,运行:
sudo apt update sudo apt upgrade -y
-
安装必要依赖
sudo apt install -y build-essential unzip
-
下载Geth 访问 Geth官方GitHub Releases页面 获取最新版本的下载链接,以下以最新版本为例(请替换为实际最新版本号):
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.7-4e589ca4.tar.gz
如果上述链接失效,请去GitHub页面找对应的Linux amd64版本。
-
解压Geth
tar -xvf geth-linux-amd64-1.13.7-4e589ca4.tar.gz cd geth-linux-amd64-1.13.7-4e589ca4
-
移动Geth到系统PATH
sudo cp geth /usr/local/bin/
-
验证安装
geth version
如果看到版本信息,说明安装成功。
(二) 在macOS上安装
macOS上安装Geth最简单的方式是使用Homebrew。
-
安装或更新Homebrew 如果尚未安装Homebrew,打开终端运行:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
如果已安装,请更新:
brew update
-
安装Geth
brew install geth
-
验证安装
geth version
启动以太坊节点
安装完成后,就可以启动节点了,根据你的需求,可以选择不同的同步模式:
-
首次启动与同步 最简单的方式是直接运行
geth命令:geth
这将以默认配置启动节点,并开始同步以太坊主网的所有数据。注意:这个过程非常耗时,可能需要数天甚至数周,具体取决于你的网络速度和硬盘性能,同步期间,终端会显示同步进度。
-
指定数据目录 为了避免数据散落在系统各处,建议指定一个专门的数据目录:
geth --datadir ~/ethereum-node
-
选择同步模式 Geth提供了几种同步模式,以平衡速度和资源消耗:
--syncmode full(默认):同步所有区块和状态,成为全节点,最完整,但资源消耗最大。--syncmode snap(推荐):快速同步模式,先下载最新的状态数据,然后同步新区块,速度比full快很多,是目前大多数用户的选择。--syncmode light:轻节点模式,不下载所有状态数据,依赖其他全节点,资源消耗小,但功能受限。
使用snap模式启动:
geth --datadir ~/ethereum-node --syncmode snap
-
后台运行节点 如果你希望节点在后台持续运行,可以使用
nohup命令结合&:nohup geth --datadir ~/ethereum-node --syncmode snap > geth.log 2>&1 &
