<oembed><type>rich</type><version>1.0</version><author_name>npub1f2nvlx49er5c7sqa43src6ssyp6snd4qwvtkwm5avc2l84cs84esecrwet</author_name><author_url>https://nostr.ae/npub1f2nvlx49er5c7sqa43src6ssyp6snd4qwvtkwm5avc2l84cs84esecrwet</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2018-05-17&#xA;📝 Original message:On Thu, May 17, 2018 at 8:19 PM, Jim Posen &lt;jim.posen at gmail.com&gt; wrote:&#xA;&gt; In my opinion, it&#39;s overly pessimistic to design the protocol in an insecure&#xA;&gt; way because some light clients historically have taken shortcuts.&#xA;&#xA;Any non-commited form is inherently insecure.  A nearby network&#xA;attacker (or eclipse attacker) or whatnot can moot whatever kind of&#xA;comparisons you make, and non-comparison based validation doesn&#39;t seem&#xA;like it would be useful without mooting all the bandwidth improvements&#xA;unless I&#39;m missing something.&#xA;&#xA;It isn&#39;t a question of &#39;some lite clients&#39; -- I am aware of no&#xA;implementation of these kinds of measures in any cryptocurrency ever.&#xA;&#xA;The same kind of comparison to the block could have been done with&#xA;BIP37 filtering, but no one has implemented that. (similarly, the&#xA;whitepaper suggests doing that for all network rules when a&#xA;disagreement has been seen, though that isn&#39;t practical for all&#xA;network rules it could be done for many of them-- but again no&#xA;implementation or AFAIK any interest in implementing that)&#xA;&#xA;&gt; If the&#xA;&gt; protocol can provide clients the option of getting additional security, it&#xA;&gt; should.&#xA;&#xA;Sure, but at what cost?   And &#34;additional&#34; while nice doesn&#39;t&#xA;necessarily translate into a meaningful increase in delivered security&#xA;for any particular application.&#xA;&#xA;I think we might be speaking too generally here.&#xA;&#xA;What I&#39;m suggesting would still allow a lite client to verify that&#xA;multiple parties are offering the same map for a given block (by&#xA;asking them for the map hash). It would still allow a future&#xA;commitment so that lite client could verify that the hashpower they&#39;re&#xA;hearing from agrees that the map they got is the correct corresponding&#xA;map for the block. It would still allow downloading a block and&#xA;verifying that all the outpoints in the block were included.  So still&#xA;a lot better than BIP37.&#xA;&#xA;What it would not permit is for a lite client to download a whole&#xA;block and completely verify the filter (they could only tell if the&#xA;filter at least told them about all the outputs in the block, but if&#xA;extra bits were set or inputs were omitted, they couldn&#39;t tell).&#xA;&#xA;But in exchange the filters for a given FP rate would be probably&#xA;about half the current size (actual measurements would be needed&#xA;because the figure depends on much scriptpubkey reuse there is, it&#xA;probably could be anywhere between 1/3 and 2/3rd).  In some&#xA;applications it would likely have better anonymity properties as well,&#xA;because a client that always filters for both an output and and input&#xA;as distinct items (and then leaks matches by fetching blocks) is more&#xA;distinguishable.&#xA;&#xA;I think this trade-off is at leat worth considering because if you&#xA;always verify by downloading you wash out the bandwidth gains, strong&#xA;verification will eventually need a commitment in any case.  A client&#xA;can still partially verify, and can still multi-party comparison&#xA;verify.  ... and a big reduction in filter bandwidth&#xA;&#xA;Monitoring inputs by scriptPubkey vs input-txid also has a massive&#xA;advantage for parallel filtering:  You can usually known your pubkeys&#xA;well in advance, but if you have to change what you&#39;re watching block&#xA; N+1 for based on the txids that paid you in N you can&#39;t filter them&#xA;in parallel.&#xA;&#xA;&gt; On the general topic, Peter makes a good point that in many cases filtering&#xA;&gt; by txid of spending transaction may be preferable to filtering by outpoint&#xA;&gt; spend, which has the nice benefit that there are obviously fewer txs in a&#xA;&gt; block than txins. This wouldn&#39;t work for malleable transactions though.&#xA;&#xA;I think Peter missed Matt&#39;s point that you can monitor for a specific&#xA;transaction&#39;s confirmation by monitoring for any of the outpoints that&#xA;transaction contains. Because the txid commits to the outpoints there&#xA;shouldn&#39;t be any case where the txid is knowable but (an) outpoint is&#xA;not.  Removal of the txid and monitoring for any one of the outputs&#xA;should be a strict reduction in the false positive rate for a given&#xA;filter size (the filter will contain strictly fewer elements and the&#xA;client will match for the same (or usually, fewer) number).&#xA;&#xA;I _think_ dropping txids as matt suggests is an obvious win that costs&#xA;nothing.  Replacing inputs with scripts as I suggested has some&#xA;trade-offs.</html></oembed>