The arrival of Firedancer — Jump Crypto's ground-up C/C++ rewrite of the Solana validator — is the most significant infrastructure shift Solana has seen since mainnet launch. While the security community has rightly celebrated the move toward client diversity, the transition introduces a class of subtle, timing-based vulnerabilities that most protocol teams aren't preparing for.
This article breaks down the new attack surfaces that emerge specifically from Solana's multi-client environment, with practical guidance for protocol architects and auditors.
Why Firedancer Changes the Security Model
Before Firedancer, Solana was a client monoculture. Every validator ran variants of the same Rust codebase (now called Agave). A bug in one was a bug in all — which caused multiple network-wide outages in 2022-2023.
Firedancer fixes this by introducing an independent implementation. But "independent" cuts both ways: it means validators now process the same blocks at different speeds, with different resource profiles, and potentially different edge-case behaviors.
This isn't theoretical. As of early 2026, ~15-20% of Solana's stake runs through Frankendancer (the hybrid deployment), and full Firedancer is rolling out. The performance gap between a Firedancer leader producing blocks and an Agave validator trying to verify them is real and measurable.
Attack Surface #1: The Skip-Vote Verification Lag
The Mechanism
Firedancer leaders can produce significantly larger blocks than Agave leaders. With SIMD-0370 replacing rigid Compute Unit caps with dynamic block sizing, a high-performance Firedancer leader can pack hundreds of millions of CUs into a single block.
The problem: weaker validators (older hardware, Agave clients) can't always verify these blocks within the 400ms slot window. Instead of halting, they skip voting.
Why This Matters for DeFi
The skip-vote creates a window where a transaction is included but not yet finalized by a supermajority. For most use cases, this is invisible. But for protocols that assume tight finality guarantees, it's exploitable:
Liquidation Delay Attacks
1. Attacker manipulates oracle price in a large Firedancer-produced block
2. Liquidation bots submit liquidation txs in the same block
3. Slower validators skip-vote on this block
4. Finality is delayed → attacker has a window to front-run or cancel
5. Protocol experiences phantom liquidations or missed liquidations
Bridge Latency Exploits
Cross-chain bridges that release funds based on Solana finality confirmations are particularly vulnerable. If a bridge treats inclusion as near-final, the skip-vote lag creates a window for double-spend-like attacks:
1. Deposit on Solana in a large block (Firedancer leader)
2. Bridge sees inclusion, begins releasing funds on destination chain
3. Block finality is delayed due to skip-votes
4. In worst case: block could theoretically be skipped entirely
Mitigation
- Never assume 400ms finality. Use optimistic confirmation (2/3 stake voted) as your finality threshold, not slot inclusion.
- Implement slot-aware slippage tolerances. If your protocol has time-critical operations, add checks for the current leader's client type or block size.
-
Audit for timing assumptions. Any
Clock::get()usage combined with finality assumptions needs review.
Attack Surface #2: Localized Denial of Service (LDoS)
This is a multi-client amplification of an existing Solana attack vector.
The Mechanism
An attacker floods transactions that write-lock a specific protocol's state accounts. On Solana, write locks are exclusive — only one transaction can write to an account per slot. By saturating the write-lock queue with junk transactions carrying high priority fees, an attacker can:
- Block legitimate transactions from accessing the protocol's state
- Drive up priority fees for that protocol specifically
- Prevent time-critical operations (liquidations, oracle updates, rebalances)
Why It's Worse in the Firedancer Era
Firedancer's higher throughput means more total transactions per block. But write-lock contention doesn't scale with throughput — it's still bounded by the number of unique accounts. An attacker can use Firedancer's capacity to pack more competing write-lock transactions into a single block, making the LDoS more effective.
Real-World Scenario
Target: A lending protocol with a single global state PDA
Attack:
1. Flood 10,000 txs per slot, each write-locking the protocol's state PDA
2. Each tx does minimal compute but carries high priority fees
3. Legitimate liquidation txs can't acquire the write lock
4. Bad debt accumulates as liquidations fail
Cost to attacker: ~$50-200 in priority fees per minute
Damage to protocol: potentially millions in bad debt
Mitigation
- Shard your PDAs. Instead of a single global state account, use account-per-user or account-per-market patterns.
- Implement write-lock-aware retry logic. Liquidation bots should detect contention and escalate priority fees dynamically.
- Use lookup tables and multiple entry points. Make it harder for an attacker to predict which accounts to target.
Attack Surface #3: Stale Price Oracles
The Mechanism
Solana's block production can outpace decentralized oracle updates, especially during high-throughput Firedancer slots. If a Firedancer leader packs 5 slots worth of normal transaction volume into a single block, oracle price feeds may be stale relative to the on-chain state within that block.
Exploitation Pattern
1. Firedancer leader produces a dense block
2. Oracle price is from 2 slots ago (800ms+ stale)
3. Attacker executes a trade using the stale price
4. Oracle updates in the next slot at the "real" price
5. Attacker profits from the price discrepancy
This is a Solana-specific variant of the oracle front-running
attacks common on EVM chains, but amplified by variable
block sizes.
Mitigation
-
Use Pyth Confidence Intervals. Pyth publishes a confidence interval alongside price. If
confidence / price > threshold, reject the trade. -
Implement staleness checks. Compare
oracle.last_update_slotagainstClock::slot(). Reject if the gap exceeds your tolerance. - Use TWAP as a secondary check. Time-weighted average prices smooth out slot-level manipulation.
Attack Surface #4: Consensus Divergence Bugs
The most catastrophic (but least likely) risk: Firedancer and Agave disagree on the validity of a transaction or block.
Why This Is Different from Ethereum
Ethereum's multi-client ecosystem has dealt with consensus bugs before (the 2016 Shanghai DoS attacks exposed client disagreements). But Solana's architecture makes consensus divergence more dangerous:
- Single-leader block production means a divergence immediately creates a fork
- No uncle blocks — there's no graceful degradation
- High throughput means more state transitions per second, more surface area for edge cases
What Auditors Should Look For
- Integer overflow/underflow differences between Rust (Agave) and C (Firedancer) implementations
- Floating-point handling in fee calculations or stake-weighted operations
- Transaction ordering — do both clients deterministically order transactions the same way within a block?
- Edge cases in BPF/SBF execution — the runtime environments may handle edge cases differently
Mitigation
- Protocol-level: Don't rely on implementation-specific behavior. Stick to well-documented Solana runtime guarantees.
- Validator-level: Run both clients in shadow mode to detect divergences before they hit mainnet.
- Ecosystem-level: Support the Solana Foundation's consensus testing framework.
Practical Audit Checklist for the Firedancer Era
For auditors reviewing Solana programs in 2026, add these to your checklist:
| Check | Risk Level | Description |
|---|---|---|
| Finality assumptions | 🔴 Critical | Does the protocol assume 400ms finality? |
| Single-account write locks | 🔴 Critical | Is there a global state PDA that can be DoS'd? |
| Oracle staleness | 🟡 High | Are oracle freshness checks using slot-based comparisons? |
| Clock-dependent logic | 🟡 High | Does the protocol use Clock::get() for security-critical timing? |
| Cross-program invocation depth | 🟢 Medium | CPI behavior may vary between clients at depth limits |
| Compute budget assumptions | 🟢 Medium | Dynamic block sizing changes CU availability per slot |
Conclusion
Firedancer is a net positive for Solana security — client diversity eliminates the single point of failure that caused past outages. But the transition period introduces real risks that protocol teams and auditors need to internalize.
The core lesson: in a multi-client world, don't assume homogeneous behavior. Design for the worst-case timing, the largest possible block, and the slowest possible validator. Your protocol's security depends not on the average case, but on the adversarial one.
DreamWork Security specializes in Solana and EVM smart contract security research. Follow our blog for weekly deep dives into DeFi attack surfaces and audit methodologies.
Top comments (0)