Return-Path: Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 76F2D8CC for ; Tue, 12 Sep 2017 23:18:50 +0000 (UTC) X-Greylist: delayed 00:20:08 by SQLgrey-1.7.6 Received: from sonic302-21.consmr.mail.ir2.yahoo.com (sonic302-21.consmr.mail.ir2.yahoo.com [87.248.110.84]) by smtp1.linuxfoundation.org (Postfix) with ESMTP id 8E4C5E5 for ; Tue, 12 Sep 2017 23:18:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.it; s=s2048; t=1505258327; bh=PW4v4nSFjuCOEVy8g/X6tbCGGnKtiIQolL20AzQU+0U=; h=Date:From:Reply-To:To:Subject:References:From:Subject; b=sP1bfFqZ6UvifpkTqf8x99ygGu3vxfPW27HOm4Dnrallv2pKdpiA5giRLgmDUv+RGBvgxm0X8fUfJP1r2hHxft0YZXBl7qCgjF875achaiq8GUZ812vFO/bXRBYlHCtGZN34MsBxSYNXpjsUPYnwMXt7BZT7RTcbY1AfGc22QM+d0Y146IQP+qDbsQHlrICrVbjeFzkfqosbLAJ5+kNd2v+T96a02sUsG3PW7xo/6XU9NAx4pngVh+o/cwAw0qF/e5uE8UajA/ylIyHRh0An0smkjHkAnBFLvKBBrLp6LdEdJGuS63sH/1zzwabP2NFLeUawHa+29TAIobYr+ATCHQ== X-YMail-OSG: tFlBLvAVM1l1AQShbaVKIadRShICvqJaU9dnJKxtRzOHkgRu3diRDf.njC_pLNI hYLNhL5G1OmWNHQXGMa.AgrBQhZGGlExVVl0cCaJtw795i8R9f4LPeW1KfnjYoOoD_Yo6XyflCc7 tOgmJoQ6Z_ttGFP8LXqakyhjazVnFgCEOfxbuDn3hO2fKjvmHfzhUtGI0X4nUu8OKkGoX0ZCjUIP czdx7v.IpenRwrgnl.L10mQTLJLJxFwcrJ6iY.nMMETBmS4buJR0fbLdXOXs637Nu7Th3Dwu09iD RA0_sP90A4yGWTbENNjZsO_06h7qmZoHFg3izwZRfs9WmDCln07F3RR_p2T9QzTNR3ZLM1w2ygoo R5DcpF9xYPPMmJB4qfEyMPBVnjL80atrcS.9q75.bPqVY0NMFciK9PWgL1CwOlHtM2tOSXNjaiPF NBI5Qd8YVVMEQxMh9El98.J.PbpXsfwhF Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.ir2.yahoo.com with HTTP; Tue, 12 Sep 2017 23:18:47 +0000 Date: Tue, 12 Sep 2017 22:58:35 +0000 (UTC) From: michele terzi Reply-To: michele terzi To: "bitcoin-dev@lists.linuxfoundation.org" Message-ID: <351373080.1326948.1505257115533@mail.yahoo.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_1326947_988504158.1505257115531" References: <351373080.1326948.1505257115533.ref@mail.yahoo.com> X-Mailer: WebService/1.1.10521 YahooMailNeo Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0 X-Spam-Status: No, score=1.5 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FORGED_MUA_MOZILLA,FREEMAIL_FROM,HTML_MESSAGE, RCVD_IN_DNSWL_NONE autolearn=disabled version=3.3.1 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org X-Mailman-Approved-At: Wed, 13 Sep 2017 08:13:37 +0000 Subject: [bitcoin-dev] 2 softforks to cut the blockchain and IBD time X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Sep 2017 23:18:50 -0000 ------=_Part_1326947_988504158.1505257115531 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable the blockchain is 160Gb and this is literally the biggest problem bitcoin h= as right now. syncing a new node is a nightmare that discourages a lot of p= eople. this single aspect is what hurts bitcoin's decentralization the most and it= is getting worse by the day. to solve this problem i propose 2 softfork. both of them have been partially discussed so you may be already familiar w= ith them. I'll just try to highlight problems and benefits. first SF) a snapshot of the UTXO set plus all the relevant info (like OP_RETURNs) is = hashed in the coinbase. this can be repeated automatically every given period of x blocks. I sugges= t 55k blocks (1 year) second SF) after a given amount of time the UTXO hash is written in the consensus code= . this hash becomes the hash of a new genesis block and all the older blocks = are chopped away Pros: you gain a much faster syncing for new nodes. full non pruning nodes need a lot less HD space. dropping old history results in more difficult future chainanalysis (at lea= st by small entities) freezing old history in one new genesis block means the chain can no longer= be reorged prior to that point old status genesis |----- x ------| newgenesis |----- y ------| now new status =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 newge= nesis |----- y ------| now while the old chain can be reorged to the genesis block the new chain can b= e reorged only to the newgenesisblock cutting the chain has also some other small benefits: without the need to v= alidate old blocks we can clean old no more usefull consensus code Cons:=20 a small amount of space is consumed on the blockchain every node needs to perform the calculations full nodes with old software can no longer be fired up and sync with the ex= isting network full nodes that went off line prior to the second fork cannot sync back onc= e they turn back on line again. if these things are concerning (which for me are not) we can just keep onli= ne a few archive nodes. old clients will sync only from archivial nodes with full history and new f= ull nodes will sync from everywere Addressing security concerns: being able to write a new genesis block means that an evil core has the pow= er to steal/destroy/censor/whatever coins. this is possible only in theory, but not in practice. right now devs can mi= sbehave with every softfork, but the community tests and inspects every new= release. the 2 forks will be tested and inspected as well so they are no more risky = than other softforks. additionally the process is divided into 2 separate steps and the first ste= p (the critical one) is effectively void without the second (which is subst= antially delayed) this gives the community additional time to test it and t= hus is actually more secure than a standard softfork. besides after the first softfork locks in there is no more room for mistake= s. either the hashes match or they do not so spotting a misbehaviour is tri= vially simple kind regards,Michele ------=_Part_1326947_988504158.1505257115531 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
th= e blockchain is 160Gb and this is literally the biggest problem bitcoin has= right now. syncing a new node is a nightmare that discourages a lot of peo= ple.
this single aspect is w= hat hurts bitcoin's decentralization the most and it is getting worse by th= e day.

