GTokenTool全网最好的代币发行工具平台
当前位置:首页 >> solana教程 >> 扩展的 RPC 方法 – 通过 RPC 方法获取所有区块链数据

扩展的 RPC 方法 – 通过 RPC 方法获取所有区块链数据

admin solana教程 172

您是否正在寻找使用 RPC 方法获取区块链数据的最简单方法?别再找了。在本指南中,我们将向您介绍 Moralis 的扩展 RPC 方法,使您能够查询我们的 API 提供的相同增强的、人性化的数据,但通过 RPC 样式的请求。这包括 ERC-20 余额、交易历史记录、代币元数据等。准备好开始编写代码了吗?以下是展示我们eth_getTokenBalances方法的脚本:

从‘node-fetch’导入fetch ;
const选项 = {
方法:'POST' ,
标题:{
  接受:'application/json' ,
  ‘内容类型’ :‘应用程序/json’
} ,
主体:JSON.stringify ({
  “jsonrpc” :“2.0” ,
  “ID” :1 ,
  “方法” :“eth_getTokenBalances” ,
  “参数” :[
    {
      “地址” :“0xcB1C1FdE09f811B294172696404e88E658659905” ,
    }
  ]
} )
} ;
获取('YOUR_NODE_URL' ,选项)
.then (响应= >响应.json ())
.then (响应= >控制台.log (响应))
.catch ( err = > console . error ( err ) ) ;

运行上述代码将返回指定钱包的 ERC-20 余额。以下是输出示例:

{
 //...
 结果:[
   {
     令牌地址:'0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' ,
     名称:'包裹以太' ,
     符号:'WETH' ,
     小数:18 ,
     徽标:'https ://logo.moralis.io/0x1_0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2_a578c5277503e547a072ae32517254ca' ,
     缩略图:'https ://logo.moralis.io/0x1_0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2_a578c5277503e547a072ae32517254ca' ,
     余额:' 10000000000000000 ' ,
     可能的垃圾邮件:false ,
     已验证合同:true ,
     总供应量:' 2746607222348759943423350 ' ,
     总供应量格式:' 2746607.22234875994342335 ' ,
     占总供应量的百分比:3.64085549569e-7
   } ,
   //...
 ]
}

使用 Moralis 时,通过 RPC 方法获取区块链数据并不会比这更复杂。如需更详细的教程,请按照本指南操作或访问我们的扩展 RPC 方法文档页面。

很高兴开始使用我们的扩展 RPC 方法?立即注册 Moralis!创建一个免费帐户以立即访问我们的扩展 RPC 方法、RPC 节点和高级 API。

概述

在 Web3 的背景下,RPC 是指简化去中心化应用程序 (dapps) 与区块链网络之间交互的通信协议。有多种 RPC 协议,它们具有标准化方法,允许开发人员无缝读取和写入区块链数据。但是,标准 RPC 方法通常非常有限,不允许进行常见查询,例如“钱包 X 持有哪些 ERC-20 代币?”要获取此信息,您必须发出多个请求并自行连接点。幸运的是,您现在可以使用 Moralis 的扩展 RPC 方法规避这些挑战。

Moralis 扩展 RPC 方法公告。

我们的扩展 RPC 方法允许您使用 RPC 样式的方法无缝查询解码的、人类可读的区块链数据:通过单次调用获取 ERC-20 余额、代币价格、元数据等。

但这是如何运作的呢?如果你想了解更多,请加入我们的指南,我们将为你一一介绍。让我们直接开始吧!

什么是 RPC 方法? 

RPC 是“远程过程调用”的缩写,指的是允许一个软件系统调用并请求另一台计算机上的另一个软件系统的服务的通信协议。在加密世界中,RPC 使 dapp 和其他 Web3 平台(客户端)能够与区块链网络(服务器)进行交互。

什么是 RPC 方法?

有标准化的协议,例如 JSON-RPC,它具有预定义的方法,例如eth_getUncleByBlockHashAndIndex。这些所谓的 RPC 方法允许您无缝执行各种操作,例如读取区块链数据、发送交易和管理钱包。

以下是以太坊常见的 RPC 方法列表:

  • eth_blockNumber:返回最近的区块编号。

  • eth_call:执行新消息调用。

  • eth_chainId:返回当前链ID。

  • eth_getBalance:返回账户余额。

  • eth_gasPrice:返回当前的 gas 价格。

总体而言,RPC 方法简化了与区块链网络的交互,有助于轻松开发 dapps 和其他 Web3 项目。

探索标准 RPC 方法的局限性

