如何提取 Solana 上代币的流动性详情

如何提取 Solana 上代币的流动性详情

在这篇博客中,我们将指导你通过 Shyft 的 Solana DeFi API 从所有主要的 dex 获取代币的流动性。

Get Liquidity Details of Token On Solana: DeFi Solana

从多个 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 以获取最新更新。我们的团队在这里帮助你利用这一创新技术。

资源

我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Team Shyft
Team Shyft
江湖只有他的大名,没有他的介绍。