Pages:
Author

Topic: [ANN] Joinmarket - Coinjoin that people will actually use - page 13. (Read 85018 times)

newbie
Activity: 2
Merit: 0
I think this project is amazing as well, and I really enjoy using it as my preferred method for coinjoin txs. However I do have one complaint. The other day I was using the sendpayment.py script. The command was exactly:

Code:
python sendpayment.py -C -N 4  0 

The script put the transaction together, and presented me with the options and a "y/n" prompt. I pressed "y" without paying too much attention and ended up paying some asshole 2.8 BTC to send a little over 5. Which is more than half of the bitcoin controlled by my privkeys. Sad

A couple suggestions:

1. Kick those people from the IRC with 50%+ fees.

2. Present the cjfee in something other than satoshis or have an alert that says you're about to pay an insane amount.
sr. member
Activity: 261
Merit: 523
Great project!

Got JoinMarket up and running last night using bitcoin 0.11.0 on ubuntu 14.04, couple snags with dependencies (libsodium needs to be manually installed) but other then that it went smoothly.

Ran the Tumbler with defaults, total fees ended up at BTC0.00196169 or ~$0.54 to tumble 1BTC, not to shabby.

Ran a taint analysis on the final addresses I provided, 1 was totally severed from the original sending address, 2 had some minor taint, but nothing that jumped out.

There was still a connection to the innitial JoinMarket wallet deposit address on all of them.

I ran with the defaults:
Code:
python tumbler.py wallet.json [btc_address]

Sounds good. Glad it worked.

Id like to run another test and try to sever both the original sending address, and the JoinMarket wallet deposit address completely, found this in the source:

Code:
	#a couple of modes
#im-running-from-the-nsa, takes about 80 hours, costs a lot
#python tumbler.py -a 10 -N 10 5 -c 10 5 -l 50 -M 10 seed 1xxx
#
#quick and cheap, takes about 90 minutes
#python tumbler.py -N 2 1 -c 3 0.001 -l 10 -M 3 -a 1 seed 1xxx
#
#default, good enough for most, takes about 5 hours
#python tumbler.py seed 1xxx
#
#for quick testing
#python tumbler.py -N 2 1 -c 3 0.001 -l 0.1 -M 3 -a 0 seed 1xxx 1yyy

What is "seed"?[

Those comments are possibly out of date.

Seed is a kind of brainwallet that was used before wallet files were made. They don't work anymore for mainnet.

I was thinking of trying:
Code:
python tumbler.py -a 4 -N 5 3 -C 5 -M 5 [btc_address]

Thoughts?

Also would be awesome to be able to provide all the addresses on the command line at once. Edit: looks like you can, I just provided to many on first run.

Again great and important project, excited to follow and contribute if I can...

It will probably work. It's likely that tumbling with coinjoin works but nobody really knows.
I assume you've run
Code:
python tumbler.py --help
so you know what the options mean

For contributions, this page has some useful small projects
https://github.com/chris-belcher/joinmarket/wiki/What-can-I-do-for-JoinMarket%3F

There is also a donation address found on the readme of the github
https://github.com/chris-belcher/joinmarket
newbie
Activity: 42
Merit: 0
What is "seed"?

Judging by your previous snippet, you'll want to put wallet.json as the "seed". The name is a leftover from the testnet days when you could directly give a wallet seed on the command line, which doesn't work on mainnet anymore.
legendary
Activity: 1258
Merit: 1027
Great project!

Got JoinMarket up and running last night using bitcoin 0.11.0 on ubuntu 14.04, couple snags with dependencies (libsodium needs to be manually installed) but other then that it went smoothly.

Ran the Tumbler with defaults, total fees ended up at BTC0.00196169 or ~$0.54 to tumble 1BTC, not to shabby.

Ran a taint analysis on the final addresses I provided, 1 was totally severed from the original sending address, 2 had some minor taint, but nothing that jumped out.

There was still a connection to the innitial JoinMarket wallet deposit address on all of them.

I ran with the defaults:
Code:
python tumbler.py wallet.json [btc_address]

Id like to run another test and try to sever both the original sending address, and the JoinMarket wallet deposit address completely, found this in the source:

Code:
	#a couple of modes
#im-running-from-the-nsa, takes about 80 hours, costs a lot
#python tumbler.py -a 10 -N 10 5 -c 10 5 -l 50 -M 10 seed 1xxx
#
#quick and cheap, takes about 90 minutes
#python tumbler.py -N 2 1 -c 3 0.001 -l 10 -M 3 -a 1 seed 1xxx
#
#default, good enough for most, takes about 5 hours
#python tumbler.py seed 1xxx
#
#for quick testing
#python tumbler.py -N 2 1 -c 3 0.001 -l 0.1 -M 3 -a 0 seed 1xxx 1yyy

What is "seed"?

I was thinking of trying:
Code:
python tumbler.py -a 4 -N 5 3 -C 5 -M 5 wallet.json [btc_address]

Thoughts?

Also would be awesome to be able to provide all the addresses on the command line at once. Edit: looks like you can, I just provided to many on first run.

Again great and important project, excited to follow and contribute if I can...
full member
Activity: 223
Merit: 132
Did it hang because one of the participants dropped out?

Exactly.  Their bot may have hung, or their bitcoind hung if they are using rpc, but it means the transaction won't be happening.  You can use the -P option with sendpayment.py to pick your maker, allowing you to avoid non-responding makers.
hero member
Activity: 726
Merit: 500
How long should it take to send a payment? I tried sending a payment of about 1 BTC, and it just sat there for an hour.  Nothing changed in the wallet; all amounts at m/0/0/0/ are unchanged. I did get one interesting message shortly after initiating the payment: nonrespondants = [u'SiegeOfJa'].  Did it hang because one of the participants dropped out?
hero member
Activity: 726
Merit: 500
I'm having a little trouble getting joinmarket working with bitcoind (to be honest, I haven't tried it yet with blockr.io).  Here's a dump of what happens:

