<oembed><type>rich</type><version>1.0</version><author_name>npub1e46n428mcyfwznl7nlsf6d3s7rhlwm9x3cmkuqzt3emmdpadmkaqqjxmcu</author_name><author_url>https://nostr.ae/npub1e46n428mcyfwznl7nlsf6d3s7rhlwm9x3cmkuqzt3emmdpadmkaqqjxmcu</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2012-09-10&#xA;📝 Original message:It seems to me the whole idea of segmenting blocks would add very little&#xA;(to nothing) with any sane block size.  Sure, if a block were to be&#xA;10GB, it may make sense.  However, even in that case, it would be easier&#xA;to relay a list of tx hashes (which may be a bit expensive) and txes&#xA;separately instead of using a notion of block segments.  That said, I&#xA;don&#39;t see blocks ever being that large and if they do become that large,&#xA;as only a few full nodes will remain, upgrading their protocol would be&#xA;(relatively) easy.  I would instead encourage focus on decreasing block&#xA;relay times for the current network and as blocks approach 10MB (so that&#xA;they can approach 10MB).&#xA;&#xA;Matt&#xA;&#xA;On Mon, 2012-09-10 at 20:34 +0100, Matthew Mitchell wrote:&#xA;&gt; Do you mean getdata? Here is the reason for the 6 new messages:&#xA;&gt; &#xA;&gt; &#xA;&gt; getseginv,seginv - These are for learning about what segments of a&#xA;&gt; block a node has. Else you could remove these messages and simply have&#xA;&gt; nodes advertise blocks via inventory messages. In this case nodes&#xA;&gt; would have to wait until they had fully received a block before&#xA;&gt; relaying anything. No longer is there a benefit with nodes being able&#xA;&gt; to relay segments of blocks before they have received the entire&#xA;&gt; block.&#xA;&gt; &#xA;&gt; &#xA;&gt; gettreelevel,treelevel - These are to received a level of&#xA;&gt; the merle tree. Instead you might use get data but gettreelevel is&#xA;&gt; more compact than get data and is clearly differentiates itself as&#xA;&gt; part of the new protocol. Perhaps these messages could include the&#xA;&gt; block headers alongside the hashes and you could request many at once&#xA;&gt; like with the getheaders message? If you skip these messages, then you&#xA;&gt; could verify the transactions at the end but there would be problems&#xA;&gt; when peers give bad segments where data would need to be downloaded&#xA;&gt; again.&#xA;&gt; &#xA;&gt; &#xA;&gt; getsegment,segment - These are clearly important to request and&#xA;&gt; receive segments for the blocks. These allows for nodes&#xA;&gt; to download arbitrary segments of blocks. The optimum number of&#xA;&gt; segments could be calculated by node software using measurements of&#xA;&gt; download speeds and latency times, the number of connections and how&#xA;&gt; likely redundancy is to occur. If a node is up-to-date and likely has&#xA;&gt; many of the transactions in blocks, it can start asking for the&#xA;&gt; deepest merle level (tx hashes) and ask nodes for segments, avoiding&#xA;&gt; transactions it already has.&#xA;&gt; &#xA;&gt; &#xA;&gt; I&#39;ll get around to doing measurements myself sometime to estimate the&#xA;&gt; benefit of this proposal. It will certainly be beneficial when block&#xA;&gt; sizes reach some size but not much is really known except what can be&#xA;&gt; assumed/guessed.&#xA;&gt; &#xA;&gt; &#xA;&gt; I should also mention the bitcointalk topic&#xA;&gt; here: https://bitcointalk.org/index.php?topic=103295.0&#xA;&gt; &#xA;&gt; On 10 Sep 2012, at 19:59, &#34;Luke-Jr&#34; &lt;luke at dashjr.org&gt; wrote:&#xA;&gt; &gt; &#xA;&gt; &gt; Most of the problem with block propagation lies in implementation,&#xA;&gt; &gt; not &#xA;&gt; &gt; protocol... Distributing missing transaction on an as-needed basis&#xA;&gt; &gt; is a &#xA;&gt; &gt; possible improvement at the protocol level, but there hasn&#39;t (AFAIK)&#xA;&gt; &gt; been any &#xA;&gt; &gt; research into whether the little benefit outweighs the cost yet. In&#xA;&gt; &gt; any case, &#xA;&gt; &gt; I don&#39;t see why 6 new messages are needed instead of simply adding a&#xA;&gt; &gt; single &#xA;&gt; &gt; new type to getinv?</html></oembed>