solRoute: https://github.com/Solana-ZH/SolRoute
SolRoute 是一个集成了 solana 上主流 amm 的 Golang 版本 SDK,它直接通过 rpc 请求从 solana 节点获取 pool 数据,而不依赖项目方提供的 api 服务; 它支持和 amm 协议合约完全一致的报价逻辑,确保获取的价格是准确的。
目前支持的 amm 有: Raydium CPMM V4 (675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8) Raydium CPMM (CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C) Raydium CLMM (CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK) PumpSwap AMM (pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA) Meteora DLMM (LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo)
我提供了一个最简单的发现最优价格并完成交易的 demo
// Initialize router with supported protocols
router := router.NewSimpleRouter(
protocol.NewPumpAmm(solClient),
protocol.NewRaydiumAmm(solClient),
protocol.NewRaydiumClmm(solClient),
protocol.NewRaydiumCpmm(solClient),
)
// Find best pool and execute swap
bestPool, amountOut, err := router.GetBestPool(ctx, solClient.RpcClient,
"TOKEN0_MINT", "TOKEN1_MINT", amountIn)
if err != nil {
log.Fatal(err)
}
// Build and send transaction
instructions, err := bestPool.BuildSwapInstructions(ctx, solClient.RpcClient,
userPublicKey, "TOKEN0_MINT", amountIn, minAmountOut)
如果对此项目感兴趣,或者想要在此项目上构建其他应用,我的 github 有联系方式,欢迎与我交流。