On Fri, Feb 26, 2021 at 11:40:35AM -0700, Keagan McClelland via bitcoin-dev wrote: > Hi all, Hi Keagan, > 4. Once the node's IBD is complete it would advertise this as a peer > service, advertising its seed and threshold, so that nodes could > deterministically deduce which of its peers had which blocks. Although some of the details differed, I believe this general idea of sharded block storage was previously discussed in the context of BIP159, which warns: "Peers may have different prune depths (depending on the peers configuration, disk space, etc.) which can result in a fingerprinting weakness (finding the prune depth through getdata requests). NODE_NETWORK_LIMITED supporting peers SHOULD avoid leaking the prune depth and therefore not serve blocks deeper than the signaled NODE_NETWORK_LIMITED threshold (288 blocks)." - BIP: https://github.com/bitcoin/bips/blob/master/bip-0159.mediawiki#counter-measures-for-peer-fingerprinting - Discussion thread 1: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-April/014186.html - Discussion thread 2: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014314.html - Discussion thread 2, continued: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-April/014186.html - BIP159-related PR, review comments: https://github.com/bitcoin/bitcoin/pull/10387 > If you have thoughts on > > A. The protocol design itself > B. The barriers to put this kind of functionality into Core > > I would love to hear from you, I think it would be unlikely for any popular node software to adopt a technique that could make specific nodes easily fingerprintable on an ongoing basis unless it solved some other urgent problem. Luke Dashjr's rough data collection currently shows 5,629 archival listening nodes,[1] which is a substantial fraction of the roughly 10,000 listening nodes reported by Addy Yeow,[2] so I don't think we're near the point of needing to worry about the unavailability of historic blocks. [1] https://luke.dashjr.org/programs/bitcoin/files/charts/services.html [2] https://bitnodes.io/dashboard/ However, if there's a reasonable solution to the fingerprinting problem, I do think node developers would find that very interesting. -Dave