如何提取 Solana 上代币的流动性详情
2025-01-13 18:00
登链社区
2025-01-13 18:00
订阅此专栏
收藏此文章

  • 原文链接: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,请遵循以下简单步骤:

  1. 创建帐户并获取 API 密钥
    在 Shyft 上注册并获取你的 x-api-key,这是访问 API 所必需的。
  2. 设置开发环境
    使用 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 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~


登链社区是一个 Web3 开发者社区,通过构建高质量技术内容平台和线下空间,助力开发者成为更好的 Web3 Builder。

  • 登链社区网站 : learnblockchain.cn

  • 开发者技能认证 : decert.me

  • B 站 : space.bilibili.com/581611011

  • YouTube : www.youtube.com/@upchain


【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

登链社区
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开