From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1YyXR2-0005Yo-7B for bitcoin-development@lists.sourceforge.net; Sat, 30 May 2015 03:27:44 +0000 Received-SPF: pass (sog-mx-3.v43.ch3.sourceforge.com: domain of gmail.com designates 209.85.213.172 as permitted sender) client-ip=209.85.213.172; envelope-from=akaramaoun@gmail.com; helo=mail-ig0-f172.google.com; Received: from mail-ig0-f172.google.com ([209.85.213.172]) by sog-mx-3.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1YyXR0-000671-AI for bitcoin-development@lists.sourceforge.net; Sat, 30 May 2015 03:27:44 +0000 Received: by igbpi8 with SMTP id pi8so28376963igb.0 for ; Fri, 29 May 2015 20:27:36 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.42.43.199 with SMTP id y7mr18295183ice.12.1432956456773; Fri, 29 May 2015 20:27:36 -0700 (PDT) Sender: akaramaoun@gmail.com Received: by 10.64.20.229 with HTTP; Fri, 29 May 2015 20:27:36 -0700 (PDT) In-Reply-To: References: Date: Sat, 30 May 2015 03:27:36 +0000 X-Google-Sender-Auth: 5qvNaBuSdt9fcsxRbNODPxEuQ0Y Message-ID: From: Andrew To: Raystonn Content-Type: multipart/alternative; boundary=bcaec519694195aec30517442c8b X-Spam-Score: -0.6 (/) 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 (akaramaoun[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 1.0 HTML_MESSAGE BODY: HTML included in message -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 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: 1YyXR0-000671-AI Cc: Bitcoin Dev Subject: Re: [Bitcoin-development] soft-fork block size increase (extension blocks) Re: Proposed alternatives to the 20MB stepfunction 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: Sat, 30 May 2015 03:27:44 -0000 --bcaec519694195aec30517442c8b Content-Type: text/plain; charset=UTF-8 Hello Adam First of all, thank you for inventing hashcash, which is basically what bitcoin is! Some people have said that my proposal, subject line "Scaling Bitcoin with Subchains" is essentially the idea of blockchain extensions. Though, I think there is quite a difference between what I propose and what you propose. You want to add one optional 10 MB blockchain that synchronizes with the 1 MB blockchain, while I want to add ten 1 MB blockchains that each synchronize with the 1 MB chain (and you can continue like that). I think, as long as we want to keep using blockchains for our cryptocurrency, we will need a tree structure of blockchains in order to scale for an arbitrary number of transactions. With just one 10 MB blockchain, someone who wants to do the lower valued transactions will need to validate all 10 MB, while with ten 1 MB chains, they can choose just the chain or chains that are of interest to them. With a tree structure you get O(a^(n-1)) MB of transactions in the network while each participant only has to validate O(n) MB of transactions (a is just the number of children chains per parent divided by 2, so 5 in the case of 10 children as I described). With just one child chain, you don't get this scaling, and it is pretty much equivalent to increasing the blocksize, though with a soft-fork instead of a hard-fork. I think the actual way that the blockchains interact can be still worked out (Recently I was thinking of maybe creating a contract system or even a decentralized market between chains). But still, everyone should agree that you need this kind of tree structure. Even if you want to only run a pruned node, the CPU usage and memory scales just as bad. The tree structure also has good privacy and miner decentralization properties, as I can write about later. But another thing that I recommend is an "exit plan". What if we go with some kind of soft fork and then in the future some better idea comes along? Then we should have a way to reverse the soft fork. If people already have coins tied up in sidechains, it can be problematic. So perhaps, in case people want to later ditch the soft fork, nodes in the parent chain can allow only old transactions inside the child chains to be accepted back up, while new transactions are not recognized anymore. That way you can limit the amount of useless transaction traffic that results in case we want something else. On Sat, May 30, 2015 at 1:36 AM, Raystonn wrote: > My fear now is too much unnecessary complexity. More complex means > brittle code, but also fewer programmers working on this, which is a risk. > > We shouldn't delay forever until every potential solution has been > explored. There's always going to be one more thing to explore. > On 29 May 2015 5:16 pm, Gavin Andresen wrote: > > RE: soft-forking an "extension block": > > So... go for it, code it up. Implement it in the Bitcoin Core wallet. > > Then ask the various wallet developer how long it would take them to > update their software to support something like this, and do some UI > mockups of what the experience would look like for users. > > If there are two engineering solutions to a problem, one really simple, > and one complex, why would you pick the complex one? > > Especially if the complex solution has all of the problems of the simple > one (20MB extension blocks are just as "dangerous" as 20MB main blocks, > yes? If not, why not?) > > > -- > -- > Gavin Andresen > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Bitcoin-development mailing list > Bitcoin-development@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/bitcoin-development > > -- PGP: B6AC 822C 451D 6304 6A28 49E9 7DB7 011C D53B 5647 --bcaec519694195aec30517442c8b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hello Adam

First of = all, thank you for inventing hashcash, which is basically what bitcoin is!<= br>
Some people have said that my proposal, subject line "Sca= ling Bitcoin with Subchains" is essentially the idea of blockchain ext= ensions. Though, I think there is quite a difference between what I propose= and what you propose. You want to add one optional 10 MB blockchain that s= ynchronizes with the 1 MB blockchain, while I want to add ten 1 MB
=C2=A0blockchains that each synchronize with the 1 MB chain (and you can c= ontinue like that). I think, as long as we want to keep using blockchains f= or our cryptocurrency, we will need a tree structure of blockchains in orde= r to scale for an arbitrary number of transactions. With just one 10 MB blo= ckchain, someone who wants to do the lower valued transactions will need to= validate all 10 MB, while with ten 1 MB chains, they can choose just the c= hain or chains that are of interest to them. With a tree structure you get = O(a^(n-1)) MB of transactions in the network while each participant only ha= s to validate O(n) MB of transactions (a is just the number of children cha= ins per parent divided by 2, so 5 in the case of 10 children as I described= ). With just one child chain, you don't get this scaling, and it is pre= tty much equivalent to increasing the blocksize, though with a soft-fork in= stead of a hard-fork.

I think the actual way that the blockcha= ins interact can be still worked out (Recently I was thinking of maybe crea= ting a contract system or even a decentralized market between chains). But = still, everyone should agree that you need this kind of tree structure. Eve= n if you want to only run a pruned node, the CPU usage and memory scales ju= st as bad. The tree structure also has good privacy and miner decentralizat= ion properties, as I can write about later.

But another thing = that I recommend is an "exit plan". What if we go with some kind = of soft fork and then in the future some better idea comes along? Then we s= hould have a way to reverse the soft fork. If people already have coins tie= d up in sidechains, it can be problematic. So perhaps, in case people want = to later ditch the soft fork, nodes in the parent chain can allow only old = transactions inside the child chains to be accepted back up, while new tran= sactions are not recognized anymore. That way you can limit the amount of u= seless transaction traffic that results in case we want something else.
=

On Sat, May= 30, 2015 at 1:36 AM, Raystonn <raystonn@hotmail.com> wro= te:

My fear now is too muc= h unnecessary complexity.=C2=A0 More complex means brittle code, but also f= ewer programmers working on this, which is a risk.

We shouldn't delay forever until every potential solutio= n has been explored.=C2=A0 There's always going to be one more thing to= explore.

On 29 May 2015 5:16 pm, Gavin Andresen <gavinandresen@gmail= .com> wrote:
RE: s= oft-forking an "extension block":

So... go for= it, code it up. Implement it in the Bitcoin Core wallet.

Then ask the various wallet developer how long it would take them t= o update their software to support something like this, and do some UI mock= ups of what the experience would look like for users.

<= div>If there are two engineering solutions to a problem, one really simple,= and one complex, why would you pick the complex one?

<= div>Especially if the complex solution has all of the problems of the simpl= e one (20MB extension blocks are just as "dangerous" as 20MB main= blocks, yes? If not, why not?)


-- =
--
Gavin Andresen

----------------------------------------= --------------------------------------

_______________________________________________
Bitcoin-development mailing list
Bitcoin-develo= pment@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-de= velopment




--
PGP: B6AC 822C 451D 6304 6A28 =C2=A049E9 7DB7 011C D53B 5647
--bcaec519694195aec30517442c8b--