Skip to content

Ultra-low latency Raydium liquidity scanner with worker-thread architecture. Detects pools before liquidity injection for HFT strategies.

Notifications You must be signed in to change notification settings

nssanta/Solana-HFT-Raydium-Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Solana HFT Raydium Engine

TypeScript Node.js Solana License

High-performance liquidity pool scanner with worker-thread architecture for zero-latency detection on Solana's Raydium DEX.

๐Ÿ‡ท๐Ÿ‡บ Russian README


๐ŸŽฏ Overview

This engine detects Raydium liquidity pool creation at the pre-liquidity stage through innerInstructions analysis, providing a 2-5 second advantage over traditional RPC-based parsers. Built for high-frequency trading strategies requiring immediate pool discovery.


โœจ Key Features

๐Ÿš€ Pre-Liquidity Detection

Identifies pools at the market creation stage by parsing innerInstructions, detecting liquidity initialization before the first byte of liquidity is added. This provides critical time advantage for MEV and front-running strategies.

โšก Event-Driven Worker Architecture

Uses Node.js Worker Threads to offload pool analysis to separate processes. The main thread scans for pool creation events, spawns workers that subscribe to specific pool liquidity events via WebSocket, and waits for the first liquidity addition.

๐Ÿ”ง Low-Level Optimization

  • Manual PDA Derivation: Calculates Program Derived Addresses without heavy SDK calls
  • Custom Log Parsing: Bypasses standard transaction parsing for speed
  • Direct RPC Integration: Minimal abstraction layer for maximum performance
  • Efficient Market State Decoding: Direct buffer manipulation for Serum market data

๐Ÿ“Š Real-Time Data Collection

Automatically collects and stores:

  • Pool keys and configuration
  • Token metadata (freeze authority, mutability)
  • Real-time price monitoring data
  • LP initialization parameters

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        Main Scanner                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚ Monitors: srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX โ”‚   โ”‚
โ”‚  โ”‚ (Serum DEX Program - Market Initialization)          โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚                           โ”‚                                   โ”‚
โ”‚                           โ–ผ                                   โ”‚
โ”‚               Detects Market Creation                         โ”‚
โ”‚                           โ”‚                                   โ”‚
โ”‚                           โ–ผ                                   โ”‚
โ”‚         Derives AMM Pool ID from Market ID                    โ”‚
โ”‚                           โ”‚                                   โ”‚
โ”‚                           โ–ผ                                   โ”‚
โ”‚              Validates Token Properties                       โ”‚
โ”‚            (Freeze Authority, Mutability)                     โ”‚
โ”‚                           โ”‚                                   โ”‚
โ”‚                           โ–ผ                                   โ”‚
โ”‚            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”‚
โ”‚            โ”‚   Spawns Worker Thread       โ”‚                  โ”‚
โ”‚            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
                         โ–ผ
         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ”‚        Worker Thread (Piscina)        โ”‚
         โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
         โ”‚  โ”‚ 1. Subscribe to Pool Vaults     โ”‚  โ”‚
         โ”‚  โ”‚ 2. Monitor First Liquidity Add  โ”‚  โ”‚
         โ”‚  โ”‚ 3. Collect Metadata             โ”‚  โ”‚
         โ”‚  โ”‚ 4. Track Price Movements        โ”‚  โ”‚
         โ”‚  โ”‚ 5. Export Data (CSV/JSON)       โ”‚  โ”‚
         โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“‹ Prerequisites

  • Node.js 20+ (Worker Threads support)
  • TypeScript 5.5+
  • RPC Access: Helius or Chainstack API key (free tier available)
  • RAM: 4GB+ recommended for multiple concurrent workers

๐Ÿš€ Installation & Setup

1. Clone the Repository

git clone https://github.com/yourusername/solana-hft-raydium-engine.git
cd solana-hft-raydium-engine

2. Install Dependencies

npm install

3. Configure Environment Variables

Create a .env file from the example:

cp .env.example .env

Edit .env and add your RPC API keys:

# Helius RPC API Key (Primary)
HELIUS_API_KEY=your_helius_api_key_here

# Chainstack RPC API Key (Backup)
CHAINSTACK_API_KEY=your_chainstack_api_key_here

Get API Keys:


๐ŸŽฎ Usage

Start the Scanner

npx ts-node ScannerF/Scanner.ts

Output Structure

