NotArb - Solana Arbitrage Bot
  • Getting Started
    • Welcome
    • Changelog
    • The Basics
  • Setup
    • Start Here!
    • Prerequisites
      • Recommended Apps
      • RPC Providers
      • Linux Machines
    • Logging in Using SSH
    • Securing Your Machine
      • User Management
      • SSH Key-Based Authentication
      • Setting up UFW
      • Setting up fail2ban
      • Securing Wallet Private Key
    • Setting up for FTP
    • Initial Setup of NotArb
    • Using Screens
    • Making a Solana Wallet
  • Configurations
    • Using Nano
    • Config Basics
    • bot-config.toml
      • General Bot Settings
      • WSOL Unwrapper
      • JITO Strategy Settings
      • Spam Strategy Settings
      • Token Lists Settings
      • Swap Settings
    • jupiter-config.toml
      • Manager Settings
      • Env Settings
      • Mint Filters
    • Shell Scripts
      • run-bot.sh
      • run-jupiter.sh
      • run-screens.sh
  • Usage
    • Strategies
      • Jito Strategy
      • Spam Strategy
    • Updating
  • EXPERIMENTAL FEATURES
    • Overview & Caution
    • New Setup Configurations
  • New Mint Configurations
  • Default Strategy Fields
  • Jito Example
  • Spam Example
  • Extra Features
  • Support
    • FAQ
    • Common Issues
    • Troubleshooting
    • NotArb Docs Tracker
    • Contact
Powered by GitBook
On this page
  • Overview
  • [dynamic_mints] (Optional)
  • [[file_mints]] (Optional)
  • JSON Example File:
  • Txt Example File:
  • [[static_mints]] (Optional, Required if no other suppliers)
  • Token Selection Mechanics
  • Token Cycling
  • Token Selection Strategies
  1. Configurations
  2. bot-config.toml

Token Lists Settings

PreviousSpam Strategy SettingsNextSwap Settings

Last updated 6 months ago

Overview

v0.1.84 updated mint settings. Please read the

We'll go over the section where you set what tokens to want to monitor and swap with.

An important thing is you MUST have the same tokens listed in both the bot-config.toml and jupiter-config.toml.

Example if you have Token A you want to perform arbitrage on:

Configurations
Token A on Jupiter
No Token A on Jupiter

Token A on Bot

Monitor price and swap

Attempts to swap, but will find it untradable because it has no price data

No Token A on Bot

Monitor price

Nothing happens at all with Token A

[dynamic_mints] (Optional)

This will use the tokens gathered from Jupiter depending on what tags you set.

Refer to the for more information about these tokens.

[dynamic_mints] # this is the only mint configuration where only one is allowed, hence the single brackets
enabled=true
limit=100 # optional - limits the number of mints obtained from this supplier, ordered by highest daily volume first
export_path="dynamic-mints.txt" # optional - useful for debugging

untradable_cooldown="1m" # if the bot detects an untradable token, that token will be put on a cooldown for the given duration (default 1m)
max_per_cycle=10 # optional - used to limit how many mints can be processed from this mint supplier per bot cycle (default unlimited)
update_seconds=10 # this pulls from Jupiter's public endpoint, keep that in mind if running multiple bots for rate limiting (default 10, min 5)

exclude=[ # optional
    "So11111111111111111111111111111111111111112",  # sol
    "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", # usdt
    "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # usdc
]

## NOTE: Filter configurations must be placed at the end, after other settings like exclude and enabled. ##

[[dynamic_mints.filter]] # example filter to pick up all mints with either a birdeye-trending tag OR pump and verified tags
include_tags=[ # an array of tag groups, only one group match required to be included
    ["birdeye-trending"],
    ["pump", "verified"]
]

[[dynamic_mints.filter]] # example filter to pick up new mints
max_age="3d" # d=days, h=hours, m=minutes
min_daily_volume=10_000
exclude_tags=[ # an array of tag groups, only one group match is required to be excluded
    ["strict"],
    ["community"]
]


[[file_mints]] (Optional)

You can manually add mint addresses to either a json or a txt file. Upload these files to your server and in the settings, set the path to it.

