BAM Early Adopter Subsidy Programme — Validator Information
This post is a technical companion to the JIP and is intended for validators who want to understand eligibility, timelines, and the on-chain claiming flow.
Summary
-
Subsidy rewards are distributed epoch-by-epoch to eligible validators running BAM.
-
Rewards are claimable as JitoSOL via an epoch-specific MerkleDistributor (the same programme used for the JTO airdrop and recent SIMD votes).
-
Your reward share is pro-rata to effective stake (mechanism curve), not raw stake.
-
You have a 10-epoch claim window per epoch’s rewards. Unclaimed rewards are reflowed (recycled) into a later epoch pool.
Eligibility
A validator is eligible in epoch (t) if all of the following are true:
-
Stake threshold: validator stake
-
BAM runtime: validator has been running BAM for at least 3 consecutive epochs
-
Compliance: validator is not blacklisted and is compliant with BAM’s execution requirements:
-
execute received transactions in exact order
-
provide correct execution feedback and state information
-
Notes:
-
The programme is open to all validators (not limited to Jito stake pool validators).
-
If a validator stops running BAM or violates requirements, it loses eligibility until it satisfies requirements again.
How the subsidy pool is formed each epoch
Each epoch has a subsidy pool generated from protocol fees denominated in JitoSOL.
-
During the main phase, 100% of protocol revenue is allocated to the pool.
-
During the wind-down period, the allocation fraction decreases linearly from 100% to 0%.
Additionally, expired unclaimed rewards are recycled into later pools.
Operationally, the “keeper” sweeps accumulated revenue into the distributor according to the programme schedule.
Note: Jito has multiple revenue streams that will contribute to the subsidy pool. Due to the nature of their distribution some fees will have a delay, for example, tiprouter distributed fees land the epoch after they are earned. For ease of accounting, each epoch of the BAM subsidy pool will comprise all fees attributed to and collected by the DAO within the boundaries of that epoch, rather than strictly the epoch in which the fees were earned.
Claim window, expiry, and reflow of unclaimed rewards
-
For each epoch’s distribution, claims are open for 10 epochs.
-
If you do not claim within the window, the unclaimed amount is reflowed into a later epoch pool and redistributed to claimants.
Example:
-
Epoch 100: you’re allocated 5 JitoSOL
-
Epochs 101–109: you can claim at any time
-
Epoch 110: if still unclaimed, that amount is recycled into a later pool
There are no appeals/exemptions, this is a fully mechanistic rule.
The Initial Epochs
The early epochs include an implementation window as claim contracts are finalised and deployed. The DAO executed mid-epoch 911 and will accumulate rewards from DAO execution to epoch end. 912 and 913 are full epochs where 100% of protocol revenue accumulates in the subsidy pool. The first claimable window will be initialised early in 914 and from that point on, will be claimable in the subsequent epoch until programme end. There is a 10 epoch claim window after which rewards will be clawed back to the BAM subsidy pool, where they will top up BAM running and claiming validators.
Distribution
The programme runs an epoch-lagged distribution, which is typical for stake-based systems:
High-level timeline
- Rewards for epoch (N-1) become claimable early in epoch (N).
Keeper workflow (early in epoch (N))
-
Wait ~25% into epoch (N) to ensure epoch (N-1) stake + eligibility data is finalized.
-
Fetch eligible validators list from BAM API (or equivalent source):
-
not blacklisted
-
running BAM ≥ 3 epochs
-
stake ≥ 50k SOL
-
-
Compute each validator’s effective stake and the total effective stake.
-
Convert SOL revenue to JitoSOL as needed (FeeReceiver → stake/deposit to JitoSOL).
-
Apply wind-down schedule (if applicable) to determine subsidy_amount for the epoch.
-
Build Merkle tree of ((validator, amount, index)) leaves.
-
Create epoch MerkleDistributor and transfer JitoSOL into it.
-
Publish Merkle data (root + proofs) via API and/or a public bucket.
Note:
- Because the keeper runs slightly after the epoch boundary, a small amount of early epoch (N) fees may be included in epoch (N-1) rewards. This effect is expected to be small and averages out over time.
On-chain claiming
-
Call API: GET https://kobe.mainnet.jito.network/api/v1/claim/mainnet/{epoch}/{validator_id} where validator_id is the identity pubkey of the validator.
-
Receive: { amount, index, proof, root, distributor_address }
-
Submit on-chain Claim(proof, amount, index) transaction
-
Program transfers JitoSOL to your token account and records ClaimStatus to prevent double-claims
-
Funds will land in your JitoSOL ATA associated with your validator ID
The following CLI is available for validators to use in the claim process:
cargo r -p jito-bam-boost-cli -- \
bam-boost \
merkle-distributor \
claim \
--network mainnet \
--epoch <EPOCH> \
--rpc-url <RPC_URL> \
--signer <PATH_TO_KEYPAIR> \
--commitment confirmed \
--jito-bam-boost-program-id BoostxbPp2ENYHGcTLYt1obpcY13HE4NojdqNWdzqSSb
FAQ
Q: Do I need to be in the Jito stake pool?
No. Any validator meeting eligibility criteria can participate.
Q: When do I start earning?
After running BAM for 3 epochs, you become eligible. Rewards are then calculated for each eligible epoch and become claimable on an epoch lag (typically the next epoch).
Q: How do I estimate my rewards?
Use:
-
your stake (s)
-
compute effective stake (only necessary if above 1.5m stake)
-
estimate total effective stake among eligible BAM validators, your % share of the subsidy pool.
-
multiply by the epoch’s pool size
Q: What happens if I forget to claim?
You have 10 epochs. After that, your unclaimed amount expires and is reflowed back into the subsidy pool where it will be distributed to the next epoch’s eligible validators.
Available Data
The following data will be made available to validators via an API endpoint throughout the subsidy programme.
-
epoch number
-
total pool
-
eligible validator set size
-
total effective stake
-
merkle root + distributor address
-
proofs/amounts accessible via API (and/or a public bucket)
Validators are requested to use this thread, to ask questions or raise issues with the subsidy programme. This thread will be the source of truth for updates throughout the programme. The FAQ in this post will be updated periodically.
Review the repo here: GitHub - jito-foundation/jito-bam-boost-cli: Jito BAM Boost Program CLI
