“打狗策略”在Solana生态中,指的是狙击新推出的meme币(俗称“土狗”或“金狗”),特别是通过pump.fun平台快速发射的狗主题或高潜力token。这种策略利用Solana的高TPS(每秒交易数)和低Gas费,实现一级市场链上狙击:在token bonding curve(绑定曲线)早期买入,等待迁移到Raydium DEX添加流动性后暴涨,追求10x-100x回报。2025年,Solana meme热潮持续,pump.fun主导新币发射(日均数百个),但竞争激烈,需高速RPC和bot优化。 DYOR(Do Your Own Research),本教程仅供学习参考,不构成投资建议。高风险包括rug pull、honeypot和资金损失。

本教程从入门准备开始,逐步介绍检查、高阶策略,最后提供一个基于Python的简单sniper脚本(使用solana-py库)。脚本实现监控pump.fun新token创建,并在安全检查后自动买入。假设你有Python基础和Solana钱包(如Phantom)。全过程在主网测试,小额起步。

当前日期:2025年10月9日,Solana网络拥堵时Gas可达0.01 SOL/笔,建议使用付费RPC(如QuickNode或Helius)。

第一步:入门准备(基础设置)

1.1 钱包和资金准备

  • 创建/导入钱包:使用Phantom或Solflare,切换到Solana主网(RPC: https://api.mainnet-beta.solana.com/,但推荐付费节点)。
  • 获取SOL:在Binance或Coinbase购买SOL(Gas+交易资金),转入钱包。建议0.05-0.5 SOL Gas,另1-5 SOL交易。
  • 导出私钥:脚本需私钥(危险!仅安全环境)。警告:泄露=资金丢失,使用硬件如Ledger。

1.2 安装开发环境

  • Python环境:Python 3.10+。
  • 依赖库:运行:
    text
     
    pip install solana solders anchorpy requests python-dotenv websockets
     
     
    • solana:Solana RPC交互。
    • solders:低级交易构建。
    • anchorpy:解码pump.fun Anchor程序。
    • requests/websockets:API和WS监控。

1.3 核心工具和API

  • 监控工具
    • pump.fun:新币发射平台(https://pump.fun/)。
    • Dexscreener.com:实时pair(过滤Solana,new pairs <5min)。
    • Birdeye.so:token数据和聪明钱追踪。
  • 交易DEX:Raydium(AMM主力),或Jupiter聚合器。
  • RPC提供商:QuickNode/Helius(免费tier限速,付费<1ms延迟)。获取WS端点用于事件监听。
  • API密钥:Helius Webhooks(免费)或pump.fun IDL(从GitHub下载)。

提示:加入Discord/Twitter(如@pumpdotfun)监控信号。使用Trojan Bot或Solsniffer作为半自动工具。

第二步:中阶心法(合约检查与风险评估)

Solana token易rug(开发者撤资),买入前必查。pump.fun token有6位小数(非标准9位)。

2.1 基本检查清单

使用表格总结:

 
 
检查项 工具/方法 阈值/标准 为什么重要?
流动性锁定 Rugcheck.xyz 或 SolanaTracker 锁定>6个月,比例>80% 防rug pull。
Honeypot QuillCheck / Solsniffer 无honeypot标记 防无法卖出。
税费 Birdeye.so 或合约代码 买入/卖出税<5% 高税吃利润。
持有者分布 Solscan.io (Holders) 前10持有<40% 避鲸鱼操控。
Mint权限 Solscan (Token tab) Mint已放弃(freeze) 防无限增发。
聪明钱 Birdeye 或 Dexscreener 跟随KOL/聪明地址买入 提高胜率。
 

2.2 自动化检查脚本片段

集成QuillCheck API(示例):

python
 
import requests

def check_honeypot(token_address):
    url = f"https://check.quillai.network/api/v1/tokens/{token_address}/report?chain=solana"
    response = requests.get(url)
    data = response.json()
    if data.get('is_honeypot', False) or data.get('risk_score', 0) > 70:
        return False  # 风险高,跳过
    return True
 
 

实践:在pump.fun搜索新币,复制mint地址,逐查。只打“金狗”。

第三步:高阶策略(信号来源与优化)

3.1 信号获取

  • 手动:pump.fun“New”页,过滤<1min发射,volume>10k USD。
  • 半自动:Dexscreener API或Birdeye Webhook监控新Raydium LP。
  • 全自动:WS监听pump.fun程序ID(6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P)“create”事件,或Raydium“initialize2”指令。

3.2 策略变体

  • 保守型:bonding curve 50%完成买入0.05 SOL,止盈5x。
  • 激进型:<30s买入,目标50x,但需Jito bundle防MEV。
  • 聪明钱跟单:监控KOL地址,复制买入。

优化提示:优先费0.0002-0.001 SOL;多钱包分散;动态滑点5-15%;用Geyser插件低延迟。

第四步:打狗脚本实现(核心代码)

以下基础Python脚本:WS监控pump.fun新token,过滤含“dog”的,检查后买入(使用Jupiter swap模拟)。基于Chainstack和QuickNode指南简化。 完整版见GitHub: https://github.com/chainstacklabs/pump-fun-bot。

4.1 环境配置

下载pump.fun IDL: idl/pump_fun_idl.json(从https://github.com/chainstacklabs/pump-fun-bot)。创建`.env`:

text
 
PRIVATE_KEY=你的私钥(base58)
WALLET_ADDRESS=你的钱包地址
RPC_URL=https://api.mainnet-beta.solana.com  # 替换为QuickNode
WS_URL=wss://api.mainnet-beta.solana.com    # WS端点
PUMP_PROGRAM=6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
BUY_AMOUNT=0.05  # SOL买入
SLIPPAGE=10  # %
COOLDOWN=15  # 秒延迟
 
 

4.2 完整脚本代码

python
 
import os
import time
import json
import asyncio
import websockets
from solana.rpc.async_api import AsyncClient
from solana.rpc.websocket_api import connect
from solders.pubkey import Pubkey
from solders.keypair import Keypair
from anchorpy import Idl, Program
from dotenv import load_dotenv
import requests  # 检查

load_dotenv()

# 配置
rpc_url = os.getenv('RPC_URL')
ws_url = os.getenv('WS_URL')
private_key = os.getenv('PRIVATE_KEY')
wallet = Keypair.from_base58_string(private_key)
wallet_address = wallet.pubkey()
pump_program = Pubkey.from_string(os.getenv('PUMP_PROGRAM'))
buy_amount_lamports = int(float(os.getenv('BUY_AMOUNT')) * 10**9)
slippage = int(os.getenv('SLIPPAGE'))
cooldown = int(os.getenv('COOLDOWN'))

# 加载IDL (假设文件存在)
with open('idl/pump_fun_idl.json', 'r') as f:
    idl = Idl.from_json(f.read())
program = Program(idl, pump_program, AsyncClient(rpc_url))

def check_honeypot(token_mint):
    try:
        url = f"https://check.quillai.network/api/v1/tokens/{token_mint}/report?chain=solana"
        response = requests.get(url)
        data = response.json()
        return not data.get('is_honeypot', True) and data.get('risk_score', 100) < 30
    except:
        return False

async def buy_token(token_mint):
    if not check_honeypot(token_mint):
        print(f"Token {token_mint} unsafe, skipping.")
        return False
    
    # 简化Jupiter swap (实际集成Jupiter API或Raydium SDK)
    # 这里模拟: 构建buy指令 (使用Anchor)
    try:
        # 获取bonding curve (简化,实际从事件解码)
        bonding_curve = Pubkey.find_program_address([b"bonding-curve", token_mint.bytes], pump_program)[0]
        # 构建buy tx (伪代码,参考Chainstack manual_buy.py)
        ix = program.instruction["buy"](
            amount=buy_amount_lamports,
            ctx={"accounts": {
                "user": wallet_address,
                "mint": token_mint,
                "bonding_curve": bonding_curve,
                # ... 其他账户
            }}
        )
        tx = await program.rpc(ix, ctx={"signer": wallet})
        print(f"Buy TX: {tx.value}")
        return True
    except Exception as e:
        print(f"Buy failed: {e}")
        return False

async def monitor_pump():
    async with connect(ws_url) as websocket:
        # 订阅logs for pump program
        await websocket.program_subscribe(pump_program)
        async for msg in websocket:
            if 'result' in msg and 'value' in msg['result']:
                logs = msg['result']['value']['logs']
                # 过滤create指令 (Anchor discriminator)
                if any('create' in log for log in logs):
                    # 解码事件获取mint (简化,从logs解析)
                    token_mint_str = "示例MINT从日志提取"  # 实际: 使用anchorpy解码
                    token_mint = Pubkey.from_string(token_mint_str)
                    token_name = "DOGE-MEME"  # 实际API获取
                    if 'dog' in token_name.lower():
                        print(f"New dog token: {token_mint}")
                        await asyncio.sleep(cooldown)
                        await buy_token(token_mint)

# 运行
asyncio.run(monitor_pump())
 
 

4.3 脚本说明

  • 逻辑:WS订阅pump.fun程序logs,过滤“create”事件,解码mint,检查后买入(bonding curve buy)。
  • 改进点
    • 集成Jito bundle防MEV(见GitHub jito-go)。
    • 添加卖出:监控价格,调用sell指令。
    • Raydium扩展:订阅“initialize2”日志检测LP迁移。
    • 测试:用devnet RPC(https://api.devnet.solana.com)。

4.4 如何运行

  1. 保存为sol_sniper.py,下载IDL。
  2. python sol_sniper.py。
  3. 监控日志,验证TX在Solscan.io。
  4. 测试:小额,模拟事件。

第五步:风险与注意事项

5.1 常见陷阱

  • Rug Pull:pump.fun后开发者撤曲线。
  • MEV/Jito战:TX被抢,需bundle和高优先费。
  • 网络拥堵:免费RPC延迟>10s,用付费<1s。
  • 法律:meme易涉诈骗,合规操作。

5.2 高级提示

  • 多链:扩展到Base/ETH。
  • 资源:Chainstack GitHub教程,Reddit r/SolanaSniperBots。
  • 追踪:Excel记录,目标胜率>15%。

通过此教程,你可自动化Solana打狗。从小额实践,优化bot。祝好运,市场无常,谨慎投资!需调试问我。