跳至内容
0%

什么是 RPC 节点?

Alchemy team headshot

作者 Alchemy

发布于 2025年4月11日3 分钟阅读

每当你的应用查询链上余额、提交交易或读取合约事件时,它都在提出一个只有区块链节点才能回答的问题。这个问题发往哪里、由谁来回答,决定了用户感受到的应用速度和可靠性。承担这项工作的就是 RPC 节点:一台运行区块链客户端软件、用区块链数据响应应用请求的服务器。

什么是远程过程调用(RPC)?

远程过程调用(RPC)是一种协议,它让一台机器上的程序请求另一台机器上的程序执行某项操作并返回结果,而发起请求的程序无需了解远程系统的内部工作方式。在区块链中,你的应用是客户端,响应其请求的节点是服务器。

什么是 RPC 节点?

RPC 节点是一台运行区块链客户端软件的计算机,能够接收 JSON-RPC 请求并返回区块链数据:余额、区块数据、交易回执、合约状态,或广播已签名交易的结果。

在 Ethereum 上,一个节点同时运行两个客户端:一个执行客户端(如 Geth)和一个共识客户端(如 Lighthouse)。Ethereum 节点有几种类型:轻节点只保存区块头,全节点保存当前状态,归档节点保存全部历史状态。在 Solana 上,角色的划分方式不同:Solana RPC 节点运行与验证者相同的软件,除了对区块的有效性投票之外,验证者能做的事它都做。它们不投票,也不获得奖励。它们的职责是为应用提供数据。

什么是 RPC 端点?

RPC 端点是程序为访问服务器数据而发送 RPC 请求的网络位置,例如 Ethereum RPC 端点。由于每个 RPC 端点都运行在节点上,大多数文档会把节点和端点混用。区别在使用提供商时才会显现:一个端点 URL 背后是一整组节点,因此你的请求不会绑定在某一台机器上。

RPC 是应用发出请求的方式,节点是作出回答的一方,端点是请求的去向。

术语
含义
示例

RPC

请求另一台机器上的程序执行操作并返回结果的协议

应用查询某个钱包的余额

RPC 节点

运行区块链客户端软件、用链上数据响应 RPC 请求的服务器

运行 Geth 和 Lighthouse 的机器,或 Solana RPC 节点

RPC 端点

应用发送 RPC 请求的 URL

https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY

RPC 节点是如何工作的?

你的应用向节点的端点发送请求,节点在其保存的链副本上执行该请求,然后返回结果。这些请求使用 JSON-RPC 编写,它是区块链中使用的标准 RPC 规范,由 JSON-RPC 2.0 规范定义。每个请求都是一个小型 JSON 对象,指明方法名及其参数。

JSON-RPC 请求就是普通的 HTTP POST。下面这个请求向 Ethereum 端点查询最新的区块号:

bash
Copied
curl https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY \ -X POST -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

每个网络都会公布自己的方法列表:Ethereum 有 JSON-RPC API 文档,Solana 有 RPC API 文档。Ethereum 将核心方法分为三类:

  1. Gossip 方法跟踪区块链的最新区块,用于查找区块。
  2. 状态方法返回区块链数据的当前状态,例如余额和合约存储。
  3. 历史方法检索链上任意区块的历史记录。

应该使用公共 RPC 端点还是私有 RPC 端点?

测试时使用公共端点,面向真实用户的服务则使用私有端点。公共端点是共享的、有速率限制的,而且免费。用于快速测试或教程没有问题,但它们不提供可用性保证,也没有技术支持,因此来自真实用户的生产流量迟早会触及其限制。

私有端点为你的应用提供专属访问,可以是你自行运行的节点,也可以是提供商发放的带密钥 URL。使用提供商时,你会获得专属的速率限制、公开的可用性数据,以及出问题时可以联系的团队。URL 只属于你,但它背后的节点是共享的。如果你需要为单一客户预留的硬件,可以使用 Dedicated Clusters。生产应用应当运行在私有端点上。

哪些因素会影响 RPC 延迟?

应用感受到的延迟,大部分来自以下三个因素:

  • 区域距离。 从新加坡发往弗吉尼亚节点的请求,无论该节点多快,都要付出往返时间。
  • 共享容量与预留容量。 公共端点会让你的请求排在所有其他人的请求后面。私有端点有自己的速率限制,而专用基础设施则完全消除了共享。
  • 方法类型。 针对当前状态的 eth_call 和跨越大范围区块的 eth_getLogs 是不同的工作负载,延迟也不同。

Alchemy 发布了衡量这一点的公开基准测试。对每个方法,所有提供商都收到相同的 JSON-RPC 负载、链、区域、超时设置和成功标准,请求从共享的运行区域通过标准付费账户发出。延迟只统计成功的响应,失败会单独记录。实时可用性见 status.alchemy.com,Alchemy vs QuickNode 提供了逐个提供商的对比。

如何选择合适的 RPC 方案?

这项决定的大部分可以由三个问题来确定:

  1. 你需要支持哪些链? 自建意味着每条链都需要一套独立的节点系统。提供商用一个账户就能覆盖所有链。
  2. 高峰期你预计有多少请求量,需要怎样的延迟? 按最繁忙的时段来规划容量,而不是按平均水平。公共端点恰恰会在流量激增时限流。
  3. 你的业务实际需要多少技术支持和可用性保证? 如果一小时的宕机会让你损失收入或用户,你就需要公开的可用性数据和可以联系的人。
你的工作负载
推荐方案

本地开发、测试套件、教程

公共端点即可

有真实用户的生产应用

提供商的私有端点

横跨多条链的应用

使用提供商,每条链一个端点

日志量大的索引和历史数据读取

私有端点,并在能替代大量调用的地方使用 Data API

