如何提取 Solana 上代币的流动性详情
- 原文链接:blogs.shyft.to/how-to-fetch...
- 译者:AI翻译官,校对:翻译小组
- 本文链接:learnblockchain.cn/article…
在这篇博客中,我们将指导你通过 Shyft 的 Solana DeFi API 从所有主要的 dex 获取代币的流动性。
从多个 DEX 获取流动性详情对于使用传统方法(如 getProgramAccounts)的开发者来说可能是繁琐和低效的。Shyft 的 DeFi API 通过提供来自主要协议(如 Raydium 和 Orca)的快速聚合 Solana DeFi 数据简化了这个过程。在本博客中,我们将展示如何使用 Shyft 的 API 来简化流动性检索,并将其与传统 RPC 方法进行比较,展示它们的效率和易用性。
快速入门
要使用 Shyft 的 API,请遵循以下简单步骤:
- 创建帐户并获取 API 密钥
在 Shyft 上注册并获取你的 x-api-key,这是访问 API 所必需的。 - 设置开发环境
使用 NodeJS 等开发环境来获取 API 和 RPC 数据。虽然此示例使用 NodeJS,但你可以使用支持 API 调用的任何语言,例如 Python、Java 或 Go。
这里是可供使用的 Replit 代码,可供快速分叉和测试。
传统方法:使用 getProgramAccounts()
你可以使用 getProgramAccounts
检索特定程序(或 DEX)流动性信息或相关 DeFi 数据。这涉及对账户数据应用 memcmp
过滤器,如下面的示例所示。
const accounts = await connection.getProgramAccounts(
RAYDIUM_PROGRAM_ID.AmmV4,
{
commitment: 'confirmed',
filters: [
{ dataSize: LIQUIDITY_STATE_LAYOUT_V4.span },
{
memcmp: {
offset: LIQUIDITY_STATE_LAYOUT_V4.offsetOf("baseMint"),
bytes: tokenA.toBase58(),
},
}
],
}
);
这种方法可行,但存在一些挑战。它速度较慢,返回的原始数据需要额外处理,从多个 DEX 获取数据需要分别调用和自定义解析。现在,让我们看看 Shyft 的 DeFi API 如何简化这个过程。
DeFi API:一种更好的方式来访问 Solana 上的 DeFi 数据
让我们探索如何使用 Shyft 的 DeFi API 查询 Solana 上某个代币的流动性信息。API 端点如下:
GET https://defi.shyft.to/v0/pools/get_by_token
此 API 调用所需的参数:
**token**
:我们要获取流动性池详情的代币地址**limit**
:这是一个可选参数,用于分页。指定每页显示的项目数量。默认值为 100。**page**
:在显示由 limit 指定的项目时,指定页面编号。这也是可选的。**dex**
:这接受一个 Dex 名称字符串数组,用于获取我们需要的数据。如果未提及,则返回所有 DEX 的数据。DEX 的完整名称列表可以在 这里 找到。
请注意,与所有 Shyft API 一样,这些 API 也需要在标题部分添加`x-api-key`身份验证参数,指定你在仪表板上的 Shyft API 密钥。
如果未指定 dex
字段,则将为指定的代币地址返回所有 支持的 dex 的流动性详情。此 API 也支持分页,返回的响应大致如下所示。
{
"success": true,
"message": "Pools fetched successfully",
"result": {
"page": 1,
"limit": 1,
"dexes": {
"meteoraAmm": {
"pools": [
{
"lpMint": "9ZgdREVJDG5apT7gPt6CAPBYvfhUcDecFUvbXaxoKunj",
"tokenAMint": "7Z3thA2ZmMuapEmEGiB6rxoYmDDnnEv717NydgeoXhex",
"tokenBMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"aVault": "6Fzmt8UixGEK6sJkjc6ET2VUqK3wkvBoJGHB85J2ek7M",
"bVault": "3ESUFCnRNgZ7Mn2mPPUMmXYaKU8jpnV9VtA17M7t2mHQ",
"aVaultLp": "8gyv8AwYqCNKC2FkFMzZy4pPeQazM9Svad29XcXDYcrk",
"bVaultLp": "9C7fTkTBczhsdhjNWSJdLX27gSizyoTHdmQAVH1ZNZgg",
"aVaultBump": 255,
"enabled": true
}
],
"programId": "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB"
},
"openbookV2": {
"pools": [
{
"pubkey": "2ZNDYtUpfenGZcjhcrQeNJ8Bs4ecVJKQEE4oNBCkejxj",
"lamports": 6792960,
"bump": 255,
"baseDecimals": 9,
"quoteDecimals": 6,
"padding1": 0,
"marketAuthority": "BY68afooPNzRE6n9iQmpGwioLU7fzAfUsMXmThjmkYa9",
"timeExpiry": 1713753898,
"collectFeeAdmin": "7ihN8QaTfNoDTRTQGULCzbUT3PHwPDTu5Brcu4iT2paP"
}
],
"programId": "opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb"
},
"orca": {
"pools": [
{
"whirlpoolsConfig": "2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ",
"feeRate": 3000,
"protocolFeeRate": 1300,
"liquidity": 0,
"sqrtPrice": 178194428756287260,
"tickCurrentIndex": -92800,
"protocolFeeOwedA": 0,
"protocolFeeOwedB": 0,
"tokenMintA": "5PmpMzWjraf3kSsGEKtqdUsCoLhptg4yriZ17LKKdBBy",
"tokenVaultA": "Dy6ktGLX9So2jwUAGzJA811b2XxXVfP4NfRvgvAUXkZ5",
"feeGrowthGlobalA": 102588657235574930000,
"tokenMintB": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"tokenVaultB": "AVxMdgRUUt28vrMjvq1jR2CxdcRtA2sqBdotrjrgNCiy"
}
],
"programId": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"
},
"raydiumAmm": {
"pools": [
{
"pubkey": "5oAvct85WyF7Sj73VYHbyFJkdRJ28D8m4z4Sxjvzuc6n",
"lamports": 7124800,
"status": 6,
"nonce": 254,
"maxOrder": 7,
"depth": 3,
"baseDecimal": 9,
"quoteDecimal": 6,
"state": 1
}
],
"programId": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"
}
}
}
}
}
}
它相比传统的 getProgramAccounts() 有什么优势?
与传统的 getProgramAccounts
RPC 调用相比,Shyft 的 DeFi API 提供了几项关键优势,使 DeFi 数据更易于获取:
- 闪电般的响应时间: 与较慢的
getProgramAccounts
方法不同,Shyft 的 DeFi API 提供了卓越的响应时间(低于 500ms),确保及时获取关键信息。 - 所有 DEX 的单一 API 调用: Shyft 的 API 将多个平台的流动性 数据整合为一个 API 调用,简化了流程。
- 预解析的可用数据: Shyft 的 API 返回结构化的解析数据,无需手动处理,让你可以直接专注于交易和开发任务。
此外,该 API 还支持分页,因此接收的数据不会给你造成负担。这些增强使得 Shyft 的 DeFi API 成为访问 Solana 上 DeFi 数据更强大和高效的替代方案。
你可以在我们的 replit 这里找到与本文相关的所有代码。你可以分叉它并用来构建创新解决方案。
你可以探索我们其他相关的文章: 在 Solana 上流式传输实时数据, 使用 gRPC 实时数据流:账户、交易、区块,如何在 Solana 上流式传输实时 Pump.fun 更新,以及在 Raydium 上跟踪新池。
如需额外支持,请加入我们的 Discord 服务器 或关注我们的 Twitter 以获取最新更新。我们的团队在这里帮助你利用这一创新技术。
资源
- SHYFT API 文档
- Shyft 网站
- 获取 API 密钥
- GitHub
- 加入我们的 Discord
- Javascript SDK
- 在 Swagger UI 上试用我们的 API
我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。