跳至内容
0%

什么是 Ethereum 节点?

Alchemy team headshot

作者 Alchemy

发布于 2022年4月18日1 分钟阅读

定义与应用

以太坊节点是指任何运行连接以太坊网络所需软件的计算机。节点之间相互连接,来回传递信息,以验证交易并存储区块链状态数据。

虽然这两个术语经常被混用,但这些相互连接的计算机是节点,而它们运行的软件称为客户端。

为什么节点对 Web3 很重要?

区块链节点在 Ethereum 网络中互联的动画

节点构成了区块链网络,也是访问区块链的唯一途径。

每个节点都维护自己的一份区块链副本,并努力确保这份副本与其他所有节点的副本保持一致。每当你做任何操作,需要向区块链添加一个新区块时,网络上的每一个节点都必须处理它。

区块链节点就新区块达成共识的动画

每个节点会根据签名和交易的有效性来决定接受还是拒绝最新的区块。如果区块被接受,它会继续被分享给其他节点,直到达成共识,所有节点同步一致。节点能够迅速拒绝无效区块,识别出试图破坏规则的坏节点。正是这个不断通信的节点网络,使得不再需要依赖单一的真相来源,也就避免了随之而来的种种问题。

不同节点之间的这种共识使区块链网络得以去中心化,这也是 Web3 的基石。运行的节点越多,区块链就越强大!

节点有哪些不同类型?

节点共有三种类型:

  • 轻节点
  • 全节点
  • 归档节点

轻节点 只下载区块头,这是它在网络上交易所需的最少数据。轻节点能够验证交易,是因为它可以利用这些数据重新生成需要检查的特定区块。

这使得轻节点能够高效地与网络交互,节省大量带宽和存储空间。因此,轻节点可以运行在内存资源有限的日常设备上,比如智能手机和笔记本电脑。

但轻节点也有其局限性。轻节点有时需要向全节点请求它无法获取的数据,这可能比全节点直接验证交易耗时更长。

虽然运行轻节点是运行节点中最简单的方式,但安装客户端、配置变量、下载区块头、检查一切是否正常运行,仍然需要时间和技术know-how。

Light Node
Full Node

Block Headers

Block Headers

Full Block State

Full Block State

全节点 具备验证网络区块正确性所需的一切。它可以与任何智能合约交互,也可以部署自己的智能合约。

由于要完整使用和存储数据,全节点需要更多的计算资源和带宽。全节点会下载、存储并验证完整的区块链状态——从第 0 号区块一直到最新区块(目前已超过 1000 万个,还在不断增加),同步过程可能需要数周时间!

归档节点 比全节点更进一步。全节点会修剪掉不再需要用于验证的条目,只保留与链的最新交互记录,而归档节点则保留所有内容(额外数TB的数据)。这些详细数据非常适合更高效地查询信息,对少数应用场景很有用,但在大多数情况下都属于过度储备。

为什么运行节点很困难?

让节点运行起来可能是一个漫长而具有挑战性的过程。如果你刚接触 Web3 领域,还没有相应的技术能力(至少目前还没有),情况尤其如此。

单是全节点同步到当前区块链状态(涉及超过 1000 万个节点)所需的数周时间,就足以让许多人对在这个领域进行开发望而却步。

成本也是一个因素,而且很快就会累积起来。这包括购买硬件的高额初始投入,以及电力和服务器托管的持续开销。运行节点时,你还必须确保它持续稳定运行。网络延迟、断电或硬件故障都可能导致代价高昂的宕机。

虽然客户端更新有助于不断提升以太坊的可扩展性、安全性和可持续性,但这些变化也可能带来意想不到的问题。而当你尝试构建更大规模的应用时,真正的问题才刚刚开始!

扩展以太坊节点存在哪些问题?

以太坊节点从设计之初就没有考虑要应对如此规模的请求量,因此会带来一些独特的挑战。

可靠性

有些请求会要求节点一路查询回溯到第 0 号日志,直到当前区块,这可能导致超时。这类“死亡查询”可能在一天中的任何时刻使节点崩溃。即使节点像标准节点一样具有 72% 的可靠性,这也意味着一个应用每年可能有超过一百天处于离线状态!

可扩展性

扩展节点基础设施可能很棘手。设想一下,你构建的应用在 Twitter 上一夜爆红,但你现有运行的节点却无法应对交易量和流量的骤增。

你不能简单快速地启动新节点,因为它们需要数周时间才能完成同步。除此之外,新增的需求还可能压垮你现有的节点,导致它们崩溃。这可能导致宕机——没有人能使用你的应用,用户也会因为觉得你构建的产品不可靠而感到不满!

数据一致性

在 Web2 中,网站可以通过负载均衡器来规避这些可扩展性问题——负载均衡器是位于顶层的网络层,能将流量分配到多台无差别的服务器上。但这种方式在节点上行不通,因为区块链是异步的。虽然两个节点最终应该拥有相同的最新区块,但在任意给定时刻,一个节点可能落后于另一个。

负载均衡可能导致两种截然不同的结果,因为流量被路由到对最新区块持有不同视图的不同节点上。设想一下,你买下了一直心心念念的NFT,刷新页面后却发现它似乎消失了!

负载均衡的区块链节点返回不一致数据的示意图

为了避免这类数据不一致的问题,开发团队不得不拼凑复杂的临时解决方案,而这些方案最终难免会引发错误,导致应用崩溃。所有这些问题意味着,在处理节点时,开发者往往必须在可扩展性、可靠性维护和数据一致性之间做出取舍,这给所有人都带来了不太理想的体验。

什么时候该使用节点即服务?

如果这一切让你感到有些不知所措,不用担心!无论你才刚刚起步,还是觉得自己在节点问题上花费了过多的时间和金钱,节点即服务都可能是适合你的解决方案。

像 Alchemy 这样的节点提供商负责运行节点,让你可以专注于开发自己的应用。集成大多数提供商都非常简单——通常只需一个 API,就能开始读写区块链。

这意味着你无需自行支付服务器访问费用、满足硬件要求、维护状态,而是可以使用Alchemy 的 Supernode 基础设施……

Alchemy Supernode 基础设施架构图,用于可扩展的 Ethereum 节点访问

……只需一行代码

使用 Alchemy API key 连接 Ethereum 的代码片段

Alchemy 通过专有的协调服务确保超强的数据正确性,并提供业内一流的可靠性。这得益于其专用的分布式系统,使你能够快速、无缝地扩展,从而更好地构建、更快地发布产品。

“使用自己的节点或容易出错的服务,意味着要在与公司业务毫无关系的问题上浪费数百个宝贵的工程小时。没有任何东西能与 Alchemy 出色的可靠性、速度和支持相媲美。”——Alex Atallah,OpenSea CTO

包括 OpenSea、Dapper Labs、0x、Royal、Axie Infinity 在内的数百家领先的区块链公司和项目都选择了 Alchemy,原因在于我们极高的可靠性、出色的客户服务,以及丰富的产品套件,让在 Web3 中构建变得前所未有的简单。

基于 Alchemy 构建的公司标志,包括 OpenSea 和 Dapper Labs

注册一个 Alchemy 账户,立即开始构建,无需再为节点问题操心!如果你想进一步了解 Alchemy 如何帮助你在 Web3 构建之路上前行,请查看我们的Getting Started With Alchemy文档,或通过我们的Alchemy Discord全天候联系我们。

Background gradient

构建区块链应用

Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。