I was hoping to delay this post as long as possible because there are so many
interesting and important things to discuss other than soft forks and consensus
changes that seem to have taken a backseat this year due to Taproot activation.
In addition, there seems to be a world of opportunity to leverage the upcoming
Taproot soft fork that risks getting drowned out by speculating on the next
soft fork.
There is clearly nothing wrong with some individuals continuously working on,
designing and refining new possible consensus changes and whoever is interested
is free to follow and participate in those discussions. This is Bitcoin, no one
let alone me can decide what people should focus on. Indeed I intend to
allocate a portion of my time to following and understanding the trade-offs of
current and future soft fork proposals. However, in this post I will argue
against frequent soft forks with a single or minimal set of features and
instead argue for infrequent soft forks with batches of features.
I fully understand the desire and motivation to get consensus changes into
Bitcoin as quickly as possible when certain use cases depend on them. However,
the robustness, security and ability to resist harmful or suboptimal changes to
the system is clearly the ultimate priority. The more frequently soft forks are
attempted the harder it is for the community to ensure harmful or suboptimal
changes don’t creep into the consensus rules. I am well aware of how much
community mindshare Taproot activation demanded this year. This is how it
should be. The community should be informed and vigilant when the consensus
rules are changed. Every full node will either immediately on activation or in
future enforce these consensus rule changes and so it is in the interests of
every full node operator that these changes have been subject to the ultimate
levels of community review and rigorous testing. Attempting them frequently
either requires continuous community monitoring or an acceptance that an
unneeded or harmful consensus change could easily creep into Bitcoin. Neither
of these options seem acceptable to me. It is not reasonable to ask all the
different segments of the community to dedicate full time resources to stay on
top of proposed consensus changes. Hence treating a pull request to a Bitcoin
implementation that requires a soft fork like any other pull request is
shortsighted.
Merging soft fork code into a Bitcoin implementation
The code for a soft fork should not be merged into a Bitcoin implementation,
let alone activation parameters (discussed later), until the maintainers of
that implementation are comfortable that the entirety of that soft fork has
sufficient community consensus. This includes what many consider the reference
implementation and dominant implementation on the network, Bitcoin Core. A soft
fork pull request cannot and should not be treated like any other pull request
which can be merged with anything from 1 to 10 ACKs from long term or newer
contributors. The act of merging a pull request that is part of a proposed soft
fork is an acknowledgement by the maintainer(s) of that implementation that
they consider the entirety of that proposed soft fork to have community
consensus. That includes what is included in that soft fork as well as what
isn’t. If there is a prevailing view that the current design could be improved,
could feasibly be replaced by something superior in future or merely hasn’t
been subject to sufficient community review it should not be merged.
Of course there is no ultimate authority to enforce that this happens, Bitcoin
is an entirely voluntary system. A contentious or disputed soft fork can be
merged into a Bitcoin implementation at any time but doing this is opening the
door to the schism, disruption and waste of developer hours that we saw in
2017. Personally I think we’ll see an attempt to activate a contentious soft
fork at some point in the long term future (Murphy’s Law) but any attempt to do
so should be strongly discouraged. It should be made clear to any individual(s)
that attempt this of the knock on impacts and potential short term damage they
are inflicting on the entire ecosystem. Longer term I have confidence in
Bitcoin’s ability to survive whatever happens but allocating significant
community resources to resist an unnecessary contentious soft fork (or even
regular contentious soft forks) is not an optimal use of those resources.
Soft fork activation
Miner signaling is a tool for signaling readiness. It is not voting for the
soft fork or expressing support for the soft fork. There should not be any
attempt to facilitate miner signaling until there is sufficient community
consensus (the mining community is a subset of the community) on the soft fork.
Merging activation parameters or encouraging miner signaling before it is clear
there is community consensus on the entirety of the soft fork is putting the
cart before the horse.
Taproot showed it was possible through the sustained efforts of many
individuals and many organizations to achieve overwhelming community consensus
for a soft fork. It is obviously impossible to get 100 percent consensus but
Taproot appeared to get close to that. I did not identify any resistance
whatsoever to merging Taproot PRs or the objective of getting Taproot activated
although there was one long term contributor who effectively NACKed Taproot
based on quantum resistance concerns.
Activation method and activation parameters ended up being more challenging to
obtain overwhelming community consensus. Although I and a number of others
participated in multiple open IRC meetings and spent months on IRC trying to
find a way to get Taproot activated with at least rough consensus a number of
disagreements remain. I don’t think these are necessarily showstoppers for
future soft forks and assuming Taproot activates safely next month they ended
up not being showstoppers for Taproot. However, it is clear the bar that was
achieved regarding community consensus for the Taproot soft fork wasn’t met for
the activation method and activation parameters. In a world where there isn’t
overwhelming community consensus on the activation method, the activation
parameters and what to do if the first activation attempt fails we have to
accept that soft fork activations contain downside risk on top of the already
acknowledged risks of bugs, consensus divergences and botched implementations
of soft fork features. To layer on top a level of uncertainty over whether
there is community consensus for the actual soft fork seems unacceptable to me.
This is an important additional argument for infrequent soft forks with batches
of features rather than frequent soft forks with a single feature. If there is
a chain split risk every time you attempt a soft fork you should not casually
attempt a soft fork frequently or with abandon. There has to be community
consensus that the upsides of the soft fork are sufficient to take on these
downside risks of disruption or worse chain splits. I was of the strong
personal view that the upsides outweighed the downside risks for Taproot
activation in 2021 but this is a judgment we as a community will have to make
for each and every future proposed soft fork. It is easy to get excited about
shiny new features. It is harder to ensure harmful or suboptimal changes don’t
creep into the consensus rules and harder yet to minimize the risk of chain
splits if soft forks are attempted frequently.
--
Michael Folkson
Email: michaelfolkson at protonmail.com
Keybase: michaelfolkson
PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev