On Rewriting Bitcoin (was Re: [Libbitcoin] Satoshi client: is a fork past 0.10 possible?)



Summary:

In an email conversation, Tamas Blummer stated that it is not possible for a consensus library to be different from Bitcoin Core, except for its P2P service rules, wallet, and RPC server. He explained that libconsensus' only dependency is openSSL and eventually, openSSL will be replaced by libsecp256k1. The libconsensus does not store anything, but it has a c API to a single function: VerifyScript(). The aim of this function is to save the hassle of reimplementing signature checking and reimplementing an interpreter that must function in exactly the same way in many other nodes with different software and/or hardware. Blummer also highlighted that a consensus system like bitcoin cannot leave consensus rules unspecified, unlike Python, which has the luxury of leaving some behaviours unspecified. Coupling the consensus rules specification with a bigger project like bitcoin core can result in implementation details of that bigger project accidentally and unexpectedly becoming consensus rules. He mentioned that many parts of the bitcoin protocol, such as the P2P messages, are not part of the consensus rules.Blummer praised the core team that works and progresses within the limits and perception of the Core code base, which he described as unfriendly to feature extensions due to its criticality, legacy design, and ancient technology. However, he explained that he is not willing to work within the core’s legacy technology limits. Blummer clarified that nobody is attacking alternative implementations, and this tool was created mostly with alternative implementations in mind. He welcomed input from them on how to continue libconsensus. Blummer added that sidechains are completely orthogonal to this discussion and that it would be good to have libconsensuses for sidechains too since their nodes also need to come to consensus.


Updated on: 2023-06-09T17:22:01.016024+00:00