Code:
$ python wallet-tool.py wallet.json
Enter wallet decryption passphrase:
[2015/07/13 13:35:20] requesting wallet history
[2015/07/13 13:35:34] rpc: ['~/bitcoin-cli', '-datadir=~/.bitcoin', 'getaddressesbyaccount', 'joinmarket-wallet-85993a']
Traceback (most recent call last):
  File "wallet-tool.py", line 54, in
    common.bc_interface.sync_wallet(wallet)
  File "/home/cryptoman/joinmarket/lib/blockchaininterface.py", line 31, in sync_wallet
    self.sync_addresses(wallet)
  File "/home/cryptoman/joinmarket/lib/blockchaininterface.py", line 388, in sync_addresses
    imported_addr_list = json.loads(self.rpc(['getaddressesbyaccount', wallet_name]))
  File "/home/cryptoman/joinmarket/lib/blockchaininterface.py", line 365, in rpc
    res = subprocess.check_output(self.command_params + args)
  File "/usr/lib/python2.7/subprocess.py", line 566, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
$

What file is it looking for?  It's obviously finding and decrypting the wallet file OK.  I tried creating an account with the name "joinmarket-wallet-85993a" in bitcoind, but that didn't help.  RPC is set up properly as far as I can tell.

Thanks.

EDIT: Found the problem.  It didn't like the "~/" path.  Used the full path "/home/cryptoman/" and it worked fine.
sr. member
Activity: 261
Merit: 523
LDA
newbie
Activity: 87
Merit: 0
Hi belcher,

Thanks for answer and congrats for nice project. Smiley

1) Weird, my ob-watcher.py crash under python. Is the reason that my wallet is without any BTC? Smiley

Very cool this site, good to have an idea, I would love to see more people adopting it.

2) If someone is allowed to search blockchain and find tx id of transactions with JoinMarket he/she could follow all transactions and break the anonymity, not?

3) As you see I'm new on this. I looked at your example:

Quote
$ python wallet-tool.py wallet.json
Enter wallet decryption passphrase:
[2015/04/23 02:04:13] downloading wallet history
[2015/04/23 02:04:26] blockr sync_unspent took 2.70895719528sec
mixing depth 0 m/0/0/
 receive addresses m/0/0/0/
  m/0/0/0/000 1JPFmg1RSa2gtzcsow9fBjwdvWPsxcP3eX  new 0.00000000 btc
  m/0/0/0/001 1AaCpeMit59ExfSvP3M3bTnMkhXgecSPeY  new 0.00000000 btc
  m/0/0/0/002 1NmDrVbtk6kfAYbBVo7Miv8eCYHHefZkjs  new 0.00000000 btc
  m/0/0/0/003 1NKitLXm7FdgbHuENvFXRCxVH32N5XXMQ5  new 0.00000000 btc
  m/0/0/0/004 1EwkvF8SrHLh17LKCNQ9w4u4HY2akuzhx3  new 0.00000000 btc
  m/0/0/0/005 1HkHyB8DbZBNvZYwyAutgedaBSsrNUDt7G  new 0.00000000 btc
 change addresses m/0/0/1/
