Author: Jorge Timón 2015-07-23 14:30:06
Published on: 2015-07-23T14:30:06+00:00
The conversation between Eric Voskuil and Eric Lombrozo on the bitcoin-dev mailing list focused on the need for a separated repository for libconsensus. The idea was to have alternative implementations that are consensus-safe by using it, and in the event of a fork, they can fork just that smaller project without having to rely on Bitcoin Core. Libbitcoin has published and maintained bitcoind's "libbitcoinconsensus" source files as an independent C++ library (with Java and Python bindings) that can be easily verified against bitcoind sources. In builds of libbitcoin-blockchain, it can be swapped out for libbitcoin's native consensus checks. The community needs to move beyond a largely singular and monolithic codebase that is holding that position partly due to fear about consensus bug forks. Bitcoin developers believe that the specification of the consensus rules should be a concrete implementation rather than based purely on a natural language like English. The goal of libconsensus is to reduce the "gatekeeping" friction around Bitcoin Core, and competitive alternative implementations are needed. However, any changes that touch consensus code are risky and slow. Safer, small, and incremental changes are less interesting for reviewers. For instance, consensus encapsulation changes conflict with other changes because consensus code is still coupled with policy and other bitcoind-specific code. This situation reduces the consensus-critical review development bottleneck. There are several things that need to happen before Bitcoin Core itself can include libconsensus' code or just use its API directly. The encapsulating consensus code must be finished, and libconsensus's API must be completed to expose more things than VerifyScript, such as VerifyTx, VerifyHeader, and VerifyBlock. After all this, libconsensus also needs to reconsider whether to re-implement its own libconsensus or use the "official" one directly instead.
Updated on: 2023-06-10T03:39:07.766069+00:00