[[file_mints]]
enabled=true
untradable_cooldown="1m" # if the bot detects an untradable token, that token will be put on a cooldown for the given duration (default 1m)
max_per_cycle=10 # optional field - use this to limit how many mints can be processed from this mint supplier per bot cycle (default unlimited)
random_order=false # optional field - use this to randomize the order of the list every cycle (default false)
update_seconds=10 # optional field - when set, this file will be loaded every X amount of seconds (default 0)
path="/absolute/path/to/mints.json OR /absolute/path/to/mints.txt" # the actual extension here doesn't matter, as long as the output is either a json list of strings or raw text of 1 mint per line (raw text supports # comments)
  • enabled=true

  • untradable_cooldown="1m" if the bot detects an untradable token, that token will be put on a cooldown for the given duration (default 1m)

  • max_per_cycle=10 optional field - use this to limit how many mints can be processed from this mint supplier per bot cycle (default unlimited)

  • random_order=false optional field - use this to randomize the order of the list every cycle (default false)

  • update_seconds=10 optional field - when set, this file will be loaded every X amount of seconds (default 0)

  • path="/absolute/path/to/mints.json OR /absolute/path/to/mints.txt" the actual extension here doesn't matter, as long as the output is either a json list of strings or raw text of 1 mint per line (raw text supports # comments)

JSON Example File:

Ensure in your JSON mint list you follow the formatting below:

[
  "So11111111111111111111111111111111111111112",
  "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
  "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
]

Txt Example File:

One mint per line and can use comments.

# Start lines with a # to comment

So11111111111111111111111111111111111111112 # another comment example
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
#BjjvKX5k7gQoGRmvQAA5WMr7EkQ2cirGTSGxAznDpump #Adding a #before will not read the line

[[static_mints]] (Optional, Required if no other suppliers)

You can manually put the list of mints directly in the bot-config file if you'd like.

[[static_mints]] # double brackets since we allow multiple
enabled=true
untradable_cooldown="1m" # if the bot detects an untradable token, that token will be put on a cooldown for the given duration (default 1m)
max_per_cycle=10 # optional field - use this to limit how many mints can be processed from this mint supplier per bot cycle (default unlimited)
random_order=false # optional field - use this to randomize the order of the list every cycle (default false)
list=[
    "So11111111111111111111111111111111111111112",  # sol
    "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", # usdt
    "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # usdc
]
  • enabled: Toggle static mint list.

  • untradable_cooldown="1m" :

  • max_per_cycle: Maximum tokens per cycle.

  • random_order: Shuffle token order.

  • lists: Array of token mint addresses.

Token Selection Mechanics

NotArb will require you to have a mint list established in the configuration file, and you can have multiple lists enabled.

Order Sequencing:

You can have the list go sequentially from the top to bottom of the list and then restart at the top or you can set random_order = true and it will select tokens at random to find an opportunity for that mint.

Utilizing multiple lists

If you have multiple lists established in your configuration file, you can set how many within a cycle before it goes to the next list and selects its tokens.

Example:

[[file_mint_list]]
enabled = true
max_per_cycle = 5 
random_order = true
path = "/path/to/mints_list_1.txt"

[[file_mint_list]]
enabled = true
max_per_cycle = 10 
path = "/path/to/mints_list_2.txt"

In this example, we have two source lists. Here is the sequence of events:

  1. Randomly select 5 mints to arb from mints_list_1

  2. Move to mints_list_2

    1. Start from the top of the list

    2. Work its way down for the first 10 mints

  3. Go back to mints_list_1 and randomly select 5 mints

  4. Repeat

Token Cycling

With NotArb, you can have multiple lists and have them run through every individual list for a certain amount of time. That is what max_per_cycle is for. It will use the amount of tokens for a cycle before moving to the next list to do the same.

The example below shows two different lists (A and B) with different max_per_cycles and having random_order.

Token Selection Strategies

Different users have their own strategies and methods for selecting and/or generating their mint lists. It is best to find a way to automate your list generations as it will be easier and less work. Feel free to visit the NotArb Discord and discuss strategies.

ℹ️
v.0.1.84 changelog
Jupiter Ecosystem Master Token List