for mixdepth=0 balance=0.00000000btc
mixing depth 1 m/0/1/
 receive addresses m/0/1/0/
  m/0/1/0/000 1LQw8K7V2KQePFVscLKiiH1NU2v6KzwdhW  new 0.00000000 btc
  m/0/1/0/001 1EcZ7w1EEb1UK1qWYT6FMLsbRoizFCfAZ7  new 0.00000000 btc
  m/0/1/0/002 1CV7L2b23sEYNhnu35MP9gbzPAD3j3ofgc  new 0.00000000 btc
  m/0/1/0/003 1DMYRugQNJZRQPcAPAYBcE1p9u15VFTkD9  new 0.00000000 btc
  m/0/1/0/004 1CCnPgGhecXmFz8DrB3Wew9kHT1En53Lq   new 0.00000000 btc
  m/0/1/0/005 1LuwwyEv86BV4miaKVScsFxE4rrKngVt8F  new 0.00000000 btc
 change addresses m/0/1/1/
for mixdepth=1 balance=0.00000000btc
$

My output is a bit different, I have mixing depth 1 to 4 and each has 5 address if I remember well. Is mine wrong?

My understanding is that I should use each of these addresses for both send and receive BTC, right? So, why so many addresses? Use as random as possible increase my anonymity?

Recover a wallet from a bitcoin is a feature that exist on all BTC wallet programs? I'm asking because it's strange to me, if BTC is not centralized and there is no server, suppose that I delete my wallet.json, how can I recover everything again from the 12 words seed? And how do they know that my password mismatch (it should not be stored just locally on my computer)?

4) You are correct. Sorry for dumb question, but what is difference of a internal and real wallet? A wallet is composed of several addresses, right? And an internal wallet? Exist transactions for internal wallets?

5) Got it, thanks. This is the point that I don't understand, to be hones it's the reason of my question of how anyone could recover my wallet with 12 seed words since all is decentralized.

6) Please, don't take me wrong, but difficult is relative. For example, you master the process and understand a lot of BTC. If you are determined, are you able to track someone transactions?

7) I understand. So can I (or should I) use JoinMarket with an wallet software such as Electrum? On my mind it was supposed to be a wallet too. If I need to use both, how do I know when use each?

When I send money to someone via JoinMarket does it display the TX id on the command output?

8 ) Understood. I assume that Bitcoin core is the default, correct? However, if I remember well there is a part of the software that says that use one of them affect privacy / anonymity, right?

On the worst case, suppose that someone was using blockr.io and they are not running 0.10, what happens? Can this person loose his money? Or it will just take more time?

Again, thanks so much and sorry for too much big and dumb questions. I hope they could help other users.
sr. member
Activity: 261
Merit: 523
I found it by accident and it's super cool. I would be thankful if you could answer a few questions.

1) I saw a chart with name of wallets of investors and values. Where is it available?

2) Is there a way to see how many coins are happening per day or hour and average value?

3) The script generates a "HD wallet". However on the commands there is no output. What is the output? How many address it generate? For both send and receive or they should be exclusive?

4) Really idiot question, but I see the transactions are with internal wallet, what is the benefit? I mean, internal transactions are not public, right?

5) If we could recover the whole wallet and money with the key, it means that my coins are not with me, instead they are on a third-party server, right? What means if someone hack this system? I mean, what security do we have?

6) In practice, have someone tried to track the coins joined? How hard was it? Was possible?

Thanks.

1) It can be seen by ob-watcher.py script, the same thing can be seen on pages run by volunteers. e.g. http://joinmarket.io/

2) Not right now, this will probably be written in the future. See https://github.com/chris-belcher/joinmarket/issues/19

3) Read this https://github.com/chris-belcher/joinmarket/wiki/Using-the-JoinMarket-internal-wallet

4)
I think you're talking about tumbler.py
Those are coinjoin transactions back to your internal wallet. They increase the anonymity set.

5) No they are not on a third party server. Your security is your ability to keep your seed secret and computer free from malware.