outScan/
โ””โ”€โ”€ {token_mint_address}/
    โ”œโ”€โ”€ key.csv          # Pool keys and configuration
    โ”œโ”€โ”€ meta.json        # Token metadata (name, symbol, freeze status)
    โ””โ”€โ”€ price_data.csv   # Real-time price monitoring data

๐Ÿ”ง Configuration

RPC Endpoints

Edit config.ts to change RPC providers or add additional endpoints:

// Example: Add QuickNode endpoint
export const url_quicknode = 'https://your-quicknode-endpoint.quiknode.pro'
export const connection_quicknode = new Connection(url_quicknode, 'confirmed')

Worker Pool Size

Adjust worker thread pool in Scanner.ts:

// Limit concurrent workers (default: unlimited)
const maxWorkers = 10;

๐Ÿ“ Project Structure

โ”œโ”€โ”€ ScannerF/
โ”‚   โ”œโ”€โ”€ Scanner.ts          # Main scanner logic
โ”‚   โ”œโ”€โ”€ ScannerV2.ts        # Alternative scanner implementation
โ”‚   โ”œโ”€โ”€ getPoolId.ts        # Pool ID derivation helpers
โ”‚   โ””โ”€โ”€ test.ts             # Test utilities
โ”œโ”€โ”€ mthreadings/
โ”‚   โ”œโ”€โ”€ analyzyWork.ts      # Main worker thread logic
โ”‚   โ”œโ”€โ”€ priceWorker.ts      # Price monitoring worker
โ”‚   โ””โ”€โ”€ analyzyWorkOrigin.ts
โ”œโ”€โ”€ filters/
โ”‚   โ”œโ”€โ”€ checkMutFreez.ts    # Token metadata validation
โ”‚   โ”œโ”€โ”€ freeze.ts           # Freeze authority checker
โ”‚   โ””โ”€โ”€ mutable.ts          # Mutability checker
โ”œโ”€โ”€ helpers/
โ”‚   โ”œโ”€โ”€ getOpenData.ts      # Pool initialization data parser
โ”‚   โ”œโ”€โ”€ monitoringPrice.ts  # Real-time price monitoring
โ”‚   โ””โ”€โ”€ ketToString.ts      # Key serialization utilities
โ”œโ”€โ”€ raydium/
โ”‚   โ”œโ”€โ”€ raydium.ts          # Raydium SDK wrapper
โ”‚   โ””โ”€โ”€ getBalance.ts       # Balance queries
โ”œโ”€โ”€ removeLiq/
โ”‚   โ”œโ”€โ”€ liqvCheck.ts        # Liquidity removal detection
โ”‚   โ””โ”€โ”€ onLogsR.ts          # Log listener for removals
โ”œโ”€โ”€ config.ts               # RPC connection configuration
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ tsconfig.json

๐Ÿงช Technical Details

Pool Detection Methodology

  1. Log Subscription: Monitors Serum DEX program (srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX) for market initialization
  2. Transaction Validation: Fetches and parses transaction to extract Market ID from innerInstructions
  3. AMM Pool Derivation: Calculates AMM Pool ID using PDA derivation:
    seeds = [RAYDIUM_V4_PROGRAM_ID, MARKET_ID, "amm_associated_seed"]
    
  4. Worker Spawn: Launches dedicated worker thread for pool monitoring
  5. Liquidity Wait: Worker subscribes to vault accounts and waits for first liquidity event

Performance Characteristics

  • Detection Latency: ~100-500ms from market creation
  • Memory Footprint: ~150MB base + ~50MB per active worker
  • RPC Calls: ~5-10 per pool detection cycle
  • CPU Usage: 2-3 cores recommended for optimal performance

โš ๏ธ Known Limitations

  1. RPC Rate Limits: Free tier RPC providers may throttle during high-traffic periods
  2. False Positives: Some market creations may not result in tradable liquidity pools
  3. Network Dependencies: Requires stable, low-latency connection to Solana RPC

๐Ÿ›ก๏ธ Security Considerations

  • Never commit .env file to version control
  • Revoke API keys if accidentally exposed
  • Use separate RPC keys for development and production
  • Monitor RPC usage to avoid unexpected costs

๐Ÿ“„ License

MIT License - see LICENSE file for details.


โšก Built for speed. Optimized for profit. Open-sourced for the community.

About

Ultra-low latency Raydium liquidity scanner with worker-thread architecture. Detects pools before liquidity injection for HFT strategies.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published