Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1WT8ed-0007cF-GH for bitcoin-development@lists.sourceforge.net; Thu, 27 Mar 2014 11:39:27 +0000 Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of gmail.com designates 209.85.214.169 as permitted sender) client-ip=209.85.214.169; envelope-from=mh.in.england@gmail.com; helo=mail-ob0-f169.google.com; Received: from mail-ob0-f169.google.com ([209.85.214.169]) by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1WT8ec-0002dr-Gh for bitcoin-development@lists.sourceforge.net; Thu, 27 Mar 2014 11:39:27 +0000 Received: by mail-ob0-f169.google.com with SMTP id va2so4143796obc.28 for ; Thu, 27 Mar 2014 04:39:21 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.182.128.138 with SMTP id no10mr1077460obb.32.1395920361183; Thu, 27 Mar 2014 04:39:21 -0700 (PDT) Sender: mh.in.england@gmail.com Received: by 10.76.71.231 with HTTP; Thu, 27 Mar 2014 04:39:21 -0700 (PDT) In-Reply-To: <53340426.4040208@gmx.de> References: <53340426.4040208@gmx.de> Date: Thu, 27 Mar 2014 12:39:21 +0100 X-Google-Sender-Auth: jgeINzGtWxHee7jIC_KiaBSuwNY Message-ID: From: Mike Hearn To: Thomas Voegtlin Content-Type: multipart/alternative; boundary=089e0153852e435e4804f5950964 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: 1WT8ec-0002dr-Gh 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, 27 Mar 2014 11:39:27 -0000 --089e0153852e435e4804f5950964 Content-Type: text/plain; charset=UTF-8 > > One issue that I have is bandwidth: Electrum (and mycelium) cannot > watch as many addresses as they want, because this will create too > much traffic on the servers. (especially when servers send utxo merkle > proofs for each address, which is not the case yet, but is planned) > This is surprising and the first time I've heard about this. Surely your constraint is CPU or disk seeks? Addresses are small, I find it hard to believe that clients uploading them is a big drain, and mostly addresses that are in the lookahead region won't have any hits and so won't result in any downloads? This constraint is not so important for bloom-filter clients. Bloom filters are a neat way to encode addresses and keys but they don't magically let clients save bandwidth. A smaller filter results in less upload bandwidth but more download (from the wallets perspective). So I'm worried if you think this will be an issue for your clients: I haven't investigated bandwidth usage deeply yet, perhaps I should. FWIW the current bitcoinj HDW alpha preview pre-gens 100 addresses on both receive and change branches. But I'm not sure what the right setting is. We also have to consider latency. The simplest implementation from a wallets POV is to step through each transaction in the block chain one at a time, and each time you see an address that is yours, calculate the next ones in the chain. But that would be fantastically slow, so we must instead pre-generate a larger lookahead region and request more data in one batch. Then you have to recover if that batch ends up using all the pre-genned addresses. It's just painful. > My opinion, as far as Electrum is concerned, is that merchant accounts > should behave differently from regular user accounts: While merchants > need to generate an unlimited number of receiving addresses, it is also > acceptable for them to have a slightly more complex wallet recovery > procedure > Maybe. I dislike any distinction between users and merchants though. I don't think it's really safe to assume merchants are more sophisticated than end users. > but also because we want fully automated synchronization between different > instances of a wallet, using only no other source of information than > the blockchain. > I think such synchronization won't be possible as we keep adding features, because the block chain cannot sync all the relevant data. For instance Electrum already has a label sync feature. Other wallets need to compete with that, somehow, so we need to build a way to do cross-device wallet sync with non-chain data. --089e0153852e435e4804f5950964 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
One issue that I have is bandwidth: Electrum (an= d mycelium) cannot
watch as many addresses as they want, because this will create too
much traffic on the servers. (especially when servers send utxo merkle
proofs for each address, which is not the case yet, but is planned)

This is surprising and the first time I've= heard about this. Surely your constraint is CPU or disk seeks? Addresses a= re small, I find it hard to believe that clients uploading them is a big dr= ain, and mostly addresses that are in the lookahead region won't have a= ny hits and so won't result in any downloads?

This constraint is not so imp= ortant for bloom-filter clients.

Bloom fil= ters are a neat way to encode addresses and keys but they don't magical= ly let clients save bandwidth. A smaller filter results in less upload band= width but more download (from the wallets perspective). So I'm worried = if you think this will be an issue for your clients: I haven't investig= ated bandwidth usage deeply yet, perhaps I should.

FWIW the current bitcoinj HDW alpha preview pre-gens 10= 0 addresses on both receive and change branches. But I'm not sure what = the right setting is.

We also have to consider lat= ency. The simplest implementation from a wallets POV is to step through eac= h transaction in the block chain one at a time, and each time you see an ad= dress that is yours, calculate the next ones in the chain. But that would b= e fantastically slow, so we must instead pre-generate a larger lookahead re= gion and request more data in one batch. Then you have to recover if that b= atch ends up using all the pre-genned addresses. It's just painful.
=C2=A0
My opinion, as far as Elect= rum is concerned, is that merchant accounts
should behave differently from regular user accounts: While merchants
need to generate an unlimited number of receiving addresses, it is also
acceptable for them to have a slightly more complex wallet recovery
procedure

Maybe. I dislike any distinct= ion between users and merchants though. I don't think it's really s= afe to assume merchants are more sophisticated than end users.
=C2=A0
but also because we want fully a= utomated synchronization between different
instances of a wallet, using only no other source of information than
the blockchain.

I think such synchroniz= ation won't be possible as we keep adding features, because the block c= hain cannot sync all the relevant data. For instance Electrum already has a= label sync feature. Other wallets need to compete with that, somehow, so w= e need to build a way to do cross-device wallet sync with non-chain data.
--089e0153852e435e4804f5950964--