一个基于TypeScript的Solana交易机器人客户端,支持实时数据订阅和自动化交易执行。通过Unix Socket接收protobuf格式的实时交易事件,并使用HTTP API执行PumpFun和PumpSwap DEX的买入/卖出操作。
src/
├── index.ts # 应用入口点,启动Unix Socket订阅和交易执行器
├── client.ts # HTTP API客户端,处理买入/卖出请求
├── config.ts # 配置管理,统一管理环境变量
├── logger.ts # 日志系统,支持多级日志输出
├── subscriber.ts # Unix Socket事件订阅器(protobuf)
├── task.ts # 定时任务调度器,管理区块哈希更新等任务
├── parser/ # 消息解析器
│ ├── parser_messages.js # protobuf解码器实现
│ └── parser_messages.d.ts # TypeScript类型定义
├── executor/ # 交易执行器
│ ├── pumpfun.ts # PumpFun DEX交易执行器
│ ├── pumpswap.ts # PumpSwap DEX交易执行器
│ ├── checkOrder.ts # 订单检查和卖出定时器
│ └── common.ts # 执行器通用工具函数
├── services/ # 服务层
│ ├── redisService.ts # Redis服务,订单管理和缓存
│ ├── addressLookupTableService.ts # 地址查找表服务
│ ├── durableNonceService.ts # 持久化Nonce服务
│ └── index.ts # 服务导出
└── types/ # 类型定义
├── index.ts # 基础类型定义
└── order.ts # 订单相关类型
- Unix Socket连接: 使用protobuf协议,支持PumpSwap、PumpFun等DEX的实时交易事件
- 延迟监控: 实时监控数据延迟,支持微秒级精度
- 事件过滤: 智能识别买入/卖出事件,自动触发交易策略
- 多DEX支持: 支持PumpFun和PumpSwap两个主要DEX
- HTTP API交易: 通过HTTP API执行买入/卖出操作
- 智能价格计算: 自动计算Token价格和交易参数
- 滑点控制: 可配置的滑点容忍度
- 分布式锁: 使用Redis实现买入操作的原子性,防止重复交易
- 订单管理: 完整的订单生命周期管理(创建→买入→卖出→完成)
- 地址查找表: 支持Solana地址查找表,优化交易大小
- 持久化Nonce: 支持Durable Nonce,提高交易成功率
- Gas费策略: 支持全局和高低小费两种策略模式
- Redis服务: 订单缓存、交易信息存储、分布式锁管理
- 定时任务: 自动更新区块哈希、Nonce刷新等后台任务
- 多级日志: 支持error、warn、info、debug四个日志级别
- 优雅关闭: 支持Ctrl+C优雅关闭连接和清理资源
- 健康检查: HTTP API健康状态监控
- Node.js 16+
- Redis服务器
- Solana RPC节点访问权限
- Trading Proxy Server运行中
- 克隆项目并安装依赖
- 配置环境变量(参考下方详细配置)
- 启动Redis服务
- 运行
npm run dev开始交易
npm install复制 .env.sample 文件并重命名为 .env,然后根据你的实际情况修改配置:
cp .env.sample .env详细的配置说明请参考 .env.sample 文件中的注释。
# 开发模式运行(推荐)
npm run dev
# 或者先编译再运行
npm run build
npm start- PumpSwap事件:
PumpSwapBuy,PumpSwapSell,PumpSwapCreatePool,PumpSwapLiquidityAdded,PumpSwapLiquidityRemoved - PumpFun事件:
PumpFunTrade,PumpFunCreate,PumpFunMigrate - Meteora DAMM V2事件:
MeteoraDammV2Swap,MeteoraDammV2AddLiquidity,MeteoraDammV2RemoveLiquidity,MeteoraDammV2CreatePosition,MeteoraDammV2ClosePosition
- 功能: 处理PumpFun DEX的交易事件
- 特点:
- 支持虚拟储备量价格计算
- 自动识别买入/卖出事件
- 集成Bonding Curve参数
- 交易流程: 监听事件 → 价格计算 → 创建订单 → 执行买入 → 状态更新
- 功能: 处理PumpSwap DEX的交易事件
- 特点:
- 支持WSOL/Token交易对识别
- 基于池储备量计算价格
- 支持流动性池参数
- 交易流程: 监听事件 → 交易对识别 → 价格计算 → 创建订单 → 执行买入 → 状态更新
- 功能: 定时检查订单状态并执行卖出操作
- 特点:
- 支持多执行器统一管理
- 订单状态生命周期管理
- 自动卖出触发机制
项目使用protobuf进行消息序列化,支持以下消息类型:
- ServerAck: 服务器确认消息
- DexEvent: DEX事件,包含具体的事件类型(PumpFun、Pumpswap等)
- ServerError: 服务器错误消息
- ServerHeartbeat: 服务器心跳消息
- 每个protobuf消息前4字节为消息长度(大端序)
- 消息体为protobuf序列化的二进制数据
- 支持消息分片和重组
- 订单管理: 创建、更新、删除订单,支持订单状态跟踪
- 交易信息缓存: 存储PumpFun和PumpSwap的交易数据
- 分布式锁: 实现买入操作的原子性,防止重复交易
- 区块哈希缓存: 缓存最新的区块哈希,提高交易效率
- Nonce管理: 缓存和刷新持久化Nonce信息
- 地址查找表管理: 加载和管理Solana地址查找表
- 交易优化: 减少交易大小,提高交易成功率
- 动态更新: 支持运行时更新地址查找表
- Nonce缓存: 缓存当前Nonce值,避免频繁RPC调用
- 自动刷新: 定时刷新Nonce信息,保持交易有效性
- 错误处理: 处理Nonce过期和刷新失败的情况
- 区块哈希更新: 每5秒自动更新最新区块哈希
- Nonce刷新: 定时刷新持久化Nonce信息
- 任务管理: 统一管理所有后台定时任务
- 适用场景: 简单统一的Gas费配置
- 配置参数:
global_cu_limit: 全局计算单元限制global_cu_price: 全局计算单元价格global_buy_tip: 全局买入小费global_sell_tip: 全局卖出小费
- 适用场景: 需要灵活调整Gas费策略的高级用户
- 策略模式:
- 低小费高优先费: 使用较高的CU价格但较低的小费
- 高小费低优先费: 使用较低的CU价格但较高的小费
- 配置参数:
high_cu_price: 高优先费时的CU价格low_cu_price: 低优先费时的CU价格high_buy_tip/high_sell_tip: 高小费策略low_buy_tip/low_sell_tip: 低小费策略
- 设置
ENABLE_HIGH_LOW_FEE=true启用高低小费策略 - 设置
ENABLE_HIGH_LOW_FEE=false使用全局策略(默认)
error: 只显示错误信息warn: 显示警告和错误信息info: 显示信息、警告和错误(推荐)debug: 显示所有信息,包括详细的调试信息
# 开发模式运行
npm run dev
# 编译TypeScript
npm run build
# 监听模式编译
npm run watch
# 代码检查
npm run lint
# 修复代码问题
npm run lint:fix
# 清理构建文件
npm run cleanMIT License