Author

Topic: Using multiple wallets with a single daemon (Read 1672 times)

full member
Activity: 350
Merit: 100
August 26, 2011, 10:44:59 PM
#19
The relevant law is the Australian Anti Money Laundering & Counter Terrorism Financing Act 2006.

Section 4 deals with reporting requirements for services.

Quote
A reporting entity must carry out a procedure to verify a customer's identity before providing a designated service to the customer. However, in special cases, the procedure may be carried out after the provision of the designated service.

Section 6 defines the services.

Section 5 defines the various words.

The definitions of "Person" and "Money" are bulletproof. However, within designated services, there is a turn of wording I believe may have been written to invalidate applicability to accounts comprised solely of virtual currency (and with a sympathetic judge, could well exclude any form of money, great job Parliament!)

However further down Section 6 it also provides for depository services other than accounts.

Quote
accepting money on deposit (otherwise than by way of deposit to an account), where the deposit-taker is:

Allowing customers' bitcoins to be stored in a server-owned wallet is a no-brainer for 'deposit' (which, by the way, isn't defined in the law.) However, simply storing a wallet.dat for a customer, basically acting as a file host since that wallet will be directly accessible and downloadable, and since it's the blockchain that manages it, arguing that the wallet.dat is a "deposit" is tenuous at best.

I've tried to find relevant court cases and decisions, but I haven't found any that address the depository issue, so if it does end up in court it'll be a landmark.
sr. member
Activity: 314
Merit: 250
@ruski: Can you post those laws here or link them and point out the paragraphs you are struggling on?

Just an idea - perhaps someone can describe another solution.
full member
Activity: 350
Merit: 100
All right. I have to admit that I have been successfully trolled by ruski. Props to him.

Lol I'm not trolling. @ Furyan, thanks. I'll prove you wrong 2112 Cheesy
full member
Activity: 175
Merit: 102
Probably, but it's still hard to imagine running 500 instances without the server soiling it's pants.
Besides, 500 instances would mean 500 bitcoin customers for a single hoster. This is somewhere between science fiction and fantasy for now.

The only real hope to get out of this predicament is with libbitcoin crew. I sincerely hope they won't hoist themselves on their own petard.

I don't know what libbitcoin is, but it's not science fiction/fantasy. My service is targeted to real businesses with a real plan to get it to them. 500 customers is a starting point, not a dream. Also, if libbitcoin is a wallet service, that'd be a resounding NO.

@ 2112, are you sure it would be so hard to modify it? My favoured language is VB/VB.NET, and while I can read C++ and it won't take long to pick up, I won't get anywhere trying to read the entire program for what I need. If you could find the initialization code ie. sub Main for the whole program, so I can work from there, it'd be a big help. May not be so difficult as you think.



The bitcoin code is incredibly complex.  Even seasoned C++ developers are forced to slow down to digest it.  Thus, by telling you that main() and AppInit2 are found at the end of init.cpp, it doesn't really help you.  The block chain management is spread across a half dozen classes and files.  Most of it is in main.cpp.

The wallet code may be easier, it has all been moved to wallet.h/.cpp and it SEEMS like there are fewer calls into it now.  I haven't gone to great lengths to verify that.
legendary
Activity: 2128
Merit: 1073
All right. I have to admit that I have been successfully trolled by ruski. Props to him.
full member
Activity: 350
Merit: 100
Probably, but it's still hard to imagine running 500 instances without the server soiling it's pants.
Besides, 500 instances would mean 500 bitcoin customers for a single hoster. This is somewhere between science fiction and fantasy for now.

The only real hope to get out of this predicament is with libbitcoin crew. I sincerely hope they won't hoist themselves on their own petard.

I don't know what libbitcoin is, but it's not science fiction/fantasy. My service is targeted to real businesses with a real plan to get it to them. 500 customers is a starting point, not a dream. Also, if libbitcoin is a wallet service, that'd be a resounding NO.

@ 2112, are you sure it would be so hard to modify it? My favoured language is VB/VB.NET, and while I can read C++ and it won't take long to pick up, I won't get anywhere trying to read the entire program for what I need. If you could find the initialization code ie. sub Main for the whole program, so I can work from there, it'd be a big help. May not be so difficult as you think.

legendary
Activity: 2128
Merit: 1073
Probably, but it's still hard to imagine running 500 instances without the server soiling it's pants.
Server wouldn't have a problem. The network will have a problem and in particular IRC server that distributes the initial peer addresses.

Besides, 500 instances would mean 500 bitcoin customers for a single hoster. This is somewhere between science fiction and fantasy for now.

The only real hope to get out of this predicament is with libbitcoin crew. I sincerely hope they won't hoist themselves on their own petard.
sr. member
Activity: 266
Merit: 250
Modifying bitcoind to share the blockchain copy is at least an order of magnitude less work than modifying it to use or share multiple wallets.

Probably, but it's still hard to imagine running 500 instances without the server soiling it's pants.
legendary
Activity: 2128
Merit: 1073
If you manage your own hosting and can obtain the help of a skilled C++ programmer, there is reasonably simple solution by running a bitcoind modified to share the block chain database. Take a look at my previous post:

https://bitcointalksearch.org/topic/m.464460

Modifying bitcoind to share the blockchain copy is at least an order of magnitude less work than modifying it to use or share multiple wallets.
full member
Activity: 350
Merit: 100
Boy oh boy is an expression, lol. Like aw c'mon or ah jeez.. irrespective of gender.  Cheesy
sr. member
Activity: 314
Merit: 250
boy? mh..  Cheesy

