{"type":"rich","version":"1.0","author_name":"npub1e46n428mcyfwznl7nlsf6d3s7rhlwm9x3cmkuqzt3emmdpadmkaqqjxmcu","author_url":"https://nostr.ae/npub1e46n428mcyfwznl7nlsf6d3s7rhlwm9x3cmkuqzt3emmdpadmkaqqjxmcu","provider_name":"njump","provider_url":"https://nostr.ae","html":"📅 Original date posted:2015-08-21\n📝 Original message:The proposal will not break any existing clients in the first release.\nAfter sufficient time to upgrade SPV clients, a new version will be\nreleased which will result in older SPV clients finding themselves\ndisconnected from peers when they send filter* commands, so they can go\nfind other peers which do support bloom filtering.\n\nOn 08/21/15 05:48, Jeff Garzik wrote:\n\u003e If this is widely deployed + enabled, what is the impact to current\n\u003e wallets in use?\n\u003e \n\u003e \n\u003e On Fri, Aug 21, 2015 at 12:46 AM, Matt Corallo via bitcoin-dev\n\u003e \u003cbitcoin-dev at lists.linuxfoundation.org\n\u003e \u003cmailto:bitcoin-dev at lists.linuxfoundation.org\u003e\u003e wrote:\n\u003e \n\u003e     Peter: Since I stole most of this text from your old BIP, should I leave\n\u003e     you as an author?\n\u003e \n\u003e     BIP: ?\n\u003e     Title: NODE_BLOOM service bit\n\u003e     Author: Matt Corallo \u003cbip at bluematt.me \u003cmailto:bip at bluematt.me\u003e\u003e,\n\u003e     Peter Todd \u003cpete at petertodd.org \u003cmailto:pete at petertodd.org\u003e\u003e\n\u003e     Type: Standards Track (draft)\n\u003e     Created: 20-08-2015\n\u003e \n\u003e     Abstract\n\u003e     ========\n\u003e \n\u003e     This BIP extends BIP 37, Connection Bloom filtering, by defining a\n\u003e     service bit to allow peers to advertise that they support bloom filters\n\u003e     explicitly. It also bumps the protocol version to allow peers to\n\u003e     identify old nodes which allow bloom filtering of the connection despite\n\u003e     lacking the new service bit.\n\u003e \n\u003e \n\u003e     Motivation\n\u003e     ==========\n\u003e \n\u003e     BIP 37 did not specify a service bit for the bloom filter service, thus\n\u003e     implicitly assuming that all nodes that serve peers data support it.\n\u003e     However, the connection filtering algorithm proposed in BIP 37, and\n\u003e     implemented in several clients today, has been shown to provide little\n\u003e     to no privacy, as well as being a large DoS risk on some nodes. Thus,\n\u003e     allowing node operators to disable connection bloom filtering is a\n\u003e     much-needed feature.\n\u003e \n\u003e \n\u003e     Specification\n\u003e     =============\n\u003e \n\u003e     The following protocol bit is added:\n\u003e \n\u003e         NODE_BLOOM = (1 \u003c\u003c 2)\n\u003e \n\u003e     Nodes which support bloom filters should set that protocol bit.\n\u003e     Otherwise it should remain unset. In addition the protocol version is\n\u003e     increased from 70002 to 70011 in the reference implementation. It is\n\u003e     often the case that nodes which have a protocol version smaller than\n\u003e     70011, but larger than 70000 support bloom filtered connections without\n\u003e     the NODE_BLOOM bit set, however clients which require bloom filtered\n\u003e     connections should avoid making this assumption.\n\u003e \n\u003e     NODE_BLOOM is distinct from NODE_NETWORK, and it is legal to advertise\n\u003e     NODE_BLOOM but not NODE_NETWORK (eg for nodes running in pruned mode\n\u003e     which, nonetheless, provide filtered access to the data which they\n\u003e     do have).\n\u003e \n\u003e     If a node does not support bloom filters but receives a \"filterload\",\n\u003e     \"filteradd\", or \"filterclear\" message from a peer the node should\n\u003e     disconnect that peer immediately. For backwards compatibility, in\n\u003e     initial implementations, nodes may choose to only disconnect nodes which\n\u003e     have the new protocol version set and attempt to send a filter command.\n\u003e \n\u003e     While outside the scope of this BIP it is suggested that DNS seeds and\n\u003e     other peer discovery mechanisms support the ability to specify the\n\u003e     services required; current implementations simply check only that\n\u003e     NODE_NETWORK is set.\n\u003e \n\u003e \n\u003e     Design rational\n\u003e     ===============\n\u003e \n\u003e     A service bit was chosen as applying a bloom filter is a service.\n\u003e \n\u003e     The increase in protocol version is for backwards compatibility. In\n\u003e     initial implementations, old nodes which are not yet aware of NODE_BLOOM\n\u003e     and use a protocol version \u003c 70011 may still send filter* messages to a\n\u003e     node without NODE_BLOOM. This feature may be removed after there are\n\u003e     sufficient NODE_BLOOM nodes available and SPV clients have upgraded,\n\u003e     allowing node operators to fully close the bloom-related DoS vectors.\n\u003e \n\u003e \n\u003e     Reference Implementation\n\u003e     ========================\n\u003e \n\u003e     https://github.com/bitcoin/bitcoin/pull/6579\n\u003e \n\u003e \n\u003e     Copyright\n\u003e     =========\n\u003e \n\u003e     This document is placed in the public domain.\n\u003e     _______________________________________________\n\u003e     bitcoin-dev mailing list\n\u003e     bitcoin-dev at lists.linuxfoundation.org\n\u003e     \u003cmailto:bitcoin-dev at lists.linuxfoundation.org\u003e\n\u003e     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev\n\u003e \n\u003e"}
