Bitcoin assets have been arriving on CKB for a while now. RGB++ gives them
a way in, and Fiber gives them speed once they’re here. But something basic
was missing in between: if you hold one of these assets and want to swap
it, how do you find out who’ll take it, and at what rate? There was no
answer that didn’t involve asking around.
So I built the answer: a gossip-native market for Fiber swaps. Hubs
broadcast signed, expiring rate offers over the same gossip the network
already uses for routing info. Any wallet can list the offers and take the
best one. No negotiation, no middleman, no new network to run, three RPC
calls (`publish`, `list`, `best-rate`), a CLI group, and a one-file web
board that shows both sides converging.
See it working (60 seconds, two live testnet nodes — publish on the left,
watch it appear on the right):
And try it yourself — everything is open:
- Market board + docs + one-command local setup: GitHub - oxdev6/fiber-rgbpp-swap: Fiber RGB++ Swap · GitHub
- Fiber fork with the gossip integration: GitHub - oxdev6/fiber: Fiber fork with SwapAdvertisement for RGB++ (feat/swap-advertisement) · GitHub
(branch feat/swap-advertisement)
What’s next is the part the grant deliberately left out: connecting the
board to the actual swap — leaping the RGB++ asset into a standard UDT via
existing tooling, then settling through CCH’s lock-and-reveal generalized
to the new pair. The design notes from this build are the first draft of
that proposal. Longer term, the format was never about one token: any third
pair should be able to list itself the same way.
Two things this build taught me, for fellow builders: first, storing data
and telling the network are two different acts — my first version saved
offers locally and peers found them minutes later, if ever; pushing into
the gossip actor fixed it in one move. Second, expiry is a feature — stale
quotes rotting away on their own is what keeps a leaderless board honest
without moderators.
Questions, criticism, testnet assets to try all welcome here or on
Discord (carlcn6).