For Validators
BAM (Blockspace Assembly Market) extends the Jito-Solana client to interface with external schedulers via gRPC, receiving pre-sequenced transaction bundles and executing them in FIFO order with respect to account locks. This design maintains network security while enabling sophisticated transaction ordering strategies.
Quick Start Guide
Step 1: Understanding the Architecture
The BAM system operates within a Trusted Execution Environment (TEE), providing secure transaction scheduling while maintaining validator sovereignty over block production.
Step 2: Download the Source Code
The BAM client is open source and available on GitHub:
- BAM Client Repository - Full source code, build instructions, and development documentation
Step 3: Choose Your Region
Connect to the BAM cluster closest to your validator:
Network | Region | BAM URL |
---|---|---|
Mainnet | π³π± Amsterdam | http://amsterdam.mainnet.bam.jito.wtf |
Mainnet | π©πͺ Frankfurt | http://frankfurt.mainnet.bam.jito.wtf |
Mainnet | πΊπΈ New York | http://ny.mainnet.bam.jito.wtf |
Mainnet | πΊπΈ Salt Lake City | http://slc.mainnet.bam.jito.wtf |
Mainnet | π―π΅ Tokyo | http://tokyo.mainnet.bam.jito.wtf |
Mainnet | πΈπ¬ Singapore | http://singapore.mainnet.bam.jito.wtf |
Testnet | πΊπΈ New York | http://ny.testnet.bam.jito.wtf |
Testnet | πΊπΈ Dallas | http://dallas.testnet.bam.jito.wtf |
Testnet | πΊπΈ Salt Lake City | http://slc.testnet.bam.jito.wtf |
Step 4: Configure Your Validator
Running the BAM validator client is similar to running Jito-Solana, but requires one mandatory configuration addition:
# Required BAM configuration flag
--bam-url <BAM_NODE_URL> # Connect to BAM scheduler
Testnet Example:
solana-validator \
--identity /path/to/validator-keypair.json \
--vote-account /path/to/vote-account-keypair.json \
--ledger /path/to/ledger \
--bam-url http://ny.testnet.bam.jito.wtf \
--rpc-port 8899 \
# ... your other testnet configuration
Mainnet Example:
solana-validator \
--identity /path/to/validator-keypair.json \
--vote-account /path/to/vote-account-keypair.json \
--ledger /path/to/ledger \
--bam-url http://ny.mainnet.bam.jito.wtf \
--rpc-port 8899 \
# ... your other mainnet configuration
Enabling Metrics Collection (Optional)
To enable metrics collection for your BAM validator, export the following environment variable:
Testnet:
export SOLANA_METRICS_CONFIG="host=http://bam-public-metrics.jito.wtf:8086,db=testnet-bam-validators,u=testnet-bam-validator,p=wambamdamn"
Mainnet:
export SOLANA_METRICS_CONFIG="host=http://bam-public-metrics.jito.wtf:8086,db=mainnet-bam-validators,u=mainnet-bam-validator,p=wambamdamn"
Step 5: Runtime Configuration (Optional)
You can update the BAM configuration during runtime using the Admin RPC without restarting your validator.
Enable or Update BAM URL
# Update BAM URL without restarting
echo '{"jsonrpc":"2.0","id":1,"method":"setBamUrl","params":["http://ny.mainnet.bam.jito.wtf"]}' | \
socat - UNIX-CONNECT:admin.rpc
Disable BAM
# Disable BAM (returns to normal Agave mode)
echo '{"jsonrpc":"2.0","id":1,"method":"setBamUrl","params":[null]}' | \
socat - UNIX-CONNECT:admin.rpc
Operational Modes
Your validator operates in one of these modes depending on your configuration:
Mode | Description | Scheduler | Bundle/Txn Source |
---|---|---|---|
Normal Agave | Standard Solana validator behavior | Internal Agave Scheduler | TPU ingestion |
Block-Engine | Jito MEV-enhanced operation | Internal with Block Engine | Jito Block Engine & (Relayer TPU || TPU) |
BAM | External scheduler delegation | External BAM Scheduler | BAM Node via gRPC |
π Security & Audits
Current Audit Status:
- Ottersec - Validator code audit (View Report)
- Anza - Validator code review (completion mid-August 2025)
- Asymmetric Research - Node code audit (in progress)
Support
- Technical Questions: Discord Community
- BAM Technical Forum: BAM Forum