<oembed><type>rich</type><version>1.0</version><author_name>npub1tjephawh7fdf6358jufuh5eyxwauzrjqa7qn50pglee4tayc2ntqcjtl6r</author_name><author_url>https://nostr.ae/npub1tjephawh7fdf6358jufuh5eyxwauzrjqa7qn50pglee4tayc2ntqcjtl6r</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2018-06-03&#xA;📝 Original message:On Sat, Jun 2, 2018, 22:56 Tamas Blummer via bitcoin-dev &lt;&#xA;bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&#xA;&gt; Lighter but SPV secure nodes (filter committed) would help the network&#xA;&gt; (esp. Layer 2) to grow mesh like, but add more user that blindly follow POW.&#xA;&gt;&#xA;&gt; On longer term most users&#39; security will be determined by either trusted&#xA;&gt; hubs or POW.&#xA;&gt; I do not know which is worse, but we should at least offer the choice to&#xA;&gt; the user, therefore commit filters.&#xA;&gt;&#xA;&#xA;I don&#39;t think that&#39;s the point of discussion here. Of course, in order to&#xA;have filters that verifiably don&#39;t lie by omission, the filters need to be&#xA;committed to by blocks.&#xA;&#xA;The question is what data that filter should contain.&#xA;&#xA;There are two suggestions:&#xA;(a) The scriptPubKeys of the block&#39;s outputs, and prevouts of the block&#39;s&#xA;inputs.&#xA;(b) The scriptPubKeys of the block&#39;s outputs, and scriptPubKeys of outputs&#xA;being spent by the block&#39;s inputs.&#xA;&#xA;The advantage of (a) is that it can be verified against a full block&#xA;without access to the outputs being spent by it. This allows light clients&#xA;to ban nodes that give them incorrect filters, but they do need to actually&#xA;see the blocks (partially defeating the purpose of having filters in the&#xA;first place).&#xA;&#xA;The advantage of (b) is that it is more compact (scriot reuse, and outputs&#xA;spent within the same block as they are created). It also had the advantage&#xA;of being more easily usable for scanning of a wallet&#39;s transactions. Using&#xA;(a) for that in some cases may need to restart and refetch when an output&#xA;is discovered, to go test for its spending (whose outpoint is not known&#xA;ahead of time). Especially when fetching multiple filters at a time this&#xA;may be an issue.&#xA;&#xA;I think both of these potentially good arguments. However, once a committed&#xA;filter exists, the advantage of (a) goes away completely - validation of&#xA;committed filters is trivial and can be done without needing the full&#xA;blocks in the first place.&#xA;&#xA;So I think the question is do we aim for an uncommitted (a) first and a&#xA;committed (b) later, or go for (b) immediately?&#xA;&#xA;Cheers,&#xA;&#xA;-- &#xA;Pieter&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180602/ddc0b29e/attachment-0001.html&gt;</html></oembed>