Bitprivacy is a fully decentralized Bitcoin privacy solution that can be integrated into personal Bitcoin wallets.
Privacy is achieved by everyone writing their inputs to the network; when all are supplied they make a new connection & write their outputs. Blind signing prevents denial-of-service attacks.
Bitprivacy is for casual Bitcoin users who don't want people spying on them. It does not protect against government-level (global adversary) monitoring, and as such is not suitable for criminals looking for strong anonymity.
Latest release is Bitprivacy version 0.2:
- MIT licensed
- Bitcoinj-based, android-friendly
- Arbitrary N-party transaction schemes
- Blind signatures via the Bouncy Castle library
- All communication over a DHT, via the mature TomP2P library
- Aggressive trading strategy - it tries to trade with everyone simultaneously
Some things not done yet:
- Peer discovery & running a well-known node - you have to enter an IP to connect to
- Adding a command-line switch for ProdNet (an easy code change)
You can download the jar file right now, and "join" some testnet coins between N wallets. There is a thorough description of the protocol at
DETAILS.md, and the threat model and defenses are in
THREATS.md. The code quality is rough, but it does have some test cases. Forks, code-plundering, etc all welcome.
I actually put in a grant request to the Foundation for this. I don't think I'll ever get it, at least it gave me an incentive to document everything. I have also put in a partial claim for the
new CoinJoin bounty.
If you want to help this project, you could try it out and post here. You can also donate directly, address in my sig.
-----------------------------------------------------------------------
Original post:
I'm developing an MIT-licensed decentralized privacy solution in Java.
You can try the testnet prototype at
https://github.com/dustyneuron/bitprivacyA simple 3-party tx works ok right now.
Currently it is client/server rather than full peer-to-peer, but it is decentralized in that anyone can run a server, clients can pick and choose which server to tx on, and Bitcoins cannot be stolen by a malicious server.
People post 'schemas' of what kind of transactions they're willing to participate in.
E.g. I want to be in a transaction where
* each party signs an input of 5btc
* each party provides an output of 5btc
* requires 5 parties
Once the requirements have been met, the transaction is handed round for partial signing. Each participent checks the transaction is what they expect before signing.
The schema/matching system could also be used for simple contracts like crowdfunding.
Comments welcome!