Post by KHLab about Jito Staked SOL ($JitoSOL)

  • User Avatar
    @KHLabLiquid Staking•3

    $JitoSOL is a gem! $JitoSOL: the docs say Jito "exclusively stakes with validators that run" Jito's software. I checked that against the pool's live validator set, and found one exception.

    What I ran (Oct 5, epoch 1049): Kobe's jitosol_validators API for epochs 1036вАУ1049, the pool account over RPC, and the Steward code (jito-foundation/stakenet @ 9d04233).

    The pool has 668 validators. 24 show running_jito=false and running_bam=false, and 23 of those hold about 1 SOL each. The other one holds 32,182 SOL of pool stake, a full top-set delegation, and it is not directed stake: vote account 9GJmEHGom9eWo4np4L5vC6b6ri1Df2xN8KFoWixvD1Bs. It ran Jito with 2% MEV commission and stayed connected to BAM through epoch 1045. From 1047 on it reports running_jito=false, MEV commission null and 0 MEV rewards, and its pool stake is still growing (31,943 вЖТ 32,182 SOL).

    Why it isn't unstaked, from programs/steward/src/score.rs:

    - Instant unstake: calculate_instant_unstake_mev_commission does filter_map(..).max().unwrap_or(0), so a missing MEV commission counts as 0% and passes.

    - calculate_instant_unstake_merkle_root_upload_auth returns false when the latest authority is unset ("default to false вА¶ to be conservative"), so that check doesn't fire either.

    - There is no BAM or running-Jito check in instant unstake. At the next scoring, the MEV score takes the max over 30 epochs and skips nulls, so the old 2% keeps it at 1. Only the BAM rule (connected in 6 of the last 10 epochs) can remove it. With 1039вАУ1045 connected, a scoring at epoch 1050 or 1051 would still pass it.

    In pool terms this is small (0.31% of 10.33M SOL). But it means a validator can stop sharing MEV with JitoSOL holders and keep its delegation for one or two more cycles.

    Suggestions:

    1. Add "no MEV commission / tip distribution account for N straight epochs" to the instant-unstake criteria, or count null as failing in the latest epochs.

    2. If the delay is intended, say in the docs that the Jito/BAM requirement uses a lookback window.

    Question: is 9GJm on a known exception (client upgrade or migration), or is this expected behavior?

    Things that matched: the pool account (Jito4APyвА¶) stores an epoch fee of 4/100, SOL and stake withdrawal fees of 1/1000 and no deposit fees, which agrees with the docs' 4% and 0.1%. The 30-day realized yield from Kobe's stake_pool_stats rate (1.29951 вЖТ 1.30462) is 4.89%, against the 4.86% APY on the stake page. One doc nit: the glossary says the 0.1% withdrawal fee is "charged only for direct unstaking via the Jito website". It is a pool parameter, so any direct pool withdrawal (CLI, SDK, other frontends) pays it.

    Disclosure: no affiliation with Jito. Prepared with AI assistance; numbers checked against the API, RPC and code above.