public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Gregory Maxwell <gmaxwell@gmail•com>
To: Eric Lombrozo <elombrozo@gmail•com>
Cc: Bitcoin Dev <bitcoin-development@lists•sourceforge.net>
Subject: Re: [Bitcoin-development] Multiwallet support
Date: Fri, 21 Dec 2012 08:20:29 -0500	[thread overview]
Message-ID: <CAAS2fgRG6kY8ke4hTdUjVBB1dmCppmzwo7qmOM-ytKS1299Z1w@mail.gmail.com> (raw)
In-Reply-To: <B03D534F-BAB6-4068-A8B4-AE28764F3D88@gmail.com>

On Fri, Dec 21, 2012 at 3:53 AM, Eric Lombrozo <elombrozo@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.



  reply	other threads:[~2012-12-21 13:20 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-21  8:53 Eric Lombrozo
2012-12-21 13:20 ` Gregory Maxwell [this message]
2012-12-21 18:11   ` Eric Lombrozo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAAS2fgRG6kY8ke4hTdUjVBB1dmCppmzwo7qmOM-ytKS1299Z1w@mail.gmail.com \
    --to=gmaxwell@gmail$(echo .)com \
    --cc=bitcoin-development@lists$(echo .)sourceforge.net \
    --cc=elombrozo@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox