Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Yqjdl-0006L3-II for bitcoin-development@lists.sourceforge.net; Fri, 08 May 2015 14:52:37 +0000 Received-SPF: pass (sog-mx-1.v43.ch3.sourceforge.com: domain of gmail.com designates 209.85.215.53 as permitted sender) client-ip=209.85.215.53; envelope-from=pieter.wuille@gmail.com; helo=mail-la0-f53.google.com; Received: from mail-la0-f53.google.com ([209.85.215.53]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1Yqjdj-0007g5-VD for bitcoin-development@lists.sourceforge.net; Fri, 08 May 2015 14:52:37 +0000 Received: by labbd9 with SMTP id bd9so54445128lab.2 for ; Fri, 08 May 2015 07:52:29 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.112.145.136 with SMTP id su8mr3163639lbb.61.1431096749563; Fri, 08 May 2015 07:52:29 -0700 (PDT) Received: by 10.112.19.7 with HTTP; Fri, 8 May 2015 07:52:28 -0700 (PDT) Received: by 10.112.19.7 with HTTP; Fri, 8 May 2015 07:52:28 -0700 (PDT) In-Reply-To: <554CC19D.2010306@xylon.de> References: <554CC19D.2010306@xylon.de> Date: Fri, 8 May 2015 07:52:28 -0700 Message-ID: From: Pieter Wuille To: Arne Brutschy Content-Type: multipart/alternative; boundary=e89a8f502d9265a22e0515932db7 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 (pieter.wuille[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: 1Yqjdj-0007g5-VD Cc: Bitcoin Dev Subject: Re: [Bitcoin-development] Removing transaction data from blocks 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: Fri, 08 May 2015 14:52:37 -0000 --e89a8f502d9265a22e0515932db7 Content-Type: text/plain; charset=ISO-8859-1 So, there are several ideas about how to reduce the size of blocks being sent on the network: * Matt Corallo's relay network, which internally works by remembering the last 5000 (i believe?) transactions sent by the peer, and allowing the peer to backreference those rather than retransmit them inside block data. This exists and works today. * Gavin Andresen's IBLT based set reconciliation for blocks based on what a peer expects the new block to contain. * Greg Maxwell's network block coding, which is based on erasure coding, and also supports sharding (everyone sends some block data to everyone, rather fetching from one peer). However, the primary purpose is not to reduce bandwidth (though that is a nice side advantage). The purpose is reducing propagation delay. Larger propagation delays across the network (relative to the inter-block period) result in higher forking rates. If the forking rate gets very high, the network may fail to converge entirely, but even long before that point, the higher the forking rate is, the higher the advantage of larger (and better connected) pools over smaller ones. This is why, in my opinion, guaranteeing fast propagation is one of the most essential responsibility of full nodes to avoid centralization pressure. Also, none of this would let us "get rid of the block size" at all. All transactions still have to be transferred and processed, and due to inherent latencies of communication across the globe, the higher the transaction rate is, the higher the number of transactions in blocks will be that peers have not yet heard about. You can institute a policy to not include too recent transactions in blocks, but again, this favors larger miners over smaller ones. Also, if the end goal is propagation delay, just minimizing the amount of data transferred is not enough. You also need to make sure the communication mechanism does not add huge processing overheads or adds unnecessary roundtrips. In fact, this is the key difference between the 3 techniques listed above, and several people are working on refining and optimizing these mechanisms to make them practically usable. On May 8, 2015 7:23 AM, "Arne Brutschy" wrote: > Hello, > > At DevCore London, Gavin mentioned the idea that we could get rid of > sending full blocks. Instead, newly minted blocks would only be > distributed as block headers plus all hashes of the transactions > included in the block. The assumption would be that nodes have already > the majority of these transactions in their mempool. > > The advantages are clear: it's more efficient, as we would send > transactions only once over the network, and it's fast as the resulting > blocks would be small. Moreover, we would get rid of the blocksize limit > for a long time. > > Unfortunately, I am too ignorant of bitcoin core's internals to judge > the changes required to make this happen. (I guess we'd require a new > block format and a way to bulk-request missing transactions.) > > However, I'm curious to hear what others with a better grasp of bitcoin > core's internals have to say about it. > > Regards, > Arne > > > ------------------------------------------------------------------------------ > One dashboard for servers and applications across Physical-Virtual-Cloud > Widest out-of-the-box monitoring support with 50+ applications > Performance metrics, stats and reports that give you Actionable Insights > Deep dive visibility with transaction tracing using APM Insight. > http://ad.doubleclick.net/ddm/clk/290420510;117567292;y > _______________________________________________ > Bitcoin-development mailing list > Bitcoin-development@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/bitcoin-development > --e89a8f502d9265a22e0515932db7 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

So, there are several ideas about how to reduce the size of = blocks being sent on the network:
* Matt Corallo's relay network, which internally works by remembering t= he last 5000 (i believe?) transactions sent by the peer, and allowing the p= eer to backreference those rather than retransmit them inside block data. T= his exists and works today.
* Gavin Andresen's IBLT based set reconciliation for blocks based on wh= at a peer expects the new block to contain.
* Greg Maxwell's network block coding, which is based on erasure coding= , and also supports sharding (everyone sends some block data to everyone, r= ather fetching from one peer).

However, the primary purpose is not to reduce bandwidth (tho= ugh that is a nice side advantage). The purpose is reducing propagation del= ay. Larger propagation delays across the network (relative to the inter-blo= ck period) result in higher forking rates. If the forking rate gets very hi= gh, the network may fail to converge entirely, but even long before that po= int, the higher the forking rate is, the higher the advantage of larger (an= d better connected) pools over smaller ones. This is why, in my opinion, gu= aranteeing fast propagation is one of the most essential responsibility of = full nodes to avoid centralization pressure.

Also, none of this would let us "get rid of the block s= ize" at all. All transactions still have to be transferred and process= ed, and due to inherent latencies of communication across the globe, the hi= gher the transaction rate is, the higher the number of transactions in bloc= ks will be that peers have not yet heard about. You can institute a policy = to not include too recent transactions in blocks, but again, this favors la= rger miners over smaller ones.

Also, if the end goal is propagation delay, just minimizing = the amount of data transferred is not enough. You also need to make sure th= e communication mechanism does not add huge processing overheads or adds un= necessary roundtrips. In fact, this is the key difference between the 3 tec= hniques listed above, and several people are working on refining and optimi= zing these mechanisms to make them practically usable.

On May 8, 2015 7:23 AM, "Arne Brutschy"= ; <abrutschy@xylon.de> wrot= e:
Hello,

At DevCore London, Gavin mentioned the idea that we could get rid of
sending full blocks. Instead, newly minted blocks would only be
distributed as block headers plus all hashes of the transactions
included in the block. The assumption would be that nodes have already
the majority of these transactions in their mempool.

The advantages are clear: it's more efficient, as we would send
transactions only once over the network, and it's fast as the resulting=
blocks would be small. Moreover, we would get rid of the blocksize limit for a long time.

Unfortunately, I am too ignorant of bitcoin core's internals to judge the changes required to make this happen. (I guess we'd require a new block format and a way to bulk-request missing transactions.)

However, I'm curious to hear what others with a better grasp of bitcoin=
core's internals have to say about it.

Regards,
Arne

---------------------------------------------------------------------------= ---
One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Bitcoin-development mailing list
Bitcoin-develo= pment@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-de= velopment
--e89a8f502d9265a22e0515932db7--