I'm leaking The Black Hole prototype ruleset. I present it at Tabconf on Oct 15th.
Description:
The protocol uses JoinMarket's liquidity order book & fidelity bond mechanisms, but it creates coinjoins that mimic WabiSabi's on chain footprint.
Design Overview:
Coinjoin transactions that create outputs with matching values generate ephemeral tokens called “anonymity points”. Points are auctioned for sats, and the swap occurs inside a coinjoin transaction. Participants can receive points when they enter the coinjoin pool, spend from the pool, or wait inside the pool.
- Makers are liquidity providers who passively mint and sell points
- Takers are searchers who batch liquidity to mint points
- Cooperators are remixers who mint points with their own liquidity
Point Rules:
A transaction’s point value is determined by the sum of all inputs that were matched in their origin transactions and the sum of all outputs that are matched in the current transaction. If the number of matched inputs and the number of matched outputs in a transaction are not equal to each other, the final point value is set to the lower number.
Maker/Taker Rules:
Takers must pay 57 vbytes each for up to 3 matched inputs per maker
Takers must pay 43 vbytes for each matched output
Takers must pay 100 vbytes for each unmatched output (43 to miners, 57 to the Maker who received it)
Makers must pay 57 vbytes to add unmatched inputs
Makers must pay 43 vbytes to add unmatched outputs
Makers can’t submit two inputs each worth more than the Taker’s value target
Makers can’t submit two inputs from the same ancestor transaction
Makers may lock coins in fidelity bonds to improve their reputation for Taker selection
Makers post an offer with a buying rate for points and a selling rate for points
Makers list the maximum amount of liquidity they can provide using their 3 largest matched inputs from unique transactions
Makers points from each origin transaction are weighted by that input’s contribution towards the Taker’s value target – Origin transactions with the least points have their value counted first
If the Taker’s new transaction has more points than the Maker’s origin transactions, the Maker pays sats
If the Maker’s origin transactions have more points than the Taker’s new transaction, the Maker earns sats
Payments for points transferred atomically by adding them to one of the coinjoin outputs owned by the winner
Cooperator Rules:
Cooperators who pay for their own mining fees can join coordinated WabiSabi or ZeroLink rounds. WabiSabi is flexible: It accepts any arbitrary value for inputs and outputs. ZeroLink is strict: rounds only accept a single standard denomination for inputs and only allows creation of a specific denomination output (input value – mining fee).
Whenever mining fee rates are low enough, Cooperators are incentivized to remix UTXOs in their wallets with low points into larger rounds. These minted points can be resold later as a Maker.
View quoted note →
THE BLACK HOLE: An incentive compatible loop constructed from coinjoin transactions that pays liquidity providers and never terminates privacy for any participant. Whales and high time preference spenders fund the fees to churn anonymous coins through the machine. Merchants and low time preference users reduce their fees (or profit).
Depth 1 is the user's wallet entry point, contains coins that should never be spent: New coins sent to a fresh BIP32 address, silent coins sent to a SP donation address, and attack coins which were sent to a used address
Depth 2 is the wallet respawn point, contains pre-ZL JMM change outputs, any PJ output, and any WS change output
Depth 3 is THE BLACK HOLE entry point, contains ZL eligible coins (Feeder outputs, WS equal outputs, and ZL remixes)
Depth 4 contains Blackholed coins for JM remixing (equal size), which get consumed as inputs for PJ receivers, may randomly be sent back to Depth 2 or Depth 3
Depth 5 contains Blackholed coins for JM remixing (change outputs), may randomly be sent back to Depth 2
Depth 6 contains Blackholed Joinmarket taker coins that never get offered, exit point for large value coins, may randomly be sent back to Depth 2 or 3 or terminated by sending to the user's cold storage (It's so over)
All users intersect with WS (PJ max privacy fallback), PJ sender (WS low cost fallback), PJ receiver (positive incentives), JM maker (positive incentives). The only flows that increase the user's end cost are JM takers (whales), Payjoin senders (low time preference), ZL remixers (perfect block space efficiency). WabiSabi participants who split their outputs into standard denominations pay ~6x more in fees, but it is still possible to opt out of equal denomination creation to coinjoin at a reduced marginal cost with increased marginal privacy compared to solo payments.
One set of users provides the mining fee to push funds through the entire system and subsidize another set of users. Default behaviors for all users will randomize and overlap and intersect at THE BLACK HOLE, so any coinjoin participant could be any other coinjoin participant. Every user has the incentive to receive Payjoins and remix as a Feeder or Maker. ZL remixers can probably get a micro maker/taker model inside that system.
This operating system passively destroys every UTXO that is not a standard WabiSabi denomination if the user waits long enough. Attack coins and Dust UTXOs can be discarded to miners below a certain amount. The gears in the machine rotate silently and perpetually, all orbiting coins collapse into the center.
Legend: WSC (WabiSabi Consolidation), WSP (WabiSabi Batched Payment), WSR (WabiSabi Remix), WSCT (WabiSabi Cut-Through, a single tx that efficiently combines WSC and WSP) ZL (ZeroLink, always a remix), JMT (JoinMarket Taker, optionally reveals CIOH), JMM (JoinMarket Maker, a remix that reveals CIOH and creates toxic change), JMF (JoinMarket Feeder, a new coinjoin type that Takers use to rebalance standard denominations), PJS (Payjoin Sender) and PJR (Payjoin Receiver), a confidential payment combining inputs of senders and receivers of supporting wallets
New shorthand for Cross Input Signature Aggregation's intended functionality: Just call it "Coinjoin Signature Aggregation", or CSA. Everyone will always be incentivized to coinjoin, make the acronym a cut-through.