扩展的RPC方法我们的扩展RPC方法让您能够轻松地通过RPC节点获取已解码的、人性化的数据。只需一次调用即可获得NFT余额、已解码的交易、代币价格、元数据等。因此,当利用我们的下一代节点时,您可以简化开发人员体验并通过RPC样式的请求轻松获取链上数据。有哪些方法可用?
<!--StartFragment-->
我们的扩展 RPC 方法让您能够轻松地通过 RPC 节点获取已解码的、人性化的数据。只需一次调用即可获得 NFT 余额、已解码的交易、代币价格、元数据等。因此,当利用我们的下一代节点时,您可以简化开发人员体验并通过 RPC 样式的请求轻松获取链上数据。
有哪些方法可用?
eth_getNFTBalances
:获取钱包的 NFT 余额。 eth_getNFTCollections
:获取钱包里的收藏品。eth_getTransactions
:查询钱包原生交易历史记录。 eth_getDecodedTransactions
:获取钱包的完整交易历史记录。 eth_getTokenBalances
:获取钱包的 ERC-20 余额。eth_getTokenMetadata
:获取ERC-20代币元数据。 eth_getTokenPrice
:了解任何 ERC-20 代币的价格。 总而言之,通过上述方法,您可以毫不费力地使用 RPC 样式的请求获取解码的、人类可读的数据。
eth_getNFTBalances
– 通过一次 RPC 调用获取 NFT 余额的最简单方法如果您正在寻找一种只需一次 RPC 调用即可轻松获取 NFT 余额的方法,该eth_getNFTBalances
方法是您的首选。此方法提供了指定钱包的 NFT 的完整列表,其中包含元数据、地址、符号、集合数据等。因此,使用 RPC 节点获取钱包的 NFT 余额从未如此简单。
但这究竟是如何工作的?实际的响应是什么样的?要回答这些问题,请继续关注下一节,我们将带您完成一个完整的教程,教您如何仅通过一个 RPC 请求获取钱包的 NFT 余额!
通过我们的扩展 RPC 方法和eth_getNFTBalances
端点,您可以通过三个简单的步骤无缝获取 NFT 余额:
eth_getNFTBalances
。然而,在我们开始之前,您需要处理一些先决条件。
在开始本教程之前,请确保您已准备好以下内容:
点击右上角的“免费开始”按钮并注册一个 Moralis 免费帐户:
登录后,进入”节点”选项卡,点击”+ 创建节点”来设置节点:
选择“以太坊”,然后选择“主网”,然后单击“创建节点”:
复制并保留其中一个节点 URL,因为下一步您将需要它:
eth_getNFTBalances
在集成开发环境 (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_getNFTBalances” ,
“参数” :[
{
“地址” :“0xDc597929101c2DE50c97D43C8EA3A372Bf55fdc0” ,
“限制” :10 ,
}
]
} )
} ;
获取('YOUR_NODE_URL' ,选项)
.then (响应= >响应.json ())
.then (响应= >控制台.log (响应))
.catch ( err = > console . error ( err ) ) ;
替换YOUR_NODE_URL
为您在第一步中复制的 URL,并配置address
参数以适合您的要求:
在项目的根文件夹中运行此终端命令来执行脚本:
节点索引.js
通过运行脚本,您将收到指定地址拥有的所有代币的数组。响应包含每个元素的元数据、地址、符号、集合数据等。以下是示例响应:
{
jsonrpc :' 2.0 ' ,
ID :1 ,
结果:{
//...
结果:[
{
数量:' 1 ' ,
token_id :' 1919 ' ,
令牌地址:'0xbd3531da5cf5857e7cfaa92426877b022e612cf8' ,
合约类型:'ERC721' ,
所有者:'0xdc597929101c2de50c97d43c8ea3a372bf55fdc0' ,
last_metadata_sync :' 2024-08-25T23 :35 :51.384 Z ' ,
last_token_uri_sync :' 2024-08-25T23 :35 :50.893 Z ' ,
元数据:' { “属性”:[ { “trait_type”:“背景” ,“value”:“薄荷” } ,{ “trait_type”:“皮肤” ,“value”:“橄榄绿” } ,{ “trait_type”:“身体” ,“value”:“高领粉色” } ,{ “trait_type”:“脸” ,“value”:“眼罩” } ,{ “trait_type”:“头部” ,“value”:“巫师帽” } ] ,“description”:“8888 只可爱的胖乎乎的企鹅在冰冻的 ETH 区块链上滑动。” , "image": "ipfs\://QmNf1UsmdGaMbpatQ6toXSkzDpizaGmC9zfunCyoz1enD5/penguin/1919.png" , "name": "Pudgy Penguin #1919" } ' ,
区块编号:' 19754671 ' ,
区块数量:null ,
名称:'PudgyPenguins' ,
符号:'PPG' ,
token_hash : 'cbd8bd0901f422afb88e76615e3d2a1a' ,
token_uri :'https : //ipfs.moralis.io : 2053 /ipfs/bafybeibc5sgo2plmjkq2tzmhrn54bk3crhnc23zd2msg4ea7a4pxrkgfna/ 1919 ' ,
minter_address :空,
已验证的集合:true ,
可能的垃圾邮件:false ,
collection_logo :'https ://i.seadn.io/gae/yNi-XdGxsgQCPpqSio4o31ygAV6wURdIdInWRcFIl46UjUQ1eV7BEndGe8L661OoG-clRi7EgInLX4LPu9Jfw4fq0bnVYHqg7RFi ?w = 500 &auto = format' ,
collection_banner_image :'https ://i.seadn.io/gcs/files/8a26e3de0f309089cbb1e5ab969fc0bc.png ?w= 500 &auto=format'
} ,
//...
]
}
}
获取钱包的 NFT 余额只是使用我们的扩展 RPC 方法可以执行的众多操作之一。因此,让我们深入了解其他三种方法:
eth_getTransactions
eth_getDecodedTransactions
eth_getTokenBalances
eth_getTransactions
使用该eth_getTransactions
方法,您现在只需一次调用即可轻松[使用 RPC 节点获取钱包交易]。这意味着您不再需要处理无休止的请求,从而为您提供更加简化的开发人员体验。以下是显示该方法实际运行的示例:
从‘node-fetch’导入fetch ;
const选项 = {
方法:'POST' ,
标题:{
接受:'application/json' ,
‘内容类型’ :‘应用程序/json’
} ,
主体:JSON.stringify ({
“jsonrpc” :“2.0” ,
“ID” :1 ,
“方法” :“eth_getTransactions” ,
“参数” :[
{
“地址” :“0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045” ,
“限制” :100 ,
}
]
} )
} ;
获取('YOUR_NODE_URL' ,选项)
.then (响应= >响应.json ())
.then (响应= >控制台.log (响应))
.catch ( err = > console . error ( err ) ) ;
运行上述脚本后,您将获得钱包过去原生交易的列表。此外,每笔交易都包含时间戳、地址标签、gas 价格等信息。它可能如下所示:
{
//...
结果:[
{
哈希:'0xd89b02f289a08ae7b2feead06031fec20777bad8b73fc8d853f9040bc423a6c7' ,
随机数:' 0 ' ,
交易索引:' 142 ' ,
来自地址:'0xda74ac6b69ff4f1b6796cddf61fbdd4a5f68525f' ,
发件人地址标签:'' ,
收件人地址:'0xdac17f958d2ee523a2206206994597c13d831ec7' ,
to_address_label : 'Tether USD (USDT )' ,
值:' 0 ' ,
气体:' 207128 ' ,
汽油价格:' 17020913648 ' ,
输入:'0xa9059cbb000000000000000000000000028c6c06298d514db089934071355e5743bf21d600000000000000000000000000000000000000000000000000000000017a1df1700' ,
收据累计使用气体量:' 8270587 ' ,
收据气体使用量:' 41309 ' ,
收据合同地址: null ,
收据根: null ,
收据状态:' 1 ' ,
block_timestamp :' 2023-01-22T15 :00 :11.000 Z ' ,
区块编号:' 16463098 ' ,
块哈希:'0x2439330d0a282f9a6464b0aceb9f766ac4d7b050c048b4a1322b48544c61e01d' ,
交易费用:' 0.000703116921885232 '
} ,
//...
]
}
}
eth_getDecodedTransactions
该方法允许你[使用 RPC 节点]eth_getDecodedTransactions
轻松获取解码的钱包历史记录。只需一个请求,你就可以无缝获取任何钱包的完整历史记录,包括原生交易、ERC-20 转账、NFT 转账等。以下是展示实际工作原理的 脚本:eth_getDecodedTransactions`
从‘node-fetch’导入fetch ;
const选项 = {
方法:'POST' ,
标题:{
接受:'application/json' ,
‘内容类型’ :‘应用程序/json’
} ,
主体:JSON.stringify ({
“jsonrpc” :“2.0” ,
“ID” :1 ,
“方法” :“eth_getDecodedTransactions” ,
“参数” :[
{
“地址” :“0xda74Ac6b69Ff4f1B6796cdDf61fBDd4A5f68525f” ,
}
]
} )
} ;
获取('YOUR_NODE_URL' ,选项)
.then (响应= >响应.json ())
.then (响应= >控制台.log (响应))
.catch ( err = > console . error ( err ) ) ;
执行上述脚本后,您将获得钱包的完整历史记录。此外,每笔交易都包含类别标签、事件摘要、地址标签和其他有用信息。以下是示例响应:
{
//...
“结果”:[
{
“区块哈希”:“0x660274d577cd20b0b82c1bff5f3c5641ba6027544e005f9256d5add9c7447920” ,
“区块编号”:“19868695” ,
“block_timestamp”:“2024-05-14T14:00:23.000Z” ,
“来自地址”:“0xda74ac6b69ff4f1b6796cddf61fbdd4a5f68525f” ,
“from_address_label”:null ,
“from_address_entity”:null ,
“from_address_entity_logo”:null ,
“to_address”:“0xdac17f958d2ee523a2206206994597c13d831ec7” ,
"to_address_label": "泰达币 (USDT)" ,
“to_address_entity”:null ,
"to_address_entity_logo": null ,
“气体”:“55331” ,
“gas_price”:“13623172301” ,
“哈希”:“0xc565260238f59fc3f35b74f3011375c7d637db9b075f77d342c30d19f946272e” ,
“随机数”:“14” ,
“receipt_cumulative_gas_used”:“13917979” ,
“receipt_gas_used”:“41309” ,
"receipt_status": "1" ,
“交易费用”:“0.000562759624582009” ,
“交易索引”:“75” ,
“值”:“0” ,
“receipt_contract_address”:空,
"nft_transfers": [ ]复制代码
“erc20_transfers”:[
{
“token_name”:“Tether USD” ,
“token_symbol”:“USDT” ,
“token_logo”:“https\://logo.moralis.io/0x1_0xdac17f958d2ee523a2206206994597c13d831ec7_3282f332c2ac2948929f01fe7d921c51” ,
“token_decimals”:“6” ,
“来自地址”:“0xda74ac6b69ff4f1b6796cddf61fbdd4a5f68525f” ,
“from_address_entity”:null ,
“from_address_entity_logo”:null ,
“from_address_label”:null ,
“to_address”:“0x28c6c06298d514db089934071355e5743bf21d60” ,
"to_address_label": "币安14" ,
"to_address_entity": "币安" ,
“to_address_entity_logo”:“https\://entities-logos.s3.us-east-1.amazonaws.com/binance.png” ,
“地址”:“0xdac17f958d2ee523a2206206994597c13d831ec7” ,
“日志索引”:338 ,
“值”:“50000000000” ,
“possible_spam”:false ,
“verified_contract”:true ,
“方向”:“发送” ,
“值格式”:“50000”
}
] ,
"method_label": "转移" ,
"native_transfers": [ ]复制代码
“summary”:“已向币安14发送50,000 USDT” ,
“possible_spam”:false ,
“类别”:“令牌发送”
} ,
//...
}
]
}
eth_getTokenBalances
使用 Moralis 的eth_getTokenBalances
方法,您可以轻松使用 RPC 节点获取 ERC-20 代币余额。这意味着您不再需要发出多个请求并自行拼凑数据。只需一个请求,您就可以获得所需的所有信息。以下是展示该方法的示例:
从‘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
} ,
//...
]
}
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!