Author: Luke Dashjr 2016-12-01 20:44:06
Published on: 2016-12-01T20:44:06+00:00
On December 1, 2016, Johnson Lau via bitcoin-dev wrote about the necessity for any Bitcoin implementation supporting a softfork to also implement a hardfork warning system. Lau stated that if a generalized block header chain with non-trivial total proof-of-work is emerging and not considered as a valid blockchain, a hardfork with unknown rules may be happening. Lau believes that this needs to be made a “must” rather than a “should.” A wallet implementation should issue a warning to its users and stop processing incoming and outgoing transactions until further instructions are given. Similarly, a mining implementation should issue a warning to its operator. Until further instructions are given, it may either stop mining or ignore the hardfork with unknown rules. Light nodes, which are usually wallet implementations, need to observe the hardfork notification bits in block headers along with any other rules they opt to validate. If any of the hardfork notification bits are set, light nodes should issue a warning to their users and stop processing incoming and outgoing transactions until further instructions are given. Lau also stated that redefining the Merkle root hash field and changing block content validation rules are detectable by the warning system. The 32-byte Merkle root hash could be redefined with a different hashing algorithm, and any block resources limitation and transaction validation rules may also be changed. All such hardforks would be detected by the warning system. Additionally, introducing secondary proof-of-work (with non-SHA256 algorithm or fixing the block withholding attack against mining pools) may be detectable, as long as the generalized block header format is preserved. However, a secondary PoW might drastically change the measurement of work and fixing block withholding may result in block hashes that meet a preimage rather than bits directly. Finally, an accidental hardfork may be detectable if the generalized block headers in both forks are valid but no hardfork notification bit is set.
Updated on: 2023-06-11T20:43:45.441315+00:00