6) The CoinJoin transactions used by JoinMarket would make that difficult.

7) Is there a way to sign message with JoinMarket?

No, that's not what its for.

8) What about the spv mining fork?

If you use JoinMarket with Bitcoin Core you are not vulnerable, because it only works with 0.10 or above which will follow the correct fork if it happens.
If you don't use Bitcoin Core then JoinMarket will use blockr.io and you'll have to ask them if they run 0.10 nodes or above as recommended.
LDA
newbie
Activity: 87
Merit: 0
I found it by accident and it's super cool. I would be thankful if you could answer a few questions.

1) I saw a chart with name of wallets of investors and values. Where is it available?

2) Is there a way to see how many coins are happening per day or hour and average value?

3) The script generates a "HD wallet". However on the commands there is no output. What is the output? How many address it generate? For both send and receive or they should be exclusive?

4) Really idiot question, but I see the transactions are with internal wallet, what is the benefit? I mean, internal transactions are not public, right?

5) If we could recover the whole wallet and money with the key, it means that my coins are not with me, instead they are on a third-party server, right? What means if someone hack this system? I mean, what security do we have?

6) In practice, have someone tried to track the coins joined? How hard was it? Was possible?

Thanks.
sr. member
Activity: 469
Merit: 253
I believe that the eventual fee you can earn as investor is tiny.  (Even an inflow of more takers when the project is more mature won't help here, since there will also be an inflow of makers.) 

This is exactly what we hypothesized at the initiation of the project - tiny, close to zero fees. But in a way that dodges the question - how tiny is tiny? Smiley

It's a market, so it's not as if we're trying to "fix" the price. But we're all curious where it will settle. My statement above was that I don't think any economic modelling is worthwhile for now, the unknowns are too big.
legendary
Activity: 1135
Merit: 1166
On other topics

  • The rates in the orderbook are really low now. Maybe this is where the market will end up but I also suspect some people are offering really low rates because they believe in Joinmarket and want to provide early-on liquidity. This is counterproductive though because it discourages investors from joining. When a prospective investor sees that there is 140 BTC at 0.03% there is no reason for them to offer 100 BTC at a higher (normal?) rate.


Bear in mind that the advertised rates are per transaction. If you average one transaction per day at 0.03%, that's a monthly return closer to 1%. It's not yet clear what frequency individual investors can expect, but we've started working on a tool for detecting likely Joinmarket activity in the blockchain, and guessing the earned fees.
After 2 days without transactions the makers lower the fees, thats it. A good integration to some client could increase the bid

I agree; after the first few weeks, it was clear that this was the dynamic. A significant steady flow of 'users' (liquidity takers) is almost certainly going to require some kind of wallet integration, and that's a big project. Meanwhile, tech savvy people try it out by setting up yieldgenerator bots and are surprised when there isn't a constant flow of free money Smiley And they reduce fees presumably out of impatience.

There are users, even today; but the number is small (and to be honest I may not have a realistic picture, since I am not constantly reducing my fees like it seems others are, so I am probably not seeing almost any of the activity. This is one of the curious things about thinking of JoinMarket as a "service" - it is difficult to see it happening (although with some effort you can get a good idea)).

What "should" the fees be? It has been discussed but I'm of the opinion it's impossible to come up with a model that isn't dominated by its assumptions, so it's probably not worth bothering with.



I think almost zero fees are unavoidable.  Since this project is, by definition, a market, there will be competition.  And since the cost involved for makers is not very high (a little risk for putting your coins on a server, but not too much since you don't have to trust anyone), I believe that the eventual fee you can earn as investor is tiny.  (Even an inflow of more takers when the project is more mature won't help here, since there will also be an inflow of makers.)  But I don't think this is a problem.  It will help make coinjoins more used in the ecosystem, which is a good thing.  And if too small fees turn out to be a problem (i. e., not enough makers willing to provide liquidity), the fees will increase themselves due to market pressure until an equilibrium is reached again.
sr. member
Activity: 469
Merit: 253
On other topics

  • The rates in the orderbook are really low now. Maybe this is where the market will end up but I also suspect some people are offering really low rates because they believe in Joinmarket and want to provide early-on liquidity. This is counterproductive though because it discourages investors from joining. When a prospective investor sees that there is 140 BTC at 0.03% there is no reason for them to offer 100 BTC at a higher (normal?) rate.


Bear in mind that the advertised rates are per transaction. If you average one transaction per day at 0.03%, that's a monthly return closer to 1%. It's not yet clear what frequency individual investors can expect, but we've started working on a tool for detecting likely Joinmarket activity in the blockchain, and guessing the earned fees.
After 2 days without transactions the makers lower the fees, thats it. A good integration to some client could increase the bid

I agree; after the first few weeks, it was clear that this was the dynamic. A significant steady flow of 'users' (liquidity takers) is almost certainly going to require some kind of wallet integration, and that's a big project. Meanwhile, tech savvy people try it out by setting up yieldgenerator bots and are surprised when there isn't a constant flow of free money Smiley And they reduce fees presumably out of impatience.

There are users, even today; but the number is small (and to be honest I may not have a realistic picture, since I am not constantly reducing my fees like it seems others are, so I am probably not seeing almost any of the activity. This is one of the curious things about thinking of JoinMarket as a "service" - it is difficult to see it happening (although with some effort you can get a good idea)).

What "should" the fees be? It has been discussed but I'm of the opinion it's impossible to come up with a model that isn't dominated by its assumptions, so it's probably not worth bothering with.

legendary
Activity: 1135
Merit: 1166
Which license is the code actually under?  I assume it is a "free" one, but it seems to be not specified (unless I miss it).  I think it would be good to have it in the README or to have a COPYING file in the repository.  Also a short header notice for the source files.
full member
Activity: 142
Merit: 104
On other topics

  • The rates in the orderbook are really low now. Maybe this is where the market will end up but I also suspect some people are offering really low rates because they believe in Joinmarket and want to provide early-on liquidity. This is counterproductive though because it discourages investors from joining. When a prospective investor sees that there is 140 BTC at 0.03% there is no reason for them to offer 100 BTC at a higher (normal?) rate.


Bear in mind that the advertised rates are per transaction. If you average one transaction per day at 0.03%, that's a monthly return closer to 1%. It's not yet clear what frequency individual investors can expect, but we've started working on a tool for detecting likely Joinmarket activity in the blockchain, and guessing the earned fees.
After 2 days without transactions the makers lower the fees, thats it. A good integration to some client could increase the bid
newbie
Activity: 42
Merit: 0
On other topics

  • The rates in the orderbook are really low now. Maybe this is where the market will end up but I also suspect some people are offering really low rates because they believe in Joinmarket and want to provide early-on liquidity. This is counterproductive though because it discourages investors from joining. When a prospective investor sees that there is 140 BTC at 0.03% there is no reason for them to offer 100 BTC at a higher (normal?) rate.


Bear in mind that the advertised rates are per transaction. If you average one transaction per day at 0.03%, that's a monthly return closer to 1%. It's not yet clear what frequency individual investors can expect, but we've started working on a tool for detecting likely Joinmarket activity in the blockchain, and guessing the earned fees.
legendary
Activity: 1135
Merit: 1166
From: https://github.com/chris-belcher/joinmarket/wiki/Running-JoinMarket-with-Bitcoin-Core-full-node
Quote
You will need:
  • Bitcoin Core version 0.10 or above. The import watch-only address feature is required.
  • Fully downloaded and verified blockchain

Is/will be possible use a pruned blockchain?

Yes, although right now the wallet code is disabled for pruning so itcan't be used for JoinMarket.

I should add that the current development code enables the wallet in pruned mode.  I've already tried out using such a node with JoinMarket, and it seemed to work fine.  So you can already do it if you feel risky to run the development code, or else after the next version is released.
sr. member
Activity: 261
Merit: 523
From: https://github.com/chris-belcher/joinmarket/wiki/Running-JoinMarket-with-Bitcoin-Core-full-node
Quote
You will need:
  • Bitcoin Core version 0.10 or above. The import watch-only address feature is required.
  • Fully downloaded and verified blockchain

Is/will be possible use a pruned blockchain?

Yes, although right now the wallet code is disabled for pruning so itcan't be used for JoinMarket.
full member
Activity: 142
Merit: 104
From: https://github.com/chris-belcher/joinmarket/wiki/Running-JoinMarket-with-Bitcoin-Core-full-node
Quote
You will need:
  • Bitcoin Core version 0.10 or above. The import watch-only address feature is required.
  • Fully downloaded and verified blockchain

Is/will be possible use a pruned blockchain?
Pages:
Jump to: