summaryrefslogtreecommitdiff
path: root/bip-0008.mediawiki
diff options
context:
space:
mode:
authorAnthony Towns <aj@erisian.com.au>2020-08-06 22:45:07 +1000
committerLuke Dashjr <luke-jr+git@utopios.org>2020-10-15 15:56:19 +0000
commit0f683f71f58f05d314cf943700558a82aba63102 (patch)
tree821148d0c39e98d91b6dfa9034cd54692e509130 /bip-0008.mediawiki
parentda9cdd675931fece248e98eaf04e308f28427f67 (diff)
downloadbips-0f683f71f58f05d314cf943700558a82aba63102.tar.xz
BIP8: add note about keeping lockinontimeout=true peers connected to each other
Diffstat (limited to 'bip-0008.mediawiki')
-rw-r--r--bip-0008.mediawiki2
1 files changed, 2 insertions, 0 deletions
diff --git a/bip-0008.mediawiki b/bip-0008.mediawiki
index 189d976..dc2291a 100644
--- a/bip-0008.mediawiki
+++ b/bip-0008.mediawiki
@@ -189,6 +189,8 @@ Blocks received while in the MUST_SIGNAL and LOCKED_IN phases must be checked to
Implementations should be careful not to ban peers that send blocks that are invalid due to not signalling (or blocks that build on those blocks), as that would allow an incompatible chain that is only briefly longer than the compliant chain to cause a split of the p2p network. If that occurred, nodes that have not set ''lockinontimeout'' may not see new blocks in the compliant chain, and thus not reorg to it at the point when it has more work, and would thus not be following the valid chain with the most work.
+Implementations with ''lockinontimeout'' set to true may potentially follow a lower work chain than nodes with ''lockinontimeout'' set to false for an extended period. In order for this not to result in a net split nodes with ''lockinontimeout'' set to true, those nodes may need to preferentially connect to each other. Deployments proposing that implementations set ''lockinontimeout'' to true should either use parameters that do not risk there being a higher work alternative chain, or specify a mechanism for implementations that support the deployment to preferentially peer with each other.
+
===Warning mechanism===
To support upgrade warnings, an extra "unknown upgrade" is tracked, using the "implicit bit" mask = (block.nVersion & ~expectedVersion) != 0. Mask will be non-zero whenever an unexpected bit is set in nVersion. Whenever LOCKED_IN for the unknown upgrade is detected, the software should warn loudly about the upcoming soft fork. It should warn even more loudly after the next retarget period (when the unknown upgrade is in the ACTIVE state).