严格的数据驻留要求或自定义客户端配置

自建节点,或 Dedicated Clusters

在多条链上构建、或已经超出业余项目阶段的团队,通常会选择提供商。基础设施需求非常特殊的团队,有时会在使用提供商的同时自行运行节点。如果你正在权衡两者,如何选择区块链节点提供商提供了完整的检查清单,下方的指南则测算了自建的成本。

Build vs. Buy: Blockchain Infrastructure ebook cover
免费指南

自建 vs. 购买:区块链基础设施

组建基础设施团队前请先阅读本文:自建方案在处理第一个生产请求之前,每年成本可能高达 85 万至 140 万美元。查看完整成本明细。

下载指南

开始使用 Alchemy Node RPC

Alchemy Node RPC 支持 70 多条链,包括 Ethereum、Solana、Base 和 Robinhood Chain。链目录列出了每个网络的 RPC URL、链 ID 和支持的产品。

  1. 创建 Alchemy 账户。
  2. 创建一个应用,并选择你的链和网络。控制台会一步步引导你。
  3. 复制你的端点 URL,发送第一个请求。设置好 API 密钥后,上面的 eth_blockNumber 调用即可直接使用。

需要为团队预留的硬件,或超出标准套餐的限额?联系我们的团队,了解 Dedicated Clusters。

常见问题

什么是 RPC 节点?

RPC 节点是一台运行区块链客户端软件的计算机,通过 JSON-RPC 响应应用对区块链数据的请求。它返回余额、区块、交易回执和合约状态,并将已签名的交易广播到网络。

什么是 RPC 端点?

RPC 端点是程序为访问服务器数据而发送 RPC 请求的网络位置。实际上它就是一个 URL,例如 https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY,由一个或多个 RPC 节点提供服务。

RPC 节点和 RPC 端点有什么区别?

节点是运行区块链客户端软件的服务器。端点是应用发送请求的 URL。如果你自行运行节点,端点就指向那一台机器。使用提供商时,一个端点 URL 背后是一组节点。

RPC 节点是如何工作的?

你的应用向节点的端点发送一个指明方法(例如 eth_getBalance)的 JSON-RPC 请求。节点在其保存的链副本上执行该方法,并以 JSON 格式返回结果。

什么是 JSON-RPC 协议?

JSON-RPC 是区块链中使用的标准 RPC 规范:每个请求都是一个包含方法名、参数和 ID 的小型 JSON 对象。Ethereum 将核心方法分为 gossip 方法(查找新区块)、状态方法(当前余额和存储)和历史方法(过去的区块和交易)。

RPC 节点和全节点有什么区别?

全节点存储并验证区块链的历史。RPC 节点是任何被配置为接受并响应 RPC 请求的节点,无论它是否为全节点。大多数 RPC 节点都是全节点,但这两个术语描述的是不同的东西:一个关于节点保存哪些数据,另一个关于节点是否响应请求。

RPC 节点和验证者是一回事吗?

不是。验证者参与共识,对区块投票并因此获得奖励,而 RPC 节点为应用提供数据。在 Solana 上,RPC 节点运行与验证者相同的软件,除了对区块的有效性投票之外,验证者能做的事它都做,因此它不获得奖励。

RPC 端点有哪些不同类型?

主要有两种。公共端点是共享的、免费的、有速率限制,私有端点则为你的应用提供专属访问。许多生产团队还会配置一个备用 RPC 端点,以防主端点发生故障。

为什么我需要私有端点而不是公共端点?

私有端点为你提供专属的速率限制、公开的可用性数据和技术支持,而公共端点这些都不提供。没有私有端点,拥有真实用户的应用会恰好在流量激增的那一刻被限流。

免费的公共端点能用于生产环境吗?

不能。它们适合本地开发、教程和测试套件,但它们是共享的、有速率限制,而且不提供可用性保证或技术支持。任何服务真实用户的应用都应运行在私有端点上。

一个 RPC 端点能服务多条链吗?

不能,一个 RPC 端点只对应一个网络。多链应用需要为每条链连接一个独立的端点,不过提供商可以给你一个控制台来统一管理。

RPC 延迟会如何影响我的应用?

界面中的每一次链上读取都要等待 RPC 响应,因此节点延迟会直接表现为用户看到的页面加载和确认延迟。影响最大的因素是请求传输的距离、容量是共享还是预留,以及你调用的是哪个方法。

什么时候该用原始 JSON-RPC,什么时候该用 Data API?

当你需要某个特定的节点方法时使用原始 JSON-RPC,例如用 eth_call 读取当前合约状态,或广播已签名的交易。当你原本需要拼接大量 JSON-RPC 调用时使用 Data API,例如汇总一个钱包的全部代币余额或交易历史,一个请求就能替代几十个调用。

自行运行 RPC 节点和使用节点提供商有什么区别?

自行运行节点可以完全掌控,但硬件、耗时几天到几周的同步、客户端升级和值班响应都要由你负责。像 Alchemy 这样的提供商会处理所有这些工作,让你在几分钟内就能向多条链发送请求。

哪些区块链支持 RPC 节点?

所有主流区块链都提供 RPC 接口,包括 Ethereum、Solana、Base、Arbitrum、Optimism 和 Monad。Alchemy Node RPC 通过一个账户支持 70 多条链,其中包括 Robinhood Chain。

RPC 端点为什么对开发者很重要?

RPC 端点是应用在不运行自有基础设施的情况下读写链上数据的途径。你的应用发出的每一次余额查询、合约读取和交易,都要经过 RPC 端点。

如何开始使用 RPC 节点?

创建 Alchemy 账户,为你的链和网络创建一个应用,然后从控制台复制端点 URL。设置好 API 密钥后,你就可以发出第一个请求。

Background gradient

构建区块链应用

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