什么是区块链节点提供商?为什么Web3开发者需要它?

什么是区块链节点提供商?为什么Web3开发者需要它?

如果你区块链开发的小白,一定有很多关于区块链节点及其工作方式的问题。区块链节点包括哪些?为什么运行自己的以太坊节点很难?什么是节点提供程序,我为什么需要它?

相信我,这些内容真的很混乱。下面是“酷宇宙”给大家简单介绍一下。

什么是区块链中的节点?

先从基础开始吧!节点本质上是运行在单台计算机上的程序,它允许您与区块链的其余部分连接。它与其他节点连接,来回发送信息,验证节点间发送的事务是否有效,并存储区块链的相关重要信息。

区块链本质是由许多不同的节点组成的。也就是说,运行“以太坊”或“比特币”的区块链的物理硬件是分散在世界各地、由个人运行的节点集合。区块链没有所谓的主服务器,也没有单一的物理源,这也是它去中心化的原因

那么需要注意的是,如果不使用节点,就无法访问区块链上的信息,所以可以简单的把节点想象成区块链的浏览器

“区块链”是由个人运行的计算机(节点)的集合,它们根据某些规则集体参与验证区块链的状态

可以通过API(应用编程接口)向节点发送请求,接收节点的响应,从而实现节点间的交互。假设您在计算机的端口8545上运行一个节点;

您可以发送以下请求3360,使用Alchemy Composer在线试用(直接链接)。该请求将要求您的节点通过调用block number的方法返回最新的块号或最近生成的块号。这是一个示例响应:

可以看到,本例中的最新模块是0xa1c054。转换成十进制的10600532。

为什么运行节点很困难?

有几件事让你连接自己的节点进行开发非常麻烦。让“酷宇宙”介绍一些理由:

构建节点需要很长时间,甚至几周!

对于任何开发者来说,麻烦在于设置一个工具需要花费大量的时间,但是这个工具对于已经构建好的东西来说毫无用处,节点是罪魁祸首之一。

通常有两种主要类型的节点:轻型节点和完整节点。

轻型节点只同步块头和来自完整节点的查询请求,而完整节点保留区块链的整个状态,包括曾经创建的每个事务。大多数查询使用轻型节点,但是所有节点都是区块链的主干,它们是提供大多数信息所必需的。

轻节点相对简单,但还是要安装节点程序,设置配置变量,下载块头,检查端口和健康状态,保证其正常运行。

整个节点相对来说比较麻烦,最大的问题是需要从头开始下载从0到最新的每一个块,手动重放之前任何人提交的每一个块和事务。对于以太坊的主网络,有超过1000万个和数十亿次交易。此过程可能需要几周时间来同步。

以太坊还有一种叫存档节点的类型,对于历史搜索非常有用。

该节点必须由您管理!接下来我们简单回顾一下3360。

节点需要每隔几周升级一次,偶尔从头开始重建(比如硬分叉或者客户端升级)。由于大多数节点在设计时并没有考虑可靠性,一些查询(如eth_getLogs)可能会涉及运行数百万个块和事务,因此经常会出现超时或节点崩溃的情况,我们称之为“死查询”。因此,您必须密切关注节点的运行状态,您可能经常需要在凌晨3点进行调试。由于各种原因(点对点连接、卡在过时的分支上、内部状态等。),单个节点可能会落后于网络。如果你的节点落后了,可能会导致用户在不知情的情况下获取过时的数据这是非常糟糕和危险的体验。扩展到多个节点是很棘手的。

当您在构建个人项目时,单个节点一般不会有问题(即使它确实间歇性地崩溃)。但是当你不能让你的节点服务器强大到足以满足你发送的请求时会发生什么呢?

我将只运行两个节点,并在它们之间设置一个负载平衡器!你可能会建议。我们也是这么想的!不幸的是,这种设置实际上很难保持一致,因为不同的节点以略有不同的方式“看到”区块链的最新状态,从而导致数据不一致和其他用户问题。

想象一下:我们在一个负载平衡器后面同步了两个节点。节点A认为最新的块是块5,节点B认为是块4。这是完全正常的,因为最新的信息在网络中传播很慢,所以有些节点总是领先于其他节点。

