onu*_*tan 8 javascript node.js solana
我正在使用 solana json rpc api 从我的 javascript 应用程序检查钱包的代币余额。我已经像这样使用了该功能
const getTokenBalance = async (walletAddress, tokenMintAddress) => {
const response = await axios({
url: `https://api.mainnet-beta.solana.com`,
method: "post",
headers: { "Content-Type": "application/json" },
data: {
jsonrpc: "2.0",
id: 1,
method: "getTokenAccountsByOwner",
params: [
walletAddress,
{
mint: tokenMintAddress,
},
{
encoding: "jsonParsed",
},
],
},
});
if (
Array.isArray(response?.data?.result?.value) &&
response?.data?.result?.value?.length > 0 &&
response?.data?.result?.value[0]?.account?.data?.parsed?.info?.tokenAmount
?.amount > 0
) {
return (
Number(
response?.data?.result?.value[0]?.account?.data?.parsed?.info
?.tokenAmount?.amount
) / 1000000000
);
} else {
return 0;
}
};
Run Code Online (Sandbox Code Playgroud)
然而,我想通过一次调用获取所有代币余额,而不是通过为每个代币提供一个铸币地址来询问代币余额,这使得我的 api 响应时间约为 10 分钟,有没有任何友好的方法可以做到这一点?
我看到Covalent api可以用来检查以太坊钱包余额,想知道他们是如何做到的
大多数标准 RPC 接受批量请求,您应该能够发送您想要的所有请求的数组,请注意,响应也将是一个数组。
// For example
const response = await axios({
url: `https://api.mainnet-beta.solana.com`,
method: "post",
headers: { "Content-Type": "application/json" },
data: [
{
jsonrpc: "2.0",
id: 1,
method: "getTokenAccountsByOwner",
params: [
walletAddress,
{
mint: tokenMintAddress,
},
{
encoding: "jsonParsed",
},
],
},
{
jsonrpc: "2.0",
id: 1,
method: "getTokenAccountsByOwner",
params: [
walletAddress2,
{
mint: tokenMintAddress2,
},
{
encoding: "jsonParsed",
},
],
},
]
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10068 次 |
| 最近记录: |