On 07/22/2015 05:13 PM, Eric Lombrozo via bitcoin-dev wrote: > Only being partly serious - I strongly am in favor of a sufficiently modularized codebase that swapping out consensus rules is fairly straightforward and easy to test... We (libbitcoin) have taken the time to publish and maintain bitcoind's "libbitcoinconsensus" source files as an independent C++ library (with Java and Python bindings). https://en.bitcoin.it/wiki/Libbitcoin_Consensus It can be easily verified against bitcoind sources and in builds of libbitcoin-blockchain it can be swapped out for libbitcoin's native consensus checks. https://en.bitcoin.it/wiki/Libbitcoin_Blockchain#Consensus_Validation So there is really no reason to consider the original client synonymous with consensus. I initially argued for this library to be natively isolated from bitcoind, but that didn't seem to be in the cards so we did it independently. In any case I agree with your stated need for this isolation (if not the means) for the reasons you state. The community needs to move beyond a largely singular and monolithic codebase that is holding that position in part due to fear about consensus bug forks. To make choice regarding consensus an actual choice (and thereby actual consensus) the modularity you suggest is essential. One must be able to take new developments without having to take consensus changes. The option to fork the codebase is not reasonable for most people. At this point there is no defensible reason for coupling consensus checks with other features. e