
Comment surveiller un pool de liquidité Raydium
Sommaire
Dans la finance traditionnelle, les acheteurs et les vendeurs apportent de la liquidité à un actif par l’intermédiaire d’un marché centralisé. La finance décentralisée (DeFi) utilise plutôt des pools de liquidité. Les pools de liquidité sont des smart contracts qui permettent aux utilisateurs d’acheter et de vendre des cryptomonnaies sur des plateformes d’échange décentralisées et d’autres plateformes DeFi. En surveillant les pools de liquidité, vous pouvez suivre les performances d’un actif donné et prendre des décisions éclairées sur le moment opportun pour acheter, vendre ou échanger. Surveiller la création de nouveaux pools de liquidité peut également vous aider à découvrir des tokens récemment lancés.
Cet article présente deux méthodes pour surveiller les pools de liquidité : les webhooks et les WebSockets. Nous verrons également comment configurer un webhook et un WebSocket pour écouter les événements qui se produisent dans un pool de liquidité. Avant d’examiner le fonctionnement de la plateforme, vous aurez besoin d’une clé API Helius. Vous pouvez facilement en obtenir une depuis le tableau de bord Helius. Inscrivez-vous avec votre compte GitHub, votre portefeuille Solana ou votre compte Google, puis accédez à la section des clés API dans la barre latérale gauche.
Avec un webhook
Pour utiliser un webhook, nous devons suivre trois grandes étapes. Nous allons d’abord configurer un Cloudflare Worker. Ensuite, nous configurerons un webhook Helius et ajouterons l’URL du Cloudflare Worker. Le webhook déclenchera le worker chaque fois qu’une transaction du pool de liquidité sera détectée. Enfin, nous modifierons le code du worker pour traiter cette notification et consigner la réponse.
Configurer un Cloudflare Worker
Nous allons configurer un worker qui sera déclenché par notre webhook. Nous ajouterons du code au worker pour traiter le déclenchement reçu de notre webhook. Cloudflare Workers nous permet de déployer du code serverless. Connectez-vous ou inscrivez-vous sur le site de Cloudflare, puis sélectionnez Workers & Pages dans le volet gauche de la page principale.
Cliquez sur le bouton Créer une application.
Cliquez ensuite sur Créer un Worker.
Cliquez maintenant sur Déployer.
Le worker a bien été déployé. Copiez le lien du worker, car il servira à configurer notre webhook.
Configurer le webhook
Nous allons surveiller Raydium, le premier AMM conçu sur Solana à exploiter un carnet d’ordres central à cours limité entièrement décentralisé. Un carnet d’ordres central à cours limité est une méthode d’exécution de type boursier, courante sur les marchés d’actions, qui associe toutes les offres d’achat et de vente en fonction de leur priorité de prix et de temps. Un carnet d’ordres central à cours limité décentralisé (CLOB) est un système d’échange qui fonctionne sur un réseau distribué de nœuds plutôt que par l’intermédiaire d’une entité centrale.
Nous allons créer un webhook avec Helius. Les webhooks vous permettent d’écouter les événements on-chain et de déclencher des actions précises lorsqu’ils se produisent. Nous configurerons le webhook pour écouter certains types de transactions dans un pool de liquidité Raydium donné. Helius prend actuellement en charge les types de transactions suivants pour Raydium :
"RAYDIUM": [
"WITHDRAW_LIQUIDITY"
"ADD_LIQUIDITY"
"CREATE_POOL"
"SWAP"
]Vous pouvez créer des webhooks depuis le tableau de bord Helius ou avec la référence de l’API. Pour en créer un depuis le tableau de bord, accédez à la section Webhooks dans le volet gauche, puis cliquez sur Nouveau webhook.
Configurez ensuite le webhook en fournissant les informations suivantes :
- Réseau : Mainnet/Devnet
- Type de webhook : pour obtenir les données souhaitées, choisissez entre les types de webhook Enhanced, Raw ou Discord. Si vous souhaitez des données lisibles, choisissez Enhanced ; c’est celui que nous sélectionnerons. Si vous préférez Discord, vous devez fournir l’URL du webhook. Le bot mettra alors en forme et enverra directement les notifications. Pour obtenir de l’aide, consultez cet article et découvrez comment configurer un webhook pour un bot Discord. Si vous choisissez Raw, notez que vous ne pourrez pas préciser le type de transaction.
- Type de transaction : sélectionnez les types de transactions présentés dans l’image ci-dessous*.* Vous trouverez ici les autres types de transactions pris en charge par un programme.
- URL du webhook : ajoutez l’URL du worker que nous avons configuré sur Cloudflare (si vous avez sélectionné Discord, vous devez fournir l’URL du webhook du bot)
- En-tête d’authentification : saisissez un en-tête d’authentification à transmettre dans les requêtes POST de votre webhook. Cette étape est facultative.
- Adresse du compte : voici l’adresse du programme AMM de Raydium :
675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8. Vous pouvez également ajouter plusieurs adresses de compte si nécessaire. Vous pouvez aussi inclure l’adresse de vos actifs pour les surveiller.
Une fois que vous aurez cliqué sur Confirmer, votre webhook enverra une notification à notre Cloudflare Worker.
L’étape suivante consiste à écrire le code approprié pour traiter la notification.
Traiter la notification du webhook dans le Worker
Nous devons installer le CLI Wrangler afin d’ajouter notre code au worker pour qu’il puisse traiter correctement les données lors de son déclenchement.
Connectez-vous à votre compte Cloudflare afin d’autoriser Wrangler à déployer vos scripts sur Cloudflare.
Ouvrez une invite de commandes ou un terminal, puis saisissez la commande suivante :
wrangler loginLorsque Wrangler ouvre automatiquement votre navigateur pour afficher l’écran de consentement de Cloudflare, cliquez sur le bouton Autoriser. Un token API sera alors envoyé à Wrangler.
Initialisez un nouveau projet à partir du Worker créé dans le tableau de bord Cloudflare :
wrangler init --from-dash <worker-name>Consultez la section Métriques pour trouver le nom du worker :
La commande ci-dessus crée un dossier contenant la configuration et le code du worker. Remplacez ensuite le code du fichier src/index.js par celui fourni ci-dessous. Veillez à ajouter votre clé API. Pour masquer votre clé API, nous vous recommandons de suivre ces bonnes pratiques.
Nous allons maintenant utiliser le code suivant dans notre worker :
const HELIUS_API_KEY = API_KEY;
const HELIUS_RPC_URL = `https://mainnet.helius-rpc.com/?api-key=${HELIUS_API_KEY}`;
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
if (request.method === 'POST') {
const requestBody = await request.json();
console.log(requestBody[0].description);
return new Response('Logged POST request body.', { status: 200 });
} else {
return new Response('Method not allowed.', { status: 405 });
}
}Dans ce code, nous consignons uniquement la description de la notification. Les notifications de réponse utilisent un format de transaction analysée. Notez que les données financières, telles que les informations de prix, ne sont pas fournies. Vous pouvez utiliser des plateformes comme Jupiter et Birdeye pour obtenir des informations financières.
Déployez votre projet sur le réseau mondial de Cloudflare :
wrangler publishUne fois le code publié, consultons les logs.
Retournez sur le site de Cloudflare et accédez à la section Logs :
Cliquez sur le bouton Démarrer le flux de logs.
De nombreux logs seront générés en raison du volume important de transactions traitées par Raydium. Vous pourrez ensuite les filtrer pour trouver les notifications de transaction nécessaires.
Vous pouvez afficher les données consignées sous «message» en développant n’importe quel log reçu.
Avec des WebSockets
WebSocket est un protocole de communication qui permet l’échange de données en temps réel entre les clients et les serveurs. Il diffère des méthodes traditionnelles, dans lesquelles un client envoie une requête et attend la réponse du serveur. Avec WebSocket, la connexion reste ouverte et les données sont échangées en continu. Nous utiliserons des WebSockets pour surveiller le pool de liquidité Raydium.
Si vous souhaitez recevoir les swaps Raydium déjà décodés, Parsed Streams vous permet de filtrer côté serveur par programme, instruction ou compte, puis de recevoir sur WebSocket la transaction complète avec les instructions nommées, les transferts et un résumé.
Pour accélérer les réponses dans notre projet, nous utiliserons la méthode transactionSubscribe optimisée par Geyser, disponible en version bêta. Notez que cette méthode est uniquement disponible avec les offres Business ou Professional. Les WebSockets Geyser Enhanced sont plus rapides que les méthodes WebSocket RPC standard. Pour commencer, créons un projet JavaScript de base et un nouveau dossier nommé websocket-test. Nous devons ensuite créer un fichier package.json.
{
"name": "websocket-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "ts-node src/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@types/bn.js": "^5.1.0",
"ts-node": "^10.7.0",
"typescript": "^4.6.3"
},
"dependencies": {
"@solana/web3.js": "^1.41.3",
"dotenv": "^16.0.0"
}
}
Créez un dossier nommé src et ajoutez-y un fichier appelé index.js.
Copiez-collez le code suivant dans le fichier, en remplaçant <your-api-key> par votre propre clé API Helius.
const WebSocket = require('ws');
// Function to send a request to the WebSocket server
function sendRequest(ws) {
const request = {
jsonrpc: "2.0",
id: 420,
method: "transactionSubscribe",
params: [{
failed: false,
accountInclude: ["675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"]
},
{
commitment: "processed",
encoding: "base64",
transactionDetails: "full",
showRewards: true,
maxSupportedTransactionVersion: 0
}
]
};
ws.send(JSON.stringify(request));
}
function websocketHandler() {
// Create a WebSocket connection
let ws = new WebSocket('wss://atlas-mainnet.helius-rpc.com?api-key=<your-api-key>');
// Define WebSocket event handlers
ws.on('open', function open() {
console.log('WebSocket is open');
sendRequest(ws); // Send a request once the WebSocket is open
});
ws.on('message', function incoming(data) {
const messageStr = data.toString('utf8');
console.log('Received:', messageStr);
});
ws.on('error', function error(err) {
console.error('WebSocket error:', err);
});
ws.on('close', function close() {
console.log('WebSocket is closed');
// connection closed, discard old websocket and create a new one in 5s
ws = null
setTimeout(startWebsocket, 5000)
});
}
websocketHandler();Nous avons ajouté l’adresse du programme AMM de Raydium 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 dans le paramètre de tableau accountInclude de la requête. Vous pouvez ajouter les paramètres appropriés pour obtenir les données dont vous avez besoin.
Le code se connecte à un WebSocket et consigne l’intégralité de la réponse dans la console. Le WebSocket se ferme après environ ~5 minutes d’inactivité. Pour éviter cela, une logique de reconnexion a été ajoutée dans le gestionnaire onClose.
Exécutez cette commande dans l’invite de commandes ou le terminal :
npm install && npm startDes logs comme celui-ci commenceront à apparaître dans la console :
Conclusion
C’est tout ! Configurer un webhook pour surveiller un pool de liquidité est simple. Vous pouvez également utiliser la méthode WebSocket optimisée par Geyser pour obtenir des réponses plus rapides. Une fois la configuration terminée, vous pouvez créer une interface frontend adaptée pour afficher les données. Vous pouvez utiliser un nœud dédié avec un plugin RPC Geyser afin de bénéficier d’une connexion dédiée plus rapide. Si vous rencontrez un problème ou avez besoin d’aide, n’hésitez pas à nous contacter sur Discord !
Saisissez votre adresse e-mail ci-dessous pour ne manquer aucune nouveauté sur Solana. Prêt à aller plus loin ? Découvrez les derniers articles du blog Helius et poursuivez dès aujourd’hui votre parcours sur Solana.
Ressources
- Créer un webhook
- Cloudflare Worker
- Documentation Helius sur les WebSockets
- Que sont les pools de liquidité ? par CoinDesk
- Solana Dev 101 : créer un bot Discord Solana avec des webhooks
Articles associés
Abonnez-vous à Helius
Suivez les dernières actualités du développement sur Solana et recevez une notification à chaque publication


