Subject: Re: [bitcoin-dev] Versionbits BIP (009) minor revision proposal.

From: Gregory Maxwell <[email-masked]>
Date: Wed, 30 Sep 2015 02:57:52 +0000

On Wed, Sep 30, 2015 at 2:30 AM, Rusty Russell <[email-masked]> wrote:
> Hi all,
>
>         Pieter and Eric pointed out that the current BIP has miners
> turning off the bit as soon as it's locked in (75% testnet / 95%
> mainnet).  It's better for them to keep setting the bit until activation
> (2016 blocks later), so network adoption is visible.
>
> I'm not proposing another suggestion, though I note it for future:
> miners keep setting the bit for another 2016 blocks after activation,
> and have a consensus rule that rejects blocks without the bit.  That
> would "force" upgrades on those last miners.  I feel we should see how
> this works first.

Actually getting rid of the immediate bit forcing was something I
considered to be an advantage of versionbits over prior work.

Consider,  where possible we carve soft fork features out from
non-standard behavior.  Why do we do this?  Primarily so that
non-upgraded miners are not mining invalid transactions which
immediately cause short lived forks once the soft-fork activates.
(Secondarily to protect wallets from unconfirmed TX that won't ever
confirm).

The version forcing, however, guarantees existence of the same forks
that the usage of non-standard prevented!

I can, however, argue it the other way (and probably have in the
past):  The bit is easily checked by thin clients, so thin clients
could use it to reject potentially ill-fated blocks from non-upgraded
miners post switch (which otherwise they couldn't reject without
inspecting the whole thing). This is an improvement over not forcing
the bit, and it's why I was previously in favor of the way the
versions were enforced.  But, experience has played out other ways,
and thin clients have not done anything useful with the version
numbers.

A middle ground might be to require setting the bit for a period of
time after rule enforcing begins, but don't enforce the bit, just
enforce validity of the block under new rules.  Thus a thin client
could treat these blocks with increased skepticism.