简而言之:RPCendpoint 是应用程序用于与区块链节点通信的 URL。RPC 代表“远程过程调用”(Remote Procedure Call),这是一种允许一个程序通过网络向另一个程序请求数据或执行操作的协议。在区块链中,RPC 端点是钱包查询余额、去中心化应用(dapps)执行智能合约以及开发者读写链上数据的方式。无论您是否意识到,您进行的每一次区块链交互,都会通过 RPCendpoint 进行。
简明解释
当你打开钱包应用并查看以太币(ETH)余额时,你的钱包并不是以某种方式“位于”区块链上。它只是运行在你的手机或浏览器上的一个普通应用程序,需要向区块链查询你的余额。为了进行查询,它会向 RPC(endpoint )发送请求。endpoint 接收该请求后,其背后的节点会查询答案,并将响应结果发回。随后,你的钱包便会显示该结果。
不妨将 RPCendpoint 想象成一家餐厅的大门。厨房(区块链节点)才是实际工作发生的地方:验证交易、维护状态、生成区块。但你不会直接走进厨房。你需要从大门(RPCendpoint )进入,下单(你的请求),然后服务员(RPC 协议)会将食物(响应)送上桌。 RPCendpoint 是向外界提供节点功能的访问入口。
从技术角度讲,RPCendpoint 是一个 URL(例如 https://your-endpoint.quiknode.pro/your-token/),您的应用程序会向该 URL 发送符合 JSON-RPC 规范格式的 HTTP 或 WebSocket 请求。JSON-RPC 是一种轻量级协议,它定义了如何将请求和响应结构化为 JSON 对象。 每条主流区块链都采用该标准的某个版本,这意味着一旦你掌握了在Ethereum 上进行 RPC 调用的方法,在Solana 、Polygon 、Arbitrum 、Base 以及其他数十条链上,其操作模式也大同小异。
RPC 调用的工作原理
典型的 RPC 交互遵循简单的请求-响应模式。您的应用程序会构建一个 JSON-RPC 请求,其中指定要调用的方法及其所需的任何参数,然后通过 HTTP POST 将其发送至endpoint 网址。该节点会处理该请求,执行相应的逻辑,并返回包含结果的 JSON 响应。
例如,要获取 EVM 链上的最新区块号,您的应用程序需发送一个方法为“eth_blockNumber”、参数数组为空的请求。节点会以十六进制格式返回当前区块号。要查询某个账户的 ETH 余额,您需要调用“eth_getBalance”,并传入钱包地址和区块参数(例如,若要获取当前区块,则传入“latest”)。 要发送一笔交易,需调用“eth_sendRawTransaction”方法,并传入已签名的交易数据。
这些标准的 JSON-RPC 方法由各区块链的规范所定义。Ethereum 的 JSON-RPC API 包含用于读取区块数据、查询账户和合约状态、估算 gas 费用、提交交易、通过 WebSocket 订阅事件等功能的方法。Solana 则使用了一套类似但有所区别的 RPC 方法集,这些方法针对其基于账户的架构进行了优化。每条链都有自己的 API 接口,但通过 RPC 端点进行的底层通信模式保持一致。
WebSocket 连接是基本 RPC 模式的一种扩展,可实现实时双向通信。与应用程序反复轮询节点以获取更新(这种方式效率低下且速度慢)不同,WebSocket 连接允许节点将新数据推送至您的
实时应用程序。对于诸如监控新区块生成、实时监听特定智能合约事件以及接收交易确认通知等用例而言,这一点至关重要。
公共与私有 RPC 端点
公共 RPC 端点是由区块链基金会或社区项目维护的免费、开放的 URL。任何人都可以无需身份验证即可连接到它们。它们适用于快速测试、原型开发和教育目的,但不适合生产环境中的应用程序。公共端点存在严格的速率限制(即限制每秒可发送的请求数量),经常因数千名并发用户而过载,且不保证正常运行时间、延迟或数据时效性。 如果您的应用程序依赖于某个公共endpoint ,而该端点在流量激增时宕机,您的应用程序也将随之瘫痪。
私有 RPC 端点是专为您的应用程序预留的专用连接,通常由基础设施服务提供。它们具有响应时间更短、速率限制更高、性能稳定,并提供由 SLA 保障的正常运行时间保证。私有端点通常还包含其他功能,例如基于令牌的身份验证、IP 白名单、分析仪表盘,以及超出标准 JSON-RPC 规范范围的增强型 API 访问权限。
对于任何处理真实用户、真实资金或实时数据的应用程序而言,私有 RPC 端点是一项基本要求,而非可选功能。在生产环境中,公共endpoint 与私有 之间的区别,就像共享的公共 Wi-Fi 网络与专用的光纤线路之间的区别一样。虽然两者在技术上都能让你连接到互联网,但只有其中一种适合用于运营业务。
超越基础 RPC
虽然标准的 JSON-RPC 方法涵盖了读写区块链数据的基础功能,但大多数生产环境中的应用程序还需要更多功能。增强型 API 通过添加更高层次的方法来扩展基础 RPC 规范,这些方法能够聚合数据,从而减少应用程序所需的调用次数。例如,要获取钱包中的代币持仓情况,原本需要进行数十次单独调用,而增强型 API 只需一次请求即可返回所有代币余额。
流式和事件驱动架构是请求-响应式 RPC 的下一代演进。与应用程序不断轮询 RPCendpoint 以获取新数据块或事件不同,流式服务会在数据可用时将其推送至应用程序。这不仅降低了延迟、消除了无谓的请求,还简化了后端架构。
gRPC 是另一种可在某些区块链上与 JSON-RPC 并行使用或替代 JSON-RPC 的协议。例如,Solana 的Yellowstone gRPC 提供了超低延迟的数据传输服务,该服务针对交易机器人和实时分析等高频用例进行了优化。gRPC 使用 Protocol Buffers 代替 JSON,前者更紧凑且序列化速度更快,因此非常适合那些对每毫秒延迟都极为敏感的应用场景。
Quicknode 的作用是什么
Quicknode其核心 API在 80 多个区块链网络上提供生产级 RPC 端点。当您在Quicknode 上创建一个endpoint 时,您将获得一个 HTTPS 和 WebSocket URL,该 URL 可将您的应用程序连接到一个全球分布式、高性能的节点基础设施,该基础设施提供 99.99% 的正常运行时间 SLA,且响应时间平均比竞争对手快 2.5 倍。 每个endpoint 均包含完整数据和存档数据访问权限、实时分析、基于代币的身份验证,以及来源白名单和域名掩码等安全功能。
除了标准的 RPC 之外,Quicknode 还通过 Streams 实时和历史区块链数据传输, Yellowstone gRPC 超高速的Solana 数据、涵盖DeFi数据、NFT API及安全工具的Marketplace插件生态系统,以及用于简化JavaScript和TypeScript集成的Quicknode (SDK )。无论您是需要一个用于周末项目的单链endpoint ,还是企业平台所需的多链、多区域基础设施,Quicknode 都提供了作为一切构建基础的RPC层。
RPCendpoint 与节点之间有什么区别?
这两个术语虽有关联,但并不完全相同。节点(node)是指维护区块链副本、验证交易并追踪状态的软件。RPC 端点(endpoint )则是您用于与该节点通信的网络地址。一个节点可以对应多个端点,而一个 RPC 端点(endpoint )可以将请求路由到一组经过负载均衡的节点上,以实现冗余。当您使用托管服务提供商时,您与 RPC 端点(endpoint )进行交互,而无需自己操作节点。 若想更深入地了解 URL 背后的运行机制,请参阅“什么是区块链节点”;若想了解完整的请求生命周期,请参阅“RPC 请求如何工作”。
应该使用哪种RPC传输协议:HTTP、WebSocket还是gRPC ?
RPC 端点支持多种传输协议,具体选择取决于您是进行一次性查询,还是订阅持续的数据流。HTTP 是请求-响应调用的通用默认协议。WebSocket 会保持持久连接,以便节点向您推送更新。gRPC 在受支持的链上为高频工作负载提供最低的延迟。下表对这三种协议进行了简要对比。
运输 | 连接模型 | 最适合 | 权衡 |
|---|---|---|---|
HTTP | 无状态请求与响应 | 标准读取、事务提交、批处理调用 | 没有服务器推送,因此您必须通过轮询来获取更新 |
WebSocket | 持久、双向的 | 对新区块、日志和待处理交易的订阅 | 必须保持连接处于活动状态,并在断开时重新建立连接 |
如果您的应用程序需要持续的数据流,而不是反复轮询,那么像Quicknode Streams ,可将区块、收据和交易记录直接传输至您的后端,而无需您管理套接字的生命周期。
导致 RPCendpoint 出现延迟和速率限制的原因是什么?
有两个因素最常影响 RPCendpoint 的使用体验:响应速度和允许的请求数量。 延迟主要取决于与节点的地理距离、所调用方法的复杂程度,以及底层基础设施的负载情况。速率限制的存在是因为每个节点的能力都是有限的,因此服务提供商会限制每秒的请求数量,以保护共享资源。了解这两点有助于您在流量增长之前正确规划endpoint 的规模。更多详情请参阅“什么是 RPC 延迟”和 “什么是 RPC 速率限制”。
在什么情况下应该使用索引代替原始 RPC?
原始 RPC 非常适合读取当前状态和提交交易,但在处理诸如“该钱包过去一年内进行的每笔转账”之类的分析性查询时却力不从心。 若仅依靠 RPC 来回答这个问题,则需要进行数千次连续调用。索引技术通过将链上数据预处理成可查询的数据库来解决这一问题,因此历史数据和汇总数据的查询只需一次查询即可完成。请参阅《RPC 与索引》一文,比较这两种方法,并了解为何在查询区块链数据时,大型查询如此困难。
常见问题解答
RPC 是什么的缩写?
RPC 是“远程过程调用”(Remote Procedure Call)的缩写。这是一种协议,允许一个程序通过网络向另一个程序请求数据或触发操作,其效果如同调用本地函数一般。在区块链中,您的应用程序会使用 RPC 请求节点读取状态或提交交易。
RPCendpoint 与 API 是一回事吗?
RPCendpoint 是一种特定类型的 API。它通过 JSON-RPC 标准,在单一 URL 上提供区块链节点的功能。许多服务提供商会在基础 RPC 接口之上叠加增强版的 REST 或更高层次的 API,但核心的endpoint 才是与节点进行通信、采用 JSON-RPC 协议的接口。
在生产环境中使用免费的公共 RPC 端点是否安全?
它们虽然适合用于测试和学习,但并非为生产环境而设计。公共端点受到严格的速率限制,经常过载,且不提供正常运行时间或延迟保证。如果公共endpoint 在流量激增时性能下降,您的应用程序也会随之受影响,这就是为什么生产环境中的应用程序依赖于专用的私有端点。
一个 RPCendpoint 能否连接到多个区块链?
一个endpoint URL通常对应一个网络,例如Ethereum 、mainnet 或Solana 、mainnet 。若要支持多个链,需为每个网络分别创建独立的端点。由于大多数链都采用JSON-RPC模式,因此为某个endpoint 编写的代码通常只需稍作修改即可应用于其他链。
如何在不进行持续轮询的情况下接收链上事件的通知?
使用推送机制,而不是轮询。WebSocket 订阅和事件驱动型服务(例如 Quicknode Webhooks 会在相关区块或事件发生的第一时间通知后端,从而降低延迟并消除无谓的请求。如需分步教程,请参阅《构建者指南》,其中详细介绍了常见模式。
延伸阅读
Quicknode 核心 API
Quicknode API 文档
Quicknode 产品简介
Streams 入门指南 - Quicknode 文档