🔁Ring Mixing & CoinJoin

Stealth addresses hide who got paid. Ring mixing hides how much and which payment was real.

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

DenominationUse case
1,000 MARYJStandard payments
100 MARYJMedium payments
10 MARYJSmall payments
1 MARYJMicro payments

The wallet picks the largest denomination that produces at least 3 equal outputs from the spend amount.

Step-by-step

  1. 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}
      ]
    }
  2. Mix a specific amount

    $ MaryJaneCoind coinjoin 5000
    {
      "txid": "abc123...",
      "inputs": 2,
      "outputs": 5,
      "denomination": 1000.00000000,
      "total_mixed": 5000.00000000,
      "fee": 0.42000000
    }
  3. Or auto-mix the optimal amount

    $ MaryJaneCoind coinjoinauto
    {
      "txid": "def456...",
      "inputs": 1,
      "outputs": 20,
      "denomination": 1000.00000000,
      "total_mixed": 20000.00000000,
      "fee": 0.42000000
    }
  4. 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

Pro tip Run coinjoinauto periodically when idle. Pre-mixing builds a pool of denominated UTXOs so future spends are instant.