虽然 RPC 协议简化了 dapp 开发,但它们也存在一些需要您考虑的重大限制。通常,标准 RPC 方法仅提供基本的区块链数据。因此,常见的 RPC 方法并非设计用于处理诸如“钱包 X 持有哪些 ERC-20 代币?”之类的查询。

RPC 方法的局限性。

如果使用传统的 RPC 方法获取此类信息,开发人员必须多次发出请求并手动整理数据。这个过程非常繁琐且耗时,需要投入大量的开发精力和资源。

为了应对这些挑战,Moralis 引入了扩展 RPC 方法。但这些方法到底是什么?它们如何使开发人员受益?

在下一节中找出答案!

介绍 Moralis 的扩展 RPC 方法

我们的扩展 RPC 方法显著改进了我们的节点解决方案,通过 RPC 样式的方法提供了与 Moralis API 相同的增强功能。这些高级方法简化了查询解码的、人类可读的数据的过程,从而简化了您的 Web3 开发人员体验。

Moralis 标志。

Moralis 的增强型 RPC 方法包括什么?

  • eth_getTransactions:获取给定钱包的所有本机交易。

  • eth_getDecodedTransactions:获取特定钱包地址的详细交易历史记录。

  • eth_getTokenBalances:检索给定钱包地址的 ERC-20 代币余额。

  • eth_getTokenPrice:获取 ERC-20 代币的当前价格。

  • eth_getTokenMetadata:获取 ERC-20 代币的元数据。

  • eth_getNFTBalances:获取钱包持有的所有 NFT。

  • eth_getNFTCollections:获取特定钱包地址拥有的所有NFT收藏。

总之,Moralis 的增强型 RPC 方法显著扩展了我们节点的功能,通过 RPC 样式的请求,您可以获得与使用我们的 API 相同的增强数据!

三步教程:如何通过扩展的 RPC 方法获取所有区块链数据

现在,我们将概述 Moralis 的扩展 RPC 方法所包含的内容,并向您展示如何在实践中使用它们。更具体地说,我们将演示如何通过三个简单的步骤获取任何给定钱包的代币余额:

  1. 注册 Moralis 并创建节点

  2. 编写脚本

  3. 执行代码

步骤 1:注册 Moralis 并创建节点

如果还没有,请点击右上角的“免费开始”按钮来注册 Moralis:

红色箭头指向“免费开始”

登录后,转到“节点”选项卡并单击“+ 创建节点”按钮:

红色箭头指向“节点”选项卡和“+ 创建节点”按钮。

选择“以太坊”,然后选择“主网”,然后点击“创建节点”:

创建节点时选择“以太坊”和“主网”。

复制其中一个节点 URL 并暂时保留它,因为下一步您将需要它:

红色箭头指向节点 URL 的复制按钮。

第 2 步:编写脚本

打开您喜欢的 IDE,设置一个新文件夹,并使用以下终端命令初始化一个项目: 

npm init

初始化后,使用提供的终端命令安装必要的依赖项:

npm 安装 node-fetch--save
npm 安装 moralis@moralisweb3/common-evm-utils

接下来打开 package.json 并"type": "module"在文件中添加: 

类型:代码编辑器中突出显示的模块。

之后,创建一个“index.js”文件并插入提供的代码: 

从‘node-fetch’导入fetch ;
const选项 = {
方法:'POST' ,
标题:{
  接受:'application/json' ,
  ‘内容类型’ :‘应用程序/json’
} ,
主体:JSON.stringify ({
  “jsonrpc” :“2.0” ,
  “ID” :1 ,
  “方法” :“eth_getTokenBalances” ,
  “参数” :[
    {
      “地址” :“0xcB1C1FdE09f811B294172696404e88E658659905” ,
    }
  ]
} )
} ;
获取('YOUR_NODE_URL' ,选项)
.then (响应= >响应.json ())
.then (响应= >控制台.log (响应))
.catch ( err = > console . error ( err ) ) ;

从这里开始,您需要进行一些小配置。首先,通过替换添加您在第一步中复制的节点 URL YOUR_NODE_URL。接下来,配置address参数以适合您的查询:

代码就是这样。现在剩下的就是执行脚本。

步骤3:执行代码

要运行代码,请导航到项目的根文件夹并运行以下终端命令:

节点索引.js

作为回报,您将获得指定地址的代币余额,其中包含徽标、垃圾邮件指示器等。它可能看起来像这样:

