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

新手9/28/2023, 1:58:37 AM
Metamask网络添加时为什么要填写RPC?为什么每个Dapp开发都离不开RPC?为什么有些人能利用RPC抢先交易?RPC服务商都有哪些?本文将为您解答更多RPC相关问题。

什么是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等活动产生巨大助力。

Author: Wayne
Translator: Piper
Reviewer(s): Edward、KOWEI、Elisa、Ashley He、Joyce
* The information is not intended to be and does not constitute financial advice or any other recommendation of any sort offered or endorsed by Gate.io.
* This article may not be reproduced, transmitted or copied without referencing Gate.io. Contravention is an infringement of Copyright Act and may be subject to legal action.

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

新手9/28/2023, 1:58:37 AM
Metamask网络添加时为什么要填写RPC?为什么每个Dapp开发都离不开RPC?为什么有些人能利用RPC抢先交易?RPC服务商都有哪些?本文将为您解答更多RPC相关问题。

什么是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等活动产生巨大助力。

Author: Wayne
Translator: Piper
Reviewer(s): Edward、KOWEI、Elisa、Ashley He、Joyce
* The information is not intended to be and does not constitute financial advice or any other recommendation of any sort offered or endorsed by Gate.io.
* This article may not be reproduced, transmitted or copied without referencing Gate.io. Contravention is an infringement of Copyright Act and may be subject to legal action.
Start Now
Sign up and get a
$100
Voucher!