添加以太坊官方 PPA

admin1 2026-03-01 6:21

从零开始:如何架设一个以太坊节点(完整指南)


以太坊作为全球第二大区块链网络,其去中心化的特性依赖于成千上万个独立运行的节点,架设一个以太坊节点,不仅是深入理解区块链工作原理的最佳途径,更是为整个网络的安全性和稳定性贡献自己的一份力量,无论你是开发者、爱好者,还是纯粹的技术极客,本指南都将带你一步步完成以太坊节点的架设。

为什么你要架设一个以太坊节点?

在开始之前,先明确一下目的,架设节点主要有以下几个好处:

  1. 数据自主权:你可以直接、无障碍地访问所有以太坊数据,无需依赖第三方服务商(如 Infura 或 Alchemy),确保数据的真实性和不可篡改性。
  2. 开发与测试:对于 DApp(去中心化应用)拥有一个本地节点可以极大地加快开发和测试速度,避免因调用公共节点而产生的延迟和费用。
  3. 网络贡献:每个节点都是以太坊网络的一个“心跳”,你的加入增强了网络的去中心化程度和抗审查能力。
  4. 学习与研究:亲手运行节点,是学习区块链底层技术、同步机制和共识算法最直观的方式。

架设节点前的准备工作

“工欲善其事,必先利其器”,在开始之前,请确保你具备以下条件:

硬件要求

  • CPU:现代多核处理器(如 4 核或以上)即可,但核心数越多,同步速度越快。
  • 内存至少 16GB RAM,推荐 32GB 或更多,这是同步和运行节点时最关键的瓶颈之一。
  • 存储至少 2TB 的高速 SSD(固态硬盘),以太坊的全链数据已经超过 2TB,并且还在持续增长,使用 SSD 可以显著提高同步速度和节点性能。强烈不建议使用 HDD,因为同步过程会极其漫长。
  • 网络稳定且带宽较高的宽带连接,建议上行和下行速度均不低于 50Mbps,节点需要持续下载和上传数据,网络不稳定会导致同步中断或速度缓慢。
  • 操作系统:推荐使用 Ubuntu 20.04 LTS04 LTS,这是以太坊官方最支持的系统,macOS 和其他 Linux 发行版也可以,但本指南将以 Ubuntu 为例。

软件要求

  • 一个可以远程连接服务器的工具,如 PuTTY (Windows)Terminal (macOS/Linux)
  • 基本的 Linux 命令行操作知识。

架设以太坊节点的两种主要方式

架设节点主要有两种方式:同步全节点运行归档节点

  • 全节点:它会下载并验证以太坊自创世以来的所有区块头,但默认只存储最近约 128,000 个区块的完整状态数据,这足以让你验证所有新区块和交易,它的存储需求相对较小(目前约 800GB+),但无法查询历史状态数据。
  • 归档节点:这是“完整”的节点,它会下载并存储所有历史区块的状态数据,这让你可以查询任何历史时间点的账户余额、合约代码等,优点是功能最全,缺点是存储需求巨大(当前已超过 6TB,且持续增长),同步和运行成本更高。

对于新手,我们推荐从同步全节点开始。

详细步骤:使用 Geth 客户端同步全节点

Geth 是以太坊官方最主流的客户端之一,功能强大,社区支持完善。

步骤 1:准备服务器

  1. 购买或准备一台符合上述硬件要求的服务器,并安装 Ubuntu 20.04/22.04 LTS 系统。
  2. 为服务器设置一个静态 IP 地址,并配置好防火墙,开放必要的端口(默认为 30303 TCP 和 UDP)。

步骤 2:连接服务器并更新系统

打开你的终端,使用 SSH 连接到你的服务器:

ssh your_username@your_server_ip

登录后,首先更新系统包列表:

sudo apt update && sudo apt upgrade -y

步骤 3:安装 Geth

我们通过 PPA(Personal Package Archive)来安装最新版的 Geth。

sudo apt update
# 安装 geth
sudo apt install -y ethereum

