火星独家 | 一文深度解读以太坊节点运作机制和客户端多样性( 二 )


除存档以外的任何模式同步客户端 , 都会导致区块链数据的删除 。 归档节点能让你快速回到某个区块高度去查询当下状态 。 归档节点 保存了区块链上的完整历史纪录与资料 , 以及所有区块高度的当时全网状态 。
3. 为什么要运行以太坊节点?
运行自己的节点可以通过去信任方式使用以太坊 , 无需信任网络 , 自行用客户端验证数据 。 “Don't trust, verify”就是一个非常受欢迎的流行区块链口号 。 节点根据共识规则验证所有交易和区块 , 意味着不必依赖网络中其它节点 , 也不必完全信任他们 。
如果使用自己的节点 , Dapp可以更加安全和私密 , Metamask , MyEtherWallet和其他一些钱包可以轻松地指向本地节点 。
火星独家 | 一文深度解读以太坊节点运作机制和客户端多样性
本文插图
4. 网络效益
多样化节点对以太坊的健康、安全和运行弹性至关重要 。 它们为依赖区块链的轻节点提供访问区块链数据的机会 。 在使用高峰期 , 需要有足够的完整节点帮助轻节点同步 。 轻节点不存储整个区块链 , 而是通过区块标头中的状态根来验证数据 。 如果需要的话 , 可以从区块中请求更多的信息 。
全节点执行工作证明共识机制 , 它们不接受不遵循规则的区块 , 这在网络中提供了额外的安全性 。 如果所有的节点都是轻节点 , 不做全面验证 , 矿工可能会攻击网络 , 例如创建具有更高奖励的区块 。
如果运行全节点 , 整个以太坊网络都会从中受益 。
5. 提供商
运行自己的节点可能比较困难 , 在这种情况下 , 你可以使用第三方API提供商 , 如Infura、Alchemy或QuikNode 。 另外ArchiveNode是一个由社区资助的归档节点 , 将以太坊区块链上的归档数据给那些买不起的独立开发者 。
如果有人在社区中运行带有公共API的以太坊节点 , 你可以通过Custom RPC将轻钱包(如MetaMask)指向社区节点 , 这样比随机受托的第三方更具隐私 。
另一方面 , 如果你运行一个客户端 , 你可以与你的朋友分享 , 他们可能需要它 。
6. 客户端
不同团队使用不同的编程语言开发以太坊客户端 , 这使得网络更加强大和多样化 。 理想目标是在没有任何客户端主导的情况下实现多样性 , 以减少任何单点故障 。
这个表格总结了不同的客户端 , 这些客户端都在积极地工作、维护 , 并通过客户端测试 。
每个客户端都有独特的用例和优势 , 可以根据自己的喜好来选择 , 客户端的多样性可以集中在不同功能和用户受众上 。 你可能希望根据功能、支持、编程语言或许可证来选择客户端 。
(1)Geth
Go Ethereum(简称Geth)是以太坊协议的原始实现之一 。 目前 , 它是受众最广泛的客户端 , 拥有最大用户群 , 为用户和开发者提供各种工具 。 它是用Go语言编写 , 完全开源 , 并采用GNU LGPL v3授权 。
(2)Open Ethereum
OpenEthereum是一个快速、功能丰富的以太坊客户端 , 提供快速可靠的服务所需基础架构 , 这些服务需要快速同步和最大限度的运行时间 。 OpenEthereum的目标是成为最快、最轻、最安全的以太坊客户端 。 它提供了一个干净、模块化的代码库 , 具有以下优势:
a. 易于定制
b. 轻集成到服务或产品中
c. 最小内存和存储空间占用
OpenEthereum使用最新Rust编程语言开发 , 并以GPLv3进行授权 。
(3)Nethermind
Nethermind是用C# .NET技术栈创建的以太坊实现 , 包括ARM在内的所有主要平台上运行 。 它提供了强大的性能 , 包括:
a. 性能强劲的虚拟机;
b. 状态访问;
c. 网络和丰富功能 , 如Prometheus/Graphana仪表盘、seq企业日志支持、JSON RPC追踪和分析插件 。
(4)Besu


推荐阅读