深度了解 | 以太坊节点和客户端的多样性

本文深入探讨以太坊节点的种类,包括全节点、轻节点和归档节点,以及它们的不同作用。全节点存储完整的区块链数据并参与验证,轻节点依赖全节点但能验证数据有效性,归档节点保存所有历史状态。此外,文章介绍了以太坊的执行客户端(如Geth、OpenEthereum、Nethermind、Hyperledger Besu、Erigon)和共识客户端,强调多样化的节点对网络健康的重要性。运行自己的节点可以增强安全性,同时对网络也有益处。
摘要由CSDN通过智能技术生成

什么是节点和客户端

节点是运行以太坊客户端软件的计算机。也就是说用户需要在设备上有一个应用程序,即所谓的客户端,来运行节点。以太坊客户端可以验证每个区块中的所有交易,保持网络安全和数据准确。在合并之前,运行一个全节点需要一个软件(或两个来运行一个挖矿节点)。在合并之后,需要两个客户端软件来运行一个全节点(三个来运行一个验证节点)。一个来处理和传输交易(执行客户端),一个来处理区块传输和分叉选择(共识客户端)以及一个可选的验证客户端,用于处理区块生产和对从同类型节点接收到的区块进行“投票”。

许多以太坊执行客户端和共识客户端存在于多种编程语言中,例如 Go、Rust、JavaScript、Typescript、Python、C#.NET、Nim 和 Java。这些客户端共同点是都遵循同一个规则,并影响以太坊网络和区块链功能运行方式。

节点类型

事实上,客户端可以运行 3 种不同类型的节点——轻节点(light)、全节点(full)和归档节点(archive)。

全节点

全节点是拥有完整区块链帐本资料的节点,具备独立验证的能力来确认交易之有效性。主要在处理下列四件事:

  • 存储完整的区块链数据。

  • 参与区块验证,验证所有区块和状态。

  • 所有状态都可以从全节点导出。

  • 提供网络服务,并根据请求提供数据。

轻节点

轻节点不是下载每个区块,而是下载区块头(block headers)。这些标头仅包含有关区块内容的概括信息。以太坊目前还不支持大量的轻节点,但轻节点支持是一个有望在不久的将来快速发展的领域。

  • 轻节点所需的任何其他信息都从全节点请求。

  • 轻节点可以根据区块头中的状态根独立验证数据的有效性。

  • 轻节点使用户能够参与以太坊网络,而无需强大的硬件或运行全节点所需的高带宽。

  • 轻节点可能会在手机或嵌入式设备上运行。轻节点不参与共识(即它们不能是矿工/验证者),但它们可以使用与全节点相同的功能访问以太坊区块链。

归档节点

归档节点是在全节点的基础之上,额外储存了每个区块高度的区块状态,包括个人帐户与合约帐户之当时余额等信息,即针对每个区块高度当下的状态进行快照并存档。

  • 存储保存在全节点中的所有内容,并建立历史状态的存档。如果你想查询#4,000,000区块的账户余额,或者简单而可靠地测试你自己的交易数据集,而不使用OpenEthereum挖掘它们,则需要此功能。

  • 这些数据以兆兆字节(terabytes)为单位,这使得归档节点对普通用户的吸引力不大,但对于区块浏览器、钱包供应商和区块链分析等服务来说却很方便。

为什么要运行以太坊节点?

对个人的好处

运行自己的节点能够以真正私有、自给自足和去信任的方式使用以太坊。无需信任网络,自行通过客户端验证数据。“Don't trust, verify”就是一个非常受欢迎的流行区块链口号。

  • 节点会根据共识规则自行验证所有交易和区块。这意味着不必依赖网络中其它节点,也不必完全信任他们。

  • 不必将地址和余额泄露给随机节点。一切都可以通过自己的客户端核实。

  • 如果使用自己的节点,Dapp可以更加安全和私密,Metamask,MyEtherWallet和其他一些钱包可以轻松地指向本地节点。

  • 使用自己的节点可以编写自定义的 RPC 端点。

  • 可以使用Inter-process Communications (IPC) 连接到自己的节点或重写节点以插件的形式加载你的程序。这提供了低延迟,这对于尽可能快地替换你的交易(即抢先交易)是必需的。

对网络的好处

多样化的节点对以太坊的健康、安全和运行弹性非常重要。

  • 它们为依赖于区块链数据的轻节点提供访问区块链数据的机会。 在使用高峰期,需要有足够多的全节点来帮助轻节点同步。轻节点不存储整个区块链,而是通过区块头中的状态根来验证数据。如果需要的话,它们可以从区块中请求更多的信息。

  • 全节点强制执行PoW共识机制,它们不接受不遵循规则的区块。这为网络提供了额外的安全性,因为如果所有节点都是轻节点,不进行全面验证,区块生产者可能会攻击网络,例如创建奖励更高的区块。

