One may notice that libbitcoin does not implement any of the following change proposals:
BIP8 (incompatible or moot)
BIP9
BIP91/SegWit2x (incompatible in part)
BIP141, etc (not active on mainnet)
BIP148 (incompatible or moot)
BIP149 (incompatible or moot)
...and a bunch of other incompatible rule changes.
BIP9 is useful only during its activation window, as once the window passes it cannot cause an activation (unless a stronger very long chain had been mined in secret in the past and later published). The activation window of CSV is long past and segwit is not active. As such the relatively costly implementation would be of educational value only (lower priority).
BIP91 is locked in as part of a staged activation of SegWit2x. This is effectively majority hash power compelling all hash power to signal SegWit *and* accept a hard fork to 2mb blocks:
https://segwit2x.github.io/segwit2x-guide.html
This is an incompatible rule deployment (2mb blocks), falling outside of libbitcoin fork policy. Yet the design results in a split between a compatible rule and distinct incompatible rule. So IAW policy I'm planning to implement the compatible portion.
Assuming that we implement BIP91 or BIP141 before their BIP9 expiration time, we should also implement BIP9. This will be more straightforward now that we persist median time past.
Note that libbitcoin consensus fork policy exists to focus our limited resources and to preserve independence; it is not a statement of rule preference.
e
> On Jul 21, 2017, at 5:47 PM, Eric Voskuil <eric@???> wrote:
>
> I've issued a pull request that implements bip68, bip112, and bip113 in libbitcoin/version3.
>
> https://github.com/libbitcoin/libbitcoin/pull/796
>
> I have also implemented and tested the necessary changes for other repos so that these features are exposed via config in node (bn) and server (bs), enabled by default, as well as a minor update to explorer (bx) that patches a unit test with nop3. These are currently in my personal repo. I'm traveling over the weekend and planning to merge/tag these all as v3.3 by Tuesday.
>
> Please feel free to review the consensus changes, in the following commits:
>
> bip68 (relative locktime)
>
> https://github.com/evoskuil/libbitcoin/commit/834df0d5aaa506a7049c5e0a15a1d4d1676de7a7
>
> bip112 (check sequence verify)
>
> https://github.com/evoskuil/libbitcoin/commit/388e53c8c8e0e04381776602b41b883f08e7700a
>
> bip113 (median time past for locktime)
>
> https://github.com/evoskuil/libbitcoin/commit/4b928e425e3e0ff78451383331109fdd8fc93da6
>
> Script tests for op_checksequenceverify:
>
> https://github.com/evoskuil/libbitcoin/commit/c371d1b09536f488b0a5aaf9af5c72f90fd4310e
>
> Other commits in this pull request are not directly related to implementation of the bips, relating primarily to config, blockchain and database support, and expansion of the scripting language.
>
> The changes are fully unit tested and script tested, and I've validated full mainnet with bn/libconsensus and full testnet with bs/native-script. The full set of changes in all repos took less than a week, including database changes to cache median time past with block headers and outputs. Store size is marginally increased. Validation speed is improved slightly due to a non-consensus optimization fix.
>
> e