The problem stealth alone doesn't solve
If Alice sends exactly 420 MARYJ to a stealth address, an observer can search the blockchain for outputs of exactly 420 MARYJ and probabilistically link the payment. Ring mixing closes this gap by forcing every spending transaction to contain at least 3 outputs of equal denomination.
Activation
Optional before block 1,500. Mandatory after. Spending TXs without ≥3 equal-value outputs are rejected with
DoS(100).
Available denominations
| Denomination | Use case |
|---|---|
| 1,000 MARYJ | Standard payments |
| 100 MARYJ | Medium payments |
| 10 MARYJ | Small payments |
| 1 MARYJ | Micro payments |
The wallet picks the largest denomination that produces at least 3 equal outputs from the spend amount.
Step-by-step
-
Check what your wallet can mix
$ MaryJaneCoind coinjoininfo { "balance": 802343759.84, "min_outputs": 3, "max_outputs": 20, "denominations": [ {"amount": 1000.00, "outputs": 20, "usable": true}, {"amount": 100.00, "outputs": 20, "usable": true}, {"amount": 10.00, "outputs": 20, "usable": true}, {"amount": 1.00, "outputs": 20, "usable": true} ] } -
Mix a specific amount
$ MaryJaneCoind coinjoin 5000 { "txid": "abc123...", "inputs": 2, "outputs": 5, "denomination": 1000.00000000, "total_mixed": 5000.00000000, "fee": 0.42000000 } -
Or auto-mix the optimal amount
$ MaryJaneCoind coinjoinauto { "txid": "def456...", "inputs": 1, "outputs": 20, "denomination": 1000.00000000, "total_mixed": 20000.00000000, "fee": 0.42000000 } -
Inspect the on-chain TX
Output 0: 1000.00000000 MARYJ → [stealth A] (real payment) Output 1: 1000.00000000 MARYJ → [stealth B] (self-churn) Output 2: 1000.00000000 MARYJ → [stealth C] (self-churn) Output 3: 749.58000000 MARYJ → [change addr] (change) Output 4: 0.00000000 MARYJ → OP_RETURN R (stealth marker)The observer sees three identical outputs going to three brand-new stealth destinations. They cannot tell which is the real payment and which two returned to your wallet.
What this defeats
- Amount correlation — equal outputs make payment matching impossible
- Common-input ownership heuristic — combined with stealth, no input → output mapping survives
- Wallet fingerprinting — every wallet emits the same denomination set
Pro tip
Run
coinjoinauto periodically when idle. Pre-mixing builds a pool of denominated UTXOs so future spends are instant.