I doan know nothing about Australian measures in law - I suggest to work around things that cannot be solved or drop the idea.

But still it would be nice to know if there are other solutions out there..
full member
Activity: 350
Merit: 100
Boy oh boy.. nice work finding out about that. It still wont cut it though, sadly. Adding existing wallet data to a new one/my existing one is analogous to using accounts.

The reason I'm being so anal about it is that Australian law is very restrictive. If it can be said that in any way I'm providing an account, or holding coins in trust, anti money-laundering record keeping requirements apply, ie. the 7 year standard+identifying all customers. I do not believe hosting an accessible externally managed (ie blockchain) file would qualify, and I would like to keep as many internal trans. as possible 100% record free. All the convenience of a payment processor, all the protection of the raw blockchain.
sr. member
Activity: 314
Merit: 250
vv01f says you can run multiple daemons on different hosts/ports but actually it can be the same host (different ports).

yes hosts OR ports, so both is possible. but when in need of more than 10 daemons/wallets there is a cost position (startup needs some cpu and chain needs some space).
if the initialising of different wallets can be done by one daemon while using the same blockchain, that would be very nice - but prolly you'd best ask the coredevs about that.
I think it would be very interesiting to many businesses as walletmanagement is a great upcoming service.

I just yoined the dev-channel for that question:
Quote from: icr:#bitcoin-dev_110824
10:53   vv01f   there was a question in the forums: is it possible to use different wallets with a single instance of bicoin-daemon - so to either switch between wallets or handle multiple ones? if not, any plans or other solutions to that?
10:55   tcatm   vv01f: wallet export/import is the closest we'll have
10:56   vv01f   any schedule or prio on that matter?
10:57   vv01f   dunno if some wallet-service do contribute on those functions - but i assume they have some solution for those problems (offline wallet etc.)
10:57   tcatm   https://github.com/bitcoin/bitcoin/pull/220
10:57   vv01f   thank you very much Smiley
so this could be something to use then. -> discussion
sr. member
Activity: 266
Merit: 250
Actually, it would end up at more around the 500 copies mark, not to mention 500 clients all taking up bandwidth keeping up with the blockchain. Having a single daemon able to do it would cut that wait out of customer connection and transaction time, and I'm aiming for real-time store counter transactions.

Quote
datadir=
I may look into the source of the daemon itself. It may be possible to have it reinitialise itself with a new wallet without shutting down. Keyword 'may,' not sure if I'll have the patience or enough knowledge of C++ to read blindly until I find the right subs to edit.

Well, cool, if you get it working I'll pay 1 btc for a copy of it.

By the way, I'm not so sure bandwidth would be an issue... maybe I'm wrong but I thought only the default 8332/8333 copy would use up bandwidth and the rest would be 'internal' bandwidth as the secondary copies would simply 'download' the blockchain from the bitcoin1/ folder on localhost - Well, you could force it to do this by having the secondary copies only connect to the main one via the -connect switch.

Someone more knowledgeable please tell me if this is all false.
full member
Activity: 350
Merit: 100
Actually, it would end up at more around the 500 copies mark, not to mention 500 clients all taking up bandwidth keeping up with the blockchain. Having a single daemon able to do it would cut that wait out of customer connection and transaction time, and I'm aiming for real-time store counter transactions.

Quote
datadir=
I may look into the source of the daemon itself. It may be possible to have it reinitialise itself with a new wallet without shutting down. Keyword 'may,' not sure if I'll have the patience or enough knowledge of C++ to read blindly until I find the right subs to edit.
sr. member
Activity: 266
Merit: 250
you could of course implement a function to start and stop daemons as you like to use another wallet, beware: the startup takes some time.

I know, thats why I'm not doing it that way. I suppose it would be possible if the 20 second delay could be swallowed. Having it work this way is actually a vital legal req for my business.. so I can't just give up.. Lips sealed

Thanks for confirming what I already suspected.

Why does it have to be a single daemon? vv01f says you can run multiple daemons on different hosts/ports but actually it can be the same host (different ports).

make 2 seperate bitcoin folders.
in one of them, edit the bitcoin.conf so that it uses different ports

run bitcoin1/bitcoind
run bitcoin2/bitcoind -datadir=bitcoin2/

The catch is you'll need room to store 2 copies of the block chain.
full member
Activity: 350
Merit: 100
you could of course implement a function to start and stop daemons as you like to use another wallet, beware: the startup takes some time.

I know, thats why I'm not doing it that way. I suppose it would be possible if the 20 second delay could be swallowed. Having it work this way is actually a vital legal req for my business.. so I can't just give up.. Lips sealed

Thanks for confirming what I already suspected.
sr. member
Activity: 314
Merit: 250
afaik accs via jsonrpc are only tagged to addresses: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list#Full_list, see setaccount .
but you oviously can run multiple daemons on different hosts/ports and communicate with all of them.

you could of course implement a function to start and stop daemons as you like to use another wallet, beware: the startup takes some time. at least i never read of changing the wallet while bitcoin/bitcoind is running.
full member
Activity: 350
Merit: 100
Is it possible to use multiple wallets, one after another as opposed to all at once, with a single bitcoind.exe? I've read the wiki, and found references to accounts, but nothing about opening or reading seperate wallet files.
Jump to: