Rust-Mev-Bot
  • Welcome
  • Getting Started
    • 整体架构
    • 快速开始
    • Demo配置
      • 1.0.11版本配置模板
      • 1.0.9版本配置模板
      • 1.0.7版本配置模板
      • 1.0.6以下版本配置模板
    • 配置详解
  • 相关链接
  • Basics
    • 批量部署集群
    • Grpc测速
    • Jito机器延时测速
    • sol-wsol转换
    • 多IP配置教程
    • Rpc/Grpc节点搭建工具
    • Jito ShredStream
    • Proxy服务
Powered by GitBook
On this page
  • Solana Bot Configuration
  • base_mint
  • bot_config
  • jup_exclude_dex_program_ids
  • jup_bind_local_host
  • jupiter_local_port
  • jupiter_disable_local
  • disable_local_bot
  • jupiter_use_local_cache
  • jupiter_market_mode
  • jupiter_webserver
  • jupiter_update
  • total_thread_count
  • max_account_limit
  • auto_restart
  • yellowstone_grpc_token
  • load_mints_from_birdeye_api_max_mints
  • birdeye_api_key
  • load_mints_from_url
  • intermediate_tokens
  • only_quote_mints
  • max_tokens_limit
  • private_key
  • rpc_url
  • yellowstone_grpc_url
  • jupiter_api_url
  • jito_engine
  • jito_uuid
  • memo
  • memo_auto_random_additional
  • random_engine
  • min_profit_threshold
  • max_tip_lamports
  • static_tip_percentage
  • trade_range
  • trade_range_strategy
  • rpc_type
  • blockhash_rpc_type
  • blockhash_cache_enabled
  • blockhash_cache_ttl_ms
  • thread_count
  • max_concurrent
  • log_rate_limit
  • log_opportunities
  • log_trade_execution
  • enable_separate_wallet
  • separate_wallet_size
  • only_direct_routes
  • check_transaction_size
  • dynamic_compute_unit_limit
  • cu_limit_percentage
  • ip_addrs
  • compute_unit_limit 1.0.9以上版本不再支持
  • full_loan_amount
  • enable_kamino
  • blind_trade_config
  1. Getting Started

配置详解

Solana Bot Configuration

base_mint

  1. 默认base_mint 为wsol,如果你想要使用usdc套利,请自行替换,同时需要注意以下几点: 从1.0.17版本开始支持usdc作为base_mint套利,并支持盲发策略,如果依旧使用wsol,原有参数含义不变,如果使用usdc有以下几个单位注意点

  2. min_profit_threshold 最小利润值,无论使用usdc还是wsol,都是以sol lamports 为单位

  3. max_tip_lamports 最大的tip限制,论使用usdc还是wsol,都是以sol lamports 为单位

  4. 盲发相关

    1. random_fixed_profit 单位是根据base mint 来的,如果配置0.1 ,那就是0.1sol,或者0.1usdc

    2. expect_min_profit_threshold 单位是根据base mint 来的,如果配置0.1 ,那就是0.1sol,或者0.1usdc

  5. usdc 线上合约cu消耗在1.5w左右,wsol 线上合约消耗在1w左右

  6. 建议暂时分开两个钱包套不同样的base_mint

  7. 当前官网只是记录账户的wol+wsol余额,如果套u会可能会出现- 的情况,因为你消耗了sol,去换usdc了,这一点请注意,后面再支持统计,可以看dune 的数据,或者circular 当前也比较准确

  8. usdc 为base_mint 建议先进行小额测试,没问题了再进行大额测试,我个人测试没有问题,由于其中涉及一些单位转换,还需要自行测试

  9. 如果使用usdc为base_mint,需要在钱包放一些sol作为gas,和一些usdc

  10. trade_range、trade_range_strategy 下都已base 为基础单位,比如1sol 或者1usdc

Wsol 为base_mint,不配置默认为wsol

base_mint: "So11111111111111111111111111111111111111112"

usdc 为base_mint,需要保证你有usdc才可以,不然没得套

base_mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"

bot_config

bot 基础配置,后续一些bot相关的配置都会转移到bot_config下,1.0.17新增over_trade_process_delay_ms 此参数的意思就是一个线程执行完毕后延时多久才继续进行下一次的处理,我个人理解,同一个交易额会在一个线程内,如果频繁去无限询价会增加jup压力,并没有新的机会出现。不如进行delay进行释放jup压力,默认为0,根据自己的情况调整

bot_config: 
  over_trade_process_delay_ms: 100

jup_exclude_dex_program_ids

用于排除不想交易的 DEX program IDs。如果某些 DEX 没有好的套利机会,可以在此处配置排除。

jup_exclude_dex_program_ids:
  - "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
  - "MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG"

jup_bind_local_host

Jupiter 服务绑定的 IP 地址。建议设置为 127.0.0.1,避免被外部扫描增加服务器负载。

jup_bind_local_host: 127.0.0.1

jupiter_local_port

Jupiter 服务监听的端口号。

jupiter_local_port: 18080

jupiter_disable_local

是否禁用本地 Jupiter 服务。如果使用高性能服务器运行多个机器人,可以设置为 true。可以远程链接jupiter服务,此时建议填写load_mints_from_url 去获取远程jup的

jupiter_disable_local: true

disable_local_bot

是否禁用本地bot,当你只想在服务器上运行jup的时候可以禁用本地bot

disable_local_bot: false

jupiter_use_local_cache

是否启用本地缓存功能,建议禁用。

jupiter_use_local_cache: false

jupiter_market_mode

Jupiter 的市场模式设置,建议选择 remote。

jupiter_market_mode: "remote"

jupiter_webserver

Web 服务器线程数。

jupiter_webserver: 4

jupiter_update

更新线程数。

jupiter_update: 4

total_thread_count

jup总线程数。

total_thread_count: 16

max_account_limit

一个交易中支持的最大账户数限制,过高可能导致jup性能消耗比较大

max_account_limit: 24

auto_restart

自动重启时间设置,设置为 0 则不会自动重启,单位为分钟。

auto_restart: 30

yellowstone_grpc_token

gRPC 服务的访问令牌配置。如果没有可以不配置

yellowstone_grpc_token: ""

load_mints_from_birdeye_api_max_mints

从 Birdeye API 加载热门代币的最大数量

load_mints_from_birdeye_api_max_mints: 100

birdeye_api_key

Birdeye API 密钥。如果load_mints_from_birdeye_api_max_mints 配置值,需要配置密钥可以去注册一个账号key免费https://bds.birdeye.so/

birdeye_api_key: ""

load_mints_from_url

load_mints_from_url: "https://xxx"

返回值格式如下应该是这样的格式,否则无法解析:

[
  "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
  "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
]

intermediate_tokens

中间代币列表,系统会加载这些代币,如果配置了,并合并到jupiter的代币列表中,那么会使用这些代币进行套利(在intermediate_tokens中的币一定会加载到jup)。

intermediate_tokens:
  - "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
  - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"

only_quote_mints

无论jup加载了多少币,可以指定程序只交易这些币,适用于只跑u或者只跑某些币的情况(需要和intermediate_tokens配合使用)确保only_quote_mints一定在intermediate_tokens里面配置了,当前还没自动处理

only_quote_mints:
  - "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
  - "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"

max_tokens_limit

机器人最大代币数量限制,会聚合上面几种方式获取的所有代币之和,如果超过配置数量,那么会随机取max_tokens_limit个代币

max_tokens_limit: 80

private_key

你的钱包私钥数组类似[xxx,xxx,xxx]系统启动后会在当前目录生成加密的私钥文件,配置会被自动删除。

private_key: ""

rpc_url

Solana RPC 节点地址。

rpc_url: "http://xxx"

yellowstone_grpc_url

Yellowstone gRPC 服务地址。

yellowstone_grpc_url: "http://xxx"

jupiter_api_url

Jupiter API 服务地址。

jupiter_api_url: "http://127.0.0.1:18080"

jito_engine

Jito MEV-Block-Engine 节点列表配置,建议配置多个节点以提升 QPS,如果配置随机发送,每次找到机会会随机选择一个节点发送,否则一个机会会发送到所有配置的节点。

1.0.7版本新增了Main 引擎,和指定jito 接口的方式,开放出去,可自定义jito的域名,你可以自己代理出去,但是只会走RPC模式

jito_engine:
   - Main    # 版本>=1.0.7 的时候,添加了主节点
   - "http://127.0.0.1:8080"  # 版本>=1.0.7 的时候,可自定义jito的域名,你可以自己代理出去,但是只会走RPC模式
   - NL      # 荷兰阿姆斯特丹节点
   - DE      # 德国法兰克福节点
   - NY      # 美国纽约节点
   - SLC     # 美国盐湖城节点
   #- Tokyo   # 日本东京节点

jito_uuid

1.0.11版本新增,如果您有jito 的uuid,您可以在一台单ip 的机器上配置上,uuid有一定优先权,在行情不好的时候,上单速度还可以,如果有多个rateLimit,那么所有的机会,会根据限速平均发送,支持配置多个,如果使用uuid,建议关闭单独小费钱包,enable_separate_wallet = false,不需要再使用多ip,因为多ip已不生效,根据uuid限速而不是ip

#jito配置UUID,请配置限速,如果有多个rateLimit,那么所有的机会,会根据限速平均发送
jito_uuid_config:
  - uuid : "xxxx" #你在jito申请的uuid 1
    rate_limit: 10 # 限制的QPS,填写自己的uuid限制速率
  - uuid : "xxxx" #你在jito申请的 uuid 2
    rate_limit: 5 # 限制的QPS,填写自己的uuid限制速率  

