<oembed><type>rich</type><version>1.0</version><author_name>npub1ncnj8arudstdxzfhxk7k4nwgkrw3hyw8sgt0wqqmm5hh2c4knmgs2lqt2n</author_name><author_url>https://nostr.ae/npub1ncnj8arudstdxzfhxk7k4nwgkrw3hyw8sgt0wqqmm5hh2c4knmgs2lqt2n</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2018-05-17&#xA;📝 Original message:&gt;&#xA;&gt; I think lite clients cross checking is something which very likely&#xA;&gt; will never be implemented by anyone, and probably not stay working&#xA;&gt; (due to under-usage) if it is implemented.  This thought is driven by&#xA;&gt; three things  (1) the bandwidth overhead of performing the check, (2)&#xA;&gt; thinking about the network-interacting-state-machine complexity of it,&#xA;&gt; and by the multitude of sanity checks that lite clients already don&#39;t&#xA;&gt; implement (e.g. when a lite client noticed a split tip it could ask&#xA;&gt; peers for the respective blocks and check at least the stateless&#xA;&gt; checks, but none has ever done that), and...&#xA;&gt;&#xA;&#xA;In my opinion, it&#39;s overly pessimistic to design the protocol in an&#xA;insecure way because some light clients historically have taken shortcuts.&#xA;If the protocol can provide clients the option of getting additional&#xA;security, it should.&#xA;&#xA;On the general topic, Peter makes a good point that in many cases filtering&#xA;by txid of spending transaction may be preferable to filtering by outpoint&#xA;spend, which has the nice benefit that there are obviously fewer txs in a&#xA;block than txins. This wouldn&#39;t work for malleable transactions though.&#xA;&#xA;I&#39;m open to the idea of splitting the basic filter into three separate&#xA;filters based on data type, but there are some bandwidth concerns. First,&#xA;the GCS encoding gets better compression with a greater number of elements,&#xA;though as I recall in my analysis, that starts to tail off at ~1000&#xA;elements per filter with P=20, in which case it&#39;s not as much of a concern&#xA;given current block sizes. The other is that clients need to download&#xA;and/or store the filter header chain for each filter type, which are 32&#xA;bytes each per block. So if a client is expected to download all three&#xA;filter types anyway, or even two of three, it&#39;s less efficient in these&#xA;terms. It would be possible though to split the filters themselves, but&#xA;still have the basic filter header cover all three filters. This would mean&#xA;that full nodes could not support just a subset of the basic filters --&#xA;they&#39;d have to compute all of them to compute the filter header.&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180517/c25d9cf4/attachment.html&gt;</html></oembed>