Soft forks, hard forks og aktivering

Hvordan Bitcoins regler endres: BIP9, BIP8, Speedy Trial.

Bitcoin har ingen sentral autoritet som dytter oppdateringer. Å endre konsensus-regler krever at de fleste brukere og utvinnere kjører kompatibel programvare.

Soft vs hard

En soft fork strammer inn regler: nye blokker er fortsatt gyldige for gamle noder. En hard fork løsner dem: gamle noder avviser nye blokker og, uten universell oppgradering, splitter kjeden. Bitcoins bevisste regeloppgraderinger siden 2010 har vært soft forks, inkludert P2SH, BIP66 strenge signaturer, CLTV, CSV, SegWit og Taproot.

Hvorfor utvinnere signalerer

Med en soft fork, hvis bare noen utvinnere håndhever reglene, kunne andre mine en blokk som bryter dem, og gamle noder ville følge den. Det risikerer reorganiseringer. Så aktivering prøver å sikre at mest hashrate håndhever de nye reglene først.

BIP9: version bits

Hver utrulling får en bit i blokkheader-versjonen, en starttid og en timeout. Noder teller signaler i hver 2 016-blokk retarget-periode. Tilstandene er DEFINED → STARTED → LOCKED_IN → ACTIVE, eller FAILED ved timeout. På mainnet var terskelen 95 % (1 916 av 2 016 blokker). Etter LOCKED_IN går én periode til før ACTIVE. CSV (2016) var den første BIP9-utrullingen.

SegWit-lærdommen

I 2017 stoppet SegWit-signalering på omtrent en tredjedel av blokkene i månedsvis. BIP148, en brukeraktivert soft fork (UASF), foreslo at noder avviser ikke-signalerende blokker fra 1. august 2017. BIP91 ble tatt i bruk av utvinnere, og SegWit ble låst inn og aktivert i august 2017. Episoden viste at under BIP9s 95 %-terskel kunne et lite mindretall av hashrate stoppe en oppgradering.

BIP8: lock-in ved timeout

BIP8 bruker blokkhøyder i stedet for tider og legger til en lockinontimeout-parameter. Hvis satt til true, låses forken inn til slutt selv uten utvinnerstøtte, og noder avviser ikke-signalerende blokker i den siste perioden. Om man skulle bruke LOT=true eller false var en stor debatt før Taproot.

Speedy Trial

Taproot brukte Speedy Trial: et signaleringsvindu på omtrent tre måneder (mai–august 2021) med 90 % terskel, og en minimum aktiveringshøyde. Den ble låst inn i juni 2021 og aktivert i november 2021.

I dag

Forslag som covenants debatteres uten noen avtalt aktiveringsmetode. Listen er bevisst høy, fordi en mislykket fork kunne splitte nettverket.