{
 //...
 结果:[
   {
     令牌地址:'0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' ,
     名称:'包裹以太' ,
     符号:'WETH' ,
     小数:18 ,
     徽标:'https ://logo.moralis.io/0x1_0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2_a578c5277503e547a072ae32517254ca' ,
     缩略图:'https ://logo.moralis.io/0x1_0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2_a578c5277503e547a072ae32517254ca' ,
     余额:' 10000000000000000 ' ,
     可能的垃圾邮件:false ,
     已验证合同:true ,
     总供应量:' 2746607222348759943423350 ' ,
     总供应量格式:' 2746607.22234875994342335 ' ,
     占总供应量的百分比:3.64085549569e-7
   } ,
   //...
 ]
}

就是这样!使用 Moralis 的扩展 RPC 方法获取数据并不一定比这更具挑战性!

扩展 RPC 方法用例

我们的扩展 RPC 方法显著改善了 Web3 开发人员的体验,使您能够轻松构建各种 dapp。以下是我们增强的 RPC 方法的三个常见用例,它们提供与我们强大的 API 相同的数据:

  • 代币余额:只需一次调用即可检索任何钱包的代币余额,无需手动聚合数据。

  • 交易历史:通过简化的 RPC 调用访问任何地址的交易历史。

  • 代币价格:轻松从去中心化交易所(DEX)直接获取实时代币价格。

来自扩展 RPC 方法的代币价格。

有了这些全面的数据,您可以用最少的努力开发从加密货币钱包到代币浏览器的一切!

超越扩展的 RPC 方法——探索 Moralis Web3 API 的来龙去脉

除了我们增强的 RPC 方法外,Moralis 还提供了一套多样化的用例专用 API,包括 Wallet API、Token API、Streams API 等。这些一流的接口使您能够轻松构建从 Web3 钱包到代币浏览器的一切。

Moralis 标志。

为什么选择 Moralis 的 API?

  • 全面:Moralis 的 Web3 API 注重结果,通过更少的调用提供更多数据。这让您享受无缝的开发人员体验,使您能够更快、更高效地构建 dapp。

  • 跨链:我们支持 30 多个区块链网络的全功能对等,包括以太坊、Polygon、Base、Optimism 等。借助 Moralis,一个提供商即可满足您的所有数据需求。

  • 安全:Moralis 通过了 SOC 2 Type 2 认证,可确保您的应用程序具有企业级数据安全。

让我们深入了解我们的 API 套件,探索我们一流接口的功能以及它们如何增强您的开发过程!

Moralis 的 Web3 API 套件

我们全面的 Web3 API 套件包括十多个不同的接口,旨在满足各种用例。虽然本指南不会涵盖所有内容,但我们将重点介绍三个关键示例:

  • 钱包 API

  • 代币 API

  • NFT API

让我们首先深入了解我们的钱包 API!

钱包 API

Wallet API 提供全面的功能、无与伦比的灵活性和卓越的可扩展性,是钱包构建者的终极工具。使用此界面可以访问任何钱包的历史记录、代币余额、DeFi 头寸等等!

钱包 API。

Wallet API 支持所有主要链上的数百万个地址,包括以太坊、Polygon、Base、Optimism 等,无论您在哪个平台上构建,它都允许您将钱包数据无缝集成到您的 dapp 中。

为了展示 Wallet API 的强大功能,下面展示了获取钱包交易历史记录的简单方法:

