监听Raydium流动池的创建
在此指南中,我们将学习如何使用Solana WebSockets监听Solana区块链上的新流动资金池。

一键发币: SUI | SOL | BNB | ETH | BASE | ARB | OP | POLYGON | AVAX | FTM | OK
随着Solana区块链上DeFi活动和Memecoins的增加,人们越来越有兴趣找到追踪在Raydium DEX上创建的新流动资金池的方法。在此指南中,我们将学习如何使用Solana WebSockets监听Solana区块链上的新流动资金池。
什么是Raydium?
Raydium是建立在Solana区块链上的去中心化交易所(DEX)和自动化做市商(AMM)。它的设计目的是为用户提供快速且低成本的交易服务。Raydium是Solana DeFi生态系统中的关键参与者,并且一直是用户交易和提供各种代币流动性的热门选择。
什么是流动资金池?
流动资金池是去中心化交易所DeFi的重要组成部分。它们用于促进交易并为各种代币提供流动性。流动资金池由一对代币组成,并用于DEX上的交易。用户通常可以向这些池提供流动性并获得费用回报。
1、创建新项目
在终端中创建一个新的项目目录:
mkdir raydium-lp-tracker
cd raydium-lp-tracker
为您的应用程序创建一个文件,app.ts:
echo > app.ts
使用“yes”标志初始化您的项目,以使用新的包的默认值:
yarn init --yes
#或
npm init --yes
安装Solana web3.js库:
yarn add @solana/web3.js@1
#或
npm install @solana/web3.js@1
2、获取Solana API端点
要在Solana上构建,您需要一个API端点来连接网络。你可以使用公共节点或部署和管理自己的基础设施;但是,如果你想要8倍的响应速度,可以使用QuickNode或Helius等收费服务。
3、导入所需库
打开app.ts
并导入所需的库:
import { Connection, PublicKey } from '@solana/web3.js';
4、定义常量
为Raydium DEX和你的Solana端点定义常量:
const RAYDIUM_PUBLIC_KEY = "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8";
const HTTP_URL = "YOUR_SOLANA_HTTP_ENDPOINT";
const WSS_URL = "YOUR_SOLANA_WSS_ENDPOINT";
const RAYDIUM = new PublicKey(RAYDIUM_PUBLIC_KEY);
const INSTRUCTION_NAME = "initialize2";
const connection = new Connection(HTTP_URL, {
wsEndpoint: WSS_URL
});
在这里,我们只是定义了Raydium LP程序的公钥,并建立了与Solana主网的连接。我们还定义了将在日志中查找的指令名称。我们正在寻找名为*"initialize2"*的指令,该指令是负责创建新流动资金池的Raydium LP程序指令。
5、创建WebSocket连接
创建一个函数,使用WebSockets连接到Solana区块链:
async function startConnection(connection: Connection, programAddress: PublicKey, searchInstruction: string): Promise<void> {
console.log("监控程序日志:", programAddress.toString());
connection.onLogs(
programAddress,
({ logs, err, signature }) => {
if (err) return;
if (logs && logs.some(log => log.includes(searchInstruction))) {
console.log("搜索指令签名:", `https://explorer.solana.com/tx/${signature}`);
fetchRaydiumMints(signature, connection);
}
},
"finalized"
);
}
此函数通过WebSockets简单地连接到Solana区块链,并使用onLogs
方法监听来自Raydium DEX程序的日志。
当找到包含 searchInstruction 的日志时,我们将根据交易获取相关的代币铸造信息(我们将在下一步定义此功能)。
6、获取LP铸造信息
我们现在需要一种从交易签名中获取我们的代币铸造信息的方法。我们需要获取签名详情并解析结果以找到相关信息。在你的程序中,创建一个新函数,fetchRaydiumMints
:
async function fetchRaydiumMints(txId: string, connection: Connection) {
try {
const tx = await connection.getParsedTransaction(
txId,
{
maxSupportedTransactionVersion: 0,
commitment: 'confirmed'
});
//@ts-ignore
const accounts = (tx?.transaction.message.instructions).find(ix => ix.programId.toBase58() === RAYDIUM_PUBLIC_KEY).accounts as PublicKey[];
if (!accounts) {
console.log("交易中未找到任何账户。");
return;
}
const tokenAIndex = 8;
const tokenBIndex = 9;
const tokenAAccount = accounts[tokenAIndex];
const tokenBAccount = accounts[tokenBIndex];
const displayData = [
{ "Token": "A", "Account Public Key": tokenAAccount.toBase58() },
{ "Token": "B", "Account Public Key": tokenBAccount.toBase58() }
];
console.log("发现新LP");
console.table(displayData);
} catch {
console.log("获取交易错误:", txId);
return;
}
}
这里有大量内容,但并不复杂。
- 首先,我们使用
getParsedTransaction
方法获取交易详情。 - 接下来,我们在指令数组中查找Raydium程序ID并提取与交易相关的账户。
- 如果找到了账户,我们从数组中的预期位置(8和9)提取代币铸造信息。
- 最后,我们将代币铸造信息记录到控制台。
7、启动连接
现在我们已经定义了函数,我们可以启动连接并监听新的流动资金池:
startConnection(connection, RAYDIUM, INSTRUCTION_NAME).catch(console.error);
8、运行程序
要运行程序,请使用以下命令:
ts-node app.ts
现在,坐下来观看在Raydium DEX上创建的新流动资金池吧!你应该会在终端中看到每次有新的LP创建时的通知,符合我们的搜索标准:

9、结束语
做得很好!你现在有了一个可以监听Raydium DEX上新流动资金池的LP追踪器。您可以将其作为起点,构建更复杂的跟踪和监控Solana区块链上DeFi活动的应用程序,或者在新的流动资金池创建时实现自定义逻辑。
原文链接:How to Track New Liquidity Pools Created on Solana Raydium DEX
DefiPlot翻译整理,转载请标明出处
免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。