本文详细介绍了以太坊节点和客户端的概念,重点讲解了如何安装和运行Geth客户端,包括硬件要求、安装方法、配置标志等内容。
以太坊节点是参与以太坊区块链网络的计算机。这些节点是实际运行软件的计算机,这些软件验证、存储,有时还会创建区块。实际的软件被称为“客户端”,它允许我们使用 JSON-RPC API 与区块链进行交互,解析和验证区块链,并读取或写入智能合约。
以太坊正在吸引比以往更多的开发者。随着以太坊的采用率增长,行业内涌现了多种以太坊客户端。Nethermind、Aleth、Geth 和 Trinity 是以太坊基金会编写和维护的官方库。同时,Parity(现称为 OpenEthereum)和 Hyperledger Besu 是两个最受欢迎的第三方客户端。
Geth 是当今最受欢迎的以太坊客户端。它的目标是成为最快、最轻量且最安全的以太坊客户端。它是用 Go 编程语言编写的,由一组核心的以太坊基金会开发者和其他贡献者维护。在本文中,我们将学习如何运行一个 Geth 节点。
使用 Geth 有很多原因,但我们最喜欢的原因包括:
Geth 是以太坊基金会提供的官方客户端软件。
附带一个 JavaScript 控制台(使用 geth console
运行)。
具有可互操作的 JavaScript 客户端(web3js)。
内置访问 Rinkeby 测试网络(或构建你自己的私有以太坊网络)。
它通常被认为是其他以太坊节点的参考实现。
运行以太坊主网节点需要大量的计算资源,因为下载区块链和验证区块需要大量的 CPU 和磁盘资源。
要运行一个全节点,我们建议的基本硬件配置包括多核 CPU、至少 8GB 内存,以及本地挂载的至少 500GB 空闲空间的 SSD 驱动器。此外,良好的网络连接始终是一个不可妥协的因素。
注意: 你可以使用挂载的驱动器,但可能会遇到奇怪的性能问题,例如区块丢失或同步缓慢。
通过使用缓存功能,可以提升节点性能,告诉 Geth 从内存而不是磁盘访问状态,指定 --cache
标志。这将需要你拥有与区块链状态大小相当的额外 RAM 存储空间,超过 8GB。这意味着你应该升级到 16GB 甚至 32GB 的内存。
随着区块链的增长,存储需求每天都在增加,撰写本指南时最昂贵的存储需求是运行启用 Fat DB 的存档节点,超过 4TB。
我们可以在多种系统和多种方式下安装 Geth;以下是标准方法的快速入门:
使用包管理器安装
macOS
在 macOS 上,可以通过使用 go-ethereum 的 Homebrew tap 轻松安装 Geth:
$ brew tap ethereum/ethereum
$ brew install ethereum
要安装 master 分支,使用 --devel 参数:
$ brew install ethereum --devel
然后,abigen, bootnode, checkpoint-admin, clef, devp2p, ethkey, evm, faucet, geth, p2psim, puppeth, rlpdump, 和 wnode 命令将在你的系统上的 /usr/local/bin/ 目录中可用。
要查找不同的命令,请使用:
$ geth --help.
Linux/Ubuntu
内置的 launchpad PPA(个人包管理器)是在基于 Ubuntu 的系统上安装 go-ethereum 的最简单方法,支持的 Ubuntu 版本包括 trusty, xenial, zesty 和 artful。
要启用 go-ethereum 的 launchpad 仓库,请运行:
$ sudo add-apt-repository -y ppa:ethereum/ethereum
然后安装稳定版本的 go-ethereum:
$ sudo apt-get update
$ sudo apt-get install ethereum
或者安装开发版本:
$ sudo apt-get update
$ sudo apt-get install ethereum-unstable
然后,abigen, bootnode, clef, evm, geth, puppeth, rlpdump, 和 wnode 命令将在你的系统上的 /usr/bin/ 目录中可用。
要查找不同的命令,请使用:
$ geth --help.
Windows
在 Windows 上安装和运行 geth 的最快和最简单的方法是下载预编译的二进制文件,从这里下载。该页面有一个安装程序以及一个 .zip 文件;安装程序会自动将 geth 放入你的 PATH 中,而 .zip 文件包含可以直接运行的 .exe 文件,无需运行安装程序。
使用 Docker 安装 Geth
Geth 团队还维护了四个不同的 docker 镜像,用于运行最新稳定版或开发版的 Geth。
ethereum/client-go:latest 是 Geth 的最新开发版本
ethereum/client-go:stable 是 Geth 的最新稳定版本
ethereum/client-go:{version} 是特定版本号的 Geth 稳定版本
ethereum/client-go:release-{version} 是特定版本系列的最新稳定版本
要使用 docker 安装 Geth 客户端,请运行:
$ docker pull ethereum/client-go:latest
$ docker run ethereum/client-go:latest
该镜像自动暴露以下端口:
8545 TCP,用于基于 HTTP 的 JSON RPC API
8546 TCP,用于基于 WebSocket 的 JSON RPC API
30303 TCP 和 UDP,用于运行网络的 P2P 协议
30304 UDP,用于 P2P 协议的新对等节点发现覆盖
注意: 如果你在 docker 容器内运行以太坊客户端,你可能希望挂载一个数据卷作为客户端的数据目录(位于容器内的 /root/.ethereum),以确保下载的数据在重启和/或容器生命周期之间得以保留。
经过多次尝试和磨难,我们找到了一个运行良好的配置,愿意分享。我们在下一节中有一些额外的标志解释,但这是一组帮助我们在有限数量的机器上每月处理数十亿请求的标志:
$ geth --http.api eth,web3,net,txpool --ws --ws.api eth,web3,net,txpool
注意:在 The Merge 之后,必须同时运行执行和共识客户端才能运行节点。这将要求你启用 --authrpc.jwtsecret 标志并传入你的 JWT 密钥的路径。
以下是一些 Geth 的标志配置:
$ geth --help
$ geth --http
--datadir={pathtodirectory}
--mine
--ws
--txpool.locals value
--rpc.txfeecap value
--rpc.gascap value
--txlookuplimit value
--txpool.journal "" # 本地交易的磁盘日志,以便在节点重启后存活(默认值:"transactions.rlp")
--cache 2048 # 分配给内部缓存的内存(单位:MB)(默认值:1024)
--unlock value
--ipcdisable
--syncmode value
--metrics
--txpool.accountslots 32 # 每个账户保证的最小可执行交易槽数(默认值:16)
--txpool.globalslots 8192 # 所有账户的最大可执行交易槽数(默认值:4096)
--txpool.accountqueue 128 # 每个账户允许的最大非可执行交易槽数(默认值:64)
--txpool.globalqueue 2048 # 所有账户的最大非可执行交易槽数(默认值:1024)
了解更多标志配置和命令,请访问这里。
运行节点有助于使以太坊网络更具弹性。更多的独立节点,更好的去中心化。我们在 QuickNode 为数百名客户运行节点。如果你在按照本教程的步骤操作时遇到任何问题,请告诉我们。我们随时乐意提供帮助!!
你可以通过获取我们的 QuickNode geth 节点来跳过整个过程。
订阅我们的新闻通讯以获取更多关于以太坊的文章和指南。如果你有任何反馈,请随时通过 Twitter 与我们联系,如果你有任何问题,你可以通过我们的 Discord 社区服务器与我们聊天,谢谢 :)
让我们知道 如果你有任何反馈或新主题的请求。我们很乐意听取你的意见。
- 原文链接: quicknode.com/guides/inf...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!