[ANN] Namecoin CoinJoin via Bitmessage
Posted: Fri Mar 14, 2014 6:41 am
As you all know (or at least probably should know), Namecoin suffers the same problems of "pseudonymity instead of anonymity" that Bitcoin does. In particular, it can be very hard to get a balance of coins that can not be linked to you via the exchanges, and in consequence, it is also very hard to register names truly anonymously. On the other hand, the very nature and promise of Namecoin for censorship-resistant domain names makes it desirable to be able to anonymously register sites (for instance, for organising protests / letting the world know about things that the local authorities may not want to be published).
Thus I announce Namecoin CoinJoin via Bitmessage as an experiment: I will be organising CoinJoins where everyone can participate via Bitmessage as anonymous communication channel. For now, I will manually collect the participations and will broker the deals - to gauge interest and get some insights into how it will work out. If it is a success, we could think about implementing an automatic system on top of namecoind and Bitmessage (which could then also be used for Bitcoin and other coins as well!).
How it works:
We will use 1 NMC as the CoinJoin'ed amount, because IMHO it is not too expensive so everyone can afford it, and on the other hand, it can be used to register a name and maintain it for quite some time. What you should do:
1) Create a transaction output of 1.005 NMC (balance plus fees) by sending this amount to some address of yours.
2) Use "listunspent" to locate the output (look for "amount: 1.005") and find its txid and vout.
3) Create a new address (preferrably in a fresh wallet used only via Tor).
4) Send both of them to my Bitmessage address, ideally in two separate messages from separate and freshly created addresses. Or use the chan below as sender (but still use two messages a bit apart in time).
5) Subscribe to my Bitmessage address listed below. When some participations are flowing in, I will announce a deadline broadcasted from my address and posted to the chan. Make sure you have submitted both input and output by then.
6) After the deadline, I will create a raw transaction with all the inputs and outputs received in a random order, sending 1 NMC to the provided output addresses. If there are more fees collected than the transaction needs, I will keep the additional fees and use them as (very small) donation for development of an automatic CoinJoin'er based on this concept.
7) The raw transaction will be broadcasted from my address and posted to the chan. I will also provide all output addresses included in it, so you can quickly see whether yours is part of the transaction. Make sure to check the transaction with "decoderawtransaction" yourself, though.
8) Sign the transaction with "signrawtransaction" and send it back to my address. You can use yet another BM address (or the one sending the input originally) or the chan here.
9) When everyone has signed the transaction, I will broadcast it to the network. Have fun!
Note: The procedure described above is prone to DoS by someone submitting outputs but not inputs, thus the CoinJoin will only work if I receive a matching number of inputs and outputs by the deadline (and if later on everyone signs their inputs). As this is just an experiment, I'll try it like this for now and see if it works. If it doesn't work out, I will try a procedure where I can connect inputs to outputs (but we can prevent this kind of DoS) but no one else can. This is at least a little better than nothing if you trust me, and I won't keep any logs. But of course, the end goal would be to use blinded signatures as in the full CoinJoin proposal. We'll hopefully be there at some point (but not yet).
Addresses:
Private address of mine for handing in inputs/outputs: BM-2cVzDFfKBb7yRmTGhB4pPgYgcv2XxFF8ic
Public chan password: NMC CoinJoin
Public chan address: BM-2cV6QFcbApVffSD23mwor6tQWBTvs42PR4
Thus I announce Namecoin CoinJoin via Bitmessage as an experiment: I will be organising CoinJoins where everyone can participate via Bitmessage as anonymous communication channel. For now, I will manually collect the participations and will broker the deals - to gauge interest and get some insights into how it will work out. If it is a success, we could think about implementing an automatic system on top of namecoind and Bitmessage (which could then also be used for Bitcoin and other coins as well!).
How it works:
We will use 1 NMC as the CoinJoin'ed amount, because IMHO it is not too expensive so everyone can afford it, and on the other hand, it can be used to register a name and maintain it for quite some time. What you should do:
1) Create a transaction output of 1.005 NMC (balance plus fees) by sending this amount to some address of yours.
2) Use "listunspent" to locate the output (look for "amount: 1.005") and find its txid and vout.
3) Create a new address (preferrably in a fresh wallet used only via Tor).
4) Send both of them to my Bitmessage address, ideally in two separate messages from separate and freshly created addresses. Or use the chan below as sender (but still use two messages a bit apart in time).
5) Subscribe to my Bitmessage address listed below. When some participations are flowing in, I will announce a deadline broadcasted from my address and posted to the chan. Make sure you have submitted both input and output by then.
6) After the deadline, I will create a raw transaction with all the inputs and outputs received in a random order, sending 1 NMC to the provided output addresses. If there are more fees collected than the transaction needs, I will keep the additional fees and use them as (very small) donation for development of an automatic CoinJoin'er based on this concept.
7) The raw transaction will be broadcasted from my address and posted to the chan. I will also provide all output addresses included in it, so you can quickly see whether yours is part of the transaction. Make sure to check the transaction with "decoderawtransaction" yourself, though.
8) Sign the transaction with "signrawtransaction" and send it back to my address. You can use yet another BM address (or the one sending the input originally) or the chan here.
9) When everyone has signed the transaction, I will broadcast it to the network. Have fun!
Note: The procedure described above is prone to DoS by someone submitting outputs but not inputs, thus the CoinJoin will only work if I receive a matching number of inputs and outputs by the deadline (and if later on everyone signs their inputs). As this is just an experiment, I'll try it like this for now and see if it works. If it doesn't work out, I will try a procedure where I can connect inputs to outputs (but we can prevent this kind of DoS) but no one else can. This is at least a little better than nothing if you trust me, and I won't keep any logs. But of course, the end goal would be to use blinded signatures as in the full CoinJoin proposal. We'll hopefully be there at some point (but not yet).
Addresses:
Private address of mine for handing in inputs/outputs: BM-2cVzDFfKBb7yRmTGhB4pPgYgcv2XxFF8ic
Public chan password: NMC CoinJoin
Public chan address: BM-2cV6QFcbApVffSD23mwor6tQWBTvs42PR4