跳至内容
0%

什么是 Ethereum 节点?

Alchemy team headshot

作者 Alchemy

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

定义与应用

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

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

‍

为什么节点对 Web3 很重要?

以太坊网络中区块链节点相互连接的动画

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

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

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

每个节点会根据签名和交易的有效性,选择接受或拒绝最新的区块。如果区块被接受,它就会继续被传播给其他节点,直到达成共识、所有节点都同步为止。节点能够迅速拒绝无效区块,并识别出试图违反规则的恶意节点。正是这种节点间持续通信的网络,使得系统不必依赖单一的真相来源,也避免了随之而来的种种问题。

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

‍

节点有哪些不同类型?

节点有三种类型:

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

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

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

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

虽然运行轻节点是运行节点最简单的方式,但安装客户端、配置变量、下载区块头,并检查一切运行正常,仍然需要时间和相关知识。

Light Node
Full Node

Block Headers

Block Headers

Full Block State

Full Block State

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

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

归档节点 比全节点又更进一步。全节点会裁剪掉不再需要用于验证的条目,只保留与链最新的交互记录,而归档节点会保留所有内容(多出的数据量以 TB 计)。这些细节有利于更高效地查询信息,对少数应用场景很有用,但在大多数情况下都显得多余。

‍

为什么运行节点很难?

让一个节点运行起来可能是一个漫长而充满挑战的过程。如果你刚接触 Web3 世界、还不具备相应的技术能力(至少目前还不具备),情况尤其如此。

仅仅是全节点同步到当前区块链状态(超过 1000 万个节点)所需的数周时间,就足以让许多人对在这个领域构建项目望而却步。

成本也是一个因素,而且会迅速累积。这包括购买硬件的高额初始投入,以及持续产生的电费和服务器托管费用。运营节点时,你还必须确保它持续运转。网络延迟、断电或硬件故障都可能导致代价高昂的宕机。

尽管客户端更新有助于不断提升 Ethereum 的可扩展性、安全性和可持续性,但这些变动也可能带来意料之外的问题。而当你尝试构建更大规模的应用时,真正的问题才刚刚开始!

‍

扩展 Ethereum 节点存在哪些问题?

Ethereum 节点从设计之初就不是为了应对这种规模的请求量,因此会带来一些特有的挑战。

可靠性

有些请求会要求节点从第 0 条日志一路查询到当前区块,可能因此超时。这类"死亡查询"随时可能使节点崩溃。即便一个节点达到普通节点 72% 的可靠性水平,这也意味着一个应用每年可能有超过一百天处于离线状态!

可扩展性

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

你无法迅速启用新节点,因为它们需要数周时间才能完成同步。除此之外,新增的需求还可能压垮你现有的节点,导致其崩溃。这可能造成宕机——没有人能使用你的应用,用户也会因此对你构建的产品失去信任!

数据一致性

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

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

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

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

‍

什么时候该使用 node-as-a-service?

如果这一切听起来让人有些应接不暇,不用担心!无论你是刚刚起步,还是觉得自己在节点相关问题上投入了过多的时间和金钱,node-as-a-service 都可能是适合你的解决方案。

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

这意味着,你不必自己支付服务器访问费用、满足硬件要求、维护状态,而是可以使用 Alchemy 的 Node API……

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

……只需一行代码。

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

Alchemy 的 Cortex 引擎通过一套专用的分布式系统,确保数据的正确性和可靠性,并随应用一同扩展。

"使用自己的节点或者不可靠的服务,意味着要在与公司业务毫不相关的问题上浪费数百个宝贵的工程师工时。没有什么能比得上 Alchemy 卓越的可靠性、速度和支持。" —— Alex Atallah,OpenSea CTO

包括 OpenSea、Dapper Labs、0x、Royal、Axie Infinity 在内的众多领先区块链公司和项目,都因为我们极高的可靠性、出色的客户服务,以及丰富的产品体系而选择了 Alchemy,这使得在 Web3 中构建变得前所未有的简单。

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

注册一个 Alchemy 账户,即刻开始构建,无需再为节点操心!如果你想进一步了解 Alchemy 如何助力你在 Web3 领域的开发之路,请查阅我们的 Getting Started With Alchemy 文档,或访问 Alchemy 支持中心。

Background gradient

构建区块链应用

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