<oembed><type>rich</type><version>1.0</version><author_name>npub1m230cem2yh3mtdzkg32qhj73uytgkyg5ylxsu083n3tpjnajxx4qqa2np2</author_name><author_url>https://nostr.ae/npub1m230cem2yh3mtdzkg32qhj73uytgkyg5ylxsu083n3tpjnajxx4qqa2np2</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-08-21&#xA;📝 Original message:On Fri, Aug 21, 2015 at 04:46:17AM +0000, Matt Corallo wrote:&#xA;&gt; Peter: Since I stole most of this text from your old BIP, should I leave&#xA;&gt; you as an author?&#xA;&#xA;That&#39;s fine by me.&#xA;&#xA;&gt; BIP: ?&#xA;&gt; Title: NODE_BLOOM service bit&#xA;&gt; Author: Matt Corallo &lt;bip at bluematt.me&gt;, Peter Todd &lt;pete at petertodd.org&gt;&#xA;&gt; Type: Standards Track (draft)&#xA;&gt; Created: 20-08-2015&#xA;&gt; &#xA;&gt; Abstract&#xA;&gt; ========&#xA;&gt; &#xA;&gt; This BIP extends BIP 37, Connection Bloom filtering, by defining a&#xA;&gt; service bit to allow peers to advertise that they support bloom filters&#xA;&gt; explicitly. It also bumps the protocol version to allow peers to&#xA;&gt; identify old nodes which allow bloom filtering of the connection despite&#xA;&gt; lacking the new service bit.&#xA;&gt; &#xA;&gt; &#xA;&gt; Motivation&#xA;&gt; ==========&#xA;&gt; &#xA;&gt; BIP 37 did not specify a service bit for the bloom filter service, thus&#xA;&gt; implicitly assuming that all nodes that serve peers data support it.&#xA;&gt; However, the connection filtering algorithm proposed in BIP 37, and&#xA;&gt; implemented in several clients today, has been shown to provide little&#xA;&gt; to no privacy, as well as being a large DoS risk on some nodes. Thus,&#xA;&gt; allowing node operators to disable connection bloom filtering is a&#xA;&gt; much-needed feature.&#xA;&#xA;I&#39;d reference that paper on bloom filters re: the &#34;little to no privacy&#34;&#xA;issue. There&#39;s also a post in the bitcoinj mailing list somewhere IIRC&#xA;talking about the default settings, and how they don&#39;t provide any&#xA;privacy.&#xA;&#xA;&gt; Specification&#xA;&gt; =============&#xA;&gt; &#xA;&gt; The following protocol bit is added:&#xA;&gt; &#xA;&gt;     NODE_BLOOM = (1 &lt;&lt; 2)&#xA;&gt; &#xA;&gt; Nodes which support bloom filters should set that protocol bit.&#xA;&gt; Otherwise it should remain unset. In addition the protocol version is&#xA;&gt; increased from 70002 to 70011 in the reference implementation. It is&#xA;&gt; often the case that nodes which have a protocol version smaller than&#xA;&gt; 70011, but larger than 70000 support bloom filtered connections without&#xA;&gt; the NODE_BLOOM bit set, however clients which require bloom filtered&#xA;&gt; connections should avoid making this assumption.&#xA;&gt; &#xA;&gt; NODE_BLOOM is distinct from NODE_NETWORK, and it is legal to advertise&#xA;&gt; NODE_BLOOM but not NODE_NETWORK (eg for nodes running in pruned mode&#xA;&gt; which, nonetheless, provide filtered access to the data which they do have).&#xA;&gt; &#xA;&gt; If a node does not support bloom filters but receives a &#34;filterload&#34;,&#xA;&gt; &#34;filteradd&#34;, or &#34;filterclear&#34; message from a peer the node should&#xA;&gt; disconnect that peer immediately. For backwards compatibility, in&#xA;&gt; initial implementations, nodes may choose to only disconnect nodes which&#xA;&gt; have the new protocol version set and attempt to send a filter command.&#xA;&gt; &#xA;&gt; While outside the scope of this BIP it is suggested that DNS seeds and&#xA;&gt; other peer discovery mechanisms support the ability to specify the&#xA;&gt; services required; current implementations simply check only that&#xA;&gt; NODE_NETWORK is set.&#xA;&#xA;Good to note Mike Hearn&#39;s Cartography seed protocol here.&#xA;&#xA;&gt; Design rational&#xA;&gt; ===============&#xA;&gt; &#xA;&gt; A service bit was chosen as applying a bloom filter is a service.&#xA;&gt; &#xA;&gt; The increase in protocol version is for backwards compatibility. In&#xA;&gt; initial implementations, old nodes which are not yet aware of NODE_BLOOM&#xA;&gt; and use a protocol version &lt; 70011 may still send filter* messages to a&#xA;&gt; node without NODE_BLOOM. This feature may be removed after there are&#xA;&gt; sufficient NODE_BLOOM nodes available and SPV clients have upgraded,&#xA;&gt; allowing node operators to fully close the bloom-related DoS vectors.&#xA;&#xA;Ah good! That solves the backwards compatibility quite nicely.&#xA;&#xA;-- &#xA;&#39;peter&#39;[:-1]@petertodd.org&#xA;00000000000000000402fe6fb9ad613c93e12bddfc6ec02a2bd92f002050594d&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 650 bytes&#xA;Desc: Digital signature&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150820/13cefeff/attachment.sig&gt;</html></oembed>