HTLC-atomic
Every hop is a hash time-locked contract. All legs settle or none do.
Bitcoin is no longer one network. It now lives in multiple layers.
Cassis is an open protocol that uses HTLCs and multi-hop routing to ensure every Bitcoin user is always within reach of any other.
Every hop is a hash time-locked contract. All legs settle or none do.
Every layer keeps its own security and privacy tradeoffs.
Open-source in Rust. Run it, audit it, build against real code.
Why Cassis
Lightning, Liquid, Cashu, Fedimint, Arkade, Rootstock: bitcoin now lives on many layers, and many more are coming. Each one makes its own tradeoffs between speed, cost, privacy and trust. There is no single best layer, only the right one for you.
Cassis is a generic protocol that connects them all. Pick the layer that suits you, and pay anyone on any other layer. Payments hop across layers atomically: they either complete end to end or refund, so nobody can take the money and run.
Any layer that supports hash time-locked contracts can join the network. No bespoke bridges.
Stay on the layer you trust. Cassis never forces you onto someone else’s.
A payment settles on every layer it touches, or on none of them. Never stuck halfway.
The payment lifecycle
Prepare
Upon receiving an invoice from the payee, the sender computes the route and sends a PREPARE message directly to each routing node on it, via Iroh, to confirm they're willing to route the payment.
Execute
The sender creates the first HTLC and sends an EXECUTE message to the first hop node. That node creates the next HTLC and replies to the sender, which then contacts the second hop — and so on.
Commit
When the HTLC chain reaches the receiver, it replies with a COMMIT carrying the preimage while using it to claim its own HTLC. The sender relays the preimage to every hop so they settle immediately; otherwise each hop learns it when the next hop claims its HTLC.
Routes across the bitcoin stack
Currently Cassis has implementations for Arkade, Liquid, Fedimint, Rootstock, Cashu and Lightning, but new layers can be easily added, as long as they support creating HTLCs.
An Arkade user pays a Cashu user. That specific Cashu mint doesn't have a bridge to Arkade directly (it could!) so the payment is routed through its Liquid bridge.
A specific Fedimint has a bridge to Rootstock, so a Rootstock user is able to hop through that and send a payment to any Lightning payee.
Users are free to use only the layers they are comfortable with, with the trust model they choose. See the full layer list.
Why Cassis
Anyone can operate a routing node and connect any networks they want. Routes are published to Nostr and payers fetch those and use the information to build the route locally at the time of the payment.
Run a router on any networks you hold satoshis on and collect a fee from successful payments.
Routers publish their node announcements as Nostr events.
Payers collect the node announcements and compute the route locally.
Identities are anonymous but stable, so routing reliability can be inferred. Payer identity can be ephemeral or stable.
Communication between payer and routing nodes is done via Iroh, fully encrypted, with optional Tor support.