Skip to content

这是一个JitoShred解析PUMP交易监控与狙击框架,使用Rust开发,专注于跟踪PUMP的代币创建活动。该工具通过连接JitoShred节点获取第一手数据,实时解析交易并过滤出重要信息,特别是针对同时包含Create和Buy指令的交易进行重点监控。

Notifications You must be signed in to change notification settings

William7987/shred-client-sniper

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solana PUMP交易狙击工具

项目介绍

这是一个JitoShred解析PUMP交易监控与狙击框架,使用Rust开发,专注于跟踪PUMP的代币创建活动。该工具通过连接JitoShred节点获取第一手数据,实时解析交易并过滤出重要信息,特别是针对同时包含Create和Buy指令的交易进行重点监控。

打赏作者

感谢您的打赏,让开源更和谐. Solana打赏地址:BwPzuiSNf6bDDYuosUfCFVJUn4J3g2nMZGvBxwy42mcZ

联系方式/技术支持

待完成功能

交易构建请自行完成,该项目仅为狙击框架。

核心功能

  • 实时监控:直接连接Jito网络获取链上交易,提供毫秒级响应
  • 精准识别:专门识别并解析PUMP、PUMP_AMM和BOOP合约的关键交易指令
  • 交易过滤:特别关注同时包含Create和Buy指令的交易,迅速发现新币种创建并立即购买的机会
  • 白名单机制:支持按地址过滤交易,专注监控特定目标账户的活动
  • 多线程处理:采用并行架构和批处理技术,高效处理大量交易数据

交易类型解析

项目当前重点关注以下交易类型:

PUMP交易指令

  • Buy - 从绑定曲线购买代币的交易
  • Create - 创建新代币和绑定曲线的交易
  • 同时包含Create和Buy - 特别监控创建后立即购买的交易模式

代码中的相关部分:

// 检查是否同时包含Create和Buy指令,提前过滤
let has_create = pump_tx.instructions.iter().any(|ix| matches!(ix.instruction_type, PumpInstructionType::Create));
let has_buy = pump_tx.instructions.iter().any(|ix| matches!(ix.instruction_type, PumpInstructionType::Buy));

if has_create && has_buy {
    // 只有在同时满足条件时才添加结果
    batch_results.push(pump_tx);
}

技术架构

  • Rust 1.85+ - 保证高性能和内存安全
  • Tokio异步运行时 - 非阻塞I/O处理
  • Jito Shredstream API - 直接连接验证节点获取交易数据
  • Rayon并行计算库 - 高效的多线程处理
  • Once Cell - 线程安全的全局状态管理
  • 批处理机制 - 优化大量交易的处理性能

项目结构

src/
├── config/                     # 配置管理
│   ├── mod.rs                  # 核心配置和常量定义
│   └── whitelist.rs            # 白名单过滤实现
├── jito_protos/                # Jito网络通信协议
├── models/                     # 交易解析模型
│   ├── pump_parser.rs          # PUMP交易解析逻辑
│   ├── transaction.rs          # 交易结果数据结构
│   └── mod.rs                  # 模块导出
├── services/                   # 核心服务
│   ├── jito_client.rs          # Jito网络连接客户端
│   ├── transaction_processor.rs # 交易处理逻辑
│   └── mod.rs                  # 模块导出
├── utils/                      # 工具函数
│   └── mod.rs                  # 工具类定义
├── lib.rs                      # 库入口,导出公共API
└── main.rs                     # 程序入口
└── keypair.json                # JitoShred私钥

数据处理流程

  1. 连接初始化:程序启动时连接到Jito服务器,开始监控交易流
  2. 数据接收:从Jito网络接收原始区块数据
  3. 交易解析:使用并行处理解析区块中的交易
  4. 指令识别:识别PUMP交易的特定指令类型
  5. 条件过滤:筛选同时包含Create和Buy的交易
  6. 白名单过滤:根据配置过滤指定地址的交易
  7. 结果输出:将满足条件的交易以结构化形式输出

代码流程:

// 主流程调用链
fn main() -> Result<(), Error> {
    let config = read_config()?;
    
    if config.whitelist_enabled {
        whitelist::init_whitelist(&config.whitelist)?;
        whitelist::set_whitelist_enabled(true);
    }
    
    whitelist::print_status();
    
    JitoClient::start(config.jito_url)
}

安装与配置

前置条件

  • Rust 1.85+环境
  • Jito网络API访问权限

服务端安装教程

