Subject: [bitcoin-dev] BIP65 / CHECKLOCKTIMEVERIFY deployment

From: Peter Todd <[email-masked]>
Date: Thu, 25 Jun 2015 18:33:44 -0400

BIP66 adoption is quite close to 95% and will likely be enforced for all
blocks in a few more days; now is time to think about how CLTV will be
deployed, particularly given its benefits to much-needed scalability
solutions such as payment channels.

While I'm both a fan and co-author of the Version bits BIP(1) proposal,
it hasn't been implemented yet, and the implementation will be
relatively complex compared to the previous soft-fork mechanism. I think
there is good reason to get CLTV deployed sooner, and I don't think we
have any lack of consensus on it. The CLTV code itself has been
extensively reviewed in the form of the "mempool-only" pull-req, has
been included in the Elements sidechain prototype by Mark Friedenbach,
has been running in production on Viacoin for six months, and has a few
working demos of its functionality implemented. It's also been famously
described as "What you thought nLockTime did until you actually tried to
use it."

To that end I'm proposing that we simply use the existing median block
version mechanism previously used for the nVersion=2 and nVersion=3
soft-forks for CLTV. This mechanism is well-tested and understood, and
would allow CLTV to be easily backported to v0.10.x (even 0.9.x) with
little risk for rapid deployment. In the event that another soft-fork is
proposed prior to BIP65, nVersion=4, enforcement, we do have the option
of setting in motion yet another soft-fork as the median mechanism only
requires forks to be serialized in sequence - it does not prevent
multiple soft-forks from being "in-flight" at the same time.

Thoughts? If there are no objections I'll go ahead and write that code,
using the same thresholds as BIP66.

1) https://www.mail-archive.com/[email-masked]/msg07863.html

-- 
'peter'[:-1]@petertodd.org
0000000000000000007fc13ce02072d9cb2a6d51fae41fefcde7b3b283803d24