Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192] helo=mx.sourceforge.net) by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1WdEis-0008F0-2X for bitcoin-development@lists.sourceforge.net; Thu, 24 Apr 2014 08:09:34 +0000 Received-SPF: pass (sog-mx-2.v43.ch3.sourceforge.com: domain of gmail.com designates 209.85.219.49 as permitted sender) client-ip=209.85.219.49; envelope-from=mh.in.england@gmail.com; helo=mail-oa0-f49.google.com; Received: from mail-oa0-f49.google.com ([209.85.219.49]) by sog-mx-2.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1WdEiq-0001XW-8x for bitcoin-development@lists.sourceforge.net; Thu, 24 Apr 2014 08:09:34 +0000 Received: by mail-oa0-f49.google.com with SMTP id o6so2223334oag.8 for ; Thu, 24 Apr 2014 01:09:27 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.182.27.133 with SMTP id t5mr229074obg.65.1398326966935; Thu, 24 Apr 2014 01:09:26 -0700 (PDT) Sender: mh.in.england@gmail.com Received: by 10.76.96.180 with HTTP; Thu, 24 Apr 2014 01:09:26 -0700 (PDT) In-Reply-To: References: <53581480.5060103@gk2.sk> <201404231944.14256.luke@dashjr.org> <5358B51F.8010202@gmx.de> Date: Thu, 24 Apr 2014 10:09:26 +0200 X-Google-Sender-Auth: CMocafwVrtaFmZtVLTBEJWfFnV8 Message-ID: From: Mike Hearn To: Pieter Wuille Content-Type: multipart/alternative; boundary=001a113356c624e6ee04f7c55ea6 X-Spam-Score: -0.5 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (mh.in.england[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 1.0 HTML_MESSAGE BODY: HTML included in message 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Headers-End: 1WdEiq-0001XW-8x Cc: Bitcoin Dev Subject: Re: [Bitcoin-development] New BIP32 structure X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Apr 2014 08:09:34 -0000 --001a113356c624e6ee04f7c55ea6 Content-Type: text/plain; charset=UTF-8 Right. So part of this is my fault, I'm afraid, because I do not intend to implement any kind of subwallet/account support in bitcoinj. My reasons are: 1. The bitcoinj API already lets you create and use multiple wallets. What's more, because of the desire to do key rotation (think rotating a previously unencrypted wallet to an encrypted one that is stored on SSD's that cannot reliably erase data), a bitcoinj wallet can actually contain multiple BIP32 seeds and hierarchies at once, although only the last one will be used for vending addresses. So adding subwallet support onto this makes it even more complicated. 2. If there was a much better user experience to be enabled by this, it may be worth it, but I believe many people will find subwallets rather confusing. They don't match the analogy of bank accounts in several ways. For instance, transferring money across them leaks private data and costs miners fees, neither of which are true with banks. Also it differs in a more important way. People have different bank accounts because those accounts implement different policies. Current accounts may pay a lower interest rate than savings accounts, but have different features, and accounts can be used as security boundaries i.e. no card withdrawals from savings. But "subwallets" are not like this. The only justification for their existence is to avoid outputs being merged together to make payments - a subtle technical detail of the protocol that users are ill equipped to understand. If someone asked me "why should I create a second account" I would be unable to give them a satisfying answer without first teaching them about how the Bitcoin protocol works and the privacy implications of that, which is practically a lecture sized topic. 3. MultiBit did support multiple wallets for a long time (just by creating multiple wallet files and using the support in bitcoinj for running them in parallel), but they decided to remove this feature in MultiBit HD because it caused support headaches. People would stash money in one wallet or the other, close the wallet and then forget and think they had lost it, etc. It may be that TREZOR type subwallets don't suffer this confusion because they can't be moved around or "closed" in the same way a file can be, but still, this is a data point against multiple simultaneous wallets. At least for products targeting entry level consumers. Whilst I can well believe there are TREZOR users who are asking for this feature today, currently the costs feel a bit higher than the benefits. It would be rather nice to be able to type in a mnemonic code that myTREZOR was initialised with and duplicate that wallet into a bitcoinj based wallet app. But if I have to implement subwallets and expose this in the API, and if all wallet authors that want to be able to share a wallet with myTREZOR have to expose subwallets in their GUIs too, even though the concept may prove confusing and hard to explain, then it might be more tempting to just tell users that want to switch wallet apps to send the money via the block chain instead. On Thu, Apr 24, 2014 at 9:10 AM, Pieter Wuille wrote: > On Thu, Apr 24, 2014 at 8:54 AM, Thomas Voegtlin wrote: > >> Why do clients need to use the features in BIP 64? If Electrum doesn't > want to > >> use accounts, [...] > > > > To clarify: > > Electrum plans to have bip32 accounts; Multibit will not, afaik. > > To clarify: > BIP64 has a much stricter definition for accounts than BIP32. > > In BIP32, it is not well specified what accounts are used for. They > can be used for "subwallets", "receive accounts" (as in bitcoind's > account feature), "recurring payments", part of a chain used as > multisig addresses, ... determined individually for each index. > > In BIP64, they are strictly used for subwallets, and can't be used by > anything else. > > -- > Pieter > > > ------------------------------------------------------------------------------ > Start Your Social Network Today - Download eXo Platform > Build your Enterprise Intranet with eXo Platform Software > Java Based Open Source Intranet - Social, Extensible, Cloud Ready > Get Started Now And Turn Your Intranet Into A Collaboration Platform > http://p.sf.net/sfu/ExoPlatform > _______________________________________________ > Bitcoin-development mailing list > Bitcoin-development@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/bitcoin-development > --001a113356c624e6ee04f7c55ea6 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Right. So part of this is my fault, I'm afraid, becaus= e I do not intend to implement any kind of subwallet/account support in bit= coinj. My reasons are:
  1. The bitcoinj API already lets you create= and use multiple wallets. What's more, because of the desire to do key= rotation (think rotating a previously unencrypted wallet to an encrypted o= ne that is stored on SSD's that cannot reliably erase data), a bitcoinj= wallet can actually contain multiple BIP32 seeds and hierarchies at once, = although only the last one will be used for vending addresses. So adding su= bwallet support onto this makes it even more complicated.

  2. If there was a much better user experience to be enabled by th= is, it may be worth it, but I believe many people will find subwallets rath= er confusing. They don't match the analogy of bank accounts in several = ways. For instance, transferring money across them leaks private data and c= osts miners fees, neither of which are true with banks.=C2=A0

    Also it differs in a more important way. People have different bank acc= ounts because those accounts implement different policies. Current accounts= may pay a lower interest rate than savings accounts, but have different fe= atures, and accounts can be used as security boundaries i.e. no card withdr= awals from savings. But "subwallets" are not like this. The only = justification for their existence is to avoid outputs being merged together= to make payments - a subtle technical detail of the protocol that users ar= e ill equipped to understand. If someone asked me "why should I create= a second account" I would be unable to give them a satisfying answer = without first teaching them about how the Bitcoin protocol works and the pr= ivacy implications of that, which is practically a lecture sized topic.

  3. MultiBit did support multiple wallets for a long time (just by= creating multiple wallet files and using the support in bitcoinj for runni= ng them in parallel), but they decided to remove this feature in MultiBit H= D because it caused support headaches. People would stash money in one wall= et or the other, close the wallet and then forget and think they had lost i= t, etc. It may be that TREZOR type subwallets don't suffer this confusi= on because they can't be moved around or "closed" in the same= way a file can be, but still, this is a data point against multiple simult= aneous wallets. At least for products targeting entry level consumers.
Whilst I can well believe there are TREZOR users who are asking f= or this feature today, currently the costs feel a bit higher than the benef= its.

It would be rather nice to be able to t= ype in a mnemonic code that myTREZOR was initialised with and duplicate tha= t wallet into a bitcoinj based wallet app. But if I have to implement subwa= llets and expose this in the API, and if all wallet authors that want to be= able to share a wallet with myTREZOR have to expose subwallets in their GU= Is too, even though the concept may prove confusing and hard to explain, th= en it might be more tempting to just tell users that want to switch wallet = apps to send the money via the block chain instead.




On Thu, Apr 24, 2014 at 9:10 AM, Pieter Wuille <pieter.wuille@gmail.com> wrote:
On Thu, Apr 24, 2014 at 8:54= AM, Thomas Voegtlin <thomasv1@gmx.de= > wrote:
>> Why do clients need to use the features in BIP 64? If Electrum doe= sn't want to
>> use accounts, [...]
>
> To clarify:
> Electrum plans to have bip32 accounts; Multibit will not, afaik.

To clarify:
BIP64 has a much stricter definition for accounts than BIP32.

In BIP32, it is not well specified what accounts are used for. They
can be used for "subwallets", "receive accounts" (as in= bitcoind's
account feature), "recurring payments", part of a chain used as multisig addresses, ... determined individually for each index.

In BIP64, they are strictly used for subwallets, and can't be used by anything else.

--
Pieter

---------------------------------------------------------------------------= ---
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.n= et/sfu/ExoPlatform
_______________________________________________
Bitcoin-development mailing list
Bitcoin-develo= pment@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-de= velopment

--001a113356c624e6ee04f7c55ea6--