代币价格数据
getAsset 返回的价格数据是缓存的,可能不是最新的。价格信息有 60 秒的缓存,这意味着数据可能最多有 60 秒的延迟。
报告错误代码
复制
询问AI
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;
};
API 参考
查看 getAsset 的详细文档
响应结构
价格数据在响应中可通过token_info.price_info 获取:
报告错误代码
复制
询问AI
{
"token_info": {
"symbol": "Bonk",
"supply": 8881594973561640000,
"decimals": 5,
"token_program": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"price_info": {
"price_per_token": 0.0000192271,
"currency": "USDC"
}
}
}
计算市值
要计算代币的市值,将其价格乘以调整后的供应量(考虑小数位):报告错误代码
复制
询问AI
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的综合数据:
报告错误代码
复制
询问AI
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
检索由特定钱包地址拥有的所有NFT:
报告错误代码
复制
询问AI
const getNFTsByOwner = async (ownerAddress) => {
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: "getAssetsByOwner",
params: {
ownerAddress: ownerAddress,
page: 1,
limit: 10,
},
}),
});
const data = await response.json();
return data;
};
// Example usage
getNFTsByOwner("86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY");
使用高级过滤器搜索资产
通过各种属性和详细过滤器搜索资产:
报告错误代码
复制
询问AI
const searchAssets = async (params) => {
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: "searchAssets",
params: params,
}),
});
const data = await response.json();
return data;
};
// Example: Find all NFTs owned by an address
searchAssets({
ownerAddress: "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
tokenType: "all",
limit: 50,
});
高级NFT查询方法
- By Creator
- By Collection
- Transaction History
- On-Chain Proof
报告错误代码
复制
询问AI
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");
报告错误代码
复制
询问AI
const getAssetsByCollection = async (collectionAddress) => {
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: "getAssetsByGroup",
params: {
groupKey: "collection",
groupValue: collectionAddress,
page: 1,
limit: 100,
},
}),
});
const data = await response.json();
return data;
};
// Example usage
getAssetsByCollection("J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w");
报告错误代码
复制
询问AI
const getNFTTransactionHistory = 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: "getSignaturesForAsset",
params: {
id: mintAddress,
page: 1,
limit: 100,
},
}),
});
const data = await response.json();
return data;
};
// Example usage
getNFTTransactionHistory("FNt6A9Mfnqbwc1tY7uwAguKQ1JcpBrxmhczDgbdJy5AC");
报告错误代码
复制
询问AI
const getNFTProof = 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: "getAssetProof",
params: {
id: mintAddress,
},
}),
});
const proof = await response.json();
return proof;
};
// Example usage
getNFTProof("Bu1DEKeawy7txbnCEJE4BU3BKLXaNAKCYcHR4XhndGss");
By Creator
API Reference
By Collection
API Reference
Transaction History
API Reference
On-Chain Proof
API Reference
使用SPL代币
可以通过Helius API中的多种方法查询SPL代币。这些方法允许您检查余额、查找代币账户和获取代币元数据。常见的SPL代币操作
- Token Balance
- Tokens by Owner
- Token Supply
- Largest Holders
报告错误代码
复制
询问AI
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文档
报告错误代码
复制
询问AI
const getTokensByOwner = async (ownerAddress) => {
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: [
ownerAddress,
{
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
},
{
encoding: 'jsonParsed'
}
]
})
});
const data = await response.json();
return data;
};
// Example usage
getTokensByOwner("86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY");
API Reference
查看 getTokenAccountsByOwner 文档
报告错误代码
复制
询问AI
const getTokenSupply = 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: 'getTokenSupply',
params: [mintAddress]
})
});
const data = await response.json();
return data;
};
// Example usage
getTokenSupply("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
API Reference
查看 getTokenSupply 文档
报告错误代码
复制
询问AI
const getTokenLargestAccounts = 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: 'getTokenLargestAccounts',
params: [mintAddress]
})
});
const data = await response.json();
return data;
};
// Example usage
getTokenLargestAccounts("he1iusmfkpAdwvxLNGV8Y1iSbj4rUy6yMhEA3fotn9A");
API Reference
查看 getTokenLargestAccounts 文档
高级 SPL 代币查询
您还可以找到持有特定代币铸造的所有账户:报告错误代码
复制
询问AI
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调用
- 遵守速率限制以避免应用程序中断
- 在计算市值之前,验证价格数据是否可用