memo

为每一个交易添加备注,添加的好处是可以让每个交易可以记录是从哪台机器发出来的,便于调试

memo: "test"

memo_auto_random_additional

默认为true,如果开启动可为memo后最加上随机数,减少hash冲撞提升上链率(主要针对,如果你的机器性能很强,找到的机会很多,很容易hash冲撞的情况下使用)

memo_auto_random_additional: true

random_engine

是否启用随机节点选择,建议开启以提升 QPS,提高成功率。

random_engine: true

min_profit_threshold

每一次交易你的最小利润阈值,单位为lamports,达到这个利润会立即执行交易。

min_profit_threshold: 1000

max_tip_lamports

给 Jito 的最大 tip 限制。有时候利润非常大,但是你又不想给jito那么大的小费,你可以限制最大小费限制,如果按照百分比给超过最大限制那么将根据最大限制给jito小费

max_tip_lamports: 100000000

static_tip_percentage

给 Jito 的静态 tip 百分比。

static_tip_percentage: 0.7501

trade_range

从1.0.17版本开始,需要根据base_mint调整,1就是1sol或者1usdc

交易范围配置,建议从小额开始(0.1-1 SOL/USDC)(1.0.7以及以上版本为sol为单位,1.0.7以下版本以sol lamports为单位注意)。

trade_range:
  - 0.1    # 0.1 SOL/0.1 USDC

trade_range_strategy

交易范围策略,可以启用也可以不用,如果开启,那么启动的时候会以你配置的资金区间去随机获取交易额大小,以一下例子作为解释:交易额会在0.1SOL 到1SOL,随机生成size个,1SOL到20SOL,随机生成10个,该配置主要用来多机器跑,但是又不太想指定交易额的情况下使用,如果既配置了trade_range又配置了trade_range_strategy ,那么在启动时会聚合两个结果并去重,为最后的交易额

从1.0.17版本开始,需要根据base_mint调整,1就是1sol或者1usdc

trade_range_strategy:
  enable_strategy: true
  ranges:
    - from: 0.1 # 0.1 SOL/0.1USDC
      to: 1.0 # 1.0 
      size: 10 #
      step: 0.05 # 随机的步长为0.05
    - from: 1 # 1 
      to: 20 # 10 
      size: 10 #
      step: 1 # 随机的步长为1

rpc_type

交易发送类型,建议选择 Mixed 模式以提升 IP 限制速率。

rpc_type: Mixed

blockhash_rpc_type

Blockhash RPC 类型,建议选择 Grpc,从1.0.17版本,我们支持了Grpc订阅blockhash,而不用担心blockhash过期的事情

blockhash_rpc_type: Grpc

blockhash_cache_enabled

是否启用 blockhash 缓存,建议启用,降低节点压力。

blockhash_cache_enabled: true

blockhash_cache_ttl_ms

Blockhash 缓存过期时间,单位毫秒。

blockhash_cache_ttl_ms: 1000

thread_count

bot查询交易的系统线程数。

thread_count: 6

max_concurrent

每个线程的最大并发网络 IO 数。

max_concurrent: 4

log_rate_limit

是否启用日志速率限制打印,主要是一些jito的rpc返回的错误信息或者异常信息,如果需要调试可以打开

log_rate_limit: false

log_opportunities

是否打印套利机会。

log_opportunities: false

log_trade_execution

是否打印交易执行日志。

log_trade_execution: false

enable_separate_wallet

是否启用独立小费钱包,如果启用,那么每次交易都会使用一个独立的钱包进行小费交易,否则会使用主钱包进行小费发送给jito,会导致限速。

enable_separate_wallet: true

separate_wallet_size

生成的随机钱包个数,主要针对jito对发送小费的钱包限速的解决方案,如果你的机会比较多,建议生成更多的临时钱包,降低限速命中概率,默认值为2000

separate_wallet_size
: 2000

only_direct_routes

是否只使用直接路由,如果启用只会有单跳出现,否则会寻找多跳,但是多跳对jup的性能有一些要求,会慢一点。

only_direct_routes: false

check_transaction_size

是否检查交易大小,暂时没有用处。

check_transaction_size: false

dynamic_compute_unit_limit

是否启用动态计算单元限制,如果启用,那么会模拟交易cu消耗,并设置到交易中

dynamic_compute_unit_limit: true

如果关闭那么请设置以下两个参数,根据

single_swap_compute_unit_limit,代表在一个交易里面单个swap你给多少cu限制

loan_compute_unit_limit,代表,如果交易里出现闪电贷,你给闪电贷多少cu

