A circuit breaker the admin can't turn off.

Bulkhead holds a Solana protocol's vaults. Your own deposit always comes back. Everything else leaves at most 2% an hour.

Reported · Drift · 1 April 2026Source: Chainalysis, BlockSec

Drift had limits. The admin raised them.

An attacker took admin power. Bulkhead's limits belong to the program, not the admin.

$285Mleft Drift in about 12 minutes
2%the most that leaves a Bulkhead vault in an hour
How Bulkhead works

The protocol decides who gets paid. Bulkhead decides how fast.

Paying owners back what they own is instant, always. Everything else is rate-limited.

G1 · the unbacked lane

2% an hour.5% a day.

Even with the admin keys stolen. The rest waits in a public queue.

model · if a guardian freezes within
~2%4%10%2 minutes1 hour24 hours
G4 · a constant in the code

Tightening is instant. Any guardian can veto.

What Bulkhead is

Two programs. Your guardians.

Tier 1 · for new launches

Vault

Holds the protocol's token accounts. Every payout goes through it: owners are paid back at once, everything else at most 2% an hour and 5% a day. The rest waits as a public ticket.

Tier 0 · for any program

Floor

Holds the program's upgrade key. Every upgrade waits 72 hours in public and can be vetoed. One guardian can stop the program in one transaction. No code changes.

People or bots you choose

Guardians

Freeze, cancel, extend, veto, abort. They can stop money. They can never move it or choose who receives it. Only live guardians count.

Floor · for programs not ready to move their vaults
1 transaction

Upgrades wait 72 hours. Any guardian can stop the program.

Integration · about 40 lines
  1. Hand over custody.
  2. Route every move.
  3. Seal.
measured · scripts/check.sh

cases where Rust and Python agree exactly.

Live from devnet

Worst case right now: $41,200, then $20,600 an hour.

Questions

Isn't this just a rate limiter?

Drift had a rate limiter; the admin controlled it. Bulkhead's limit sits outside the admin's reach. It also tells the difference between returning your own deposit, which is never limited, and paying out someone else's money, which is.

Does it slow normal users down?

No. Deposits, withdrawals of your own funds and ordinary borrows never touch the limiter.

What if a guardian is malicious?

A guardian can delay unbacked payouts by freezing for up to 24 hours per call. It can't move funds, choose a recipient or block anyone's own deposit. Only live guardians count, and unfreezing needs a live quorum.

What if Bulkhead itself has a bug?

That's the biggest risk, and the reason every rule is stated three ways and checked on millions of cases. Before mainnet: audits, TVL caps, then burning Bulkhead's own upgrade key.

What can't it do?

It doesn't detect attacks, protect user wallets, protect AMM pools or run an oracle. It buys time; people still have to use that time.

Is it audited?

Not yet. It runs on devnet, the code is open source under Apache-2.0, and SECURITY.md says plainly what is unaudited.

Watch someone try to drain it. Watch it hold.

Every number on this page reruns with one command, against real devnet transactions. Read the code →

Demo video · 3:00 The walkthrough is being cut.

Meanwhile, read the docs or browse the code.

Esc to close