Author: Eric Voskuil 2016-11-18 03:20:52
Published on: 2016-11-18T03:20:52+00:00
The discussion revolves around the issue of hash collisions and their impact on Bitcoin consensus. There are three hash collision scenarios that cause Core to declare blocks invalid based on ordering, namely block banning, signature verification caching and block hash duplicate check. However, this implementation is broken due to the fact that validity must be verifiable independent of the state of other nodes, and any implementation that invalidates blocks based on order of arrival is broken. It is an error to claim that these behaviors are part of consensus despite being implemented in the Satoshi node(s). There are also determinism bugs related to hash collision issues that were introduced as supposed optimizations, with no public discussion prior to release. Such non-rules cannot be part of consensus and constitute a non-consensus bug. Hence, fixing/preventing these bugs is responsible development behavior and does not require forks or BIPs, since Bitcoin doesn't inherently contain any such bugs. Finally, it is recommended to contemplate the difference between unlikely and impossible. The chance of random collision is very small, but not zero. Colliding hashes are extremely difficult, but not impossible. But Bitcoin does not rely on impossibility for correct behavior. It relies on difficulty. Betting Bitcoin, and potentially the world's money, on the unknowable is poor reasoning, especially given that the cost of not doing so is so very low.
Updated on: 2023-06-11T20:36:55.189737+00:00