<oembed><type>rich</type><version>1.0</version><author_name>npub16dt55fpq3a8r6zpphd9xngxr46zzqs75gna9cj5vf8pknyv2d7equx4wrd</author_name><author_url>https://nostr.ae/npub16dt55fpq3a8r6zpphd9xngxr46zzqs75gna9cj5vf8pknyv2d7equx4wrd</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2018-06-09&#xA;📝 Original message:On Fri, Jun 08, 2018 at 04:35:29PM -0700, Olaoluwa Osuntokun via bitcoin-dev wrote:&#xA;&gt;   2. Since the coinbase transaction is the first in a block, it has the&#xA;&gt;      longest merkle proof path. As a result, it may be several hundred bytes&#xA;&gt;      (and grows with future capacity increases) to present a proof to the&#xA;&gt;      client.&#xA;&#xA;I&#39;m not sure why commitment proof size is a significant issue.  Doesn&#39;t&#xA;the current BIP157 protocol have each filter commit to the filter for&#xA;the previous block?  If that&#39;s the case, shouldn&#39;t validating the&#xA;commitment at the tip of the chain (or buried back whatever number of&#xA;blocks that the SPV client trusts) obliviate the need to validate the&#xA;commitments for any preceeding blocks in the SPV trust model?&#xA;&#xA;&gt; Depending on the composition of blocks, this may outweigh the gains&#xA;&gt; had from taking advantage of the additional compression the prev outs&#xA;&gt; allow.&#xA;&#xA;I think those are unrelated points.  The gain from using a more&#xA;efficient filter is saved bytes.  The gain from using block commitments&#xA;is SPV-level security---that attacks have a definite cost in terms of&#xA;generating proof of work instead of the variable cost of network&#xA;compromise (which is effectively free in many situations).&#xA;&#xA;Comparing the extra bytes used by block commitments to the reduced bytes&#xA;saved by prevout+output filters is like comparing the extra bytes used&#xA;to download all blocks for full validation to the reduced bytes saved by&#xA;only checking headers and merkle inclusion proofs in simplified&#xA;validation.  Yes, one uses more bytes than the other, but they&#39;re&#xA;completely different security models and so there&#39;s no normative way for&#xA;one to &#34;outweigh the gains&#34; from the other.&#xA;&#xA;&gt; So should we optimize for the ability to validate in a particular&#xA;&gt; model (better security), or lower bandwidth in this case?&#xA;&#xA;It seems like you&#39;re claiming better security here without providing any&#xA;evidence for it.  The security model is &#34;at least one of my peers is&#xA;honest.&#34;  In the case of outpoint+output filters, when a client receives&#xA;advertisements for different filters from different peers, it:&#xA;&#xA;    1. Downloads the corresponding block&#xA;    2. Locally generates the filter for that block&#xA;    3. Kicks any peers that advertised a different filter than what it&#xA;       generated locally&#xA;&#xA;This ensures that as long as the client has at least one honest peer, it&#xA;will see every transaction affecting its wallet.  In the case of&#xA;prevout+output filters, when a client receives advertisements for&#xA;different filters from different peers, it:&#xA;&#xA;    1. Downloads the corresponding block and checks it for wallet&#xA;       transactions as if there had been a filter match&#xA;&#xA;This also ensures that as long as the client has at least one honest&#xA;peer, it will see every transaction affecting its wallet.  This is&#xA;equivilant security.&#xA;&#xA;In the second case, it&#39;s possible for the client to eventually&#xA;probabalistically determine which peer(s) are dishonest and kick them.&#xA;The most space efficient of these protocols may disclose some bits of&#xA;evidence for what output scripts the client is looking for, but a&#xA;slightly less space-efficient protocol simply uses randomly-selected&#xA;outputs saved from previous blocks to make the probabalistic&#xA;determination (rather than the client&#39;s own outputs) and so I think&#xA;should be quite private.  Neither protocol seems significantly more&#xA;complicated than keeping an associative array recording the number of&#xA;false positive matches for each peer&#39;s filters.&#xA;&#xA;-Dave&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 833 bytes&#xA;Desc: not available&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180609/ff14b111/attachment.sig&gt;</html></oembed>