Hey Bitcointalk,
I'm working on designing a P2P Bitcoin exchange focused on cashout to bank transfer, PayPal, and similar fiat methods — think Paxful-style, but with greater transparency, wallet isolation, and internal traceability.
Here’s what sets my design apart:
📦 Each user gets a unique Bitcoin wallet address (on-chain) at registration.
🔐 No pooling of funds. Every UTXO is tracked by original owner and current holder.
📗 Trades are off-chain (ledger-based). BTC only moves on-chain during deposit and withdrawal.
🧾 I want full AML traceability: I can tell who originally deposited the BTC and who owns it at any point.
💸 Users pay no network fees when trading — only when withdrawing.
✅ Example Scenario
Let me walk you through a case that illustrates what I’m building:
John deposits 0.01 BTC into his assigned BTC address. The funds are now UTXOs controlled by the platform but credited to John's balance internally.
James also deposits 0.02 BTC into his own wallet address, completely separate.
Harry hasn't deposited anything, but he creates a trade to buy 0.005 BTC from John via bank transfer.
When Harry completes the fiat payment, ownership of 0.005 BTC (from John’s UTXOs) is transferred to Harry inside the internal ledger — no on-chain tx yet.
Now:
John has 0.005 BTC remaining
Harry owns 0.005 BTC internally
James still has 0.02 BTC, untouched
Later, Harry wants to sell that 0.005 BTC to someone else or withdraw it.
Here’s my core constraint:
When the next person receives BTC (either through trade or withdrawal), it must be the exact same BTC originally deposited by John — not from James or a general pool.
So when Harry withdraws, I want to ensure the withdrawal is signed using John’s wallet key, since that UTXO technically still resides in John’s wallet (now owned by Harry).
🤔 What I Need Feedback On:
Does this model make sense in terms of security, scalability, and UTXO tracking?
Is it acceptable that ownership transfers are purely internal until withdrawal?
Should I fragment UTXOs when trading portions (e.g., 0.005 BTC from a 0.01 UTXO)?
Are there good practices or known issues with tracking UTXOs per user without pooling?
Should I eventually consolidate UTXOs from dormant users or avoid that to preserve isolation?
Would love any input, warnings, or suggestions from devs who've built P2P exchanges or non-custodial systems before. Thanks in advance.
Edit:
I'm exploring a P2P offer approach where:
1) The buyer can verify the seller's Bitcoin address and confirm the spendable BTC they’re about to receive.
2) If issues arise or suspects funds are tainted, the buyer can request KYC from the seller. The seller can refuse, and the buyer may choose another seller.
3) For privacy, a new deposit address is generated after each deposit.
4) The buyer can audit the deposit transaction and verify the source of funds.
This ensures transparency while letting the buyer take full responsibility for the BTC they receive.
Hi, I'm a developer and I'm working on a privacy focused CEX, completely opposite of yours no KYC, no logging.
Your approach sounds good on paper, but it could become expensive on withdrawals:
1. When a user is withdrawing, they would have to pay the network Fee. As you know, Bitcoin network fees change regularly, and withdrawing a small amount of BTC might cost more in network fees than the amount itself.
2. Every time someone trades a part of one UTXO, you’ll eventually need to split that UTXO on chain. Over time, you'll accumulate lots of tiny “dust” outputs that cost more in fees to move than they’re worth.
3. Dust clean up (consolidation) means on chain transactions, and you lose your “no-pooling” promise if you consolidate systematically.
4. If you end up with thousands of tiny UTXOs across thousands of accounts, it may not be worth consolidating them at all.
5. Tracking every UTXO of every address in your database and keeping it in perfect sync with the blockchain is heavy. I think you’d need a full node, mempool access, and reorg handling.
6. You still have full custody of funds, so legally and practically, you’re back to being a centralized, custodial exchange.
7. You talk about traceability, but tracking a growing base of 100k+ users would be challenging for law enforcement.
Positive points from your approach:
1. Buyers auditing the source of funds before every trade sounds great.
2. Funds aren’t pooled, so there’s no risk of using one user’s BTC to cover another’s withdrawal.