你:哎!负载平衡器先生,您看到的最新块是什么?

LB先生:(向节点A发送请求并返回响应):网络上最新的块是块5。

你:谢谢!你能和我分享5区的信息吗?

LB先生:(这次向Node B发送请求):不好意思,我不知道block 5。请再试一次。

现实世界中,想象一个用户在你的应用上购买了一个NFT。他们可能会向节点A发送购买NFT的请求,但是当他们的查询请求被发送到节点B时,这一次看起来好像以前购买NFT的交易从未发生过!像这样的“一致性问题”很常见,也很难解决,尤其是当您扩展到几十个节点时。

什么是节点提供商

节点商本质上是一个团队。它们提供了一种在不运行自己的节点的情况下访问区块链信息的方法。本质上,您可以通过互联网向提供相同API的提供者发送请求。提供者的操作不是将请求发送到本地节点,而是完全同步且24/7可用的最新节点。

如果您还记得前面的blockNumber请求,这是节点请求发送到提供者时的样子:

我们只是交换了端点,没有做任何其他更改。

一个可靠的节点提供商将至少提供:

定期更新节点,并提醒接入轻节点和满节点,无需担心分叉或网络变化;访问历史交易数据的存档节点(只有Alchemy可以免费这么做)。可扩展性和可靠性:节点随时可用,想做什么就做什么。提供商可以处理一些棘手的阻塞问题。

我在本地运行我的dApp,效果很好!但为什么还需要一个节点提供商?

不需要节点提供商,直到你准备好向公共测试网络或主网络发送流量!用于测试的区块链的本地版本(由Hardhat或Truffle/Ganache提供)是您构建和测试项目所需的全部。

一旦您想要将应用程序部署到实时链,节点提供者就成为开发工作流的关键部分。

首先,您需要一种通过事务将智能合约部署到区块链的方法,这只能通过区块链上的节点来实现。这意味着运行自己的节点,或者将事务发送给提供者。

其次,您的应用程序可能需要继续提取有关区块链的信息来更新其内部状态。该信息也通过节点或节点提供商传输。您希望信道可靠且同步正确,这样您就不会向用户提供过时或损坏的数据。

什么是Alchemy?它与其他节点提供商有何不同?

Alchemy本质上是一个区块链节点提供商,拥有极高的可靠性、出色的客户支持和大量的开发工具。它声称70%的顶级区块链应用程序通过它发送流量。

它声称,有几个因素使他们在这个领域不同于其他节点提供商:

Developer :你怎么知道你的用户在发送什么请求?如果他们的请求失败,如何查看和调试它们?你发什么交易等着挖矿?Alchemy Dashboard中提供了许多工具,允许您分析dApp上的流量,否则将涉及大量日志页面。推送:如果想在自己关注的以太坊用户(比如Vitalik Buterin)进行交易时收到提醒,应该怎么做?您可以编写一个脚本来读取每个块并搜索特定的地址,然后全天候运行它,或者您可以使用Alchemy Notify这样的工具,它是一个为区块链上的事件发送推送通知(webhooks)的工具。增强型API:如果想搜索单个ETH用户进行的所有交易,应该怎么做?虽然这在SQL数据库中可能很简单,但在区块链中却非常复杂。你基本上需要扫描区块链的每一笔交易(同样,在以太网上有数十亿笔交易),看看它是否包括一个地址。我们已经构建了几个增强的API,允许您立即进行这个查询和其他类似的查询。

该如何开始?

使用Alchemy作为你的节点提供者非常简单。其实只需要一行代码就可以开始使用了!如果您一直在使用web3.js或ethers.js,那么创建一个免费的Alchemy帐户、生成API密匙并用如下代码替换实例化是很容易的。

本文部分内容摘自网络,由酷宇宙翻译整理。本文不代表酷宇宙的观点和立场,不含任何投资建议。注意,任何投资和交易都会风险更多信息或加入社区,请关注Crypoe.com(酷宇宙)。

版权声明:区块链技术 发表于 2022-06-24 8:48:14。
转载请注明:什么是区块链节点提供商?为什么Web3开发者需要它? | 零零洞洞

暂无评论

暂无评论...