rustywallet-coinjoin
CoinJoin and PayJoin (BIP78) utilities for rustywallet.
Features
- PayJoin (BIP78): Sender and receiver PayJoin protocol
- CoinJoin Building: Create CoinJoin transactions with equal outputs
- Output Mixing: Shuffle and equalize outputs for privacy
- Coordinator-less: P2P CoinJoin without central coordinator
Installation
[]
= "0.1"
Quick Start
PayJoin (BIP78)
use *;
// Receiver creates PayJoin request
let receiver = new;
let request = receiver.create_request?;
// Sender processes PayJoin
let sender = new;
let payjoin_psbt = sender.process_request?;
CoinJoin Transaction
use *;
// Create CoinJoin with equal outputs
let mut builder = new;
builder.add_participant;
builder.add_participant;
let coinjoin_tx = builder.build?;
BIP78 PayJoin
PayJoin improves privacy by having the receiver contribute inputs:
- Sender creates original PSBT
- Receiver adds their inputs and adjusts outputs
- Both parties sign
- Transaction looks like regular payment
CoinJoin
CoinJoin combines multiple users' transactions:
- Equal output amounts break amount correlation
- Multiple inputs from different users
- Shuffled outputs hide ownership
Security
- Verify all inputs before signing
- Use equal output amounts
- Randomize output order
- Validate fee calculations
License
MIT