这样做的好处就是,无论是多跳还是单跳,我们都根据最后的swap路径都可以给出合适的cu,无论是单跳还是多跳,或者交易里有闪电贷或者没有,进行更加精细的CU限制

single_swap_compute_unit_limit: 80000

loan_compute_unit_limit: 100000

cu_limit_percentage

计算单元限制百分比,有时候,模拟的cu偏大,可以设置百分比,比如0.98,那么会按照模拟cu的98%,并设置到交易中。

cu_limit_percentage: 0.98

ip_addrs

版本>=1.0.7 的时候,可以直接将此参数,注释掉,那么系统会自动扫描网卡里面配置的所有IP,如果不想用所有的IP,那么可以手动配置(公网)

 ip_addrs:
   - "127.0.0.1"

compute_unit_limit 1.0.9以上版本不再支持

1.0.9版本去除此参数,转换为以下两个参数,进行精细控制,请注意! single_swap_compute_unit_limit loan_compute_unit_limit

计算单元限制,如果不启用动态计算cu限制,可以手动设置cu大小,那么每笔交易都会按照这个cu来设置,太小无法完成交易,建议多跳30w左右,单跳18w左右。不模拟CU会加快jup的quote速度

compute_unit_limit: 180000

full_loan_amount

默认开启。在开启闪电贷的时候,是否全额闪电贷款,如果交易额大于本金全部使用闪电贷模式,而不是两种资金组合,只贷款不足的部分,开启的话,那么当前的交易额都会从闪电贷里面取,主要是为了解决如果自己的程序正在跑,但是你需要调整wsol资金,然后导致贷款后余额还不足的问题,导致闪电贷失效

enable_kamino

是否开启kamino闪电贷,如果开启的话记得设置compute_unit_limit 去指定CU限制,只有在余额不足的时候才会去使用闪电贷,因为闪电贷的cu消耗比较大,如果only_direct_routes=true 的情况下建议compute_unit_limit 设置为30w,如果是多跳的话(only_direct_routes=false)可能需要设置40w cu限制,开启闪电贷的情况下,并且dynamic_compute_unit_limit=true,那么会有两种情况

1、不需要借贷,自己的余额充足,那么会去模拟cu,此时compute_unit_limit 失效,取模拟结果设置cu

2、需要闪电贷,自己的余额不足,那么不会去模拟cu,直接使用compute_unit_limit 的值并*cu_limit_percentage设置为限制的cu

PS:在开启闪电贷之后注意自己的cu设置,cu太大或者太小,都会导致不上链的情况,建议大家预留一定的wsol,用自己的余额跑,并设置少量的大单子trade_range,走闪电贷款,或者专门找一机器跑闪电贷都可以,具体该怎么玩,取决于自己,闪电贷无需支付费用,但是有时候上链率不如自己的余额,毕竟cu消耗较多,有时候资金也不一定能借的出来,所以建议预留小单资金,默认开启

enable_kamino: true

blind_trade_config

1.0.16 版本盲发策略,默认关闭,如果需要使用请打开enabled=true,默认建议使用enable_quote=true,历史盲发相关策略不再生效,请使用新版本配置

blind_trade_config:
  #是否开启盲发
  enabled: true
  #是否开启quote,如果开启,如果开启quote,还是会根据quote结果进行修改结果,如果不开启,那么直接随机组合AMM进行交易
  enable_quote: true
  blind_type: RandomFixed #可选值:Fixed,RandomFixed,Percent,固定值、随机固定值、交易额百分比
  # 1、盲法利润固定值,无论多大的交易额,都根据此利润值来模拟quote到的利润
  expect_min_profit_threshold: 0.0005 #单位为sol
  # 2、随机固定利润值,单位为sol
  random_fixed_profit: #单位为sol
    - 0.000012000
    - 0.000050000
    - 0.000080000
    - 0.0001
    - 0.0002
    - 0.0005
    - 0.001
    - 0.01
    - 0.1
    - 0.5
  # 3、(不进行quote)盲发预期利润百分比,预期利润百分比开启后,固定blind_expect_min_profit_threshold 将失效,按照交易额度来控制给jito的小费比率,也就是
  #毛利润 = 交易额 *(1+blind_expect_profit_percent)
  #jito 小费 = 毛利 * static_tip_percentage,建议保守和冲刺都要有,找机会
  blind_expect_profit_percent:
    - 0.00002 # 保守策略: 交易100 SOL,预期利润0.002 SOL (≈$0.14) => 约 $2.60
    - 0.00005 # 保守策略: 交易100 SOL,预期利润0.005 SOL (≈$0.35) => 约 $6.50

Previous1.0.6以下版本配置模板Next相关链接

Last updated 20 days ago

#自定义从url加载代币,返回值应该是["xx","xx"] 这样的格式,否则无法解析,可以从jup加载,比如:

http://127.0.0.1:18080/tokens