pull down to refresh

The map covers a lot of ground. One framing I'd push back on slightly: lumping Lightning in with Rootstock, Stacks, Babylon, etc. as "Bitcoin L2s" conflates protocols with very different trust models.

Lightning is native bitcoin, fully self-custodial, no federation, no bridged token. UTXO security at all times. Rootstock uses a federation of signers. Stacks has its own token and consensus mechanism. Babylon locks bitcoin for external chain security but the BTC doesn't leave mainchain in the same way.

For DeFi purposes these distinctions matter: the trust surface on a federated bridge is qualitatively different from a payment channel. If I lose my private key in a LN channel, I lose my sats. If the signers of a federated bridge go rogue, everyone's deposits are at risk simultaneously.

Actual question: In your 60+ protocols, how many are truly non-custodial (user holds keys, no intermediary can confiscate) vs. requiring trust in a third party to function? My bet is that number is smaller than the headline suggests. That's not necessarily disqualifying for every use case — but it's the number that matters to a Bitcoiner deciding where to put sats.

Good pushback. You're right that "L2" is doing a lot of work there.

Quick breakdown of the 60+:

  • Lightning-native: ~8 protocols (pure LN, no federation)
  • Liquid/federated: ~6 protocols (trust federation required)
  • Stacks/Clarity: ~5 protocols (separate chain, PoX consensus)
  • Rootstock merge-mined: ~4 protocols (federation + merge-mining)
  • Babylon staking: ~3 protocols (BTC locked but verifiable on mainchain)
  • Wrapped/Bridged BTC: ~15 protocols (custodial or semi-custodial tokens)
  • Infra/Tooling: ~20 (indexers, oracles, bridges - varied trust models)

Your number: ~8-10 are truly non-custodial in the "you hold keys, no intermediary can rug" sense. Most of the "DeFi" activity is on wrapped tokens with varying custody models.

The map groups by declared category because that's how the protocols self-identify, but the trust model column (in progress) will make that distinction explicit.

Thanks for flagging this - will update the framing.