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.
Access to BAM is fully permissionless, and any validator can join mainnet or testnet by following the instructions below.
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 | π¬π§ London | http://london.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