如果运行全节点,整个以太坊网络都会从中受益。

执行客户端(原ETH1客户端)

以太坊社区维护着多个开源执行客户端(以前称为“Eth1 客户端”,或简称为“以太坊客户端”),由不同团队使用不同的编程语言开发。这使得网络更强大和多样化。理想的目标是在没有任何客户端主导的情况下实现多样性,以减少任何单点故障。

(1)Go Ethereum(简称Geth)是以太坊协议的原始实现之一。目前,它是受众最广泛的客户端,拥有最大用户群,为用户和开发者提供各种工具。它是用Go语言编写,完全开源,并采用GNU LGPL v3授权。

(2)OpenEthereum是一个快速、功能丰富的以太坊客户端,提供快速可靠的服务所需基础架构,这些服务需要快速同步和最大限度的运行时间。注意:OpenEthereum已被弃用,不再进行维护。最好切换到另一个客户端实现。

(3)Nethermind是基于C#.NET技术栈创建的以太坊实现,可在包括ARM在内的所有主流平台上运行。它提供了强大的性能:

  • 性能优化的虚拟机。

  • 状态访问。

  • 网络和丰富的功能,如Prometheus/Graphana仪表盘、seq企业日志支持、JSON RPC追踪和分析插件。

Nethermind也拥有详细的文档,强大的开发支持,在线社区以及为高级用户提供全天候支持。

(4)Hyperledger Besu是一个用于公共网络和许可网络的企业级以太坊客户端。它运行所有以太坊主网功能,从追踪到GraphQL,具有广泛的监控,并由ConsenSys支持,无论是在开放的社区渠道还是通过企业的商业SLA。它是用Java编写的,并获得Apache 2.0许可。Hyperledger Besu是一个以Apache 2.0许可开发并以Java编写的开源以太坊客户端。它运行在以太坊公共网络,专用网络以及测试网络(如Rinkeby,Ropsten和Grli)上。Besu实施工作量证明(Ethash)和权限证明(IBFT 2.0和Clique)共识机制。

(5)Erigon(原Turbo‐Geth)是Go以太坊的一个分叉,以速度和磁盘空间效率为目标。Erigon是一个完全重新架构的以太坊实现,目前用Go编写,但计划用其他语言实现。Erigon的目标是提供更快、更模块化、更优化的以太坊实现。它可以在3天内使用不到2TB的磁盘空间执行完全归档节点同步。

共识客户端(原ETH2客户端)

有多个共识客户端(以前称为“ETH2”客户端)来支持共识升级。它们正在运行Beacon Chain,并将在合并后向执行客户端提供权益证明共识机制。

客户端

语言

操作系统

网络

Teku

Java

Linux,Windows,macOS

Beacon Chain, Prater

Nimbus

Nim

Linux,Windows,macOS

Beacon Chain, Prater

Lighthouse

Rust

Linux,Windows,macOS

Beacon Chain, Prater,Pyrmont

Lodestar

TypeScript

Linux,Windows,macOS

Beacon Chain, Prater

Prysm

Go

Linux,Windows,macOS

Beacon Chain, Gnosis,Prater,Pyrmont

硬件

每个客户端对硬件的要求不同,但一般都不高,节点只需要保持同步即可。不要把它和挖矿混为一谈,挖矿需要更多的计算能力。不过,同步时间和性能确实会随着更强大的硬件而提高。根据需求和要求,以太坊可以在电脑、家庭服务器、单板电脑或云端的虚拟专用服务器上运行。

运行自己的节点的一个简单方法是使用像DAppNode这样的“即插即用”盒子。它为运行客户端和依赖客户端的应用程序提供了硬件,并提供简单的用户界面。

Tokenview节点服务

作为以太坊生态的节点之一,Tokenview也是以太坊节点的服务提供商。截止目前,已为10000+家企业提供了以太坊数据 API服务及节点搭建服务。通过稳定、快速的数据接口实时调取区块链数据,可免除自建节点、同步区块、空间占用、运维等成本。

Tokenview新功能上线了!!!

近日,Tokenview 以太坊节点服务新增「转入/转出」接口调用,通过Tokenview API 就可以调用以太坊地址的转入交易和转出交易列表。快来试试吧!!!

参考文章:

https://ethereum.org/en/developers/docs/nodes-and-clients/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值