to solve this problem i propose 2 softfork.

both of them have been partially discussed so you may be al= ready familiar with them. I'll just try to highlight problems and benefits.=


first = SF)
a snapshot of the UTXO s= et plus all the relevant info (like OP_RETURNs) is hashed in the coinbase.<= br id=3D"yui_3_16_0_ym19_1_1505235822221_3289">this can be repeated automat= ically every given period of x blocks. I suggest 55k blocks (1 year)

second SF)
af= ter a given amount of time the UTXO hash is written in the consensus code.<= br id=3D"yui_3_16_0_ym19_1_1505235822221_3293">this hash becomes the hash o= f a new genesis block and all the older blocks are chopped away


Pros:

you gain a much faster syncing for new nodes.
full non pruning nodes need a lot less HD space.<= br id=3D"yui_3_16_0_ym19_1_1505235822221_3300">dropping old history results= in more difficult future chainanalysis (at least by small entities)
freezing old history in one new g= enesis block means the chain can no longer be reorged prior to that point
old status

genesis |----- x ------| = newgenesis |----- y ------| now

new status

           &= nbsp;           &nbs= p; newgenesis |----- y ------| now

while the old chain = can be reorged to the genesis block the new chain can be reorged only to th= e newgenesisblock

cutting the chain has also some other= small benefits: without the need to validate old blocks we can clean old n= o more usefull consensus code


Cons:

a small amount of space i= s consumed on the blockchain
every node needs to perform the calculations

full node= s with old software can no longer be fired up and sync with the existing ne= twork
full nodes that went o= ff line prior to the second fork cannot sync back once they turn back on li= ne again.

if these things are concerning (which for me = are not) we can just keep online a few archive nodes.
old clients will sync only from archivial nodes w= ith full history and new full nodes will sync from everywere


Addressing security c= oncerns:

being able to write a new genesis block means = that an evil core has the power to steal/destroy/censor/whatever coins.

this is possible only in theory, but not in practice. righ= t now devs can misbehave with every softfork, but the community tests and i= nspects every new release.
<= br id=3D"yui_3_16_0_ym19_1_1505235822221_3336">the 2 forks will be tested a= nd inspected as well so they are no more risky than other softforks.

additionally the process is divided into 2 separate steps an= d the first step (the critical one) is effectively void without the second = (which is substantially delayed) this gives the community additional time t= o test it and thus is actually more secure than a standard softfork.
<= div dir=3D"ltr" id=3D"yui_3_16_0_ym19_1_1505235822221_3511">
besides after the f= irst softfork locks in there is no more room for mistakes. either the hashe= s match or they do not so spotting a misbehaviour is trivially simple

=
kind regards,<= /div>
Michele
------=_Part_1326947_988504158.1505257115531--