Soft-fork - A soft-fork is a change to the bitcoin protocol wherein only
previously valid blocks/transactions are made invalid. Since old nodes will
recognise the new blocks as valid, a soft-fork is backward-compatible.
Hard-fork - A hard-fork is a change to the bitcoin protocol that makes
previously invalid blocks/transactions valid, and therefore requires all users
to upgrade.
The difficulty about pulling off a hard-fork is that for it to happen safely
and without a massive disruption, everyone needs to be ready for it before it
occurs. Coordinating this is a daunting task, however, safe hard-forks *will*
be necessary in Bitcoin's future. Furthermore, the majority of stakeholders -
devs, miners as well as users - want both soft-fork SegWit and a hard-fork TX
block size increase, but favor one over the other and want to perform their
favorite fork first out of fear that activating the other prevents their choice
from being activated at a later point. This is a proposal to solve this
stalemate by providing a path to activating both.
I propose the Soft-into-Time-Activated-Hard fork, or SiTAH-fork in short. The
core concept is that it is a soft-fork that comes with a lock-in to
transitioning into a hard-fork at a predetermined later point in time, drawing
elements from Spoonnet. This means that, after the soft-fork takes place, there
is a transition period during which everyone has the opportunity and incentive
to upgrade their software, before the hard-fork inevitably happens. As a
consequence of this, those who want the hard-fork have incentive to support
activating the the soft-fork, and those who want the soft-fork have the
incentive to pledge to activate the hard-fork, rather than opposing their
secondary choice out of fear of their primary choice being indefinitely
postponed.
As for how this can be implemented for SegWit; SegWit is made soft-fork
compatible by virtue of the block weight function. From BIP-0141:
> Block weight is defined as Base size * 3 + Total size.
>
> Base size is the block size in bytes with the original transaction
> serialization without any witness-related data, as seen by a non-upgraded
> node.
>
> Total size is the block size in bytes with transactions serialized as
> described in BIP144, including base data and witness data.
>
> The new rule is block weight ≤ 4,000,000.
This block weight function can be replaced by a version that allows for >1MB of
pure TX data when the median time-past of the last 11 blocks is greater than
the HardForkTime. In other words:
BlockWeight = MedianTimePast < HardForkTime ? BaseSize * 3 + TotalSize :
TotalSize;
The post-hard-fork part of this formula can of course be tweaked.
I pose that implementing this would greatly improve support for the
introduction of SegWit as it provides a pledge to increase space for pure TX
data, which is something many are asking for. LN is a great long-term scaling
solution but is not ready yet, and this measure provides a way to enable SegWit
so that LN can later be built on top, while at the same time providing a
promise of TX-space relief to those skeptical or unconvinced of SW/LN providing
this relief in the short to medium term.
- SHAroshima
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev