Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: casascius on July 19, 2012, 06:19:54 PM



Title: Automatic Coin Mixing Idea
Post by: casascius on July 19, 2012, 06:19:54 PM
I wanted to solicit some thoughts about the following way to mix coins.  This idea of mixing coins would be built right into the client, is very simple, and would result in everyone's coins being mixed periodically with zero risk of loss and without anybody actually have to feel like they were submitting their coins to a mixer.

Here is how it would work:

  • On a random interval, each client will be Alice, and will ask one of its peers Bob if he would like to mix M number of coins with her.
  • Upon receiving a "mix offer" message from Alice, Bob could either a) ignore it, b) accept it, or c) forward it to another randomly-chosen connected peer and serve as a relay.
  • To accept the request, Bob would identify an unspent txid that belongs to him (or he could lie and offer one that doesn't belong to him, more about that later), and offer a fresh receiving address.
  • When Alice gets Bob's acceptance, Alice will create a transaction with typically two inputs: some coins from Alice, and Bob's txid.  And there will be two (and possibly three or four) outputs in random order: M coins for Alice, and M coins for Bob.  If any change is left over, those would be the third (for Alice) and fourth (for Bob) outputs.  Alice signs the transaction, but it needs Bob's signature to be valid.
  • Alice sends the transaction to Bob for approval.  If it looks fair to Bob, he signs it and broadcasts it.
  • From the block chain, the M coins to Alice and Bob have been mixed.  One knows the coins belong to either Alice or Bob, but not which of the two.
  • If everybody is periodically mixing coins like this, eventually it will be common to see six or ten or more "mixes" between real transactions.  Those "mixes" would make it so it's not just one of two, but one of 2^n different possible payers.
  • I can think of other ideas that would dramatically improve the effectiveness further.  For example, if M were limited to specific numbers (e.g. 5^n where n is an integer, so M typically can be one of only 0.0016BTC, 0.04BTC, 0.2 BTC, 1BTC, 5BTC, 25BTC, 125BTC, 625BTC) then fewer mixing operations would involve change outputs that would detract from mixing effectiveness, as it would be far more likely that nodes are looking to mix txid's in identical amounts.  And Alice could talk to multiple Bobs at the same time and construct a transaction that mixes M coins for several parties, not just two.
  • The possibility of forwarding requests, ignoring requests, and returning false txids, are all ways to prevent Alice from connecting to Bob and being able to ask him, "hey Bob, got coins? and if so, which ones?"  The forwarding allows for plausible deniability on the response (Bob can say "those weren't my coins, they belong to one of my peers, or were a lie").  (In the event Bob lies and returns a txid not his own, he won't be able to sign and complete the transaction, which would be indistinguishable from Bob simply deciding not to complete the transaction on his own.  For example, Bob may not have any coins, or might not have any peers who respond to the forwarded request.  Bob's ability to lie enhances his ability to claim the coins he offered to mix weren't his.)

Bottom line is, if coin mixing were built into the client, there would never be a need for anyone to use a coin mixing service, and thereby deliberately and identifiably participate in so-called "money laundering".  Rather, they would be exchanging coins in the normal course of business, the same way I can go to the grocery store with a twenty and ask for two tens without being guilty of "laundering" the twenty.

This process would also help greatly toward network scalability.  If coupled with a scheme where small penny txids (such as those generated by p2pool) were consolidated into amounts large enough to be valid for mixing, this also would defragment them without forcing whoever owns those outputs to deanonymize themselves... this would dramatically reduce the storage burden on near-future clients who will only be tracking unspent transactions instead of the whole block chain.


Title: Re: Automatic Coin Mixing Idea
Post by: unclemantis on July 19, 2012, 06:42:18 PM
+1

Good luck!


Title: Re: Automatic Coin Mixing Idea
Post by: austonst on July 19, 2012, 06:59:48 PM
I like the idea. I could imagine a client with an "Automatically mix coins" advanced option in a menu, along with a quick dialog box about the anonymity benefits, but constant transaction fees. The developer would probably want some sort of limit to prevent ignored wallets from running themselves dry from transaction fees over a long period of time (Maybe something like "I'd like to spend 10 bitcents of transaction fees on mixing, then stop", although this could definitely be worked out later).

The ability to combine a bunch of tiny bits of coins together without completely opening them up to tracking ownership sometime in the future is the best part of this. It'll help scalability and people who prefer to keep their coins consolidated at a few addresses without sacrificing anonymity.


Title: Re: Automatic Coin Mixing Idea
Post by: evoorhees on July 19, 2012, 07:04:59 PM
I like the idea. I could imagine a client with an "Automatically mix coins" advanced option in a menu, along with a quick dialog box about the anonymity benefits

+1  I love the idea OP, but it should probably not be a mandatory function of the Satoshi client. Better as an option built into many clients.

The reason it shouldn't be a mandatory part of the Satoshi client is that that client should strive to avoid feature-creep. There is value in simplicity, especially for the core client. But if this option became standard in the Advanced tab of all clients, I'd be a happy man :)


Title: Re: Automatic Coin Mixing Idea
Post by: unclemantis on July 19, 2012, 07:06:33 PM
It would be nice to have FRESH COINS to send to my cold storage savings!


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 19, 2012, 07:07:10 PM
I like the idea. I could imagine a client with an "Automatically mix coins" advanced option in a menu, along with a quick dialog box about the anonymity benefits, but constant transaction fees.

Transaction fees will be completely avoidable if the client strictly selects txids that can be spent without incurring any fees.  In fact, the logic for selecting txids to mix should completely exclude unconfirmed transactions as well as transactions that aren't old enough to be spent without a fee.


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 19, 2012, 07:15:50 PM
+1  I love the idea OP, but it should probably not be a mandatory function of the Satoshi client. Better as an option built into many clients.

The reason it shouldn't be a mandatory part of the Satoshi client is that that client should strive to avoid feature-creep. There is value in simplicity, especially for the core client. But if this option became standard in the Advanced tab of all clients, I'd be a happy man :)

My take is that it should be part of the Satoshi client, but turned off by default.  I think that's what you are suggesting, right?

I would agree it should be off by default for several other reasons including: it leaks information to the public that some might consider private (such as the fact that their node and wallet is online and alive), and it also results in confirmed funds suddenly becoming unconfirmed and then reconfirmed at random intervals (though not at a risk of loss to the wallet holder).

None of these things should occur to users who don't understand them or explicitly opt in to them.  They could be briefly explained as benign side effects to a user who checks a checkbox to enhance his anonymity.


Title: Re: Automatic Coin Mixing Idea
Post by: Nyhm on July 19, 2012, 08:10:42 PM
This type of protocol discussion is why I'm enthralled with Bitcoin in general. I was actually contemplating something similar, but you're solution is much more integrated and concrete. I'm into distributed protocols, but I admit I haven't delved into the core messages of Bitcoin yet.

Am I correct that the tx created by Alice (including Bob's input tx) is a direct application of the multi-signature transaction BIP (https://en.bitcoin.it/wiki/BIP_0010)?


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 19, 2012, 08:35:11 PM
Am I correct that the tx created by Alice (including Bob's input tx) is a direct application of the multi-signature transaction BIP (https://en.bitcoin.it/wiki/BIP_0010)?


No, it is just a normal transaction that combines two inputs, and looks much the same as a transaction that combines two of your smaller coins in your wallet to make a bigger coin when one is needed.  It is not a multisig transaction at all.

The only difference between this and any other transaction is that the two inputs happen to belong to two different people, rather than the same person, so the signatures have to happen in separate steps.  In contrast, all coin-combining transactions already require multiple signatures, we just don't usually think of it that way because the same person's Bitcoin client (the sender's) can provide all of the needed signatures itself, and automatically does so whenever you "send coins" out of your wallet in an amount that makes coin-combining necessary.


Title: Re: Automatic Coin Mixing Idea
Post by: rjk on July 19, 2012, 08:43:28 PM
Wasn't there some altcoin that already had a built in laundry?


Title: Re: Automatic Coin Mixing Idea
Post by: aq on July 19, 2012, 09:22:34 PM
One of the biggest issues is that once you make a transfer you combine coins from multiple addresses and as a result those can be identified as one wallet. I think casascius proposal addresses this only to some extent. If after mixing coins I again have to combine I have gained nothing.
How about we do it different:
Whenever I want to make a transaction, my client sends this out as a "transaction-indent", other clients that are also about to do a transaction combine their "indent" with mine (adding inputs and outputs) and after a few seconds, we all sign this combined indent to form a transaction.
This would make it impossible to identify a single wallet, because inputs from multiple wallets would end up in a single transaction. And secondary, on one would know which input was the initiator for which output.
Your comments?


Title: Re: Automatic Coin Mixing Idea
Post by: austonst on July 19, 2012, 09:51:27 PM
One of the biggest issues is that once you make a transfer you combine coins from multiple addresses and as a result those can be identified as one wallet. I think casascius proposal addresses this only to some extent. If after mixing coins I again have to combine I have gained nothing.
How about we do it different:
Whenever I want to make a transaction, my client sends this out as a "transaction-indent", other clients that are also about to do a transaction combine their "indent" with mine (adding inputs and outputs) and after a few seconds, we all sign this combined indent to form a transaction.
This would make it impossible to identify a single wallet, because inputs from multiple wallets would end up in a single transaction. And secondary, on one would know which input was the initiator for which output.
Your comments?

The reason this coin mixing strategy reveals that addresses belong to the same wallet is because of addition. Let's say you see a tx with inputs of value 2, 3, 9. The outputs are of value 5, 5, and 4. It's pretty easy to tell, knowing that this is a mixing tx, that the 2 and 3 came from the same source. We also know that the output of 4 belongs to the owner of the input of 9. What we've gained is not knowing who owns each 5 output.

With your proposed solution of just having two transactions per transaction, we still have the same problem. Let's say Alice is paying 5 BTC using inputs of size 2 and 3. Bob has another transaction where he pays 13 BTC with two inputs of 7.

Inputs: 2 3 7 7
Outputs: 5 1 13

It's still pretty easy to distinguish between the transactions. Clearly, one person owns the 2 and 3 input addresses, and someone else owns the 7 addresses. We can still tell that addresses are related. With both ideas, the only way to avoid this is to have multiple ways to combine input values to reach the output values (which is difficult when bitcoins are divisible down to 8 decimal places).

Inputs: 1 4 4 2
Outputs: 5 6

Now there's two possible solutions. 1 4 4 2 or 1 4 4 2. Casascius' idea of limiting mixing sizes to 5^n would help ensure that after the first mixing, each output should be of a fixed size. That should help reduce these concerns.

Getting back to the original issue: yes, using this mixing to combine coins would still often show that some of the source addresses are held by the same person. The strength is that that knowledge cannot be used to track future transactions. You become detached from your past, breaking any string of transactions people might be using to track you. Now, if you have 0.3 and 0.7 unspent tx's, and you happen to come across someone else with exactly 0.3 and 0.7, you can make it uncertain that you own both addresses.


Title: Re: Automatic Coin Mixing Idea
Post by: aq on July 19, 2012, 09:58:36 PM
One of the biggest issues is that once you make a transfer you combine coins from multiple addresses and as a result those can be identified as one wallet. I think casascius proposal addresses this only to some extent. If after mixing coins I again have to combine I have gained nothing.
How about we do it different:
Whenever I want to make a transaction, my client sends this out as a "transaction-indent", other clients that are also about to do a transaction combine their "indent" with mine (adding inputs and outputs) and after a few seconds, we all sign this combined indent to form a transaction.
This would make it impossible to identify a single wallet, because inputs from multiple wallets would end up in a single transaction. And secondary, on one would know which input was the initiator for which output.
Your comments?

The reason this coin mixing strategy reveals that addresses belong to the same wallet is because of addition. Let's say you see a tx with inputs of value 2, 3, 1, and 5. The outputs are of value 5, 5, and 1. It's pretty easy to tell, knowing that this is a mixing tx, that the 2 and 3 came from the same source and that the 1 and 5 came from the same source. We also know that the output of 1 belongs to the owner of the previous 1 and 5 tx's. What we've gained is not knowing who owns each 5 output.

With your proposed solution of just having two transactions per transaction, we still have the same problem. Let's say Alice is paying 3 BTC using inputs of size 2 and 2. Bob has another transaction where he pays 10 BTC with a 3 and a 7.

Inputs: 2 2 3 7
Outputs: 3 1 10

It's still pretty easy to distinguish between the transactions. Clearly, one person owns the 2 and 2 input addresses, and someone else owns the 3 and 7 addresses. We can still tell that addresses are related. With both ideas, the only way to avoid this is to have equally sized inputs (which is difficult when bitcoins are divisible down to 8 decimal places).

Inputs: 1 4 4 2
Outputs: 5 6

Now there's two possible solutions. 1 4 4 2 or 1 4 4 2. Casascius' idea of limiting mixing sizes to 5^n would help ensure that after the first mixing, each output should be of a fixed size. That should help reduce these concerns.

Getting back to the original issue: yes, using this mixing to combine coins would still often show that some of the source addresses are held by the same person. The strength is that that knowledge cannot be used to track future transactions. You become detached from your past, breaking any string of transactions people might be using to track you. Now, if you have 0.3 and 0.7 unspent tx's, and you happen to come across someone else with exactly 0.3 and 0.7, you can make it uncertain that you own both addresses.
Well, my proposal wasn't to mix 2 transactions, but maybe 10, or even 50. And then once you add the change addresses (at least 1 per wallet), it is no longer so easy to figure out what was used for what, and what belongs to what.


Title: Re: Automatic Coin Mixing Idea
Post by: austonst on July 19, 2012, 10:06:58 PM
Well, my proposal wasn't to mix 2 transactions, but maybe 10, or even 50. And then once you add the change addresses (at least 1 per wallet), it is no longer so easy to figure out what was used for what, and what belongs to what.

Couldn't you say the same thing about this mixing? It could be expanded pretty easily to have Alice's mix offer be "Hey, I'm running a 5 BTC mixing party. Let's get everyone in on this same transaction." If a lot of people are throwing in their 2's and 3's, it'll get difficult to find the original pairs.


Title: Re: Automatic Coin Mixing Idea
Post by: Nyhm on July 19, 2012, 10:08:58 PM
Am I correct that the tx created by Alice (including Bob's input tx) is a direct application of the multi-signature transaction BIP (https://en.bitcoin.it/wiki/BIP_0010)?


No, it is just a normal transaction that combines two inputs, and looks much the same as a transaction that combines two of your smaller coins in your wallet to make a bigger coin when one is needed.  It is not a multisig transaction at all.

The only difference between this and any other transaction is that the two inputs happen to belong to two different people, rather than the same person, so the signatures have to happen in separate steps.  In contrast, all coin-combining transactions already require multiple signatures, we just don't usually think of it that way because the same person's Bitcoin client (the sender's) can provide all of the needed signatures itself, and automatically does so whenever you "send coins" out of your wallet in an amount that makes coin-combining necessary.

I see. Thanks for that clarification. Is it true, then, that a tx message is entirely invalid if all the input sigs are not included/valid? That is, when Alice creates & signs the tx (including Bob's input), but Bob never signs it, then it would never survive on the network (supposing Bob decided to transmit).

Forgive me if this is obvious to the experts here. I have the technical background to understand and appreciate this stuff, but I'm still new to this protocol.


Title: Re: Automatic Coin Mixing Idea
Post by: aq on July 19, 2012, 10:10:56 PM
Well, my proposal wasn't to mix 2 transactions, but maybe 10, or even 50. And then once you add the change addresses (at least 1 per wallet), it is no longer so easy to figure out what was used for what, and what belongs to what.

Couldn't you say the same thing about this mixing? It could be expanded pretty easily to have Alice's mix offer be "Hey, I'm running a 5 BTC mixing party. Let's get everyone in on this same transaction." If a lot of people are throwing in their 2's and 3's, it'll get difficult to find the original pairs.
Not really, because once I do my 100btc transaction, I have to combine all those in my own wallet. So mine are again identifiable as mine. The "bad" operation is to actual combine. So my idea was, make the combine operation more anonymously.



Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 19, 2012, 10:11:16 PM
One of the biggest issues is that once you make a transfer you combine coins from multiple addresses and as a result those can be identified as one wallet.

Reducing the swaps to specific granular amounts helps prevent this by making the units as indistinct as possible.

If five people go to a party, and one person has a 3-dollar bill, another person has a 17-dollar bill, and the others have equally unusual amounts, then it is clear how this idea is going to be ineffective.  And these weird denominations of bills are exactly like how Bitcoin works internally.  But that is why sticking to some standard swap denominations is important (as I suggested with 1, 5, 25, etc.).

if before everyone gets to the party, they exchange their unusual denominations for one-dollar bills, and then exchange 1:1 all evening, someone who hands you 5 of them isn't going to reveal any information on the basis of which 5 one-dollar bills you got, other than that one person came to the party with at least five dollars.  For all intents and purposes they are equally anonymous.

If I am an anonymizing Bitcoin client and somebody sends me 73.26 BTC, the first thing I will do is split that into 25+25+5+5+5+5+1+1+1+.20+.04 and I will probably discard the remaining 0.02 as a transaction fee somewhere so long as it's not worth mixing.  Then, all of those chunks will be traded with others, one-for-one.  By the time each chunk has been traded six or seven times, what's a recipient going to learn to know that for example three chunks of five were combined to make fifteen?  Not much of use.

One could perform an analysis on those three chunks to see if they might happen to all share a common possible point of origin on the block chain (an intersection attack), which could identify the original origin.  But that could be easily mitigated just by the client occasionally "mixing" same-sized chunks with itself, which is indistinguishable from mixing with others, and which would make the ancestry of each chunk look very "inbred" so to speak, and therefore poorly useful for confidently identifying distinct faraway ancestors.



Title: Re: Automatic Coin Mixing Idea
Post by: aq on July 19, 2012, 10:15:44 PM
One more point, while casascius method would extremely bloat the block chain, mine could actually reduce the size.


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 19, 2012, 10:21:06 PM
Well, my proposal wasn't to mix 2 transactions, but maybe 10, or even 50. And then once you add the change addresses (at least 1 per wallet), it is no longer so easy to figure out what was used for what, and what belongs to what.

The only problem is that the more participants in the group, the easier it is for one party to disrupt the operation OR spoil the anonymity by recording/publishing the input-to-output connections.  Everyone has to participate, and no matter how you slice it, either everyone in the group will know the mapping of addresses for everyone in the group, OR anyone in the group can easily disrupt the process for everyone by failing to play by the rules (e.g. refusing to sign, or spending their original funds while the signatures are being coordinated, thus voiding the whole transaction).

The right group size is small and casual.  The average Bitcoin node tries to connect to 8 other nodes, and if "some" of those nodes cooperate, you'll have a group size of 2 to 4 most of the time.


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 19, 2012, 10:25:22 PM
One more point, while casascius method would extremely bloat the block chain, mine could actually reduce the size.


My proposal would indeed bloat the block chain, and therefore a prerequisite would be appropriate transaction pruning - something already being discussed by the devs.  It would also require deterministic wallets in the main client, otherwise a wallet backup would expire very quickly as all of the addresses are used up for this purpose.  So for now, my proposal is totally premature for implementation - it just won't be for much longer.

Your "transaction-intent" proposal would work really well, other than that it would be very easy to disrupt.  The Achilles heel is that until ALL of the signatures are provided, the entire transaction is invalid.

If every Bitcoin transaction were made by soliciting an offer to combine it with somebody else's transaction and a protocol were devised to coordinate this, transaction processing on the entire Bitcoin network could be brought to a halt just by somebody writing a bot that pretends to cooperate for as long as possible, but refuses to actually sign any transactions... and then running a few dozen instances of that bot.

A few dozen instances of such a bot would make detection and exclusion of the bot impossible, because they would cooperate and sign transactions most of the time, but each one would take turns disrupting a whole distributed transaction, letting a different bot instance do the job of disrupting each separate attempt.  Sort of like colluding in online poker.


Title: Re: Automatic Coin Mixing Idea
Post by: austonst on July 19, 2012, 10:29:49 PM
Well, my proposal wasn't to mix 2 transactions, but maybe 10, or even 50. And then once you add the change addresses (at least 1 per wallet), it is no longer so easy to figure out what was used for what, and what belongs to what.

Couldn't you say the same thing about this mixing? It could be expanded pretty easily to have Alice's mix offer be "Hey, I'm running a 5 BTC mixing party. Let's get everyone in on this same transaction." If a lot of people are throwing in their 2's and 3's, it'll get difficult to find the original pairs.
Not really, because once I do my 100btc transaction, I have to combine all those in my own wallet. So mine are again identifiable as mine. The "bad" operation is to actual combine. So my idea was, make the combine operation more anonymously.

Okay, I get your point now. I guess the way this mixing would solve that issue is to make it meaningless to know that addresses are related. Sure, you can see that four 25 BTC outputs have come together to pay 100 total BTC, but since mixing occurs between each transaction, you can't trace them any further back. You can't tell who owns them or what those coins have done in the past, and if the mixing has been done properly (like in Casascius' last post), there won't be any cases of "Oh, I see from tx1 that someone owns addresses A,B,C and I see from tx2 that someone owns C,D,E. Therefore, the same person owns all 5 addresses."

Whoo, you guys type fast. 3 more replies since I started writing this up.

One more point, while casascius method would extremely bloat the block chain, mine could actually reduce the size.

In the original post, it was mentioned that in the future, most people will be storing only the unspent transactions, not the entire history of everything. Many of the blockchain pruning ideas implement something similar, and I think it's pretty likely that the solution that finally gets implemented will only store unspent transactions. While casascius' method would bloat the blockchain with transactions, it would dramatically reduce the side-chain that only stores unspent transactions.


Title: Re: Automatic Coin Mixing Idea
Post by: aq on July 19, 2012, 10:36:06 PM
I see your points.
How about this:
First step is creating a transaction as it is now.
After this the client creates a combined transaction with other unconfirmed and uncombined transaction. This combined one is almost like of a double spend on the first one, so legacy miners would ignore it.
Now other clients upon seeing this combined transaction, check if they can sign it, and will do so if necessary.
Once all inputs in the combined transaction are signed, a miner can replace all those single transaction by the combined one.




Title: Re: Automatic Coin Mixing Idea
Post by: Jan on July 19, 2012, 10:43:13 PM
And the block chain grows at an accelerated pace...


Title: Re: Automatic Coin Mixing Idea
Post by: piuk on July 19, 2012, 10:50:57 PM
Nice idea. But it could be fairly easy for someone with good connectivity to de-anonymoize transactions. If for example someone with the address 1NotMixed keeps broadcasting his address as suitable for mixing every transaction that involves that address you know that the other output was the real destination address. Even if it is a chain of mixed transactions every one they manage to involve themselves in increases the likelihood of predicting the final destination address.

Or not necessarily using the same address, but unique addresses and sending back to 1NotMixed after.


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 19, 2012, 11:05:57 PM
I see your points.
How about this:
First step is creating a transaction as it is now.
After this the client creates a combined transaction with other unconfirmed and uncombined transaction. This combined one is almost like of a double spend on the first one, so legacy miners would ignore it.
Now other clients upon seeing this combined transaction, check if they can sign it, and will do so if necessary.
Once all inputs in the combined transaction are signed, a miner can replace all those single transaction by the combined one.

I could see some ways this would work - the challenge would be in trying to come up with a sustainable coordinator for those transactions.

If Alice originates a transaction, and miner Mike wants to propose to Alice that she sign transaction A+B which combines her transaction with one of Bob's... then Mike needs a way to contact Alice.  Alice pretty much needs to attach a calling card to the transaction, which gives her less anonymity rather than more.

Or, as you seem to be suggesting, Mike could start broadcasting the incomplete transaction around the network, in the hopes it will end up reaching Alice so she can sign it.

The only problem is that if the network starts permitting such incomplete transactions to be relayed, then a vandal could send out a hundred transactions, and then send out thousands of proposals to combine those 100 transactions 100+ different ways each, exponentially amplifying modest transaction spam into a full-on DoS attack.







Title: Re: Automatic Coin Mixing Idea
Post by: Steve on July 20, 2012, 04:28:25 AM
Great idea…I like the train of thought.

Nice idea. But it could be fairly easy for someone with good connectivity to de-anonymoize transactions. If for example someone with the address 1NotMixed keeps broadcasting his address as suitable for mixing every transaction that involves that address you know that the other output was the real destination address. Even if it is a chain of mixed transactions every one they manage to involve themselves in increases the likelihood of predicting the final destination address.

Or not necessarily using the same address, but unique addresses and sending back to 1NotMixed after.

I think you could mitigate this risk by simply altering some rules in the client regarding connection diversity and churning connections to ensure you're never connected to a single node for an excessive amount of time.  Also, I don't think the proposal was to broadcast these mix requests (like a normal transaction is relayed)…I think the proposal suggests to announce such requests to peers and in most cases they either act on it or not, but wouldn't relay the request.  In some cases they would relay requests to improve privacy.


Title: Re: Automatic Coin Mixing Idea
Post by: bc on July 20, 2012, 04:39:49 AM
The best part of this proposal is the sheer simplicity. That alone makes it 10x as likely to get into the official client as any other mixing proposal - in my mind.

Simple ubiquitous mixing gets it out of the alleyways, and into the light of day - where no-one need fear participating.

Reducing the denominations to M^n is a great idea too. I would almost suggest initially reducing denominations to M^1 alone - to simplify the initial protocol. Maybe that's going too far, and you'd find fewer participants. Or maybe it's good because it means participants would find partners that would otherwise have been holding-out for M^2, M^3, or M^4. Maybe it would be a good first step to shake things out. I've got in mind Gavin's recent Gist about lessons learned from BIP 16 (https://gist.github.com/2355445), and how he wants to apply them in BIP 34 (https://bitcointalk.org/index.php?topic=92558.0). Specifically: "Think about laying a solid foundation, and then rolling out changes in stages. Baby steps instead of change-it-all-at-once."


None of these things should occur to users who don't understand them or explicitly opt in to them.  They could be briefly explained as benign side effects to a user who checks a checkbox to enhance his anonymity.
And maybe a checkbox to "support" the anonymity of others - by merely relaying these solicitations and transactions. There might be those who find mixing risky - especially while it's new. Those same people, though, might be more than happy to relay the required messages.


And then OP goes and replies to a valid concern:

One of the biggest issues is that once you make a transfer you combine coins from multiple addresses and as a result those can be identified as one wallet.

Reducing the swaps to specific granular amounts helps prevent this by making the units as indistinct as possible.

...

...Then, all of those chunks will be traded with others, one-for-one.  By the time each chunk has been traded six or seven times, what's a recipient going to learn to know that for example three chunks of five were combined to make fifteen?  Not much of use.

One could perform an analysis on those three chunks to see if they might happen to all share a common possible point of origin on the block chain (an intersection attack), which could identify the original origin.  But that could be easily mitigated just by the client occasionally "mixing" same-sized chunks with itself, which is indistinguishable from mixing with others, and which would make the ancestry of each chunk look very "inbred" so to speak, and therefore poorly useful for confidently identifying distinct faraway ancestors.

I love it. As Austonst puts it:
Quote
if the mixing has been done properly (like in Casascius' last post), there won't be any cases of "Oh, I see from tx1 that someone owns addresses A,B,C and I see from tx2 that someone owns C,D,E. Therefore, the same person owns all 5 addresses."

If fairly common (if not ubiquitous), it sounds like these mixes could start to render "traditional" blockchain analysis obsolete. The heritage of coins that have never participated in such mixing might start to become less clear.


And another thing - the simplicity of this proposal widens the pool of developers willing and able to implement it.

Kudos, Casascius.


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 20, 2012, 04:42:08 AM
Nice idea. But it could be fairly easy for someone with good connectivity to de-anonymoize transactions. If for example someone with the address 1NotMixed keeps broadcasting his address as suitable for mixing every transaction that involves that address you know that the other output was the real destination address.

Of course, leave it to the guy who runs a node that connects to hundreds or thousands of peers at a time to point this out =)

Yes, someone in a position to do that would be able to flag his coins as "not mixed" and his attack would work.  Of course, he could also just ignore the request to mix coins, which would be just as effective and leave the coins just as unmixed, and would also be a normal expected response from a client that may not want to / be able to / feel like it / have any coins / randomnumber<threshold / whatever.

By and large though, mixing would happen everywhere, mostly for people who only passively care about mixing their coins.  Someone dead serious about mixing their coins might leave a node online and let it mix for days or weeks, and would succeed in doing so even if "NotMixed" got thrown in a few steps along the way.


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on July 20, 2012, 05:55:36 AM
... by default ?

What's the benefits of participating in mixing someone else coins ?

Say 98% of users do not have anything to hide and would prefer all transactions be traceable for the benefits of discouraging bad behaviors ?

I would much prefer someone who stole BTCs to pay a fee to shameless mixer than to help him unknowingly.


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 20, 2012, 06:02:59 AM
... by default ?

What's the benefits of participating in mixing someone else coins ?

Say 98% of users do not have anything to hide and would prefer all transactions be traceable for the benefits of discouraging bad behaviors ?

I would much prefer someone who stole BTCs to pay a fee to shameless mixer than to help him unknowingly.

Bad behaviors like what?  Donating to WikiLeaks and other politically incorrect causes?

Do we want Bitcoin to be a system that tracks taint of coins, or don't most of us share the consensus that the system as a whole would be better off without the notion of tainted coins, even if that means a few thieves will have an easier time getting away with their crimes?  For everything you're asking for, there's MasterCard.


Title: Re: Automatic Coin Mixing Idea
Post by: justusranvier on July 20, 2012, 06:17:29 AM
I will probably discard the remaining 0.02 as a transaction fee somewhere so long as it's not worth mixing.
That is exactly what mixing should focus on.

I can take 73.26 and split it myself in to smaller sizes in a way that looks like a series of purchases on my own node with no cooperation needed from anyone else. What I can't do is anonymously combine all my dust addresses into an address large enough to be useful without outside assistance. A client can be very careful to use different incoming addresses for every receipt and to never link addresses but at some point the user is going to want to spend an amount larger than the balance of any single address. The only way to avoid this situation without compromizing anonyminity is to have the ability to securely combine small addresses into larger ones.

That's why I think mixing should be focused on transactions which have many more inputs than outputs. https://bitcointalk.org/index.php?topic=93390.msg1036811 (https://bitcointalk.org/index.php?topic=93390.msg1036811)


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on July 20, 2012, 06:19:13 AM
... by default ?

What's the benefits of participating in mixing someone else coins ?

Say 98% of users do not have anything to hide and would prefer all transactions be traceable for the benefits of discouraging bad behaviors ?

I would much prefer someone who stole BTCs to pay a fee to shameless mixer than to help him unknowingly.

Bad behaviors like what?  Donating to WikiLeaks and other politically incorrect causes?

Do we want Bitcoin to be a system that tracks taint of coins, or don't most of us share the consensus that the system as a whole would be better off without the notion of tainted coins, even if that means a few thieves will have an easier time getting away with their crimes?  For everything you're asking for, there's MasterCard.
Tracking tainted coins is already very challenging,  As a coin mixer would I bother to do research on every case of stolen coins and act as a judge on every cases,,, for say 50000$ worth of BTC ? probably NO.  But say there was a major heist of 500k BTC at a major exchange and the savings of tens of thousands of peoples were lost, putting the whole economy at risk. ?
Or say someone kidnapped some very important person and the life of many depends on finding who spent the coins ?

In those later cases I would rather accept the highest fee of whether the client or the affected peoples.  People who got stolen 50 000 BTC would pay a hefty bounty for any information leading to the culprit.

Sorry but I always thought of this as a feature of Bitcoin and I will continue to see coin mixing as a non-issue for 99.99% of honest peoples and 99% of dishonest ones.


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on July 20, 2012, 06:48:46 AM
Quote
if coin mixing were built into the client, there would never be a need for anyone to use a coin mixing service, and thereby deliberately and identifiably participate in so-called "money laundering"

Most people see no problem in said "money laundering", because most of the money to be laundered is from drug trade and lots of people here are against the war on drug.

Laundering money of drug trade is not the same as laundering money of say "human trafficking" or "mass murdering".

To be honest if this feature would be removed I'd quit Bitcoin and wouldn't give it a long time before it get shut down.

The way it currently work also add value to newly mined coins, which add incentive for miners to secure the network.


Title: Re: Automatic Coin Mixing Idea
Post by: waspoza on July 20, 2012, 08:11:18 AM
... by default ?

What's the benefits of participating in mixing someone else coins ?

Say 98% of users do not have anything to hide and would prefer all transactions be traceable for the benefits of discouraging bad behaviors ?

I would much prefer someone who stole BTCs to pay a fee to shameless mixer than to help him unknowingly.

Bad behaviors like what?  Donating to WikiLeaks and other politically incorrect causes?

Do we want Bitcoin to be a system that tracks taint of coins, or don't most of us share the consensus that the system as a whole would be better off without the notion of tainted coins, even if that means a few thieves will have an easier time getting away with their crimes?  For everything you're asking for, there's MasterCard.

+1


Title: Re: Automatic Coin Mixing Idea
Post by: bc on July 20, 2012, 11:34:11 AM
... by default ?

What's the benefits of participating in mixing someone else coins ?

Say 98% of users do not have anything to hide and would prefer all transactions be traceable for the benefits of discouraging bad behaviors ?

I would much prefer someone who stole BTCs to pay a fee to shameless mixer than to help him unknowingly.

Valid question.

What is seen:
Coins are stolen, and there's a statistical method to trace subsequent spends to the culprit.

What is not seen:
Thousands (millions?) of people will be coerced into paying capital gains on coins that appreciate in value. Those taxes will go to fund all manner of government programs. Governments will profit from the appreciation of traceable coins. The coercion has teeth because of traceability.


Title: Re: Automatic Coin Mixing Idea
Post by: Mike Hearn on July 20, 2012, 11:37:55 AM
Also see here: https://bitcointalk.org/index.php?topic=93390.0


Title: Re: Automatic Coin Mixing Idea
Post by: Steve on July 20, 2012, 01:04:58 PM
... by default ?

What's the benefits of participating in mixing someone else coins ?

Say 98% of users do not have anything to hide and would prefer all transactions be traceable for the benefits of discouraging bad behaviors ?

I would much prefer someone who stole BTCs to pay a fee to shameless mixer than to help him unknowingly.
I don't think you realize just how non-anonymous the current bitcoin client really is.  Most people would prefer that the amount of coins under their control not be so easily discerned from the block chain.  Do you walk around wearing a shirt that announces your net worth to everyone?  It has nothing to do with people engaged in what some may consider bad behavior.


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on July 20, 2012, 03:20:57 PM
... by default ?

What's the benefits of participating in mixing someone else coins ?

Say 98% of users do not have anything to hide and would prefer all transactions be traceable for the benefits of discouraging bad behaviors ?

I would much prefer someone who stole BTCs to pay a fee to shameless mixer than to help him unknowingly.
I don't think you realize just how non-anonymous the current bitcoin client really is.  Most people would prefer that the amount of coins under their control not be so easily discerned from the block chain.  Do you walk around wearing a shirt that announces your net worth to everyone?  It has nothing to do with people engaged in what some may consider bad behavior.
For what you're asking for, there's MasterCard. Or how about you constantly request money to be sent at different addresses or pay a small fee for coin mixing if you're that ashamed of your net worth.

It had nothing to do with bad behavior, now it will.

Would you really want Bitcoin be associated mostly with evilness ?  Could be profitable, but I would wait until we're crunching around 500 petahash/s.


Title: Re: Automatic Coin Mixing Idea
Post by: n8rwJeTt8TrrLKPa55eU on July 20, 2012, 03:24:46 PM
Tracking tainted coins is already very challenging

Sorry but I always thought of this as a feature of Bitcoin and I will continue to see coin mixing as a non-issue for 99.99% of honest peoples and 99% of dishonest ones.

Tracking is difficult now because there are no tools.  If Bitcoin becomes successful as a widespread means of payment, it is a certainty that sophisticated and cheap blockchain analysis tools will be developed both for commercial purposes and criminal purposes.  Similar to the rise of products and tools that currently do comprehensive HTTP log, cookie, and webbugs analysis to track individual customers. 

Imagine in the future a naive user (your mom, your grandma) who is unaware of the technical details, and keeps receiving and sending Bitcoins always using the same and/or chained addresses.  Every time they buy something, no matter how trivial, they are potentially giving a determined snooper/attacker a window into all of their income and purchases since the dawn of time.  This is a disaster waiting to happen.  It will make life wonderful for criminals in countries (e.g. Latin America) where robbery and kidnapping and extortion are common.

It is absolutely essential for the long-term viability of Bitcoin that all clients (and ideally, the protocol itself) have mixing built-in and turned on by default.


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on July 20, 2012, 03:35:21 PM
...I don't think you realize just how non-anonymous the current bitcoin client really is. ...
I mine coins, I announce it with my IP, I spend it.

I agree it's not anonymous because all Pools can leak information about their customers (miners), what IP sent X shares and where the payment for those was sent.  Next we learn it's possible route share through proxies.  :o

It's also not anonymous because all merchant can be hacked and all customers information leaked, Linking transactions with home addresses.

 ;D


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on July 20, 2012, 03:49:38 PM
Tracking tainted coins is already very challenging

Sorry but I always thought of this as a feature of Bitcoin and I will continue to see coin mixing as a non-issue for 99.99% of honest peoples and 99% of dishonest ones.

... Imagine in the future a naive user (your mom, your grandma) who is unaware of the technical details, and keeps receiving and sending Bitcoins always using the same and/or chained addresses.  Every time they buy something, no matter how trivial, they are potentially giving a determined snooper/attacker a window into all of their income and purchases since the dawn of time.  This is a disaster waiting to happen.  It will make life wonderful for criminals in countries (e.g. Latin America) where robbery and kidnapping and extortion are common. ...
Up untill the time Bitcoin is used by most mom-pop of this world it is more likely to be used as a tool facilitating extortion.
You're simply one step further away on that one and we're talking beyond 2024. By then most peoples will most likely be trusting secure 3rd parties for their everyday transactions.

You'd be surprised by how little interest there is in most grandma's banking history.
I wish we could be at the point were we teach them computer security basics but unfortunately it's hard enough explaining them they shouldn't put their life savings under their mattress.


Title: Re: Automatic Coin Mixing Idea
Post by: bc on July 30, 2012, 02:13:42 AM
So, should peer mix requests be in-band, or out-of-band (on a different port)? How realistic is it that the core devs would accept a pull request that extends the protocol for the purposes of mixing?

I'm thinking it would be cleaner with a simple mod to allow an rpc-request of the peer list, and use a separate, simple protocol for mixing.


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on July 30, 2012, 02:51:26 AM
So, should peer mix requests be in-band, or out-of-band (on a different port)? How realistic is it that the core devs would accept a pull request that extends the protocol for the purposes of mixing?

I'm thinking it would be cleaner with a simple mod to allow an rpc-request of the peer list, and use a separate, simple protocol for mixing.

I think a very basic level of mixing should be supported in the base client and protocol, but possibly only after support for tree pruning / meta tree is finished.  Support for reacting to messages relating to mixing should be optional and messages can be ignored if not supported.  The main reason I would like to see mixing in the protocol is a social one rather than a technological one - it is a defense against drawing nefarious inferences from the observation that someone is mixing their coins.  One can always plausibly claim their coin mixing is unintentional or innocent (they merely checked a privacy checkbox) rather than deliberate, if it is easily-enabled client behavior.

More robust mixing (e.g. mix nets that mix aggressively, or with massively multiple parties, or that use IRC or other methods for peer finding) would all be supported via an RPC call.


Title: Re: Automatic Coin Mixing Idea
Post by: goodlord666 on August 01, 2012, 06:52:17 PM
I have been entertaining thoughts very similar to casascius' but never finished writing my article on the subject because it was poorly thought out from a technical point of view.

But it involved your wallet doing automatic mixing in the background as a default mechanism.

Because I have no further use for my draft I'll post the final paragraphs here which outlined my reasoning at the time:


Quote
[...]

User A then ends up receiving amounts of BTC totaling his wallet's balance from a multitude of different addresses across the world, practically rendering all participating nodes legally liable for everyone else's transaction history.

The point is to offer plausible deniability as to the origin of the coins you spend once they've gone through the 'laundry', while making the process of mixing coins itself common practice for everyone.

[This] would help obscure coin movement and ownership to a degree where reversing transactions on legal grounds or effectively monitoring transaction routes would become virtually impossible. And bitcoins themselves would be 'good as cash'.

When you think about it this isn't much different from how money works today:

When I deposit $1000 at a bank today the clerk will jot down that I deposited $1000 but when I return the next day to withdraw it, the banknotes themselves will be entirely different from the ones I had carried in my hand the day before. Regardless of where exactly the money comes from I am entitled to spend $1000.

One doesn't pull individual banknotes from circulation saying that according to their transaction history they once rightfully belonged to somebody they had been stolen from [in reference to legally reversing transactions; I wrote this shortly after MtGox was hacked]. Such scenarios would greatly reduce the value bitcoins.

Neither should it be possible to say "The transaction history of your money shows that it was used in connection with an undesired organization so we link you to that type of organization."

Since the bitcoin you hold in your wallet doesn't have a reliable transaction history anymore, the moment you have it it's yours, just neutral money, just money.

An integrated coinmix is useful mostly for preventing legal entities from easily singling out your tainted coins on the grounds that they originated from something like a theft. The majority might never trust money which they feel may easily be taken away from them due to the transparent nature of its transaction history. At least I feel that way. Cash has to be anonymous/neutral.

I believe this to be vital for commerce and the general public to accept Bitcoins as a real currency.

[...]

Upshot:
Instead of having coins sitting around idly while you're not spending them, they are [...] shuffled around the network night and day, further anonymizing the network and making the coins themselves even more cash-like, consequentially raising their value, as I believe there is a huge clientele of people who will consider Bitcoins valuable only when they have reached that level of collective anonymity. As well as potentially giving miners a new source of revenue*.

This would leave us with only two types of truly clean Bitcoins: 'newly generated' and 'gone through the puddle'...

* I was thinking of adding a courtesy fee or something like that for all coins going into the mix to make it profitable for miners.



Title: Re: Automatic Coin Mixing Idea
Post by: westkybitcoins on August 01, 2012, 07:50:17 PM
... by default ?

What's the benefits of participating in mixing someone else coins ?

Say 98% of users do not have anything to hide and would prefer all transactions be traceable for the benefits of discouraging bad behaviors ?

I would much prefer someone who stole BTCs to pay a fee to shameless mixer than to help him unknowingly.

Hmmm.

I'd restate the highlighted portion as:

What's the benefits of participating in mixing someone else's coins, when no one else has to mix yours?

Even as someone who despises the concept of "tainted coins", and totally embraces anonymity, I have to admit, this proposal bothers me a little. Particularly the "opt-in" part.

I have the concern that by clicking to opt-in to mixing, I might wind up with the large majority of people I mix with being those trying to hide the source of stolen funds. What benefit is that to me? Sure, my financial history is obscured, but if that's achieved by hiding my financial movements among those of people with legitimately criminal financial activity, have I really gained anything?

If the rebuttal is, "well, most people will choose to opt-in" (which is questionable), then what's the point of the opting-in? Why not just make it a built-in, mandatory part of clients and be done with it?

I'm convinced passive coin mixing won't work unless it's automatic and widespread. Which means I'd be more supportive of an opt-out (or better yet, mandatory) client-level mixing methodology, but I still think the best way to do automatic, widespread mixing is to alter the protocol.

As a bonus, this would force those people who insist on having traceable transactions to go make their own fork.


Title: Re: Automatic Coin Mixing Idea
Post by: bc on August 02, 2012, 02:32:30 PM
I'm convinced passive coin mixing won't work unless it's automatic and widespread. Which means I'd be more supportive of an opt-out (or better yet, mandatory) client-level mixing methodology, but I still think the best way to do automatic, widespread mixing is to alter the protocol.

You may be right, but maybe we can first work out the kinks with voluntary mixing. Each successful baby step makes the next one easier.


Title: Re: Automatic Coin Mixing Idea
Post by: hazek on September 19, 2012, 11:59:30 AM
I love this idea.


Title: Re: Automatic Coin Mixing Idea
Post by: 1455 on October 27, 2012, 05:24:09 PM
Great idea, keep going!


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on October 28, 2012, 12:40:02 AM
Great idea, keep going!
Given people will pay to get a tracking of their stolen coins, coin mixing is very unlikely to be deemed "by default".

Ps : You're reviving a 2 month old thread.


Title: Re: Automatic Coin Mixing Idea
Post by: marcus_of_augustus on October 28, 2012, 03:23:47 AM
There is both an individual and a social incentive to want to mix, so I'd guess that many if not most users will select the "mix" option if it was offered.

For the individual:
Simple question, given the choice, ask yourself would you rather have a bank account that is totally private with no possibility of anyone gaining information about your financial transactions or another bank account that is maybe private, but has no guarantees against who your financial transaction behaviour maybe data-mined by?

For the bitcoin community:
If an option to "mix" coins was used nearly globally, bitcoin, the currency, achieves a higher level of fungibility and is thus worth more to the market creating added demand over other less fungible (e.g. traceable) digital currencies ... leading to a higher valuation for bitcoin, simply put.

These are very similar arguments to why holding wealth in bitcoin, that cannot be frozen, is better than holding a digital fiat currency that can be seized without notice or due process ... most people will never have to worry about such a seizure but if you give an individual the choice and point it out plainly they will chose the superior option, it is simple, rational behaviour to minimise risk to one's financial well-being, albeit that risk is small for most individuals. And these are the reasons why gold has prevailed over many centuries of attack by state monies with inferior qualities, seizure and privacy being two of the primary ones.


Title: Re: Automatic Coin Mixing Idea
Post by: westkybitcoins on October 29, 2012, 05:12:56 AM
There is both an individual and a social incentive to want to mix, so I'd guess that many if not most users will select the "mix" option if it was offered.

For the individual:
Simple question, given the choice, ask yourself would you rather have a bank account that is totally private with no possibility of anyone gaining information about your financial transactions or another bank account that is maybe private, but has no guarantees against who your financial transaction behaviour maybe data-mined by?

Then shouldn't it just be an automatic, mandatory thing, hardwired into clients, forcing those who want to avoid mixing to find clients that didn't mix?


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on October 29, 2012, 05:41:59 AM
There is both an individual and a social incentive to want to mix, so I'd guess that many if not most users will select the "mix" option if it was offered.

For the individual:
Simple question, given the choice, ask yourself would you rather have a bank account that is totally private with no possibility of anyone gaining information about your financial transactions or another bank account that is maybe private, but has no guarantees against who your financial transaction behaviour maybe data-mined by?

Then shouldn't it just be an automatic, mandatory thing, hardwired into clients, forcing those who want to avoid mixing to find clients that didn't mix?


I think you have it all backward,  even with today's with unsophisticated coin mixing services it is still near impossible to track the origins and ends of 99% of transactions.

What make you think 100% of people would want to help anonymize wrong doing using bitcoin.

Why don't you take it one step further and wonder why not everyone is willing to run a TOR exit node by default ? .  And why it wouldn't necessarily be a good thing ?

As if Bitcoin isn't revolutionary enough, it's required to provide 100% anonymous transaction while being ~97% anonymous already and criminals can easily achieve 99.999% anonymity with a small fee and some know how.



Title: Re: Automatic Coin Mixing Idea
Post by: franky1 on October 29, 2012, 05:52:14 AM
lol a semi good idea for the shady traders. but it has a flaw: a new way to steal coins

step one: call it a mixing service to allow other clients to extract coins from bob, jill, freddy, and daves wallet without those people sending them. and call it "automated" to make it seem like a benefit.
step 2 someone changes the code so that auto accept occurs and when its their turn to be Alice they receive the coins and keeps them instead of replacing them.

great idea.(sarcasm)

personally i dont care for such a feature. but thats maybe because my activities dont need the stealth that silk road users need.

but to whomever makes a client with a code tweak to auto accept transfers. while your at it you might aswell ask all the users of your bright idea for their online bank username and password so that they can make money transfers more efficient.. oh wait coinbase already drummed that idea up..

now put this sham of a project to bed as its going to make clients vulnerable.. atbest make your own little clients but dont try promoting this idea onto the official bitcoin client coders.

if anyone truly wants a mixing service,, just deposit your funds into mtgox, btc-E or any of the reputable exchanges,, wait a few minutes, then withdraw.

high chance the coins will be different..

if you really want to market something of benefit to the community, market bitcoin to actual businesses and expand out of the caldron of 100k regular users that just stir the pot between eachother thinking thats the only way to make wealth.. instead of having narrow minded thoughts about scamming or hiding transactions just to keep the silk road userbase happy.

and now

prepare the onslaught of scamming trolls replies trying to defend this idea purely because they see its scamming benefit it will bring with just a tweak of the sourcecode. pretending to be honorable users who see its honorable benefits.




Title: Re: Automatic Coin Mixing Idea
Post by: westkybitcoins on October 29, 2012, 06:03:36 AM
There is both an individual and a social incentive to want to mix, so I'd guess that many if not most users will select the "mix" option if it was offered.

For the individual:
Simple question, given the choice, ask yourself would you rather have a bank account that is totally private with no possibility of anyone gaining information about your financial transactions or another bank account that is maybe private, but has no guarantees against who your financial transaction behaviour maybe data-mined by?

Then shouldn't it just be an automatic, mandatory thing, hardwired into clients, forcing those who want to avoid mixing to find clients that didn't mix?


I think you have it all backward,  even with today's with unsophisticated coin mixing services it is still near impossible to track the origins and ends of 99% transaction.

What make you think 100% of people would want to help anonymize wrong doing using bitcoin.

Why don't you take it one step further and wonder why not everyone is willing to run a TOR exit node by default ? .  And why it wouldn't necessarily be a good thing ?

As if Bitcoin isn't revolutionary enough, it's required to provide 100% anonymous transaction while being ~95% anonymous already and criminals can easily achieve 99.99% anonymity with a small fee and some know how.

It's not required.

But if you're going to try to do mixing at all (which is what the OP was about), I don't see the point in trying to go for half-measures. Keeping such a system "opt-in" discourages the majority from ever using it, and leaves the honest people using it more vulnerable.

The reason not many people want to run Tor exit nodes is because no one really has to, and because of that, claiming your computer only connected to Super-Evil-Terrorist-net because it was running a Tor node at the time probably won't protect you. If all internet activity was automatically onion-routed by default, no one could be condemned simply on the packets their computer sent. Everyone would be protected. Those who wanted to broadcast the purity of their packets could, with enough work, arrange things so their transmissions were uniquely identifiable.

Don't get me wrong, I'm happy with Bitcoin the way it is. I just don't think "opt-in" mixing will ever have enough honest users to be worthwhile.

Edit: And again, I find the claim that "most people will use it," while simultaneously declaring it should be an "opt-in" feature, to be a little inconsistent.


Title: Re: Automatic Coin Mixing Idea
Post by: franky1 on October 30, 2012, 08:56:25 AM
my bitcoin activities are all legal.. so why would I be willing to swap my clean coins for tainted ones? especially without at least some discount to cover any risks if SEC do a blockchain analysis on the coins I hold for purposes of AML issues.

its a great idea if proven uncrackable for ALICE grab funds out of wallets without consent. but only illegal traders would use it, as it would only benefit them. leaving them just trading tainted coins, which then makes the point of use redundant.




Title: Re: Automatic Coin Mixing Idea
Post by: Serith on October 30, 2012, 12:07:17 PM
my bitcoin activities are all legal.. so why would I be willing to swap my clean coins for tainted ones?

There could be an option to put less bitcoins into swap then you get from it, and you could earn a small profit out of it payed by someone who for any reason wants to swap his coins. An if it's enabled by default for everyone then there is no such thing as tainted coins because it becomes pointless to try to track it.


Title: Re: Automatic Coin Mixing Idea
Post by: franky1 on October 31, 2012, 12:24:41 AM
another way to ruin any chance of getting bitcoin some clean legal rep' to go to mass market.

by making everyones coins dirty......

great for the druggies in the sort term. but not great for any expansion plans into real world markets. not great for bitinstant when every single coin they receive has taint. and banks stop dealing with them. causing all legitimate FIAT conversion services to disappear..

causing bitcoin to be harder to buy into or sell out of.

causing bitcoin to move back 2 years..

atleast think of the wider picture for the whole community and bitcoins future. not your own personal selfish desires to hide your drugg obtained funds.

all i can say is make ur own client and let the druggies swap between themselves and those that dont care about taint that have clean coins can join the mix only if they are given a good profit to outway the risk.. but in no way, shape, or form should this be adopted as a standard practice for all clients and all users of bitcoin.



Title: Re: Automatic Coin Mixing Idea
Post by: marcus_of_augustus on October 31, 2012, 03:57:29 AM
another way to ruin any chance of getting bitcoin some clean legal rep' to go to mass market.

by making everyones coins dirty......

great for the druggies in the sort term. but not great for any expansion plans into real world markets. not great for bitinstant when every single coin they receive has taint. and banks stop dealing with them. causing all legitimate FIAT conversion services to disappear..

causing bitcoin to be harder to buy into or sell out of.

causing bitcoin to move back 2 years..

atleast think of the wider picture for the whole community and bitcoins future. not your own personal selfish desires to hide your drugg obtained funds.

all i can say is make ur own client and let the druggies swap between themselves and those that dont care about taint that have clean coins can join the mix only if they are given a good profit to outway the risk.. but in no way, shape, or form should this be adopted as a standard practice for all clients and all users of bitcoin.



You don't understand money. Hint: research fungibility.

Your wallet is full of cash that has been used for all sorts of nefarious activities ...  :D ... feeling slimy yet?

Money is dirty. ... if you want to be pure give it all away to the poor and give your life to god.

Preaching about clean money is an oxymoron.


Title: Re: Automatic Coin Mixing Idea
Post by: franky1 on October 31, 2012, 04:25:20 AM
i do understand money. but u dont understand the world and statistics.

so a quick lesson..

FIAT money was developed for the trade of food and provisions like horseshoes, candles, etc.. u know the morally accepted stuff.. (couple centuries later) drugs only play a small part of it. if you do that statistics research you will see under 2% of money is directly linked to a drugs trade. and 10% of bank noted are tainted with drug residue.

that is the general statistics.. those who actually do drugs will find all their notes get residue on them from their mucky paws touching them. where as a retail store in a upperclass neighbourhood may see only a few percent taint. so don't quote me on the last paragraph as any statistic has to be put into context.

so thats the reality. FIAT has an acceptable taint because its a small ripple in a very big pond compared to the many legitimate uses it has.

but bitcoin has been noted as atleast 30% of trades have a near or direct link to drugs trade. and a higher percentage then that is tainted even after passing hands many times for legitimate trades after the fact.

bitcoin doesn't have big uses to buy food, clothing, cars, pay wages, utility bills. so the dominance of drugs within bitcoin is high, to high to ignore.

if you are worried that when you cash your bitcoins into bitinstant for FIAT. a taint analysis will show the drugs trade and you lose your earnings. here is a perfect solution for you.

help push bitinstant to do a 'litecoin to fiat' service then simply trade your BTC for LTC and then give bitinstant your LTC. that way 0 taint as it is a totally different blockchain...

no need for mixing services or putting vulnerable backdoors into clients for ALICE clients to steal. just swap it for a different currency.

and secondly if you want to hold the stance that all money is tainted then there is no need for programs to mix your coins, coz everything is dirty.. (in your mind)


Title: Re: Automatic Coin Mixing Idea
Post by: marcus_of_augustus on November 01, 2012, 02:24:07 AM
It sounds like you'll never be convinced of your wrongness, so I'm not going to attempt it, except to point out that you have seem to be involved in some kind of self-justifying circular loop where all money has to be proven to be morally correct (like some kind of a reverse Mises regression theorem for the pureness of all money since time immemorable) ... good luck with that approach. Just think of all the slave/whore/drug trading that was done with the gold in Fort Knox that begot your 'pure' dollars ...

Keep your "pure" coins close ... they maybe the only ones left in the fullness of time, but then who would you trade them with?


Title: Re: Automatic Coin Mixing Idea
Post by: caffeinewriter on November 01, 2012, 08:08:23 AM
Brilliant! Not to mention the "making change" analogy! +1


Title: Re: Automatic Coin Mixing Idea
Post by: matonis on December 26, 2012, 11:55:34 AM

Bottom line is, if coin mixing were built into the client, there would never be a need for anyone to use a coin mixing service, and thereby deliberately and identifiably participate in so-called "money laundering".  Rather, they would be exchanging coins in the normal course of business, the same way I can go to the grocery store with a twenty and ask for two tens without being guilty of "laundering" the twenty.

This process would also help greatly toward network scalability.  If coupled with a scheme where small penny txids (such as those generated by p2pool) were consolidated into amounts large enough to be valid for mixing, this also would defragment them without forcing whoever owns those outputs to deanonymize themselves... this would dramatically reduce the storage burden on near-future clients who will only be tracking unspent transactions instead of the whole block chain.


Mike, do you know the current status of this type of effort?


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on December 26, 2012, 04:51:18 PM
Mike, do you know the current status of this type of effort?

As far as I know, it's only an idea.  I am unaware of any efforts undertaken to turn it into something real.  I have considered doing one by hand as a proof-of-concept: making a forum post saying "here's an address with 25 of my BTC" and "here's an empty address in my wallet" and proposing that someone else produce an incomplete transaction that swaps my 25BTC with theirs, waiting only for me to sign and release it.

Step 2 would be to do the same thing in an IRC channel.

Step 3 would be to write a client that sits in an IRC channel and repeatedly does the same thing with strangers.  (I've never written anything that automates activities on IRC, so while this is something I could do, I probably wouldn't get around to it due to the modest learning curve and other worthwhile priorities)


Title: Re: Automatic Coin Mixing Idea
Post by: Transisto on December 27, 2012, 03:41:28 AM
Mike, do you know the current status of this type of effort?

As far as I know, it's only an idea.  I am unaware of any efforts undertaken to turn it into something real.  I have considered doing one by hand as a proof-of-concept: making a forum post saying "here's an address with 25 of my BTC" and "here's an empty address in my wallet" and proposing that someone else produce an incomplete transaction that swaps my 25BTC with theirs, waiting only for me to sign and release it.

Step 2 would be to do the same thing in an IRC channel.

Step 3 would be to write a client that sits in an IRC channel and repeatedly does the same thing with strangers.  (I've never written anything that automates activities on IRC, so while this is something I could do, I probably wouldn't get around to it due to the modest learning curve and other worthwhile priorities)
I really hope coin mixing catch on, my virgin, self mined coins will be worth a tad more.

As for having this done by default on the main client,,, please stop dreaming.


Title: Re: Automatic Coin Mixing Idea
Post by: n8rwJeTt8TrrLKPa55eU on December 27, 2012, 01:25:30 PM
As for having this done by default on the main client,,, please stop dreaming.

Why stop dreaming about good features that could be technically feasible?

A private p2p payment system was nothing but a dream as little as 4 years ago.  Should Satoshi have stopped dreaming about such a grandiose, idealistic, pie-in-the-sky notion?

Private banking and predictable inflation are the two key qualitative differentiators between Bitcoin and all other currencies.  Faster transactions, less fraud, lower transaction fees, all such things are wonderful but can eventually be imitated by traditional banks, while true privacy cannot.  If eventually the Bitcoin community mistakenly starts believing that privacy features are merely peripheral and not worth allocating resources for improvement, it will significantly increase the chance of Bitcoin being rendered irrelevant.  Personally, I'll put my coins where my mouth is and happily donate to any Foundation (or independent) development initiatives to build full anonymity into Bitcoin or as an altchain/fork.


Title: Re: Automatic Coin Mixing Idea
Post by: marcus_of_augustus on January 07, 2013, 05:41:47 AM
As for having this done by default on the main client,,, please stop dreaming.

Why stop dreaming about good features that could be technically feasible?

A private p2p payment system was nothing but a dream as little as 4 years ago.  Should Satoshi have stopped dreaming about such a grandiose, idealistic, pie-in-the-sky notion?

Private banking and predictable inflation are the two key qualitative differentiators between Bitcoin and all other currencies.  Faster transactions, less fraud, lower transaction fees, all such things are wonderful but can eventually be imitated by traditional banks, while true privacy cannot.  If eventually the Bitcoin community mistakenly starts believing that privacy features are merely peripheral and not worth allocating resources for improvement, it will significantly increase the chance of Bitcoin being rendered irrelevant.  Personally, I'll put my coins where my mouth is and happily donate to any Foundation (or independent) development initiatives to build full anonymity into Bitcoin or as an altchain/fork.

Hear, hear.

Besides an argument like "please stop dreaming" is about as vacuous and irrelevant as they get. If a client is released with this feature it could quite quickly become the 'main' (greater than 50%) client ....


Title: Re: Automatic Coin Mixing Idea
Post by: Gavin Andresen on January 08, 2013, 12:34:31 AM
It wouldn't be hard to prototype a coin mixer using the raw transactions API and a centralized web service (accessible via Tor, if you're worried about it recording your IP address).

If you want to do a really good job, though, you'll need:
  + Lots of people participating and/or
  + Lots of time so your mixes are spread out over time

The 'lots of people' will take time, because the mixing code needs very high trust since it'll be spending your coins.

The 'lots of time' might be a practical problem, because the mixer needs your wallet to be unlocked so it can sign mixing transactions.

Somebody should create a working prototype and then for a Bitcoin Foundation grant to fund the web service for a year...


Title: Re: Automatic Coin Mixing Idea
Post by: franky1 on January 08, 2013, 11:08:38 PM
a far easier thing is to have a server set up with 2 addresses. like an escrow.

address one is displayed. someone inputs 1btc. the address then wont be shown because it contains funds.... instead

address two is displayed. someone inputs 1btc into address 2.  the address now wont be displayed.

the funds of address 2 get sent to the sender of address 1. and vice versa.. all within seconds.(after x confirms lol)

now address 1 is displayed again.

rinse and repeat.

swapping currency 1BTC at a time without risking making a back door in the client. or having to negotiate deals because its a fixed amount swap.

you could also set up a script that asks for the persons clean wallet address before displaying the payment address so that the funds end up in a clean wallet.

leaving them to send their dirty coins to the escrow.. and receive the other persons coins to the clean wallet address. of course more then 2 addresses will be used to cater to more people and a confirmations delay is of standard to avoid double spend scams.. but thats as simple as a mixing service needs to be.


Title: Re: Automatic Coin Mixing Idea
Post by: casascius on January 08, 2013, 11:27:26 PM
A perfect centralized Tor-compatible web service already exists for hooking up these deals: IRC.

The right client could sit in there and make/accept automated requests to do coin swapping.

It doesn't even need to be part of the Satoshi client.  It could be a standalone program that takes two wallets as input: one full of coins and one virgin wallet, call them wallets A and B.

After spending 24 hours in IRC, all the coins should end up in Wallet B, in nice even granular chunks perfectly sized for swapping.


Title: Re: Automatic Coin Mixing Idea
Post by: franky1 on January 09, 2013, 01:51:12 PM
A perfect centralized Tor-compatible web service already exists for hooking up these deals: IRC.

The right client could sit in there and make/accept automated requests to do coin swapping.

It doesn't even need to be part of the Satoshi client.  It could be a standalone program that takes two wallets as input: one full of coins and one virgin wallet, call them wallets A and B.

After spending 24 hours in IRC, all the coins should end up in Wallet B, in nice even granular chunks perfectly sized for swapping.

all in wallet B after 24 hours??

better that the first person /msg the IRC bot their preferred receiving wallet addresses and gets given address A to deposit to.
the second person /msg the IRC bot their preferred receiving wallet addresses and gets given B
once both wallets are full and have enough confirms, the funds are send to the respective parties..

and also there would be wallet C D for another swap and E F so that it can keep up with demand while people A B are waiting for confirms before receipt.

all the OP of this thread needs to do is make a IRC bot, not mess with the satoshi client


Title: Re: Automatic Coin Mixing Idea
Post by: QuantumQrack on January 11, 2013, 12:33:12 PM
I would like to see this idea implemented.  I am willing to donate BTC to the project if anybody wants to take the bull by the horns and go for it.  I would also rather see it done under the auspices of the Bitcoin Foundation, but that isn't absolutely necessary.

And just so we are clear:


A no fee service.
Hopefully implemented into some bitcoin client.
Is rock solid before rolled out to the bitcoin network.
Is tested on some test network first.




Quantum


Title: Re: Automatic Coin Mixing Idea
Post by: n8rwJeTt8TrrLKPa55eU on January 11, 2013, 01:46:26 PM
I would like to see this idea implemented.  I am willing to donate BTC to the project if anybody wants to take the bull by the horns and go for it.  I would also rather see it done under the auspices of the Bitcoin Foundation, but that isn't absolutely necessary.

And just so we are clear:

A no fee service.
Hopefully implemented into some bitcoin client.
Is rock solid before rolled out to the bitcoin network.
Is tested on some test network first.

Quantum

Count me in for donations to any serious efforts meeting this spec.


Title: Re: Automatic Coin Mixing Idea
Post by: Serith on January 12, 2013, 02:22:22 AM
I would like to see this idea implemented.  I am willing to donate BTC to the project if anybody wants to take the bull by the horns and go for it.  I would also rather see it done under the auspices of the Bitcoin Foundation, but that isn't absolutely necessary.

And just so we are clear:

A no fee service.
Hopefully implemented into some bitcoin client.
Is rock solid before rolled out to the bitcoin network.
Is tested on some test network first.

Quantum

Count me in for donations to any serious efforts meeting this spec.

same here, I will donate 20 BTC for this


Title: Re: Automatic Coin Mixing Idea
Post by: furrycoat on January 12, 2013, 02:48:47 AM
Interesting Idea, +1