General
This PR softforks 3 lock-time related BIPs which are all implemented in master
as mempool-only logic at the moment.
Dependencies
Why 3 BIPs at once?
- BIP68 (sequence locks) independently enforces the same semantics BIP113 (MTP)
- BIP112 (CSV) relies on BIP68
Relay policy for BIP113
BIP113 mempool-only policy was deployed with Bitcoin Core 0.11.2 at the same time as the BIP65 CLTV softfork so the policy is in wide use (at least 42% of nodes) as well as all the miners who upgraded to 0.11.2.
Relay policy for v2 transactions
BIP68/112 rely on v2 transactions. Currently only v1 transactions are relayed, so it is necessary to change the relay policy to allow v2. This will be done at the same time as softfork deployment and will have the net effect that once the softfork enforces, we can be pretty sure miners will mine v2 transactions.
At a later date once enough nodes upgrade and we’re sure v2 transaction will be relayed efficiently, we can bump the default transaction version in core see #7562.
Why ISM()?
It seems unlikely that BIP9 will be both developed and well tested enough to meet the roadmap schedule of deployment even with reasonable slippage taken into account. ISM is well oiled and tested.
Todos
- Change relay policy to allow tx.version=2
- fix bip68-sequence-p2p.py tests
- fix bip112-csv-p2p.py tests
Misc
This softfork could also include SegWit BIP141.
Obviously, needs back-port to 0.12
at least.