Output File Formats

This reference documents all file formats generated by arb-assist for different bot integrations.

SMB-Onchain Output Files

smb-config.toml

Main configuration file for SolanaMevBot On-Chain.

Structure

[bot]
merge_mints = true
compute_unit_limit = 600000

[[routing.mint_config_list]]
mint = "TokenMintAddress..."
pump_pool_list = ["PoolAddress1...", "PoolAddress2..."]
raydium_clmm_pool_list = ["PoolAddress3..."]
meteora_dlmm_pool_list = ["PoolAddress4..."]
orca_whirlpool_list = ["PoolAddress5..."]
lookup_table_accounts = ["ALUT1...", "ALUT2..."]
process_delay = 400

[rpc]
url = "https://rpc.endpoint.com"

[spam]
enabled = true
sending_rpc_urls = [
    "https://rpc1.com",
    "https://rpc2.com",
    "https://rpc3.com"
]
compute_unit_price = {
    strategy = "Random",
    from = 10000,
    to = 50000,
    count = 1
}
max_retries = 10

[jito]
enabled = true
block_engines = ["ny", "tokyo", "amsterdam"]
tip = {
    strategy = "Random",
    from = 5000,
    to = 20000,
    count = 1
}

[flashloan]
enabled = true

[wallet]
# Keypair configuration handled by SMB

Field Descriptions

[bot] Section

  • merge_mints: Allow combining multiple mints in one transaction

  • compute_unit_limit: Maximum compute units per transaction

[[routing.mint_config_list]] Array

  • mint: Token mint address to arbitrage

  • *_pool_list: Arrays of pool addresses by DEX type

  • lookup_table_accounts: Address lookup tables for this mint

  • process_delay: Milliseconds to wait between attempts

[rpc] Section

  • url: Primary RPC endpoint

[spam] Section

  • enabled: Whether to use spam mode

  • sending_rpc_urls: RPC endpoints for sending transactions

  • compute_unit_price: Priority fee configuration

    • strategy: "Random", "Linear", or "Exponential"

    • from/to: Fee range in microlamports

    • count: Number of different fees to try

  • max_retries: Maximum retry attempts

[jito] Section

  • enabled: Whether to use Jito bundles

  • block_engines: Regions to submit bundles

  • tip: Jito tip configuration

    • Same structure as compute_unit_price

[flashloan] Section

  • enabled: Whether to use flash loans

NotArb Output Files

notarb-config.toml

Main configuration file for NotArb onchain-bot.

Structure

{
    "jvm_args": ["-server", "-Xmx8192m"],
    "keypair_path": "${DEFAULT_KEYPAIR_PATH}",
    "protect_keypair": true,
    "threads": 0,
    "flash_loan": true,
    "max_lookup_tables": 10,
    "meteora_bin_limit": 20,
    "ips_file_path": "",
    "prefunded_keypairs_path": "",
    "jito_targets": [
        "https://ny.mainnet.block-engine.jito.wtf",
        "https://tokyo.mainnet.block-engine.jito.wtf"
    ],
    "max_bundle_transactions": 1,
    "token_accounts_checker": {
        "rpc_url": "",
        "delay_seconds": 3
    },
    "blockhash_updater": {
        "rpc_url": "",
        "delay_ms": 400
    },
    "account_size_loader": {
        "rpc_url": "",
        "invalid_account_size": 200,
        "buffer_size": 1500
    },
    "market_loader": "",
    "lookup_table_loader": "",
    "wsol_unwrapper": {
        "enabled": true,
        "check_minutes": 1,
        "trigger_sol": 0.5,
        "target_sol": 5,
        "priority_fee_lamports": 190,
        "reader_rpc_url": ""
    }
}

Field Descriptions

  • jvm_args: JVM optimization parameters

  • keypair_path: Path to wallet keypair (supports env vars)

  • protect_keypair: Use NotArb's keypair protection

  • threads: Thread pool size (0 = dynamic)

  • flash_loan: Enable flash loan usage

  • max_lookup_tables: Maximum ALUTs per transaction

  • meteora_bin_limit: Max bins for Meteora DLMM

  • ips_file_path: Path to proxy IP list

  • prefunded_keypairs_path: Path to prefunded keypairs

  • jito_targets: Jito bundle submission endpoints

  • max_bundle_transactions: Max transactions per bundle

  • Connection configurations: Separate RPC endpoints for different tasks

markets.json

