Helius 数字资产标准 (DAS) API 提供了强大的工具,用于读取和查询 Solana 上的 NFT 和代币数据。本指南向您展示如何有效地处理不同类型的 Solana 资产。
代币价格数据
getAsset 返回的价格数据是缓存的,可能不是最新的。价格信息有 60 秒的缓存,这意味着数据可能最多有 60 秒的延迟。
const fetchTokenPriceData = async () => {
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: "1",
method: "getAsset",
params: {
id: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", // Bonk token mint address
displayOptions: {
showFungibleTokens: true
}
},
}),
});
const data = await response.json();
// Calculate market cap
if (data.result?.token_info?.price_info) {
const { price_per_token } = data.result.token_info.price_info;
const { supply, decimals } = data.result.token_info;
// Adjust supply for decimals
const adjustedSupply = supply / Math.pow(10, decimals);
const marketCap = price_per_token * adjustedSupply;
console.log(`Market Cap: $${marketCap.toLocaleString()}`);
}
return data;
};
响应结构
价格数据在响应中可通过 token_info.price_info
获取:
{
"token_info": {
"symbol": "Bonk",
"supply": 8881594973561640000,
"decimals": 5,
"token_program": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"price_info": {
"price_per_token": 0.0000192271,
"currency": "USDC"
}
}
}
计算市值
要计算代币的市值,将其价格乘以调整后的供应量(考虑小数位):
const adjustedSupply = supply / Math.pow(10, decimals);
const marketCap = pricePerToken * adjustedSupply;
此计算通过正确考虑代币的小数位,给出代币的总市场估值。
处理 NFTs 和数字收藏品
DAS API 提供了多种方法来处理 NFTs 和数字收藏品。这些方法允许您检索单个资产、按所有者或创建者查询,并验证链上真实性。
Get Single NFT
Find by Owner
Advanced Search
获取单个NFT
检索特定NFT的综合数据:
const getNFT = async (mintAddress) => {
const response = await fetch('https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY', {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: "1",
method: "getAsset",
params: {
id: mintAddress,
},
}),
});
const data = await response.json();
return data;
};
// Example usage
getNFT("F9Lw3ki3hJ7PF9HQXsBzoY8GyE6sPoEZZdXJBsTTD2rk");
高级NFT查询方法
By Creator
By Collection
Transaction History
On-Chain Proof
const getAssetsByCreator = async (creatorAddress) => {
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: "1",
method: "getAssetsByCreator",
params: {
creatorAddress: creatorAddress,
page: 1,
limit: 100,
},
}),
});
const data = await response.json();
return data;
};
// Example usage
getAssetsByCreator("9uBX3ASjxWvNBAD1xjbVaKA74mWGZys3RGSF7DdeDD3F");
使用SPL代币
可以通过Helius API中的多种方法查询SPL代币。这些方法允许您检查余额、查找代币账户和获取代币元数据。
常见的SPL代币操作
Token Balance
Tokens by Owner
Token Supply
Largest Holders
const getTokenBalance = async (tokenAccountAddress) => {
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: '1',
method: 'getTokenAccountBalance',
params: [tokenAccountAddress]
})
});
const data = await response.json();
return data;
};
// Example usage
getTokenBalance("3emsAVdmGKERbHjmGfQ6oZ1e35dkf5iYcS6U4CPKFVaa");
API Reference
查看getTokenAccountBalance文档
高级 SPL 代币查询
您还可以找到持有特定代币铸造的所有账户:
const getTokenAccountsByMint = async (mintAddress) => {
const response = await fetch("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY", {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: '1',
method: 'getTokenAccountsByOwner',
params: [
'CEXq1uy9y15PL2Wb4vDQwQfcJakBGjaAjeuR2nKLj8dk', // Owner address
{
mint: mintAddress
},
{
encoding: 'jsonParsed'
}
]
})
});
const data = await response.json();
return data;
};
// Example usage
getTokenAccountsByMint("8wXtPeU6557ETkp9WHFY1n1EcU6NxDvbAggHGsMYiHsB");
最佳实践
在使用 DAS API 时,请牢记以下最佳实践:
- 对于返回大量数据的方法,使用分页
- 通过实现try/catch块,优雅地处理错误
- 在适当的时候缓存响应以减少API调用
- 遵守速率限制以避免应用程序中断
- 在计算市值之前,验证价格数据是否可用
有问题?
有关 DAS API 的常见问题,包括资产数据、价格信息和 API 使用,请访问我们全面的 DAS API FAQ。