Переглядач транзакцій гаманця Solana в реальному часі на NodeJs

pic

Занурюючись у глибини Web3, я шукав спосіб моніторити транзакції гаманця Solana в реальному часі. Згодом я створив бота для Discord, який надсилає вбудовані повідомлення про транзакції до вказаного каналу Discord.

Тепер давайте розглянемо код: почніть з створення нового проекту Node.js:

npm init -y your-project-name

Далі встановіть кілька корисних залежностей:

npm install @solana/web3.js nodemon

У вашому файлі package.json переконайтеся, що є хоча б один скрипт для запуску вашої програми, для цього нам також потрібно створити новий файл, який ми можемо назвати index.js. Потім додайте скрипт запуску до вашого файлу package.json:

{  
 "name": "you-project-name",  
 "version": "1.0.0",  
 "description": "crypto wallet watcher",  
 "main": "index.js",  
 "scripts": {  
 "test": "echo \"Error: no test specified\" && exit 1",  
 "dev": "nodemon index.js",  
 "start": "node index.js"  
 },  
 "author": {  
 "name": "Vincent Vitale",  
 "email": "[email protected]",  
 "url": "https://vincent-vitale.netlify.app/"  
 },  
 "engines": {  
 "node": "20.11.1"  
 },  
 "license": "ISC",  
 "dependencies": {  
 "@solana/web3.js": "^1.98.0",  
 "dotenv": "^16.4.7",  
 "nodemon": "^3.1.9",  
 }  
}

Я зазвичай використовую команду npm run dev, функція nodemon моніторить директорію вашого проєкту і автоматично перезапускає вашу Node.js програму, коли виявляє будь-які зміни.

У файлі index.js додайте потрібні залежності та код, що наведений нижче:

const { clusterApiUrl, Connection, PublicKey } = require("@solana/web3.js");  
require("dotenv").config();  

async function solWatch() {  
 try {  
 // Створення нового з'єднання з головним кластером Solana  
 // Підтверджена зобов'язаність отримує лише елементи, які були підтверджені в ланцюгу  
 const connection = new Connection(clusterApiUrl("mainnet-beta"), {  
 commitment: "confirmed",  
 maxSupportedTransactionVersion: 0  
 });  

 // ID гаманця користувача для моніторингу  
 let walletId = "suqh5sHtr8HyJ7q8scBimULPkPpA557prMG47xCHQfK";  

 // Перевірка, чи є гаманець дійсною адресою Solana  
 let isValid = PublicKey.isOnCurve(walletId); // Використовуємо isOnCurve для перевірки адреси  
 if (!isValid) {  
 console.error("Невірна адреса Solana");  
 return;  
 }  

 // Отримуємо хешовану адресу гаманця  
 const publicKey = new PublicKey(walletId);  

 // Підключення до мережі, з'єднання залишатиметься відкритим до переривання  
 connection.onLogs(publicKey, (logs, context) => {  
 // Отримання підпису журналу, це можна використовувати для отримання розібраної транзакції  
 // Або, якщо ви використовуєте сторонній сервіс, наприклад Helius, ви можете використовувати цей підпис для отримання деталей транзакції  
 console.log("ОТРИМАНО ЖУРНАЛ", logs.signature);  
 // Реалізуйте вашу логіку тут  
 });  
 } catch (error) {  
 console.error("Помилка при отриманні транзакцій:", error);  
 }  
}  

// Викликаємо функцію solWatch, щоб запустити її  
solWatch();

Просто запустіть програму командою npm run dev і чекайте, поки відбудеться транзакція! connection.onLogs залишатиметься відкритим з'єднанням з мережею Solana до тих пір, поки з'єднання не буде перервано.

Дивіться в реальному часі тут: https://youtu.be/G2Bv62s950A

У своїй базовій функціональності це буде отримувати тисячі журналів транзакцій протягом дня, тепер у вас є всі можливості для отримання інформації про монети, типи дій та багато іншого!

Перекладено з: NodeJs Realtime Solana wallet transaction watcher

Leave a Reply

Your email address will not be published. Required fields are marked *