从‘node-fetch’导入fetch ;
const选项 = {
方法:'GET' ,
标题:{
  接受:'application/json' ,
  'X-API 密钥' :'YOUR_API_KEY'
} ,
} ;
拿来(
'https://deep-index.moralis.io/api/v2.2/wallets/0xda74Ac6b69Ff4f1B6796cdDf61fBDd4A5f68525f/history?chain=eth&order=DESC' ,
选项
.then ((响应)= >响应.json ())
.then ( (响应) = > console.log (响应) )
.catch ( ( err ) = > console.error ( err ) ) ;

运行上述脚本可为您提供指定钱包的完整交易历史记录,其中包含每个事件的可读类别标签、摘要、地址标签等。以下是它可能的样子:

{
 //...
 “结果”:[
   {
     “哈希”:“0xc565260238f59fc3f35b74f3011375c7d637db9b075f77d342c30d19f946272e” ,
     “随机数”:“14” ,
     “交易索引”:“75” ,
     “来自地址”:“0xda74ac6b69ff4f1b6796cddf61fbdd4a5f68525f” ,
     “来自地址标签”:null ,
     “to_address”:“0xdac17f958d2ee523a2206206994597c13d831ec7” ,
     "to_address_label": "泰达币 (USDT)" ,
     “值”:“0” ,
     “气体”:“55331” ,
     “gas_price”:“13623172301” ,
     “receipt_cumulative_gas_used”:“13917979” ,
     “receipt_gas_used”:“41309” ,
     "receipt_status": "1" ,
     “block_timestamp”:“2024-05-14T14:00:23.000Z” ,
     “区块编号”:“19868695” ,
     “块哈希”:“0x660274d577cd20b0b82c1bff5f3c5641ba6027544e005f9256d5add9c7447920” ,
     “交易费用”:“0.000562759624582009” ,
     "nft_transfers": [ ]复制代码
     “erc20_transfers”:[
       {
         “token_name”:“Tether USD” ,
         “token_symbol”:“USDT” ,
         “token_logo”:“https://logo.moralis.io/0x1_0xdac17f958d2ee523a2206206994597c13d831ec7_0b0d126af6c744c185e112a2c8dc1495” ,
         “token_decimals”:“6” ,
         “来自地址”:“0xda74ac6b69ff4f1b6796cddf61fbdd4a5f68525f” ,
         “来自地址标签”:null ,
         “to_address”:“0x28c6c06298d514db089934071355e5743bf21d60” ,
         "to_address_label": "币安14" ,
         “地址”:“0xdac17f958d2ee523a2206206994597c13d831ec7” ,
         “日志索引”:338 ,
         “值”:“50000000000” ,
         “possible_spam”:false ,
         “verified_contract”:true ,
         “方向”:“发送” ,
         “值格式”:“50000”
       }
     ] ,
     “方法标签”:null ,
     “本机传输”:[ ] ,
     “summary”:“已向币安14发送50,000 USDT” ,
     “possible_spam”:false ,
     “类别”:“令牌发送”
   } ,
   //...
 ]
}

代币 API

Moralis 的代币 API 是您获取 ERC-20 数据并将其集成到 Web3 项目中的必备工具。借助此一流界面,您可以无缝检索代币余额、价格、元数据、所有者等。

令牌 API。

Token API 涵盖所有主要链上的每种代币,包括稳定币(如 USDT)、表情包币(如 Shiba Inu)、LP 代币以及介于两者之间的所有代币。这种全面的覆盖范围让您可以轻松构建跨链代币浏览器、投资组合追踪器等。

为了展示 Token API 的强大功能,我们将向您展示如何获取任何钱包的代币余额和价格:

从‘node-fetch’导入fetch ;
const选项 = {
 方法:'GET' ,
 标题:{
   接受:'application/json' ,
   'X-API 密钥' :'YOUR_API_KEY'
 } ,
} ;
获取('https://deep-index.moralis.io/api/v2.2/wallets/0xcB1C1FdE09f811B294172696404e88E658659905/tokens?chain=eth' ,选项)
 .then (响应= >响应.json ())
 .then (响应= >控制台.log (响应))
 .catch ( err = > console . error ( err ) ) ;

通过运行提供的脚本,您将收到钱包的代币余额,其中包含价格、价格随时间的变化以及其他元数据。以下是响应的示例:

{
 //...
 “结果”:[
   {
     “token地址”:“0xae7ab96520de3a18e5e111b5eaab095312d7fe84” ,
     “符号”:“stETH” ,
     “name”: “Liquid Staked Ether 2.0” ,
     “标志”:“https://logo.moralis.io/0x1_0xae7ab96520de3a18e5e111b5eaab095312d7fe84_cd0f5053ccb543e08f65554bf642d751” ,
     “缩略图”:“https://logo.moralis.io/0x1_0xae7ab96520de3a18e5e111b5eaab095312d7fe84_cd0f5053ccb543e08f65554bf642d751” ,
     “小数”:18 ,
     “余额”:“61135846911533523” ,
     “possible_spam”:false ,
     “verified_contract”:true ,
     “总供给量”:“9788873903061556217474312” ,
     “总供应格式”:“9788873.903061556217474312” ,
     “相对于总供应量的百分比”:6.2454422763e-7 ,
     “余额格式”:“0.061135846911533523” ,
     “美元价格”:2731.4812583950234 ,
     “美元价格24小时百分比变化”:2.9851365470017 ,
     “美元价格24小时美元变化”:79.1749645169798 ,
     “美元值”:166.99142005496108 ,
     “美元价值24小时美元变化”:4.840428509936174 ,
     “本机令牌”:false ,
     “portfolio_percentage”:44.16600478357348
   } ,
   //...
 ]
}

NFT API

NFT API 为您提供全面的 NFT 数据。只需几行代码,您就可以访问 NFT 余额、最新元数据、价格、图像预览等。

NFT API。

Moralis 的 NFT API 支持所有主要区块链网络中的数百万个 NFT 集合,从 CryptoPunks 等知名项目到新铸造的代币。无论您是在开发 NFT 市场、Web3 游戏还是类似平台,此 API 都是一个必不可少的工具。

为了证明易用性,这里有一个可以轻松获取 NFT 元数据的脚本:

从‘node-fetch’导入fetch ;
const选项 = {
 方法:'GET' ,
 标题:{
   接受:'application/json' ,
   'X-API 密钥' :'YOUR_API_KEY'
 } ,
} ;
获取('https://deep-index.moralis.io/api/v2.2/nft/0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1?chain=eth' ,选项)
 .then (响应= >响应.json ())
 .then (响应= >控制台.log (响应))
 .catch ( err = > console . error ( err ) ) ;

运行此脚本将返回指定 NFT 的元数据,可能如下所示:

{
 “金额”:“1” ,
 “token_id”:“1” ,
 “token_address”:“0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb” ,
 “合约类型”:“CRYPTOPUNKS” ,
 “所有者”:“0xffa914c83d851b9fe372e4ba6a6e131373aa16ab” ,
 “last_metadata_sync”:“2024-08-10T14:39:45.042Z” ,
 “last_token_uri_sync”:“2024-08-10T14:39:44.622Z” ,
 “元数据”:“{\”图像\“:\”https://www.larvalabs.com/cryptopunks/cryptopunk001.png\”,\“名称\“:\”CryptoPunk 001\“,\“属性\”:[\“微笑\”,\“莫霍克\”],\“描述\“:\”男性\“}” ,
 “区块编号”:“16079985” ,
 “区块数量”:null ,
 “名称”:“CRYPTOPUNKS” ,
 “符号”:“Ͼ” ,
 “token_hash”:“a99d02058e62e327e79aabd57e0b88a3” ,
 "token_uri": "无效的 uri" ,
 “minter_address”:空,
 “稀有度等级”:7247 ,
 “稀有度百分比”:72.47 ,
 "rarity_label": "前 73%" ,
 “已验证集合”:true ,
 “possible_spam”:false ,
 “collection_logo”:“https://i.seadn.io/gae/BdxvLseXcfl57BiuQcQYdJ64v-aI8din7WPk0Pgo3qQFhAUH-B6i-dCqqc_mCkRIzULmwzwecnohLhrcH8A9mpWIZqA7ygc52Sr81hE?w=500&auto=format” ,
 "collection_banner_image": "https://i.seadn.io/gae/48oVuDyfe_xhs24BC2TTVcaYCX7rrU5mpuQLyTgRDbKHj2PtzKZsQ5qC3xTH4ar34wwAXxEKH8uUDPAGffbg7boeGYqX6op5vBDcbA?w=500&auto=format"
}

访问官方Web3 API页面,了解有关我们的接口的更多信息,包括区块链 API、流 API、市场数据 API 等!

摘要:扩展的RPC方法 – 通过RPC方法获取所有区块链数据

RPC 代表“远程过程调用”,在 Web3 的上下文中,它是指允许 dapp 与区块链网络通信的通信协议。有标准的 RPC 协议具有 RPC 方法。但是,传统的 RPC 方法通常受到限制,仅提供基本的链上数据。例如,您无法使用传统的 RPC 方法轻松获取钱包的 ERC-20 余额。要获得这样的全面数据,您通常需要发出多个请求并手动解码信息。幸运的是,我们提供了一个简化的解决方案:扩展 RPC 方法!

扩展的 RPC 方法摘要。

我们的扩展 RPC 方法通过 RPC 样式的请求提供与我们的 API 相同的增强功能。借助这些方法,您可以使用单个调用无缝查询 ERC-20 余额、代币价格、元数据等。以下是我们的一些主要方法:

  • eth_getTransactions:检索钱包地址的交易。

  • eth_getDecodedTransactions:获取钱包地址的详细交易历史记录。

  • eth_getTokenBalances:检索钱包地址的 ERC-20 代币余额。

  • eth_getTokenPrice:获取 ERC-20 代币的当前价格。

  • eth_getTokenMetadata:通过 ERC-20 代币的地址获取其元数据。

  • eth_getNFTBalances:检索钱包持有的 NFT。

  • eth_getNFTCollections:获取钱包地址拥有的NFT收藏品。

总而言之,我们的扩展 RPC 方法改进了我们的节点解决方案,使您可以通过 RPC 样式的请求访问与我们的 API 相同的增强功能。作为回报,您可以直接从 Moralis 节点查询已解码的、人性化的数据!

作者:GTokenTool一键发币平台

交流群:https://t.me/+Kz4u3xoDpFo3ZWY1

同类推荐