The PoS-privacy conflict
Proof-of-Stake requires publicly verifiable stake weights — the network must see how much you control to decide whether your block is valid. Privacy chains want amounts and ownership hidden. These goals fight each other.
MaryJaneCoin resolves the conflict by splitting the UTXO set into two pools:
| Pool | Privacy | Can Stake? | Can Spend? |
|---|---|---|---|
| Transparent | Visible amounts (P2PKH) | ✅ Yes | ❌ No (after activation) |
| Shielded | Stealth + ring mixed | ❌ No | ✅ Yes |
Activation
Two-pool consensus turns on at block 2,000. Before then, both pools coexist but transactions can move freely between them. After activation, plain P2PKH spending transactions are rejected.
How UTXOs are classified
- Coinbase / coinstake outputs → Transparent
- Outputs with
OP_RETURN "PEGOUT"marker → Transparent - Outputs with the 35-byte stealth marker → Shielded
- Everything else → Transparent
Step-by-step
-
Check your pool balances
$ MaryJaneCoind getpoolbalances { "transparent": 898437511.02, "shielded": 1562488.98, "total": 900000000.00, "two_pool_active": false, "activation_height": 2000 } -
Peg-in: move coins to the shielded pool
This is a stealth send-to-self. Your coins land in the shielded pool, ready to spend privately.
$ MaryJaneCoind pegin 10000 "abc123..." # txid -
Peg-out: move coins back to transparent (e.g. to stake)
$ MaryJaneCoind pegout 5000 "def456..." # txid # Output carries OP_RETURN "PEGOUT" so consensus reclassifies it as transparent -
Verify the kernel only stakes from transparent
After block 2,000,
CreateCoinStakeonly selects UTXOs from the transparent pool. Your shielded UTXOs are invisible to the staker — and your staking activity is invisible to spenders.
Putting it together: the privacy flow
- You stake from the transparent pool — collect fees publicly
- You
peginthe fees you accumulated — coins enter the shielded pool - You spend from the shielded pool — stealth + ring mixed by force
- The chain has no on-chain link between your staking address and your spending output
Why this matters
Other PoS privacy chains either give up staking privacy or let stakers self-deanonymize through clumsy spend patterns. The two-pool model makes privacy structural, not behavioral.