RPC:连接Web3应用与链之间的桥梁

gateio

GATE.IO芝麻开门

GATE.IO芝麻开门交易所(原比特儿交易所)是全球前10的交易所,新用户注册可免费领取空投,每月可得50-200U

点击注册 更多入口

更多交易所入口

一站式注册各大交易所、点击进入加密世界、永不失联,币安Binance/欧易OKX/GATE.IO芝麻开门/Bitget/抹茶MEXC/火币Huobi

点击进入 永不失联

什么是RPC?

可能大部分人听说RPC是在Metamask等钱包手动添加网络RPC时,或者从未见过,但RPC是Dapp、Wallet、CEX等区块链应用不可或缺的基础技术之一。RPC实际是“远程过程调用”(Remote Procedure Call)的首字母缩写。 在Web2中, RPC是一台计算机调用另一台计算机上的程序并执行的通信技术,通过RPC远程过程调用,调用方只要传递调用服务名和参数就可以与对方通信,是一个很宽泛的概念。在区块链环境中,RPC则是可让客户端与区块链交互的协议。用户通过RPC接口可查询区块链相关信息(如块高、区块、节点连接等)和发送交易。

Metamask 网络添加页面(来源:Metamask)

RPC的技术原理

首先我们需要了解RPC的三个主要角色:

1)服务提供者(RPC Server):运行在服务端,提供服务接口定义和服务实现类。在区块链中,服务提供者就像区块链网络中的节点,负责提供特定的功能,例如存储和验证交易。

2)服务消费者(RPC Client):运行在客户端的,通过远程代理对象调用远程服务。在区块链中,注册中心类似于一个节点管理系统,它记录哪些节点提供了哪些服务,以便其他节点能够找到并使用这些服务。

3)注册中心(Registry):也是运行在服务端,负责把本地服务发布成远程的服务,它也要去管理,提供给服务消费者来使用。在区块链中,服务消费者就像需要区块链上信息的应用程序或用户,它们通过RPC来请求特定的功能或数据,就像在团队中请求任务一样。

RPC调用图(来源:Google)

详细的技术架构如上图所示,为更清晰的向大家阐述,我们以项目经理完成报告的过程为例讲解详细调用过程:

想象你是一位项目经理,需要一个复杂的报告,但你不懂技术,所以你需要协助专业的数据分析师来完成任务。在这个过程中你需要完成:

  • 委托任务:你将任务的要求和细节写下来,然后通过一个信使传递给数据分析师。
    • 在计算机中:你就像服务消费者(RPC Client),想要获取某项服务,但你自己无法执行,所以你委托给了专业人士。
  • 注册任务:信使将任务详细信息传递给一个协调员,协调员记录下任务并通知相应的分析师。
    • 在计算机中:信使就像注册中心(Registry),它记录谁能够提供什么服务,然后通知服务提供者。
  • 提供服务:数据分析师接受任务并开始分析数据,这个分析过程就好比执行一个远程函数。
    • 在计算机中:数据分析师就像服务提供者(RPC Server),能够执行特定的任务,比如执行数据分析。
  • 执行任务: 数据分析师根据你的要求进行数据分析,完成任务。
    • 在计算机中:数据分析师执行任务,类似于远程执行函数。
  • 登记结果: 数据分析师将分析结果交给协调员,协调员记录下结果。
    • 在计算机中:数据分析师将执行结果告知注册中心。
  • 反馈结果: 信使带着分析结果回到你这里,你得到了完成的报告。
    • 在计算机中:信使将执行结果传递回给你,你得到了你所需的数据。

为什么需要RPC?

众所周期,区块链具有去中心化和分布式的属性,数据储存在各个节点中,想要运行节点参与网络出块等活动首先需要计算机符合一定的软、硬件要求。在某些网络,运行节点还需要质押一定量的网络Token,比如ETH、ADA等网络。

当然并不是每一个节点都可以使用RPC协议,一般运行区块链客户端软件的计算机才能作为RPC节点,安装了适当软件的节点将能够响应RPC请求。在常见的开发中,开发人员会使用RPC客户端-服务器模型进行开发,其中dApp是客户端,服务器是RPC节点。

作为区块链应用开发者,想要获取用户的信息,提交用户交易/活动到链上,都需要节点进行打包到链上。使用网络提供的公共RPC节点会面临拥堵,没有客户支持服务,缺乏活跃的开发人员基础设施,并且无法扩展以满足运行dApp的需求。而大部分项目无法负担节点运营维护费用,因为每一个节点背后都需要花费大量时间成本、人力成本、物质资源建立节点。所出现了专门建立RPC节点,并提供RPC服务的服务商。

RPC的用途是什么?

