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 transactioncompute_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 typelookup_table_accounts
: Address lookup tables for this mintprocess_delay
: Milliseconds to wait between attempts
[rpc] Section
url
: Primary RPC endpoint
[spam] Section
enabled
: Whether to use spam modesending_rpc_urls
: RPC endpoints for sending transactionscompute_unit_price
: Priority fee configurationstrategy
: "Random", "Linear", or "Exponential"from
/to
: Fee range in microlamportscount
: Number of different fees to try
max_retries
: Maximum retry attempts
[jito] Section
enabled
: Whether to use Jito bundlesblock_engines
: Regions to submit bundlestip
: Jito tip configurationSame 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 parameterskeypair_path
: Path to wallet keypair (supports env vars)protect_keypair
: Use NotArb's keypair protectionthreads
: Thread pool size (0 = dynamic)flash_loan
: Enable flash loan usagemax_lookup_tables
: Maximum ALUTs per transactionmeteora_bin_limit
: Max bins for Meteora DLMMips_file_path
: Path to proxy IP listprefunded_keypairs_path
: Path to prefunded keypairsjito_targets
: Jito bundle submission endpointsmax_bundle_transactions
: Max transactions per bundleConnection 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 addressesEach 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 transactionsjito_cooldown
: Milliseconds between Jito attemptsjito_enabled
: Whether to use Jito bundlesjito_min_tip
/jito_max_tip
: Jito tip range in lamportsspam_cooldown
: Milliseconds between spam attemptsspam_enabled
: Whether to use spam modespam_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:
Write to temporary file
Validate contents
Rename to final filename
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:
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:
Previous valid config retained
Error logged
Retry on next interval
Partial Updates
If some data unavailable:
Use cached values
Generate partial config
Log missing data
Best Practices
Monitor File Updates: Check timestamps to ensure fresh data
Validate Before Use: Bot should validate config before trading
Keep Backups: Maintain last known good configuration
Watch File Sizes: Large configs may indicate issues
Check Dummy Values: Presence indicates no opportunities found
Last updated