:2026-04-01 22:09 点击:1
从零开始:如何架设一个以太坊节点(完整指南)
以太坊作为全球第二大区块链网络,其去中心化的特性依赖于成千上万个独立运行的节点,架设一个以太坊节点,不仅是深入理解区块链工作原理的最佳途径,更是为整个网络的安全性和稳定性贡献自己的一份力量,无论你是开发者、爱好者,还是纯粹的技术极客,本指南都将带你一步步完成以太坊节点的架设。
在开始之前,先明确一下目的,架设节点主要有以下几个好处:
“工欲善其事,必先利其器”,在开始之前,请确保你具备以下条件:
硬件要求
软件要求
架设节点主要有两种方式:同步全节点 和 运行归档节点。
对于新手,我们推荐从同步全节点开始。
Geth 是以太坊官方最主流的客户端之一,功能强大,社区支持完善。
步骤 1:准备服务器
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 连接,节点就会停止,为了使其在后台持续运行,我们可以使用 screen 或 tmux 这样的工具。
安装 screen
sudo apt install -y screen
创建一个新的 screen 会话
screen -S geth-node
在 screen 会话中启动 Geth (输入和之前一样的启动命令)
geth --syncmode snap --http --http.addr 0.0.0.0 --http.port 8545 --http.vhosts "*"
detached 会话
按下 Ctrl + A,然后按 D,你就可以 detached(分离)这个会话,回到主终端,而 Geth 会在后台继续运行。
重新连接到会话 如果你想查看节点状态,可以使用以下命令重新连接:
screen -r geth-node
查看后,同样按 Ctrl + A + D 分离。
节点同步一段时间后,你可以进行验证。
检查 Geth 控制台 在后台运行 Geth 的同时,你可以打开一个新的 SSH 连接,进入 Geth 的 JavaScript 控制台:
geth attach http://localhost:8545
在控制台中,输入以下命令:
eth.syncing
false,表示节点已经同步完成。currentBlock 和 highestBlock 可以帮你了解进度。连接到钱包 在 MetaMask 或其他钱包中,将网络切换到“自定义网络”。
http://<你的服务器IP>:8545。1 (以太坊主网)。ETH。连接成功后,你的钱包就会直接与你自己架设的节点通信,享受无延迟、无限制的数据访问。
如果你有足够的存储空间(8TB+ SSD)和时间,并且需要查询所有历史数据,可以运行归档节点,启动命令稍有不同:
# 在 screen 会话中启动 geth --syncmode full --gcmode full --http --http.addr 0.0.0.0 --http.port 8545
--syncmode full:使用传统的全同步模式。--gcmode full本文由用户投稿上传,若侵权请提供版权资料并联系删除!