On Fri, Dec 21, 2012 at 3:53 AM, Eric Lombrozo <elombr...@gmail.com> wrote: > I started working on a new feature to allow for watch-only addresses in > wallets. https://github.com/bitcoin/bitcoin/pull/2121 > > In order to integrate this feature nicely into bitcoin / bitcoin, it will be > necessary to disable signing and privkey export operations for watch-only > addresses. Since disabling these things for only some of the keys in a > wallet but not others is an API nightmare and complicates CreateTransaction > logic, I propose adding multiple wallet capabilities and specifying upon > creation whether a wallet is a: > > 1) full signing wallet > - importaddress is disabled. > > 2) watch-only wallet > - signing and privkey export operations are disabled. > - importprivkey only saves the associated address but not the private key. > (behaves like importaddress <address for privkey>) > > In order to do the above, it will be necessary to add multiple wallet > support. Anyhow, that was my initial motivation for multiple wallets - but > obviously, there are a number of other reasons why people might want > multiple wallet support. > > ---------------------- > > Adding the ability to specify multiple wallets with associated names and > passphrases in the config file should be fairly straightforward. However, > exposing multiple wallets via RPC will be tricky as the existing RPC is not > designed to support multiple wallets. > > As to not break compatibility with the existing RPC calls, we can have a > main wallet which is always used as the default wallet. If the user wants to > use a different wallet, the name of the wallet would have to be specified in > the call. Unfortunately, it doesn't look like we can use many of the > existing RPC calls (sendfrom, sendmany,sendtoaddress, etc...) since they all > have optional parameters already and it would be awkward to just tack on the > wallet name parameter at the end. Also, walletpassphrase is problematic as > it is not stateless. So it looks like we need a whole separate set of calls > which require a wallet name and passphrase (if the wallet is encrypted). > > For instance, > walletsendtoaddress <walletname> <passphrase> <bitcoinaddress> <amount> > [comment] [comment-to] > > I welcome any proposals or suggestions as to how this should be done. >
How about a rpc like "usewallet <foo> <normal RPC>" that simply generalizes all the rpcs? And instead of explicitly deactivating rpcs that don't make sense, simply have them return an error. Or, for example, sendtoaddress on a watching wallet should actually return an unsigned raw transaction and a wallet specific message that tells you where to find the private key. I think it's desirable to not break compatibility but for this kind of feature compatibility should not get in the way of doing it right. ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d _______________________________________________ Bitcoin-development mailing list Bitcoin-development@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bitcoin-development