<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-12-18 13:43 GMT+01:00 Eric Voskuil <span dir="ltr">&lt;<a href="mailto:eric@voskuil.org" target="_blank">eric@voskuil.org</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
&gt; On Dec 18, 2017, at 03:32, Kalle Rosenbaum via bitcoin-dev &lt;<a href="mailto:bitcoin-dev@lists.linuxfoundation.org">bitcoin-dev@lists.<wbr>linuxfoundation.org</a>&gt; wrote:<br>
&gt;<br>
&gt; Dear list,<br>
&gt;<br>
&gt; I find it hard to understand why a full node that does initial block<br>
&gt; download also must download witnesses if they are going to skip verification anyway.<br>
<br>
</span>Why run a full node if you are not going to verify the chain?<br></blockquote><div><br></div>I meant to say &quot;<span style="color:rgb(80,0,80);font-size:12.8px">I find it hard to understand why a full node that does initial block</span><br style="color:rgb(80,0,80);font-size:12.8px"><span style="color:rgb(80,0,80);font-size:12.8px">download also must download witnesses when it is going to skip verification of the witnesses anyway.&quot;</span></div><div class="gmail_quote"><span style="color:rgb(80,0,80);font-size:12.8px"><br></span></div><div class="gmail_quote"><span style="color:rgb(80,0,80);font-size:12.8px">I&#39;m referring to the &quot;assumevalid&quot; feature of Bitcoin Core that skips signature verification up to block X. Or have I misunderstood assumevalid?</span></div><div class="gmail_quote"><span style="color:rgb(80,0,80);font-size:12.8px"><br></span></div><div class="gmail_quote"><span style="color:rgb(80,0,80);font-size:12.8px">/Kalle</span></div><div class="gmail_quote"> <br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div><div class="gmail-h5"><br>
&gt; If my full node skips signature verification for<br>
&gt; blocks earlier than X, it seems the reasons for downloading the<br>
&gt; witnesses for those blocks are:<br>
&gt;<br>
&gt; * to be able to send witnesses to other nodes.<br>
&gt;<br>
&gt; * to verify the witness root hash of the blocks<br>
&gt;<br>
&gt; I suppose that it&#39;s important to verify the witness root hash because<br>
&gt; a bad peer may send me invalid witnesses during initial block<br>
&gt; download, and if I don&#39;t verify that the witness root hash actually<br>
&gt; commits to them, I will get banned by peers requesting the blocks from<br>
&gt; me because I send them garbage.<br>
&gt; So both the reasons above (there may be more that I don&#39;t know about)<br>
&gt; are actually the same reason: To be able to send witnesses to others<br>
&gt; without getting banned.<br>
&gt;<br>
&gt; What if a node could chose not to download witnesses and thus chose to<br>
&gt; send only witnessless blocks to peers. Let&#39;s call these nodes<br>
&gt; witnessless nodes. Note that witnessless nodes are only witnessless<br>
&gt; for blocks up to X. Everything after X is fully verified.<br>
&gt;<br>
&gt; Witnessless nodes would be able to sync faster because it needs to<br>
&gt; download less data to calculate their UTXO set. They would therefore<br>
&gt; more quickly be able to provide full service to SPV wallets and its<br>
&gt; local wallets as well as serving blocks to other witnessless nodes<br>
&gt; with same or higher assumevalid block. For witnessless nodes with<br>
&gt; lower assumevalid they can serve at least some blocks. It could also<br>
&gt; serve blocks to non-segwit nodes.<br>
&gt;<br>
&gt; Do witnessless nodes risk dividing the network in two parts, one<br>
&gt; witnessless and one with full nodes, with few connections between the<br>
&gt; parts?<br>
&gt;<br>
&gt; So basically, what are the reasons not to implement witnessless<br>
&gt; nodes?<br>
&gt;<br>
&gt; Thank you,<br>
&gt; /Kalle<br>
</div></div>&gt; ______________________________<wbr>_________________<br>
&gt; bitcoin-dev mailing list<br>
&gt; <a href="mailto:bitcoin-dev@lists.linuxfoundation.org">bitcoin-dev@lists.<wbr>linuxfoundation.org</a><br>
&gt; <a href="https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev" rel="noreferrer" target="_blank">https://lists.linuxfoundation.<wbr>org/mailman/listinfo/bitcoin-<wbr>dev</a><br>
</blockquote></div><br></div></div>