从上节中可以看出,RPC的重要功能是在终端应用和区块链间建立连接,所以RPC的主要用途就是在开发过程中,采用合适的RPC服务提供商让用户在使用时能够执行链上交易与查询。

对于普通Web3用户而言,最直接的一点用途就是,在网路拥堵时,切换成延迟较低的RPC入口,从而减少自己的延迟、加快交易速度。理论上,RPC可以应用于各种需要进行区块链交易/信息查询的项目。

私有RPC

绝大多数区块链都会提供免费的公共的RPC供应用测试使用,但其速率受限,于是出现了私有RPC。私有RPC端点是具有唯一URL的RPC端点,只有所有者才能使用该URL将交易发送到公共内存池,从而为个人提供与节点提供商的直接连接。其在实际使用中有以下好处:

  • 在独家、先到先得的NFT铸造期间更快发送交易。
  • 发送交易以利用时间敏感的套利机会。
  • 快速进行空投领取。

RPC操作示例

对于开发过程中的RPC使用,需要开发者根据文档进行使用,本文主要以钱包中RPC切换为例。以MetaMask为例:点击进入设置页面后选择网络,点击想要更改RPC的网络名称,在最右侧PRC URL处进行修改,然后点击保存即可更换RPC。

MetaMask的RPC更改页面(来源:MetaMask网页端)

在具体使用时需要注意比较延迟程度,如果更成延迟较高的RPC,交易速度可能减慢。

什么是RPC服务商?

由于节点设置和运营的复杂性,出现了专门运营节点为项目提供RPC/API等服务的服务商。项目可以可以通过互联网将请求发送到服务商,该服务商会运行完全同步、24/7 可用的最新节点,而不是将请求发送到本地节点。很多服务商不仅提供RPC服务,还提供多种相关服务,比如API、SDK等。作为开发者和个人用户,在筛选时除了交易速率,价格,客户服务等因素外,也要关注其提供的工具体系。

上节提到的私人RPC也由RPC服务商提供。大多数RPC服务商为多链业务,且大都提供免费的试用版和公开版本。以下是一些市面上常见的RPC服务商介绍:

Flashbots

Flashbots是一家专注于矿工可提取价值 (MEV) 的研发公司,旨在减轻 MEV 对智能合约区块链带来的负面外部性和存在风险。其RPC服务Flashbots Protect由RPC和API组成,开发者可以利用API轻松将其嵌入应用程序。普通用户则可以将其RPC添加到钱包后,让自己的交易发送到Flashbots,这个过程是将交易直接发送到矿工,而非公共池,避免了MEV中的“三明治攻击”。Flashbots目前是行业MEV研究的领导者。

注:三明治攻击是在抢先在用户交易确认前完成交易,从让交易价格上涨,用户交易完成后,再以溢价售出以此获利。

Infura

Infura是一种IaaS(基础设施即服务)产品,旨在为开发者和用户降低访问以太坊数据的门槛。Infura充当的是以太坊全节点的角色,通过提供API接口,无需运行本地以太坊节点,可以快速将Dapp连接到以太坊平台,实现交互。客户包括Metamask、Uniswap、Compound等。

Alchemy

Alchemy提供了用于构建多链Web3 DApps的SDK和API,以及通过社区/大学类似的倡议教育用户使用这些工具的技能。Alchemy在链上支持这超过1,000亿美元的交易价值,拥有超过1,000万终端用户,并且获得了超过15亿美元的版税。客户包括Opensea、GMX、AAVE等。

Ankr

Ankr提供了多种节点服务,包括公共节点和私有节点,支持30+区块链。同时,Ankr还提供了基于RPC和WebSocket协议的API接口,以及多种开发工具和SDK,如Web3.js、Truffle等,使开发者可以轻松地构建和部署区块链应用。客户包括Binance、Sushiswap、Meta Apes等。

Quicknode

QuickNode通过直接提供专用节点为用户提供API服务,并支持多个区域、多个测试网和归档节点等特性,以此为开发者提供更好的区块链访问性能和更强的稳定性。拥有直观的仪表板、分析套件、远程过程调用编写器,支持20+链。客户包括Nansen、Algofi、Dapprader等。

BlockPI

BlockPI是一种分布式网络结构的RPC,一个分布式多链加速层,它可参与去中心化的 Web3 环境。2023年初,其成功升级了公共RPC为大家提供更稳定、更快速的免费RPC服务。理论上,其架构从根本上解决RPC请求拥塞问题,且具有无限扩展性。

结语

随着区块链技术的不断地成熟以及Web3越来越多的采用,RPC服务作为基础服务之一具有广阔的前景。开发者对RPC服务的需求可预见性地会越来越多。从个人角度,如果是频繁交易者,且需要更快的交易速度,选择一个使用人数较少的公共RPC或者购买一个私有RPC会对其空投、NFT mint等活动产生巨大助力。

目录[+]