什么是RPC方法?RPC是“远程过程调用”的缩写,是指允许一个软件系统调用和请求其他设备上的软件服务的通信协议。在区块链领域,RPC协议使dapp能够与以太坊、Optimism和Base等区块链网络进行交互。有多种标准化的RPC协议,其中JSON-RPC就是一个突出
<!--StartFragment-->
RPC 是“远程过程调用”的缩写,是指允许一个软件系统调用和请求其他设备上的软件服务的通信协议。在区块链领域,RPC 协议使 dapp 能够与以太坊、Optimism 和 Base 等区块链网络进行交互。
有多种标准化的 RPC 协议,其中 JSON-RPC 就是一个突出的例子。它具有许多预定义的 RPC 方法,例如[eth_getProof
],可简化区块链交互。这些 RPC 方法使无缝读取和写入链上数据成为可能。
以下是一些突出的方法:
eth_getTransactionByHash
:通过哈希返回有关交易的数据。eth_getChainId
:返回当前链ID。eth_gasPrice
:返回当前的 gas 价格。eth_getBalance
:返回地址的余额。eth_getBlockNumber
:返回最近的区块编号。然而,虽然标准 RPC 方法简化了区块链交互,但它们也有一些你应该考虑的重大限制。例如,它们不能直接提供代币价格。要获取这些数据,你需要发出多个请求,甚至需要第三方提供商的参与。
为了解决这个问题并提供更加无缝的开发人员体验,我们推出了下一代 RPC 节点!
Moralis 是一家知名的 RPC 节点提供商,为您提供下一代节点,以简化您的开发人员体验。借助我们直观的点击界面,您可以轻松地为所有主要链设置 RPC 节点,包括以太坊、Optimism、Base、Polygon、BNB 智能链 (BSC) 等。
但是什么使得我们的 RPC 节点如此特别呢?
体验具有闪电般快速的响应时间、无与伦比的可靠性和强大的扩展 RPC 方法的下一代 RPC 节点!
借助 Moralis 的扩展 RPC 方法,您现在可以通过 RPC 样式的请求无缝获取已解码的、人类可读的数据。只需一次调用,您就可以获取 NFT 余额、ERC-20 余额、已解码的钱包历史记录、元数据、代币价格等等。因此,使用 Moralis 时,您可以简化开发人员体验并更快、更高效地构建 dapp。
以下是所有可用的方法:
eth_getTokenPrice
:获取任何 ERC-20 代币的价格。eth_getNFTBalances
:获取钱包的 NFT 余额。eth_getNFTCollections
:获取钱包持有的所有收藏品。eth_getTransactions
:查询钱包的原生交易。 eth_getDecodedTransactions
:获取钱包的完整交易历史记录。eth_getTokenBalances
:查询钱包的ERC-20余额。eth_getTokenMetadata
:获取 ERC-20 代币的元数据。总之,上述方法让您可以通过 RPC 风格的请求无缝访问已解码的、人类可读的数据。
eth_getTokenPrice
– 通过一次 RPC 调用获取代币价格使用我们的eth_getTokenPrice
方法,您现在可以轻松无缝地获取代币价格。您只需一个 RPC 请求,即可收到以链的原生加密货币和美元计价的任何代币的价格。因此,使用 RPC 节点获取代币价格从未像与 Moralis 合作时那样容易。
但是该方法如何eth_getTokenPrice
工作?响应究竟是什么样的?如果您正在寻找这些问题的答案,请继续阅读,我们将指导您完成一个全面的教程,了解如何通过三个简单的步骤使用 RPC 节点获取代币价格!
现在我们将向您展示如何使用 RPC 节点获取代币价格。得益于我们的扩展 RPC 方法的可访问性,您可以通过三个简单的步骤获取这些数据:
eth_getTokenPrice
然而,在继续之前,您需要满足一些先决条件!
如果尚未准备好,请确保在继续之前已准备好以下内容:
点击右上角的“免费开始”按钮注册 Moralis 账户:
登录,导航到“节点”选项卡,然后点击“+ 创建节点”:
选择”以太坊”、“主网”,点击”创建节点”:
复制并保留其中一个节点 URL,因为您将在以下步骤中需要它:
eth_getTokenPrice
在您喜欢的 IDE 中设置一个新文件夹,并使用以下终端命令初始化一个项目:
npm init
通过在终端中运行以下命令来安装所需的依赖项:
npm 安装 node-fetch--save
npm 安装 moralis\@moralisweb3/common-evm-utils
添加”type”: ”module”
到您的”package.json”文件:
新建”index.js”文件并添加以下代码:
从‘node-fetch’导入fetch ;
const选项 = {
方法:'POST' ,
标题:{
接受:'application/json' ,
‘内容类型’ :‘应用程序/json’
} ,
主体:JSON.stringify ({
“jsonrpc” :“2.0” ,
“ID” :1 ,
“方法” :“eth_getTokenPrice” ,
“参数” :[
{
“地址” :“0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48” ,
“包括” :“百分比变化”
}
]
} )
} ;
获取('YOUR_NODE_URL' ,选项)
.then (响应= >响应.json ())
.then (响应= >控制台.log (响应))
.catch ( err = > console . error ( err ) ) ;
替换YOUR_NODE_URL
为初始步骤中复制的 URL,并调整address
参数以适合您的查询:
在项目的根文件夹中运行下面的终端命令来执行脚本:
节点索引.js
作为回报,您将获得以链的本币和美元计价的指定代币的价格。此外,响应还包含代币徽标、符号、价格随时间的变化等内容。以下是它可能的样子:
{
jsonrpc :' 2.0 ' ,
ID :1 ,
结果:{
tokenName : 'USD Coin' ,
代币符号: 'USDC' ,
令牌标志:'https : //logo.moralis.io/0x1_0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48_032b6f94fd2bd5af6c065def140109e9' ,
标记小数点后的数字:' 6 ' ,
本地价格:{
值:' 399015837290761 ' ,
小数:18 ,
名称:'Ether' ,
符号:'ETH' ,
地址:'0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
} ,
美元价格:0.9998033934658264 ,
美元价格格式:' 0.999803393465826414 ' ,
‘24 小时百分比变化’ :‘ -0.023636130935194257 ’ ,
交易所名称: 'Uniswap v3' ,
交易所地址:'0x1F98431c8aD98523631AE4a59f267346ea31F984' ,
令牌地址:'0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' ,
价格最后更改时间:' 20669844 ' ,
可能的垃圾邮件:false ,
已验证合同:true ,
对地址:'0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640' ,
对总流动性美元:' 165658281.27 '
}
}
就是这样;您现在知道如何使用 RPC 节点获取代币价格!
代币价格在各种 dapp 中都有使用。以下是三个突出的例子:
这些只是几个例子。代币价格数据对于构建去中心化交易所 (DEX)、代币分析平台等也至关重要。
现在您已经知道如何使用节点获取代币价格,让我们来探索其他一些扩展 RPC 方法。更具体地说,我们将仔细研究以下三个方法:
eth_getTransactions
eth_getTokenBalances
eth_getNFTBalances
eth_getTransactions
借助,您现在可以[使用 RPC 节点]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_getTokenBalances
使用我们的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
} ,
//...
]
}
eth_getNFTBalances
使用该方法,您[只需一次 RPC 调用eth_getNFTBalances
即可轻松获取 NFT 余额。轻松获取并将 NFT 余额集成到您的 dapp 中。以下是展示其工作原理的示例脚本:
从‘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 ) ) ;
作为调用端点的回报eth_getNFTBalances
,您将获得指定钱包的 NFT 余额。此外,响应还包含地址、收集数据、元数据等:
{
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'
} ,
//...
]
}
}
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!