git clone --recursive https://github.com/jito-labs/shredstream-proxy.git
cd shredstream-proxy
#启动
RUST_LOG=info cargo run --release --bin jito-shredstream-proxy -- shredstream \
    --block-engine-url https://mainnet.block-engine.jito.wtf \ //
    --auth-keypair keypair.json \  //jito_shred 私钥
    --desired-regions amsterdam,ny \  //要接受的区域
    --dest-ip-ports 127.0.0.1:8001,10.0.0.1:8001
    --grpc-service-port 9999

安装步骤

# 克隆仓库
git clone https://github.com/vnxfsc/shreds-client.git
cd shreds-client

# 编译
cargo build --release

配置文件

创建env.toml配置文件:

## Jito-Shred URL - 连接地址
JITO-SHRED-URL=http://45.77.55.124:9999

## 白名单配置
# 是否启用白名单过滤 (true/false)
WHITELIST-ENABLED=false
# 白名单地址列表,用逗号分隔
WHITELIST=5Hyf6srdbrrD1HLjqxcFbXJRFBHgnwoZc7aZRj8vDuk5,

白名单功能

白名单功能通过线程安全的全局状态管理,允许精确过滤交易:

  • 启用白名单时,只有白名单中的地址相关交易会被处理
  • 禁用白名单时,所有交易都会被处理
  • 支持运行时动态更新白名单状态

运行

cargo run --release

输出示例

程序会输出符合条件的PUMP交易信息:

--------------------------------------------------------
slot: 337746422
timestamp: 1746351335
signature: 1rdxzH2DonXTnaDNJMY7M57U6E7TURmStvJP9RnbCe4HpZarKrv5adAAQheJVUKHJVYvRpHNJqfcBhUxf23fcG5
mint: 27JdqU5iDGtkwS1xBxai6LHwQNmy2tKfDQqKtoktpump
bonding_curve: 3LosWKUzxQhtwv7ytt7VXqsGLYYGLynBu5VUxVULG5eP
user: F23b8KDph9QDKacvmktWya6LQ937Z6qMzUzHuaxrnE3t
token_amount: 37589171944844
max_sol_cost: 1100000000
sol_reserves: 31089108909
token_reserves: 1035410828055156
price: 0.000000030026
name: most valuable AI
symbol: grok
uri: https://ipfs.io/ipfs/QmYYFo9WeGCSi9pKjQee6ySxUGCVnznjYQjumY2w68cMU9
creator: F23b8KDph9QDKacvmktWya6LQ937Z6qMzUzHuaxrnE3t
--------------------------------------------------------

性能优化

项目中包含多项性能优化:

  • 批处理交易:将交易按批次处理,每批次默认800笔

    // 批处理大小 - 可以根据系统性能调整
    const BATCH_SIZE: usize = 800; // 增加批处理大小以提高并行效率
  • 容器预分配:预先分配合适的内存空间,减少重分配

    // 预分配所有交易空间
    let total_txs = entries.iter().map(|e| e.transactions.len()).sum::<usize>();
    let mut all_transactions = Vec::with_capacity(total_txs);
  • 并行处理:使用rayon库实现高效的并行处理

    // 并行处理
    all_transactions.par_chunks(BATCH_SIZE).for_each(|chunk| {
        // 处理当前批次的交易
    });
  • 局部结果收集:减少锁争用,提高并行效率

    // 创建局部结果,减少锁争用
    let mut batch_results = Vec::with_capacity(chunk.len() / 20);
    // 一次性获取锁并添加所有结果
    if !batch_results.is_empty() {
        let mut results_lock = results.lock().unwrap();
        results_lock.pump_transactions.reserve(batch_results.len());
        for tx in batch_results {
            results_lock.add_pump_transaction(tx);
        }
    }
  • 指数退避重连:网络连接中断时智能重连

    // 等待一段时间后重试
    sleep(retry_delay).await;
    // 指数退避策略,但限制最大重试间隔
    retry_delay = std::cmp::min(retry_delay * 2, MAX_RETRY_DELAY);

应用场景

  • 交易狙击:快速发现并参与新代币创建交易
  • 市场监控:实时追踪特定账户或代币的交易活动
  • 风险监控:监控特定地址的异常交易行为
  • 量化分析:收集交易数据用于后续分析

监控的程序ID

程序当前监控的核心合约:

// PUMP程序ID
pub const PUMP_PROGRAM_ID: &str = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";

免责声明

本工具仅供技术研究和合法交易使用。用户应遵守所有适用法律法规,不得用于任何违法活动。使用本工具产生的任何风险和后果由用户自行承担。

许可证

MIT License

About

这是一个JitoShred解析PUMP交易监控与狙击框架,使用Rust开发,专注于跟踪PUMP的代币创建活动。该工具通过连接JitoShred节点获取第一手数据,实时解析交易并过滤出重要信息,特别是针对同时包含Create和Buy指令的交易进行重点监控。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%