安装完成后,验证一下 Geth 是否安装成功:

geth version

你应该能看到 Geth 的版本信息。

步骤 4:启动并同步节点

这是最核心的一步,我们将使用 Geth 的命令行参数来启动节点。

geth --syncmode snap --http --http.addr 0.0.0.0 --http.port 8545 --http.vhosts "*"

让我们来解释一下这些参数的含义:

  • --syncmode snap快照同步,这是目前最快的同步方式,它会下载最新的状态数据,而不是从创世块一个一个地同步,能将同步时间从数月缩短到几天。
  • --http:启用 HTTP-RPC 服务,这允许你的其他应用(如 MetaMask、Remix)通过 HTTP API 与你的节点进行交互。
  • --http.addr 0.0.0.0:允许任何 IP 地址访问 HTTP 服务,在生产环境中,你应该将其限制为特定 IP(如 --http.addr "127.0.0.1")以提高安全性。
  • --http.port 8545:设置 HTTP 服务的端口号,这是默认端口。
  • --http.vhosts "*":允许所有主机访问 HTTP API,同样,出于安全考虑,生产环境应谨慎设置。

启动后,Geth 会开始下载区块数据,这个过程可能需要几天到一周甚至更长时间,具体取决于你的硬件和网络速度。 你会看到一个不断增长的区块高度和同步进度的界面。

步骤 5:后台运行与控制

直接在终端运行 Geth,一旦关闭 SSH 连接,节点就会停止,为了使其在后台持续运行,我们可以使用 screentmux 这样的工具。

  1. 安装 screen

    sudo apt install -y screen
  2. 创建一个新的 screen 会话

    screen -S geth-node
  3. 在 screen 会话中启动 Geth (输入和之前一样的启动命令)

    geth --syncmode snap --http --http.addr 0.0.0.0 --http.port 8545 --http.vhosts "*"
  4. detached 会话 按下 Ctrl + A,然后按 D,你就可以 detached(分离)这个会话,回到主终端,而 Geth 会在后台继续运行。

  5. 重新连接到会话 如果你想查看节点状态,可以使用以下命令重新连接:

    screen -r geth-node

    查看后,同样按 Ctrl + A + D 分离。

验证你的节点

节点同步一段时间后,你可以进行验证。

  1. 检查 Geth 控制台 在后台运行 Geth 的同时,你可以打开一个新的 SSH 连接,进入 Geth 的 JavaScript 控制台:

    geth attach http://localhost:8545

    在控制台中,输入以下命令:

    eth.syncing
    • 如果返回 false,表示节点已经同步完成。
    • 如果返回一个对象,表示节点仍在同步,对象中的 currentBlockhighestBlock 可以帮你了解进度
      随机配图
  2. 连接到钱包 在 MetaMask 或其他钱包中,将网络切换到“自定义网络”。

    • 网络名称:可以填写 "My Ethereum Node"。
    • RPC URL:填写 http://<你的服务器IP>:8545
    • 链 ID1 (以太坊主网)。
    • 符号ETH

    连接成功后,你的钱包就会直接与你自己架设的节点通信,享受无延迟、无限制的数据访问。

高级选项:运行归档节点

如果你有足够的存储空间(8TB+ SSD)和时间,并且需要查询所有历史数据,可以运行归档节点,启动命令稍有不同:

# 在 screen 会话中启动
geth --syncmode full --gcmode full --http --http.addr 0.0.0.0 --http.port 8545
  • --syncmode full:使用传统的全同步模式。
  • --gcmode full

本文转载自互联网,具体来源未知,或在文章中已说明来源,若有权利人发现,请联系我们更正。本站尊重原创,转载文章仅为传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如其他媒体、网站或个人从本网站转载使用,请保留本站注明的文章来源,并自负版权等法律责任。如有关于文章内容的疑问或投诉,请及时联系我们。我们转载此文的目的在于传递更多信息,同时也希望找到原作者,感谢各位读者的支持!
最近发表
随机文章
随机文章