Trading pairs organized by transaction groups.

Structure

{
    "groups": [
        [
            "MarketAddress1...",
            "MarketAddress2..."
        ],
        [
            "MarketAddress3...",
            "MarketAddress4...",
            "MarketAddress5..."
        ]
    ],
    "update_timestamp": 1753221082643
}

Field Descriptions

  • groups: 2D array of market addresses

    • Each sub-array represents a transaction group

    • Corresponds to mints_to_arb configuration

  • update_timestamp: Unix timestamp of last update

lookup-tables.json

Address lookup tables for transaction size optimization.

Structure

[
    "ALUTAddress1...",
    "ALUTAddress2...",
    "ALUTAddress3...",
    "ALUTAddress4..."
]

Simple array of ALUT addresses, sorted by usage frequency.

notarb-attributes.json

Dynamic trading parameters updated based on market conditions.

Structure

{
    "cu_limit": 400000,
    "jito_cooldown": 350,
    "jito_enabled": true,
    "jito_min_tip": 5000,
    "jito_max_tip": 25000,
    "spam_cooldown": 400,
    "spam_enabled": true,
    "spam_min_fee": 10000,
    "spam_max_fee": 50000
}

Field Descriptions

  • cu_limit: Compute unit limit for transactions

  • jito_cooldown: Milliseconds between Jito attempts

  • jito_enabled: Whether to use Jito bundles

  • jito_min_tip/jito_max_tip: Jito tip range in lamports

  • spam_cooldown: Milliseconds between spam attempts

  • spam_enabled: Whether to use spam mode

  • spam_min_fee/spam_max_fee: Priority fee range in microlamports

File Update Behavior

Update Frequency

All files update according to update_interval in config.toml:

update_interval = 10000  # Updates every 10 seconds

Atomic Updates

Files are written atomically:

  1. Write to temporary file

  2. Validate contents

  3. Rename to final filename

  4. Old file is replaced

File Permissions

Generated files have permissions:

  • Owner: Read/Write (644)

  • Group: Read

  • Others: Read

File Locations

Files are created in the current working directory:

./smb-config.toml         # SMB mode
./notarb-config.toml      # NotArb mode
./markets.json            # NotArb mode
./lookup-tables.json      # NotArb mode
./notarb-attributes.json  # NotArb mode

Dummy Configurations

When no mints meet filter criteria, dummy configs are generated:

SMB Dummy Config

[[routing.mint_config_list]]
mint = "11111111111111111111111111111111"
pump_pool_list = []
lookup_table_accounts = []
process_delay = 1000000000

[spam]
enabled = false

[jito]
enabled = false

NotArb Dummy Markets

{
    "groups": [[]],
    "update_timestamp": 1753221082643
}

Custom Output Names

Configure custom output filenames:

output = "my-custom-name"

Results in:

  • my-custom-name.toml (SMB mode)

  • my-custom-name.json (NotArb mode)

File Server Endpoints

When file server is enabled (port > 0), files are available via HTTP:

Mode
URL Path
Content-Type

SMB

/smb-config.toml

text/plain

NotArb

/notarb-config.toml

text/plain

NotArb

/markets.json

application/json

NotArb

/lookup-tables.json

application/json

NotArb

/notarb-attributes.json

application/json

Example URLs:

http://server:8080/smb-config.toml
http://server:8080/markets.json

Version Compatibility

SMB Compatibility

  • Version 0.11.5+: Full support

  • Older versions: Not supported

NotArb Compatibility

  • Latest GitHub release: Full support

  • Older versions: Check changelog

Validation

SMB Validation

  • TOML syntax must be valid

  • All pool addresses must be valid base58

  • Mint addresses must be valid SPL tokens

  • Compute limits within Solana bounds

NotArb Validation

  • JSON syntax must be valid

  • Market addresses must be valid

  • All numeric values within expected ranges

  • Required fields present

Error Handling

Malformed Output

If output generation fails:

  1. Previous valid config retained

  2. Error logged

  3. Retry on next interval

Partial Updates

If some data unavailable:

  1. Use cached values

  2. Generate partial config

  3. Log missing data

Best Practices

  1. Monitor File Updates: Check timestamps to ensure fresh data

  2. Validate Before Use: Bot should validate config before trading

  3. Keep Backups: Maintain last known good configuration

  4. Watch File Sizes: Large configs may indicate issues

  5. Check Dummy Values: Presence indicates no opportunities found

Last updated