Post
Topic
Board Development & Technical Discussion
Merits 4 from 1 user
Re: Stale block rates
by
harding
on 09/07/2020, 17:37:39 UTC
⭐ Merited by suchmoon (4)
[...] there isn't much activity in improving the Bitcoin protocol anymore [...]

This statement runs counter to my intuition, so I made a quick comparison.  First, I assumed we were talking about the P2P network protocol ("the Bitcoin protocol" could also refer to the consensus protocol, but this conversion seemed to be about networking).  Second, I looked at all merges to Bitcoin Core during the six months up to today and the same period five years earlier.  Completely subjectively, I made a list of all the commits I thought affected how Bitcoin Core interacted with the protocol in a non-trivial way.  Here's the list for the the past six months (2020):

Code:
$ git log --since=2020-01-09 --until=2020-07-09 --merges --oneline | wc -l
768

abdfd2d0e Merge #19219: Replace automatic bans with discouragement filter
8edfc1715 Merge #19204: p2p: Reduce inv traffic during IBD
28ce05d06 Merge #19260: p2p: disconnect peers that send filterclear + update existing filter msg disconnect logic
73407ff65 Merge #16939: p2p: Delay querying DNS seeds
7d32cce3e Merge #19010: net processing: Add support for getcfheaders
4479eb04d Merge #18960: indexes: Add compact block filter headers cache
c73bd004a Merge #18861: Do not answer GETDATA for to-be-announced tx
553bb3fc3 Merge #18962: net processing: Only send a getheaders for one block in an INV
e45fb7e0d Merge #18877: Serve cfcheckpt requests
7a5767423 Merge #18808: [net processing] Drop unknown types in getdata
0ef0d33f7 Merge #18038: P2P: Mempool tracks locally submitted transactions to improve wallet privacy
67dfd18f4 Merge #16902: O(1) OP_IF/NOTIF/ELSE/ENDIF script implementation
d104aa0ac Merge #17951: Use rolling bloom filter of recent block txs for AlreadyHave() check
01fc5891f Merge #16702: p2p: supplying and using asmap to improve IP bucketing in addrman

Here's the list for the same six-month period five years ago (2015).  Note, the merge messages back then didn't include a title, so I placed the subject from one of the commits in that merge in brackets:

Code:
$ git log --since=2015-01-09 --until=2015-07-09 --merges --oneline | wc -l
321

66e546577 Merge pull request #6310 [f581d3d banlist.dat: store banlist on disk]
41076aad0 Merge pull request #6124 [ffd75ad Enable CHECKLOCKTIMEVERIFY as a standard script verify flag]
e34a8acd9 Merge pull request #6233 [3e91433 Advance pindexLastCommonBlock for blocks in chainActive]
c1fb0e107 Merge pull request #6274 [02a6702 Add option `-alerts` to opt out of alert system]
3a1d3e8f5 Merge pull request #5985 [14d4eef Fix removing of orphan transactions]
8d9f0a606 Merge pull request #5927 [dce8360 Reduce checkpoints' effect on consensus.]
9d6060244 Merge pull request #5875 [9be0e68 Be stricter in processing unrequested blocks]
88a7ead5d Merge pull request #6172 [a1ba077 Ignore getheaders requests when not synced.]
9f7809f6c Merge pull request #5976 [8ba7f84 Reduce download timeouts as blocks arrive]
e9af4e65b Merge pull request #5947 [36cba8f Alert if it is very likely we are getting a bad chain]
7bf5d5efa Merge pull request #5918 [f7303f9 Use equivalent PoW for non-main-chain requests]
5048465fc Merge pull request #5662 [00dcaf4 Change download logic to allow calling getheaders/getdata on inbound peers]
71900b442 Merge pull request #6029 [a784f90 Cap nAttempts penalty at 8 and switch to pow instead of a division loop.]
27e8d224e Merge pull request #5945 [ad9e86d Keep mempool consistent during block-reorgs]
f7dea1cba Merge pull request #5941 [1d21ba2 Scale up addrman]
29fef0b90 Merge pull request #5360 [9c27379 Reduce fingerprinting through timestamps in 'addr' messages.]
c1b723c30 Merge pull request #5442 [dca799e Ignore getaddr messages on Outbound connections.]
51377c2db Merge pull request #5843 [ba04c4a Limit message sizes before transfer]
fcf646c9b Merge pull request #5286 [a930658 Change the default maximum OP_RETURN size to 80 bytes]
6ee87f9bc Merge pull request #5647 [3ff735c Increase block download timeout base from 10 to 20 minutes.]
41e6e4cab Merge pull request #5713 [5a47811 BIP66 changeover logic (Pieter Wuille)]
de8b9ab75 Merge pull request #5608 [9161303 Introduce 10 minute block download timeout]

So there were 22 (subjectively) notable merges in 2015 and 14 notable merges in 2020, a 35% decrease in the number of merges. In both cases, an overwhelming majority of the changes are tweaks to the existing logic mean to improve security, privacy, or reliability rather than more significant extensions of the protocol.  Looking at the titles of the merges, and again very subjectively, I think I'd consider the aggregate of the changes made in 2015 to be even more than 35% useful than the 2020 changes, so the gap between the years is arguably larger than suggested by just the numbers.

However, based on these data, I don't personally agree that "there isn't much activity in improving the Bitcoin protocol anymore."  The rate of change does seem slower, but I think it's far from stagnant.