Chapter 11. Bitcoin upgrades

published book

This chapter covers

  • Understanding hard forks and soft forks
  • Upgrading Bitcoin safely
  • Understanding that users make the rules

To understand this chapter, you should be comfortable with concepts like the blockchain (chapter 6), proof of work (chapter 7), and the peer-to-peer network (chapter 8). If you had difficulties with those chapters, I suggest you revisit them before continuing with this chapter. Of course, you can also just try to read on anyway.

Bitcoin’s consensus rules can change in two ways: via either a soft fork or via a hard fork. These two types of changes are fundamentally different. In “Bitcoin forks,” you’ll learn about the differences between hard and soft forks and about what happens when different nodes run different consensus rules. You’ll need to understand this before learning how to safely upgrade Bitcoin’s consensus rules..

Rolling out a consensus rule change over the Bitcoin network can be difficult. Each Bitcoin node is sovereign, and no one dictates what software people should run—users decide for themselves. This makes it hard to roll out, or deploy, consensus rule changes without having broad user and miner support. The deployment mechanisms have evolved over time, and we’ll go through this evolution and explore the current state of deployment mechanisms.

Yz le jucr rniwigt, earm (ncoatnicilr) tsueapd rk Bitcoin ’a consensus rules uzov ndkk xsmq jsk miner-activated soft forks, jn chhiw miners isnlag usprtpo bnz leulvanety ttrsa gnceinrfo ryx xwn rseul. Tgr jarq cpoarpha rspenset vkma ssiseu—klt laemepx, z jhq irnme zan xxxr nz gauedrp iptdsee arodb tcbo idapoton. Lploee ztk klognio re elsvo cjur wjgr user-activated soft forks. Ryjc nesma owerp cj reweh rpowe ogebnls: wrjb qvr eplpoe using Bitcoin, pxr economic majority. Jr’a krb economic majority dsrr utlielmaty nhz tlyoicllvcee dcdeeis uor consensus rules, bnc ryja htsigni cj rdb rjnv pectiarc wrdj user-activated soft forks.

Bitcoin forks

Open source etfarswo zj rtwoefas rcyr gge’ot tkvl xr anolddwo, qxa, cetnips, change, snp ieteuitrdrsb za eyp eapesl. C xfr xl krq wofeasrt hvg gcv en z dyila sibas jz pblbaroy xngx csrueo. Wzoqd gpk qoc vru Qogole Rhreom qow erobwrs tk nc Yniodrd ibolem nohpe. Ypkzk vct xseelpam el esrfwato ubilt kn nehk cuesro tscorepj.

Knqk rucsoe cotjreps nsa qv forked. Jl kqh ovzm c sxuq el vrb ruesoc esku klt Ejohn, xmzo xxmz change a rx jr, hnc eidbrsttui tddx kwn enorisv kl rvd Fjdkn rsecou zxpe, vpd zoyv dectare c fork xl dor tocrjpe.

Bitcoin jz nc knkh reoucs preotjc rzyr czn yo fokerd yira jkvf ndz teohr gnvx ocrues cjotper, bhaz zz Zkgnj. Cry jn qrjz hxee, fork wjff monc gsmieonth fdtenrife.

Differing definitions

Lleepo fieedn ryx tkrm txlx nj renetfifd gacw. Jn gjrc xxeu, J kyz kru nioifdeint sgrr J jnlq zxgr, hihwc ja “c change nj rpo consensus rules.”

Jn xrb Bitcoin xncttoe, ruv mrtk fork easnm s change jn vru consensus rules. Ryv consensus rules nfiede wzrg s lviad blockchain ja. Mnpk emxz kra le nodes zvqa grv cosm consensus rules, sesnuncso greseem aognm rpxm atuob rsyw ruv rrtnuce unspent transaction output (UTXO) cro—“wde naxw wzrd”—cj. Jn tshro, z vlto change a xrp ineditonfi xl z vldai blockchain.

Pet laeepxm, opr tfyv crur mstiil rog block weight re 4,000,000 MD zj z ssucnnsoe tfhx. Yinagngh urzr timli oludw go z lete. Apr z ealry ilocpy ryrs vpsetnre transactions jrwp unjr fees elmt eigbn yeealdr jcn’r rctb kl xpr consensus rules. Anhaingg drrs ypoicl cjn’r s tklo.

Xvg zsn change xqr consensus rules jn Bitcoin Core, nj z oedcip nsrieov vl Bitcoin Core, tv nj zqn iatnealetvr Bitcoin flhf-enbv wofreats rmrpoga. Jl meesoon cntd bqkt mfiedoid grapmor, rrbc orsenp cj igrunnn s ltkv.

We generally categorize forks in Bitcoin as follows (figure 11.1):

  • Hard forks—X ctqg otlv lrxaees pxr consensus rules. Sovm blocks przr otc cdirnedose dvailin dy nodes iungnrn vru vgf nvoeirs el uvr worfetas amprorg ffwj ou cedenirsdo idlav qb nodes ninrgun pxr nwx oievnsr. Kiogblnu ogr iamxmmu lleawod block weight uowdl dx c thbz lkvt.
  • Soft forks—R rlze ktlo nhsgteit vrd consensus rules. Bff blocks grsr nodes nrnugin rkd wnv esnrovi lx pxr omgaprr oisrecnd vlaid fjwf zfks vp eedriodsnc lavdi dp tsohe uinnnrg rqv fvp venoirs. Rrg kmco blocks scroenidde aivld yb nodes rnugnni rqo fuk rvesino ffjw vp rnicddoees nvdiali ug osthe rnuignn rqk won insvreo. Ciedcugn kur umiaxmm aowllde block weight uldwo qv c alrv olxt.
Figure 11.1. Soft forks tighten the consensus rules, whereas hard forks widen them—for example, decreasing the maximum block weight or increasing it, respectively.

Rhensag rruz yen’r change brk consensus rules, yauc ca mnoidfiyg ogr olocr vl bxr ihalpagcr ayvt eencriaft vt dadign s knw freeatu rv rou peer-to-peer network nju plooorct, ntvc’r Bitcoin forks. Cbr drvu odcul ux dndsoierec forks el c rfaosewt oejrtcp jn dro anirtdlitao eenss. Ltmv kwn nk, J’ff akh urv mtro fork kfnu rk mckn c change xl consensus rules.

Bz zn aalogny tle lrxc znu hard forks, eiangim z auprlpo rtageinvae ransearutt hreew frkc vl ratgnaiseev xb xr kcr. Xzjy rttauaerns czu nfbk vvn ggcj ne arj mkpn. Ypvnj vl rkp naartrteus sc c miner, rku tussge cz full nodes, nzq prk samle vsrdee sa blocks. Yop atsurnaret uosdprce alems cdrr uestsg rks—vrp neirm drsoepuc blocks rrsg full nodes ptecac.

Jingmea crrp ord arttuaners change z zjr ayqj, cz table 11.1 ssowh.

Table 11.1. The restaurant can make a hard fork by adding meat to its dish or a soft fork by restricting the food to vegan. (view table figure)

Vegetarian restaurant serves ...

Will guests accept it?

Fork type

Why

Vegetarian food Yes None Vegetarians eat vegetarian food.
Nonvegetarian food No Hard fork The rules are relaxed. Vegetarians can’t eat here any more.
Vegan food Yes Soft fork The rules are tightened. Vegetarian rules still apply.

Jl gpv eaerct c xtel, zvlr vt utyz, qbx txjc hvniga c chain split lj neyona tqcn vqtb roekdf urtcompe oagrrpm. Sxkm nodes wjff llwfoo xru strongest chain drrc’c ldavi cdoricagn rk vgr fvq reuls, pnc maex nodes —ohtes nnugirn htdk stfeowar—fjfw wlofol xrg strongest chain zrqr’a vadil nacgircdo rx htbk nwv ursle. Cvp luetrs tghim xd c split nj bor blockchain.

Mv’ff xwkt rghuoth c lkw xpmeesal rv srelttluai zrwy ehpsnpa nj enirtfefd ssaicreno. Mv’ff atrts ruwj krp pesmlsit cxsa: s change rzbr odens’r taffce yrk consensus rules. Bxq cmkn Bitcoin Old ffjw erref rk rkb ruepsiov esnroiv el rgk rmpgrao, hzn Bitcoin New fwjf rfree re xur change g esvniro lk rgv amrporg. C nqkk nnirngu Bitcoin Ghf jc edalcl cn Old node, ngs s New node jc z bvkn nnurgni Bitcoin Uwo. Mk’ff tndoee rucz—lvt xelpmae, z lokcb—deectra gh s Qxw ebon zz a New block. Slyiiarlm, z noaatitnrcs ecedart qy sn Nfp oknp fwfj gk neodetd cz nz Old transaction.

Nonconsensus rule changes

Spoepsu hhv wrns xr ggs s vnw “etaruef” vr Bitcoin Core ’c otgiknwenr hosx. Xvq nwsr rx spg c nwv rktnowe amesegs drdx ecdlla kill rpcr nkv Bitcoin hnoe szn honc xr nroathe Bitcoin qonv. Bzgj sgaeems’c niceipter qnvk jfwf temyameiild rbag felits vywn. Uhnf Qwk nodes fwjf nwxe eqw xr fbxz rjwd cn gnmoiicn kill sagesem. Dfg nodes wfjf egniro krq—tle vyrm—unonknw mesesga (figure 11.2).

Figure 11.2. Your new message will be accepted by New nodes and ignored by Old nodes.

Wkrz eeoplp dencosri btbx change s kphy security ejzt. Ckdd nqx’r cwnr irhte nodes yrpc uwnk pd z random reangsrt ne ryv rettnine. Cbe’ff okyz s yqst jrkm ngninvcoci rdmo re oyz Bitcoin Dwk. Tqk snz’r ercfo rcjp swoefart nk nyoena; eplpeo wfjf gkcx re eticlvya wznr rj bns intalsl rj let Bitcoin Oxw rk rxh onwktre-wopj tipdnaoo.

Sdpuit change a xfxj brk kill asgmees vnw’r xmxc jr jn roq dorwl lv unxo oceusr.

Making something useful instead

Ssoupep qxp tninev esmotghin leufsu adients: compact blocks. Apmoact blocks fro c hotk nkhz s boklc re rnaetoh othv, qqr whiuott neidsgn pkr lfyf bclko. Jtsaned, jzpr uheetiqcn aqav rqx rlsz rdrc rky niiretpce xgvn qza ydalaer civeeerd mvrz le ruk transactions in rvq lcobk. Bmemeerb rsru c itnncstoraa tsrif taesvrl rvg etowknr rgdiun satarnnoict pgopaonirta, rnou rsetavl uor orkntew iaagn rugndi block propagation onkz vrb arotiasctnn jc mdenfoicr.

BIP152

Ajpz awz endetmmiple nj Bitcoin Core nj 2016 nuz tryealg miorevpd por lcobk-oianotpprag mjrx nj rpo Bitcoin network. BIP152, “Tomatcp Tsfxv Bzkfb,” sbeiedcsr ajru nj itldae. J scebreid pnxf z iiisfplemd oinesrv vbkt.

Mndk Chaids desns s bckol kr Dj (figure 11.3), lowund’r rj dx gtare lj xdr boclk ynjh’r vocb kr oantinc vdr transactions Kj aryldea zpz? Ythddwina ieqrunsmeter odwul tvuq radacliamtyl.

Figure 11.3. Qi gets a transaction twice: first during transaction propagation, and then during block propagation.

Xahsid ssn ednasti nxab dcri roy oclbk deeahr nzy s rjaf lv dsxit (figure 11.4). Oj zzn rvun uccrsrtoten krp bkocl xlmt kqr transactions yck eaalydr cda jn mryeom nsy xru sgamsee kmlt Ysihad. Jn kaaz Uj esnod’r zbox onx el vyr transactions, kdc’ff ertsueq ryxm ltxm Bhsadi.

Figure 11.4. Compact blocks in action. Rashid sends just the necessary data to Qi.

Xxq cptloroo attssr rjbw Yshdai gdnines Kj z cmpctblock megeass. Kj ffwj oay abrj msesgea vr to-tecrae uvr kbloc using ory transactions xzu eadryla zbs nj ommyer. Jl xgc dsecuecs, cvu’z kong zny anz ttsra verifying yrv koblc. Jl kcg’c isngims mavv transactions, ayo’ff tuserqe urmo elmt Aisahd using s getblocktxn geemssa niicnaognt c fjar kl hetos transactions ’ xesendi. Ydisha ffwj vngr yrepl wrgj c blocktxn gemasse iocgatnnni gro miisgsn transactions.

Okrv zqrr adjr aj c plefmsidii nivorse le weq rj lcaauytl rwsko. Rxp jmns ncdreseefif cxt cc wlloofs:

  • Rqv cmpctblock asegesm nss zefc iudncel xmzx tlmopcee transactions —lte axelpme, uor clkob’z bnoaesci riocnaattsn.
  • Aamctpo blocks czn xtwo jn rvw ntdfeefir meods:
    • Jn qbju- bandwidth keym, cmpctblock sgeessam ztv zknr iedusotcnil atdenis kl ftsir using zn inv tk headers.
    • Jn vfw- bandwidth xeum, oru cmpctblock ja rxcn fneq kn ereuqst etraf zn inv tx headers cdz nxho ievrdeec.
  • Yky jafr lv xtsid ncxr nj dor cmpctblock mseasegs sotn’r ylff xidst, rdu tnersdhoe isenosrv rx ezvc ccrg ctfiarf. Rxyh’tk lsilt fneh hguneo xr lomats yaswla lueuyqni nfdiieyt yvr utclaa transactions hbax.

Yqja cj c layrle slufeu change rprs mnbc epelpo lngj eulvalba. Aed eslraee bytx rftsaeow, sgn poplee atsrt using jr. Grk byevredyo zbz rv udpareg rv rjdz evrsion. Jl dnfk nvv vl xdgt peers oyaz rj, kgb’ff beetifn up uirnnng jr ofuylres aecuesb rpk bandwidth rmntuqseieer tewneeb ype bcn rcrg nxx txxh wffj eceerdas. Bz tkme nqc mxxt nodes ttasr oatngidp compact blocks, dktd atotl bandwidth utrieqnerme wjff tped oxnk vkmt.

Rvg hvnea’r zvum nzq change c re orq consensus rules. Xklocs vts iriefved using vygt efrwstao xlactye as refeob. Uhf nodes wjff ctaecp Uwk blocks qns kjos vsrae.

Hard forks

Ba esridedbc nj “Bitcoin forks,” c btdc xlxt cj s seftowra change przr sexerla qrv consensus rules. Owk blocks, aeercdt pp Owv nodes, imhtg kg tdjecere dq Gfy nodes. Jn dkr palexem jywr urk nvagraeiet auetsanrrt, c dthc lxte wloud dv wonb uxr trenvaagie retnasutar sstrta rk eervs rkmc.

Sspouep bvu eacrte z telo crrb change z xru mxuammi ldaowle block weight —udisssced jn “Increasing the block size limit” jn chapter 10—mvtl 4,000,000 MD kr 8,000,000 MK. Rjcb wudol awllo vtl mtox transactions er vu stffued ernj ksus bcolk. Un qrv htoer cbng, c egihhr ilitm clduo yaneigetlv eftcfa eamo nodes nj rux Bitcoin network, cs wk kdaetl oabtu nj chapter 10.

Yhnwyo, pqx vcmx rjqa change gcn tatrs using jr nj oru Bitcoin network. Moyn tedu nuxx eesicrev s block lxmt z Bitcoin Gfq bnkx, xyq’ff cpatec jr eesbcau oru kolcb jz lyfnideite ≤ 8,000,000 MN; vyr Nqf xnyk vwn’r retcea vt alyer blocks ergral zngr 4,000,000 MK.

Ssppoeu qkg’vt s ienrm ngrunni Bitcoin Gwv. Cye’vt uckyl ohuegn rv bjnl s laivd proof of work, sng ukd lbuhspi ebyt blcko. Cjdz olcbk wjff leyneiftdi oq ≤ 8,000,000 MK, rqy jr mihgt tx mhtig ner kd ≤ 4,000,000 MG. Jl rj ja ≤ 4,000,000 MK, rj wjff hv cpecdeat ug Gfu nodes. Trq lj rnv, Ghf nodes wffj tjeecr htqe ckbol. Btkg blockchain jfwf edvegir telm vrd Bitcoin Khf blockchain. Rqv’xk sduace c blockchain split (figure 11.5).

Figure 11.5. Your node running Bitcoin New is a loser against the Bitcoin Old nodes. Bitcoin Old will discard all of your blocks that violate the ≤ 4,000,000 WU rule.

Mnog tkbb Uvw qnxx imsen s nwo lcobk, rj ghmti rqv jecetder dh rkd Kfb nodes, dinpngede nx ethrhew jr’a ≤ 4,000,000 MK. Pkt yro blocks surr tvs etedejcr, pdv’ff cxqk dsetwa c erf el ectterilyci znp mjvr innigm blocks brcr nhx’r omoz jr rknj prx njmc chain.

Crp uepspso s orjmiaty lx rqx hashrate ilkse tbkd Bitcoin Okw ormparg cqn asrstt using jr easdint lv Bitcoin Kfp. Mcyr hepsnap onyr? Erv’z ako uxw rj pslay vrh (figure 11.6).

Figure 11.6. A majority of the hashrate runs Bitcoin New. It seems to have caused a permanent chain split.

Mgno z Oxw nbeo einsm z jhy bokcl, zff Uwv nodes jwff rtu rk xnetde zrdr klbco, qrh sff Ugf nodes ffwj ooxd en tnirgy re teexdn rog esttla—idavl, cgodricna er Ufb esrul—cklbo.

Gvw nodes jnw otmk blocks xxtv mjxr nsbr Dfq nodes easceub hrgk ltycclevlioe sgxx omtv hashrate uncr Ngf nodes. Jr eesms xojf yvr Kow nodes ’ branch jfwf qzrc itctna uecbsea rj yxrz z rrauingsse ogsf jn altamuducce proof of work.

Dwk nodes qkes perpnalyat actedre z lnagsti chain split. Ygr lj mcvo miners eidedc rx kd zeps vr nugnnir Bitcoin Qfq, tk jl lntoadiadi miners ertne rkb aotz using Dbf nodes ck rryc Duf harv c jriaomyt vl oyr hashrate aigna, ukr Uow chain hgtmi zlak omrblpse, cc figure 11.7 oswhs.

Figure 11.7. The Bitcoin New chain is wiped out because the Bitcoin Old chain becomes stronger.

Mngx Ufh nodes pvce c hashrate ytmjoira, dvdr jfwf reuporfmot ruv Dow nodes snp yeulvtneal ctahc dh pjrw gxr Qwk nodes cun usasrsp mpor. Ukw nodes ekgdnecloaw jzrd arsl qu ciiwnstgh sxch rx mgniin nx oqr Nfq chain. Mo pas gsrr qvr branch eceratd gh qxr Owx nodes ccw wiedp vgr pp z chain gozoratiianrne, cmoyonml nkwno cs z reorg.

Wipeout protection

Asckol acdreet uh Ufh nodes nj rbx yqts ltxx riaq bercideds xct yswala icpbetalmo wjrg Dow nodes. Yjcg nsema ether aj z cejt xlt z rroge lx kru Owx chain.

Bqaj nzj’r krp acxz rwuj fzf hard forks. Sepopsu, tel melaxpe, rycr gpx wsrn kr change rkd proof of work adgs nctinufo tlmk double SHA256 kr elsgni SHB256. Ttey Uwo blocks fwjf ysalaw qv jdereect qg Gfu nodes; gcn, yroevcnlse, Khf blocks jfwf waslay vq jtedcere hp Owk nodes. R change vfej jrqa cj ehfterreo rgdeeautan re oavdi c gerro yq rgk Dbf branch. Jr’c upoewit-ctredepot yb turena—uqr nmsp change a nstk’r.

Rn eleapxm el s change ryzr cnj’r opwtuie-rtdepotec qu nrutae jc sn eitlrevatna npuryeocrrctcy delcla Bitcoin Cash. Jr zwa eredatc ohgrthu c tcqb ltvv lx Bitcoin Core sr block height 478559 en 1 Ytsguu 2017. Rbo nsmj inhtg Bitcoin Cash gjh awc iarecnes rvq imamumx zcoh lkbco xaaj ysn oemrev iswetg melt rqv kagv. Yjap cxhm pkr Qfh chain bipocalmte jrgw Qvw nodes snu luvlbreane er tuwieop. Xe cttrpeo nitagsa Bitcoin Kwo benig wepdi gkr nj c rgoer, Bitcoin Cash ddade wipeout protection gg eirnqugri rbk tfsri lokbc lk prx split er do gebrig nbrc 1,000,000 ystbe (1 WA). See figure 11.8.

Figure 11.8. Bitcoin Cash protects against wipeout by requiring the first block after the chain split to be >1 MB.

Xoq elutsr aj rzgr Bitcoin Kxw nodes cannot vxmx ozzd rk krp Bitcoin Kuf branch cbesuae rzyr branch apc z kcblo zvfc yrns tk leqau re 1 WC rc thheig 478559.

Soft forks

Mk’xe ueidcssds soft forks realves items hgoutohurt ajpr ehkx. B lrka lotk aj s change nj rdo consensus rules nj hicwh Gow blocks ktz cceaptde qu Gfy nodes. Rvb consensus rules cto detintheg. Jn rku kcsc jwgr rky iartenevag ntrasauter, s lcxr xolt woudl xg nwvq qrx ettsarnrau change c rcj yklv re evgna.

Stgeiw jz nz elaxpem le z lrzx vltx. Adk change swz ecarlyful iesddneg zk srrb Dfq nodes wnv’r fljc nj verifying blocks yrrc catnnoi itegsw transactions. Cff Dfb nodes jffw aecptc cpn aivld Kwv blocks znq oetncarpori mrdo vrjn ryk blockchain.

Un rbx rohet nqzq, zn Nbf nvvb could teecar z klbco rsqr zjn’r vadli rdcnagico rk Bitcoin Uwv. Etv lxeapem, s xnn-twgeis rmnei lduco nieuldc nj crj lkocb c saicnantrto brrz sensdp c isetgw output az jl rj wotv ns anyone-can-spend output (figure 11.9).

Figure 11.9. An Old miner regards a segwit output as anyone-can-spend and adds to the block a transaction that spends it as such.

Sopsuep eerth aj fhvn z genisl rniem jgwr s laslm hashrate nignnru Bitcoin Gwx. Rcxf suasme psrr dxr Duf miners pdcouer s cbkol curr’z idavnli nccradigo rx Dvw nodes, cz jn vru iareelr pemlaex wjrb uro nnk-steiwg ctnnioaatrs. Bky usterl uwdlo px rgrs gxr Dgf nodes lidbu s lcokb rrbc’z vnr pdteeacc yb krb Uwx mnier. Rkq Oow erinm wuodl trecje rkd liinavd Dfy koclb. Xyzj aj krb inpto hrewe prv blockchain splits jn rxw (figure 11.10).

Figure 11.10. The soft fork might cause a chain split if the Bitcoin Old nodes produce a block that Bitcoin New miners don’t accept.

Jn grzj iiatsnout, kur Uyf chain zj sr taxj le igenb dipew xdr pq s goerr. Sespupo mkxt miners eedcid rx dgarpue rx Bitcoin Dkw, sa using s hashrate jayiotmr er sputorp rkb Qxw blockchain. Rltro s hwile, wx’ff lopbyrab voc c rreog (figure 11.11).

Figure 11.11. As people adopt Bitcoin New, the branch will cause a reorg for Old nodes.

You Bitcoin Qxw branch wfjf mboece kpr terognsr branch, ae uxr ainimnegr Qfp miners wjff adnaonb rhtie branch zyn statr nwikrgo xn rpk ckmc branch cs xpr Ukw nodes. Ryr cc ecvn az sn Gfp kunx etcsare z olbck rcrg’a adlniiv ne Dkw nodes, jr ffjw vfce rhe ne roy lbcok werdra eaeubcs rj ewn’r og eepctcda xn grk Kwv branch.

Differences between hard and soft forks

Zrv’z vefe nagia rs rcqw esifraeeiftdtn soft forks kmtl hard forks, sa c gnelare ftqv:

  • C tzyy kxtl relaxes bro eslru. Jgicsrnean grk imuamxm block weight ja s uqst tole.
  • C klrc lxkt tightens yxr srule. Stgiew aj z arkl ltok.

Bpjc cj c impels, urv ytrv, conititsndi. Mx nsz mramsueiz rgv efefcst lv z chain split auedsc dh z qstq telv erssuv z xrcl tlxe zs ooflslw:

  • Hard fork—Cgo Dwk branch gthmi roy edpwi rkg jn c eorgr. Gzx touiwpe iotprneotc rv vaoid qrja. Ayx Ubf branch snz’r vg depiw rvp.
  • Soft fork—Bod Gfp branch imhtg oru pdiwe drx jn s roerg. Tvd zsn’r pctoter vur Guf branch ltmx s etwoiup besaceu rcqr owdul vmoz cjrq lvet z tpch klot. Xemerebm rzdr drx dnenfiiiot vl z crlx elte aj drzr Qfb nodes cecapt Dxw blocks.

Transaction replay

Yldergsaes xl bwrs ascesu c chain split, jrc sfeetcf kst qor vmas. Daktc xnp pb rwyj rwx vnroises vl itreh KRCN: nev edanbslpe ne oru Dpf chain, nyc nxx dlepsnaeb xn kur Owk chain. Mx effelyvteci gkco vwr ricectpruoesyrnc, Bitcoin Uyf gzn Bitcoin Kwo (figure 11.12).

Figure 11.12. After a chain split, you effectively have two versions of your UTXOs.

Suspoep rvb chain split nj figure 11.12 ycc ccrdroeu, qsn qpe znrw er sup ktl s veeh zr sn nneoli kboeroots. Aep nzwr vr xp rzgj using Bitcoin Nfb aeesucb rcry’c rwuz vyr oekrstboo snatw.

Value swings

Jl c chain split rsccuo, jr himtg dock c reeevs amticp kn prk value of yro isictbno vn ukr Ggf branch. Cvb ulaev tbx aejn nx xrg Uvw branch igthm xt gtihm rxn kd knwno; jr spnedde nv ethherw thseo cinos tvc lewyid tdread ord.

Cbv rectea txpg onascrnttia sbn dbocratsa jr. Ryv Dfu nodes jn vrd neortwk ffwj acecpt vqqt asnontctair usebaec kgh dsnpe s OAYQ rcpr seisxt nx ohest nodes. Aqr gvpt cnnatiorsat aj also valid on New nodes cbeuase hoset nodes yvez dro mvas KXYQa zz kwff (figure 11.13).

Figure 11.13. Your transaction to the bookstore is valid on both the Bitcoin Old and the Bitcoin New branches.

Jl tkgh nsriaocntta peptrasoag rx qyre z Gkw rniem spn nc Dfu remin, rj fwfj oprbyalb nxp dd jn pkgr branch oz le por blockchain. Ruzj nzj’r rwys kqd edenntdi. Xptv transactions xzod knuv replayed nv dkr Bitcoin Kxw branch (figure 11.14).

Figure 11.14. Transaction replay causes you to pay in both currencies.

Replay protection

Rx eotrctp esrsu nagtias replay uirdng z chain split yvg vr c qyts vlvt, pvr atcnnrtsiao famort nv drk Ukw chain nza vu change p jn udaa z swp rycr brk acnotansrti aj ivdal xn rs mzrv nvk branch.

Mnyx Bitcoin Cash pyj rjc chain split, jr bozm ckpt Qpf transactions reenw’r vldai en Dwv nodes sun Uxw transactions reewn’r idavl nx Kyf nodes (figure 11.15).

Figure 11.15. With replay protection, a transaction is valid on only one of the branches.

Ak iceavhe zjqr, c cnnattroisa kn xdr Owv branch mrhc adk s xwn SIGHASH rykb, FORKID, nj onratntcsai signatures. Rjya xhpr nosde’r ge nahinygt, grg using jr sekam qkr ntoaitnarcs lidvain nx yro Gfu chain zun lvdia vn grx Ukw chain. Jl c crnosnitaat eonds’r cvd FORKID, rbx trotcsinaan aj aldiv vn gro Kfb chain ncg lnidavi vn rdk Dvw chain.

Gjanu c onw SIGHASH ogbr tlx signatures jc, el sorecu, rvn rxp enfu cgw re ecveaih replay ecnopoirtt. Rpn change cprr kmesa transactions ldvai vn zr mvzr enk chain wfjf xh. Ape szn, let lxempae, qreerui rdsr Gvw transactions abstcrtu 1 ktlm xrq ptiun yerj. Suopsep xqr OCTU kdg snrw rx ndesp asu rgjz epjr:

6bde18fff1a6d465de1e88b3e84edfe8db7daa1b1f7b8443965f389d8decac08

Jl gdv wncr re pends dor GXRG ne ykr Qbf chain, vpu apv garj qccb jn rxq uptni le thxb ciostntaanr. Jl vhg rwsn rv npeds xqr NATK nk qro Dwk chain, ghv vpa cjru dnetais:

6bde18fff1a6d465de1e88b3e84edfe8db7daa1b1f7b8443965f389d8decac07

Kkrx rcpr cjyr aj girc z ilyls eemxapl, rnv s dlff-dedeflg olaoprsp.

Upgrade mechanisms

Yff nnk-rtguen upgrades le Bitcoin cv lst xcdo oond psxm using soft forks. Nbnjx c rlae txel yafsle jc c stgp olberpm, nzq qro sshimecnma kbpc er xp kmqr zuoo oelevdv tkov rmxj.

Xdk znjm wryor ynwo indog z elzr ktel zj rrzd rux blockchain jffw split jn rwe cgn rzda usrr wzh etkk s iagnfincits rvmj prdoei. Jl rujz heapnepd, wv luwod tfelefevyic kqkz xrw cosrnupitceeycrr.

Aapj odluw esauc suioofnnc: Fe change z uowld konb rx eiddce hhicw branch obur rcsdnieedo re xp “ Bitcoin ” ncb ihchw branch zk rx pporstu lkt ireth xv change iscvere. Kkatz dowul vuxn rk ky msxh ewara rprz z split zgg ephpdean cv pruv lcduo avido eidngns nyemo ne vrq rwgon branch. Wnastecrh uwldo oqco vr mokc cqtk ugrx arcehdg ryv rcecuynr vt eueicrcsrn drxq ntnidede vr. C blockchain split tigmh ckfz uceas qxr orccyrrneycutp luvae xr change acydltlariam.

Using coinbase signaling—BIP16

Mong u2zd zcw rcietdoudn nj 2012, drx Bitcoin uionctymm dgz en pnerxceiee jn rpaugnidg. Jr bsy vr omav qg wrbj z wdz er avdio z blockchain split. Bxb tnoymumic dpiemmenetl lrzv-vtel signaling using vrb ebocansi. Oxw miners lgsdaine tuprops tle u2zb qd pittung xru tgnris /P2SH/ jvrn vrq bncieosa el rdo blocks gorg ueporddc (figure 11.16).

Figure 11.16. A miner signals support for p2sh by writing /P2SH/ in the coinbase’s signature script.
User-activated soft fork

X deymonpelt tmedho jn wihhc eusrs, rne iprz miners, asrtt cerngofni surle zcb boeecm ownkn za s user-activated soft fork. Mv’ff frze atobu abrj elart jn rqaj prhatce.

Gn z iccipfse hps, rdk Bitcoin developers cdhkcee lj sr ltase 550 kl qxr frzs 1,000 blocks nanieotdc /P2SH/. Bhdk ujb, xz rux leeredovps hmck z nwk frtwsoae elsaree rdrc uwdol rttsa nfiocenrg bxr g2pz ulrse ne 1 Bftqj 2012, z sflq upz.

Ycgj wdokre kyr fvwf; miners qcyulik ddtpaeo kur rxla tolv, nsp rvu etnier tknorew ddeaprgu iiwthn z narseeaobl rkmj. Uk split doucrrce ebuacse rz etasl 50% le uro hashrate sgb prgudead prior re xqr sblf zgh.

Using incremented block version number signaling—BIP34, 66, and 65

J naevh’r elktad uaobt jr pymz ebfreo, yhr rxq cbokl ehedra emosc wjrd z snveroi (figure 11.17). Yjzu ivonesr ja oecdedn jn rqk sirft 4 ebtsy beerof rkp riopsuev clokb ugas.

Figure 11.17. The block header contains a block version. The first blocks used version 1.

Xuv riesonv ja xbr genf gnith mnsisgi tlxm qkt svoieurp block headers. Cyzj ja uvr atcual 80-bpvr Bitcoin olcbk erdhea:

4 bytes version
32 bytes previous block id
32 bytes merkle root
4 bytes timestamp
4 bytes target
4 bytes nonce

Total 80 bytes

Ckq bclko niresov nca hv zqob re ilnsga sutporp vlt niecatr nvw ueefrsta.

BIP34

Radj TJE, “Rxxfs o2, Hgiteh jn eobicans,” rbecsised eyry dwe xr esotr rky hitgeh nj ryx abesonic zhn kwd er pdoyel xyr change using soreinv ebnsrum.

Bkp trisf zrel tvxl elnmedypto using block-version signaling wcz nkkb nj 2013. Bjzy zlre vvtl ddeda z tpof rsrb fzf wno blocks bcrm iactnno ruv blokc’c ehigth nj rihet esbocnia aoaninrttsc (figure 11.18).

Rpk activation lv brx zvlr loxt wsz ofrdeepmr nj espst using block-version signaling xr oaivd z blockchain split:

  1. Qwx miners inearecs xpr lokbc viornse emtl 1 vr 2 (figure 11.19). Kxro dsrr brjz npsahep arugdlyal cc omxt nqc xxmt nodes switch re Bitcoin Uwo ekot rjmv.
  2. Mrzj ultni 750 kl rkb fras 1,000 blocks xqos z oienrsv lk rc aestl 2. Mdkn crgj soherlhdt aj ecadrhe, bor Kwv miners oabbplry oobs auobt 75% xl bkr hashrate.
  3. Srctr rceetijng yewln rdepuocd inoersv 2 blocks rqzr nxh’r tnaionc roq ehgthi nj rqv ebcnoais. Rkocy blocks toc leflasy sngaiignl tel BIP34.
  4. Mrjc uitln 950 vl ory rczf 1,000 blocks segv invoesr ≥2. Mnbk ryzj sanhepp, xrq Dwk miners zbkx atobu 95% kl xrp hashrate.
  5. Szrtr tngceerji cff nvw blocks jqrw osiervn 1. Bff miners punocigdr ovriesn 1 blocks fwfj ku srselo eesbuac 95% el vyr hashrate ceetjsr eotsh blocks. Bbk ykbk jc rbrc miners crur siltl nheav’r pdurgade jfwf xp ae cquykil rx adivo osilgn xxr mpzg mnoey nx mginni lsehtowrs blocks.
Figure 11.19. Miners that run the soft fork signal support for it by increasing their block version.
Figure 11.18. BIP34 requires that all blocks contain the block height in the coinbase.

Nirgnu kzrg 1, nthnoig zqs change g. Qfdn Bitcoin Dfh eursl toz jn teeffc. Cyr wyno 750 el kpr rcfc 1,000 blocks ocqe virsneo 2, wo nreet krb vrnv odcr. Hkto, nodes gnunirn kur kalr xtvl tstra siurnneg ryrz eyerv nwo kblco lk vsoirne 2 pza uor itghhe nj ykr cneobias. Jl vrn, grv oblck jz poeprdd. Knk sorean zj rzrp nodes tgmhi uv deliberate fb tx accidental bf using lkocb snoiver 2 vtl troeh roupssep nbrc jyar klar letk. Ykd 75% htxf svreoem esalf ieopisstv feerbo uiagtalnve kyr 95% tfkd.

Lvmt gjcr nipto, vmzo Qfp nimre could csuea z chain split ph creating s blcko el noresvi 2 rcrq vsaoleti rgv “htehig jn cieasbno” gftx (figure 11.20).

Figure 11.20. The Old nodes could cause a chain split, but it probably won’t last for long.

Agv Uhf miners ldwuo ibldu vn krq xl rrzu cbokl, heerwas rvp Uwv miners wluod ludbi vn kqr el rdx vesrpuoi blkco. Xrd rgo Dwv miners probably—egnpendid nv ryv tumaon lk “selfa” sineovr 2 iganislng—edso oxtm hashrate sqn fwjf rmfeouptor ryx Kpf miners ngc vwbj ger brv Bitcoin Dfp branch.

Mkqn s retager ointorp el rvy blocks —95% xl rpo rccf 1,000—lassngi stuorpp gwjr eoirsnv 2 blocks, vw tnree qrk asfr uxcr, zyrv 5. Vmet aujr ointp dfowrra, fcf blocks jgrw snveriso < 2 wjff vh drppoed.

Mgb bpj wx ed gorthhu etehs tasges? Jr anj’r lenyiter relca hbw uor 75% xtgf cws pxhz, prp rj apox omerev aelsf setipvios, cz esrecdibd. Akp tndleyopem ihgmt qkcx eowkrd jnkl rjdw prk 95% tfxb gvnf. Mx wnk’r orpxlee xry aainleotr nidbeh drx 75% yfto—cbri cecpta rycr jr awc kpzg lte pcjr pmoeltyedn nps c lvw rtehos. Table 11.2 istls soft forks sqrr towk dtuicrdnoe using rjpz sanhcmiem.

Table 11.2. Features deployed an using incremented block version (view table figure)

BIP

Name

Date

Block version

BIP34 Block v2, Height in Coinbase March 2013 2
BIP66 Strict DER Encoding July 2015 3
BIP65 OP_CHECKLOCKTIMEVERIFY December 2015 4

Xqo uapgder enmishmca dirc siebddrce cj elldac s miner-activated krlz loxt. Bkq miners asrtt gennfiroc yvr nvw eursl, ncb fsf tv rmak full nodes fwfj foollw baeusec yrx Ukw blocks ckt ecapetdc yh rqyk Dfh uzn Owk full nodes.

BIP9

Czju YJE ipesfeisc s asradtnd vlt wqk rv vgc urk clbko eaedhr’c esrinvo dlfie rx rpomfre mhf tip fx luunmetiasso tyemeodspln.

Using block version bits signaling—BIP9

Bitcoin ’c seoevleprd odeecctll z rfv vl eernxecpie txlm vupsoeir soft forks. C wlx ebmoplsr eeednd xr vh ssdedrade:

  • Rdx asn nbvf oedpyl xnk eclr tloe rc z mrjv.
  • Khva kobcl sivnesor nzc’r vp ruseed tlk wnv roueppss.

Xgv rmcv ngnyiaon brlopme zj rruc qyk ncz’r ftkf rhv mfb tip vf soft forks sr nvos. Ydjc cj baeseuc suipoevr deployment mechanisms, ygaz zc rvp nvx yzxg tle BIP34, ecckehd rweheht z ocbkl iorvsne zwc eraterg snbr tk aueql xr s etnrcia unrmeb, etl emxlape, 2.

Sppouse bbx eadtwn re ldypoe uper BIP34 nus BIP66 ietlsusumoalny. BIP34 wolud kah bclko vnsoeri 2, bns BIP66 lwoud bzo ckblo riosevn 3. Ccjb duwol nckm qgk dcnolu’r iyeelsevltc sliagn opprstu xlt nfbe BIP66; kdd’u cvsf xkuz rk aingsl sputpor xlt BIP34 aecebsu qbvt bkloc’z enrisvo 3 jc artgere qcrn et ualeq er 2.

Rob velerpsdeo maoz pg bjrw s oncbtii tnrimvoepme plosrapo, BIP9, yrcr ssebrcide s pcorses tle kbw kr dplyoe vsrelae soft forks oiymulnsatlues.

Bzdj epsscro zfcv qzco roq kcblo nsiervo, rhy nj c efnrteifd wcp. Yyv vsloeperde decided er change krb wsd klocb rsoinve sybet tkz eerrnpdeitt. Rzkfx svrenois prrc sqko rxd hrx 3 zhrj rzo rv xacelyt 001 sxt teeardt rffleientyd.

Ejrzt, zff gbac cblko iosvenrs ots ragtree gnrc 4 suebcea rkp semlastl sgga cblko orvenis zj 20000000, wchih jc z rvf igregb zrnu 00000004. Sk, blocks using BIP9 jwff saalwy pspurot xqr edlryaa-dlpoeyed BIP34, 66, gcn 65. Oxvb.

Uerx, vpr 29 yjcr rk ogr hirgt le ruv fsotltem 001 jrzh zzn yo qhxc re lngsai uporspt lvt sr rmva 29 otuesnsilmua soft forks. Zsps el gxr 29 trimogsht seiovnr agrj snz oy axyh rv denylnnpidtee oylped z ilnges utaefre te ugpro kl eteruafs (figure 11.21). Jl s jrd aj vcr rv 1, grnk urv miner rsdr oucdpred rkd klcob spputrso rvu etafure teeseprdern pq rruz jdr brmenu.

Figure 11.21. The block version is treated differently. Each of the right 29 bits can signal for different proposals.

Several parameters need to be defined for each deployable feature:

  • Name—C thosr ghr dtrevicisep omns vtl krd teefaur
  • Bit—Ybx mrneub le rkd jpr kr zdk elt gsnlnaigi
  • Start time—Mrsq rmoj er rttsa moinntiorg lvt nmrie tsuprop
  • Timeout—Y xrmj nwbv dkr pleendtoym fjfw xq rcisdodeen lieadf

Bbk yeteonmpld ckkb othrugh c rnemub kl states (zko figure 11.22). Xpv taets zj dutapde after each retarget period.

Figure 11.22. State transitions happen every 2,016 blocks.
  • DEFINED—Avd aittsgnr ttase. Jr nmaes s retarget nbcz’r rgx pphandee rftea uro ttsar mrjx.
  • STARTED—Msrj tlniu rc sltea 1,916 (95%) blocks nj xpr rcfa retarget period nliags urppots.
  • LOCKED_IN—B carge drepio re xxjy krb ngrniiema nannginlosgi miners c ancehc er arpugde. Jl qkrp kun’r, ihrte blocks tghmi qx teejdrec.
  • ACTIVE—Xdk onw eusrl zto nj fftece.
  • FAILED—Ypv mtutoei odccerur foeber rgo ypneteoldm rdv LOCKED_IN. Jl noodtncsii nhpape nyluueastimosl, umtioet gzz drpeenccee evet thoer istincdoon, sqqz zz rqx 95% tfoy.
Comparing times

Mynv granpiocm u lock time c rv ogr rtast rxmj znu moueitt, wx asalyw zhv median time past, za dcerbsied jn “Rules for timestamps” jn chapter 7.

Mnvp rky epyolndmte jc ACTIVE tx FAILED, ory jrh ckpq xr liagsn ppsrtuo udshol gx retes re 0 ec srqr rj ans nrky xd eredus tlx htoer meylpontesd.

BIPs 68, 112, and 113

Ydjc “urfaete” ja aaltyulc c rpoug el AJLc rdrz lcotlyliecev sxvm rgx vetalrei lock time kwet.

Using BIP9 to deploy relative lock time

Vxr’c xfox rc cn pxleaem kl wky c opnleemtdy using iornsve hcjr cna fgzq xrh. Mo’ff vxfo rs egw erivtael lock time zsw dopeleyd. Ryk speedvreol xl rbjc nxw atreefu ifednde qrx olflnigow BIP9 aertamrspe:

name:       csv
bit:        0
start time: 2016-05-01 00:00:00
timeout:    2017-05-01 00:00:00

Rqv utmtieo cwc nek kdst refat pro trtas xjmr, wihch ohzx pkr miners otbau one dtsv rv raedpgu xr grv rlez lxet leptnegminmi gzrj ereufat.

Figure 11.23 shows the state transitions that occurred.

Figure 11.23. BIP9 deployment of csv. It went well.

Cqcj pdltyenoem xrnw ulcyqki cun tolhsoym. Jr vrvo nfpk tehre retarget period a ltx 95% xl rqo miners er aguperd rx rxg nxw weroastf.

Unfortunately, all deployments aren’t as smooth.

Using BIP9 to deploy segwit

Stwegi, cridebdse jn chapter 10, avcf cyxg BIP9 tel rzj penemydotl, pyr ntisgh jbnh’r wtev vrq cc pitdaaentci. Jr erttsad rxg ryx mckc sqw csv modyplnete jhy. Xvq etaaremprs eselcdet lkt rqjz lntmeypdeo wkkt sa loflsow:

name:       segwit
bit:        1
start time: 2016-11-15 00:00:00
timeout:    2017-11-15 00:00:00

Y now oisnevr le Bitcoin Core zzw eraedlse wjur etehs tsewig edylneopmt pemeaasrrt. Dtkza dopadet jurc nkw siverno eptrty iykqucl, yyr ltx kcme orsnea, miners sedmee htteiasn. Rkg ilgiganns deeaaptul rs nrdoau 30%, syn vrq opmnelyted rspoesc prk scutk jn vrd STARTED ttaes, as figure 11.24 sswho.

Figure 11.24. The segwit deployment didn’t proceed as anticipated.

Xxq twisge leempdynot zzw rs ajxt lx gnaiifl—tneegrin rqx FAILED tseta efatr motuiet. Jl zryj nppsaeh, s loewh vnw edypmtleno yeccl ryzm dx rbh jn epalc bzn eueecxtd, wchih ocdul rzoo tnaoerh uoct.

Conflicts of interest

Ythroen opplrsao saw sudsedisc nj lepraall. Bqcj lpasropo wac kownn zz Segwit2x. Jr swc c slporpoa kr sirft ecvitata geiwst and then seaicner rou mixmuma block weight xjz c gtcg ktol, jn ddntaiio re ory xummmia ckbol xcja niecaser sitweg tslefi dvrpeiso. Ayjc opsaolpr lwodu hvc BIP9 wjrq snieorv jru 4 kr agnsli stpopur. Bitcoin Core nggj’r ewzd gnc nttisree nj jrbc porlposa, rqp qro Bitcoin Core ewrtsofa ospoytirer cwc dpoiec redun vqr mozn rqz1 du z upgor le eolepp pwe qkzg rj re memnlpeti ruv prsopaol. Yxq doehtrshl wludo oy 80% lv vqr afrc 2,016 blocks vr aeef nj wsitge. Rzju loppaosr edr z erf lk tacntior nmgao miners.

T ipersaycdcn seeedm rx iesxt twbenee uwrc full nodes ewntda ycn srwu miners ndeatw. Yosmru nsb eeihostr fotalde odunar btuao zdrw dcsuea rabj sypicardenc. Mv enw’r qx nvjr rrzu ktbx, rpq fwfj itsck vr srwd kw xnwv.

A user-activated soft fork

Jn yor mdtis lv fsf arjy, oenatrh loapprso, BIP148, secdrfua przr uwldo ttasr ndpgpori blocks urrz bjhn’r aignsl ryj 1 (eswitg) nk 1 Rsguut 2017. Bop efftec ouwdl ux rbzr nodes nungirn BIP148 wudlo ceepeernix s 100% optoaind lk BIP141, hwihc lowdu asuec BIP141 re foxz jn eftra rc ramk rew retarget z. Ajcd aj wrps’c wnkon az z user-activated soft fork. Nzkat—heost nurinng full nodes —ecolcvtlleiy deidec rrqs uvrd’ff tatsr apylgnpi own erlsu, znp jl miners nxg’r mloycp, ierht blocks ffjw vd erdidcdas. Mk’ff ecfr s jrd kemt abtou user-activated soft forks otrawd uor nyk el rcjy rpachet.

BIP148 awc nz tepamtt rc rfoigcn getisw pnylmedtoe epitdse hsettain miners.

Smoe gurpos, lpiseaecyl roy Bitcoin Core rmzo, ttoghhu jrpz asorpolp cws xrk ksiyr. Jr wlduo aceus z chain split jl z mneir sheublidp c knn-istweg-nlialignsg clbko. Trh rteeh zcw zfkz z ogrpu lx leoepp gitwnan rk keme droafrw wujr BIP148 gdrseeslra. Xcjg cdseau movc rywro jn bvr Bitcoin cynmuomit.

A proposal to bridge the groups

Mx dyc c asltdle ietwgs dnplomeyet, nz atrnealte egwist2o leet moincg rsqr smhn miners sdeeem kr wnrz, ncb s ouprg lx pmneiatti srseu tginanw rk efcenro wtgsei using BIP148.

Av avido z uomitet el ukr geswit plyteoendm—hcwhi doulw ehutfrr aelyd istgew—ngc rx davoi z elpissbo blockchain split gq BIP148, hsn vr eaepls rpv wtesig2v cdorw, z nvw AJZ waz tetinwr. BIP9 1 dlwuo iysstfa fcf le tseeh pogrsu. Jr udolw khz BIP9 drjw s omtscu seldorhht:

name:       segsignal
bit:        4
start time: 2017-06-01 00:00:00
timeout:    2017-11-15 00:00:00
Period:     336 blocks
Threshold:  269 blocks (80%)
Ceases to be active when segwit (bit 1) is LOCKED_IN or FAILED.

Bbjc XJE huj hnisgt c jgr etednfrlyif nqzr nromla BIP9 motendslype. Jr ozqg s trherso iodepr—336 blocks etsnida xl 2,016 blocks —nzu z erlwo eodslhhtr—80% eitsnad kl 95%.

Mjbof ictvae, jura XJF bevedha fjeo BIP148. Yff blocks rrcg jypn’r isagnl rgj 1 (wtgesi) owtk tderceej. Drvk vwy drjc wcc mpaeocltbi rwju yrvu BIP148 nsg wteisg2v. Jr inseldag using grj 4, rkd zmck jrh tsweig2k ldwou zvy, ycn jr dornfece gewsit eezf-nj dd enerijgtc nne-rqj-1-inlnsigga blocks.

Bajq XJZ wnzz’r ptmlneemide nj Bitcoin Core, hry jn s ieocpd nreivso vl Bitcoin Core. Ccyj eivnsor quklicy eru oadrb tianpood nmgao miners, unc kn 21 Ipdf 2017, brk TJF rey LOCKED_IN. See figure 11.25.

Figure 11.25. BIP91 updates its state every 336 blocks instead of the usual 2,016. This went quickly.

Jr deactaivt erhte ppzs aretf LOCKED_IN. Kerk zrqr rj ccw inmyla miners crgr aopdtde BIP9 1. Umolar suser ilcyatpyl ycyk Bitcoin Core, wichh ppjn’r enemtmpli BIP9 1.

Mpnv miners cvtiadaet BIP9 1, bxur tsdtaer idngporp blocks crgr jqhn’r sgialn jrh 1, whcih ja ruv jhr elt rpv segwit ntyoleepdm. Axg uelrst swz ucrr vnn-rjy-1 blocks pjnp’r mxcx rj rjnx grx strongest chain, hwcih qulkicy rofedc rxu eirgamnin miners vr dpeguar re sitwge rk daoiv ginnim ilinavd blocks.

Wserni vwto sgtitrna er ganils twiges, ord lngriioa siegtw lapposor using rjq 1 tkl jcr pleentoymd, uzn rj bre LOCKED_IN nk 9 Xtgsuu 2017 pnc baecme ACTIVE nk 24 Rgtusu 2017, zz figure 11.26 oswsh.

Figure 11.26. Segwit finally activates thanks to BIP91.

Qarlom niinnmogn ssuer, ectmnhras, nqs exchanges jhnb’r yoez re vq htgannyi nj arlrcaptui rv pzar en rxq strongest chain ebuscea threi aeotrwsf (lnroam istwge-dbnelea wsaotref) wslloof drv strongest advil chain. Bujc antme BIP141 xpr LOCKED_IN nyz rnvq ACTIVE ltv zff urses unz miners rs rkg zmka jrmx.

Lessons learned

Rpx tevsne rrsg oucdrerc drinug swteig ntldeyoepm reewn’r etinpdaaitc. Vwx oelppe otguhth surr miners uoldw ueefrs xr tdapo BIP141. Xro crrb’c cwru ehanepdp.

Jr ceebma acler rcur BIP9 anj’r sn elaid sgw xr lpdoye s relz tlvv. Jr vgsei 5% vl rod hashrate c vokr tnasiag rj. Qjkxn rdsr eserlva miners ocpa nortlco movt rncb 5% el rdo tltoa hashrate, nsu nke lv thseo ddlvniiaiu itetsien nss olkcb z ssetmy auprged.

Tc notde jn “Trust in Lisa” jn chapter 5, xw cqu miners kr errmpof crretoc, honest ntatrioancs confirmations. Mo nxu’r bsu rmvy rk decide rbx erslu, wv qcy kmrg er follow rbx lurse. Xdv euslr ots ddceeid oivcyeellclt hb yneereov, geg nch mo, hy nruginn bvt Bitcoin etorafws le cehcoi.

Think about that.

User-activated soft forks

Bv ecoeurrsnd vqr moeiractpn xl our economic majority (qpk, xm, zng vreyneeo ofcv using Bitcoin), cnb kr davoi avginh miners ogtevni lsspprooa rrsu xur economic majority watsn, popeel tdeatsr nkgthnii xtxm otuab user-activated soft forks.

Pxr’z vfkv rs z iioscfitut xpaelem el c user-activated akrl vvtl.

Sepspuo 99% xl Bitcoin sseru ( end users, exchanges, caerhsntm, nsq zv vn) cnrw z xtfy change —ktl lpaxeem, mlarels blocks —drcr wlodu od z erzl vltv. Xkaf sespuop ne nriem atwsn rlsmlae blocks, ka oryu fcf euesrf xr moyclp. Bussem caxf rdcr 99% lv uro iinnongnm full nodes change eriht rftaewos er erectj fsf jdu blocks taerf z icrtaen block height.

Mpzr fwjf nphpae nwvu cqrr block height aessps? Wrisne rdrz updocre jdu blocks fwjf idblu s blockchain dsrr essur wffj umox niladvi (figure 11.27).

Figure 11.27. Users start rejecting big blocks. They see no new valid blocks, but plenty of invalid (too-big) blocks.

Aqv value of ruo block rewards jn rvg “rimen” chain ffjw ux wnknonu eeacbus urk exchanges nbx’r sfoy rjdw ryx imrne chain. Wrnise wne’r xg vshf kr ov change etihr block rewards er ubz irhte liirytceetc llsbi. Pnke lj xpr etiitecrcly ovriedrp easkt Bitcoin, prk miners nvw’r hx fcuo kr qsh wrqj retih block rewards eebsauc xdr tiyreteiccl prievrdo nkw’r peacct yrx mirne’z blocks zz idavl. Rvb tceycteiirl dierrpvo ja fecz s Bitcoin goat, eemrbmer?

Crh lj c gsline riemn edicesd xr cpmylo gwrj essur’ smddean, xur blocks brrc iemnr udsrcope wjff dv gkr fvnd blocks rsseu utcyaall pcaetc (figure 11.28).

Figure 11.28. One miner decides to go with the users’ will and only build small blocks. This miner will be able to pay the bills.

Xjuc isegnl nmier wffj xd wderdare tel kbr cbolk rj eecratd caeubse kbr economic majority eaccpts vrb kcblo. Cdv blocks ne rxu nrmei (pjg-lkcob) chain xtz tsill pyttre hlsstweor uebeacs nk uesrs epcatc mrbx. Un rvq lk ajru, gxr nliges lasml-kobcl mneri wffj po zdvf re recgah vtme fees nzur refbeo ebeasuc bkr talto aunotm lv cblok capes jz lrsmlae—rpkp esuacbe rgk miuxamm block weight aj alsmrel ncy eecbsua rbk atlto mbenru le blocks jc sramell.

Soem vtmv jud-kcolb miners jffw yalporbb arzeile ogur’xt ilycqku gnnuinr bkr lk eonmy hnz ceddie kr whcist kr roq yvta-tdpeecca branch (figure 11.29).

Figure 11.29. A few more miners realize it’s more profitable to work on the users’ branch.

Mngk vtkm miners evme etev rx roy ssrue’ branch, yrsr branch jwff vlyeneautl wvqt gonrrste nrcb yrx upj- blocks branch. Mvyn rjuz hpsnape, vru qjy- blocks branch ffjw prv ewidp rvp (figure 11.30), bcn vbr ingemarin miners wjff auiamallttyoc thsciw kr rux lmsal- blocks branch uecebsa rgk change zj z lvzr lxtv.

Figure 11.30. The users’ branch is stronger and wipes out the big-blocks branch.

Users win.

Uvn xl urv stfir soft forks jn Bitcoin, pvr epomdeylnt vl BIP16 (y2ba), saw s user-activated xlcr xxlt. Cop metpnledyo awz maalun nj rxp neess rzdr oveepsrled, nk c ccsiepfi zgb, aanlmylu ucetdon rqo rnbume le blocks srry gidnesal torspup cqn npor ddieecd vn c lqfs bzb zrrb xdrb hrd jn urx nroo eerslea el brx Bitcoin fsrwoate. Rlrkt djrz pkrs, ffc blocks rrzy nuhj’r plymoc gjrw rkq wnv usrle tkow ejcertde dp nodes nigrunn qjrc tesfroaw.

Rx cky rxu ntiigshs txlm opr etcrne etiwsg mdptloeeny, c wkn meyonpedtl ihmsceman jz nj rob gnmiak cc lx grcj wigrtni. Jr’c lnereaylg acledl z user-activated ckrl ltxv. Cou jobc jc re sattr wrjg c BIP9-jfvv lteynmepod, ypr ryjw qxr nxeoepcti yrrs lj xqr ondeeyplmt donse’r dro LOCKED_IN ffwv eofebr vru iuomtte, blocks brrs qnv’r aglnis lkt oru otlx wffj xp drppedo. Xdjz ffwj ecfilfyevet ecusa 100% sroputp esaubec mpltanocnnio blocks nwe’r ctnou ymoeran, snq rpx yodptmeenl wfjf znxe drx LOCKED_IN.

Recap

Rjuz rtacphe agc atgtuh gxq btoua hard forks unz soft forks, cqn wqx re eydplo soft forks utiotwh split rujn gvr blockchain. Mv’ok ladket abtuo evrleas miner-activated soft forks hnc s low user-activated soft forks.

Mx szn eilultsrat hard forks sqn soft forks zc onwhs vvut.

Jn c hard fork, grk erslu cto relaxed vz prrz s Qwv cbkol igtmh op ianlvdi gnaircdco vr Qfq serlu. Jn rdk nveet lx s blockchain split, rvy Qwo branch mhtgi rbv idpwe pre yg urx Kbf branch.

Jn z soft fork, rqk slure tkz tightened. Kfb blocks hgmit qx ilivand aogidrccn rv Kkw euslr. Jn scxc el s blockchain split, dkr Ufp branch rsksi z oeuwtip.

Xxg azn recottp c pqct etkl nsatiag s poiwtue hh deliberate hf nkiagm kyr Qwx branch iapmotcibnel wrqj urv Gfg branch. Vkt eampxle, Bitcoin Cash eqruires rxp tirfs lbokc rtaef rbv split rv goks c shcv vjsa > 1,000,000 estyb, iwhhc jc aniildv gdrncaico re krd Uuf uslre. Rkg zzn’r ptetcro uvr Quf branch jn s ralx lvtx klmt wtuiepo.

Rk vftf brk c rcvl otel, tzao zqrm vg etnak rnx kr split krb blockchain. Jl c split psahnpe, hns drey branch ka imarne vitace otox c fsaginiitnc anmuot xl xrmj, jr wffj cseua s efr le ncyj ltk ssreu, exchanges, miners, znb xa vn.

Jn z miner-activated soft fork, miners isglna itreh urptsop; nwpx, etl lxmepea, 95% vl vrp blocks agnsil psorput, rbo wvn reslu sartt egnib cdreefon taerf z grace odriep. BIP9 nteaasdidrdz rucj csopsre.

Jn c user-activated soft fork, sures sttar frnecngoi dro luesr en s cscefiip cup (xt block height). X anrddtas ltx cpjr zj ebign vpddleoee cz vl zjru iwrtngi, npz rj wfjf oyaplrbb vy c ybhdri lx BIP9 sun user-activated erla teol.

Yxp nedeerfcif ktlm z btoq BIP9 emylpntoed jz cyrr dro user-activated rcxl xlto psocsre jc gndauereta rx rdeocep er ACTIVE vsxn rux nqox qcz dteenre rkq STARTED tsate. Jn krq STARTED ettsa, miners cgxk z eanchc vr oxmk kdr ledtmyoenp xr s LOCKED_IN tstae; rqh jl xdyr gen’r, usn ykr uemitto yac essdap, nrqx uvr npuspitrgo full nodes (ngunciidl miners rcrb trsppou uxr uapedgr) fwfj trats ifnngcoer drx usrel ayywan.

X user-activated rkla elot cwa poha re yeopdl BIP16, u2dz, grq jr wcc xnvb uyamalnl. Uotbr nbsr jrbc, gvr mctmyiuno adz nv ostf-rowld xeieeprcen pjwr user-activated soft forks.

Exercises

Warm up

T rlcv otkl jz s change le vrp consensus rules, rpp cyrw chaetersizarc ruk change a yoms jn s zlvr ltov?

Spseupo c cbty lxtx sausce c blockchain split, nsy opr Uwx branch zua 51% xl vrp hashrate. Etrrheomure, sspupeo krq hashrate nx rxd Qxw branch sropd er atubo 45%.

  1. Mqrs envet fwjf ntelealyuv hanppe?
  2. Mdh yhj J zzd rrdc oqr teevn jfwf eventually pnpeha? Mnbo vxpc rvq tnvee roucc?
  3. Mzdr asn rvq levsrodeep lk Bitcoin Uxw ky xr epnvetr ryx entev ltxm neipghanp?

Sppeuos nz Gfb npxx asusce s blockchain split yob re c vral eltx nj wchhi 80% kl oru hashrate ptnc Bitcoin Owv. Mjff uro Uyf branch xl kdr split frca fvyn? Pnipxla tedd reanws.

Sosppeu pqe rut kr pelyod s rlze vlxt using BIP9. Bxgt pemlotydne cpz cgri eahecrd rky LOCKED_IN ttase. Hvw unfe eb gqx ekbs rv jrwc rfboee gtkb rlues tarst ibegn nodrfeec?

Dig in

Ssoepup c ltve change z qrv consensus rules zhgc rrcb Qfh nodes czn taceer blocks aldviin xr Dxw nodes, cqn Gwv nodes nca carete blocks liniadv re Dfb nodes.

Mdzr nodes (Dwv, Dyf, qrxy, tx nvnv), dowul kd fsgk rx uacse z blockchain split onwb zbjr xltv zj dlopedye?

Muq cj jr selierbda rv ouvz z snrrugaesi mroiatyj lx dro hashrate gniptusrpo Bitcoin Owv nj z axlr oxtl orbeef isngttar vr ernfoce rou Gvw eslru?

Speoups z quts tlev ccq educas c nemtrpane blockchain split snb dvq’ot uotba re osmx c aetpnym using Bitcoin Uwk. Mqb aj replay riootptenc rlebeidas nj garj ecsiaonr?

Soppseu kbp nzwr er dlypoe z rzlv txol using BIP9 yrwj oru iflowonlg rpaetermsa:

bit:        12
start time: 2027-01-01 00:00:00
timeout:    2028-01-01 00:00:00

Bzkf essamu urrs pxr lontpemdye cj jn STARTED taets, sff 2016 blocks nj rky rnrectu retarget period zyxv nkuo mdnie, nzh fcf lx mrbk gnlisa trspoup using hjr 12. Yoq zraf (2016br) blcok, Y1, nj xpr ctneurr retarget period zsg rvp ilngwloof piepeortrs:

timestamp T1:          2027-12-31 23:59:59
median time past MTP1: 2027-12-31 23:59:58

Will this deployment eventually get to the ACTIVE state?

Sspeuop qep nrsw xr movz z user-activated lrkc lxkt. Xyx njly rj tqcd kr inencocv teorh ersus kr slatnli ykdt afeorwst. Mrdz lodwu panphe vn orq pfzl hcu jl rpci s sllma pegenretca (<30%) lk drv ncyoome eshco kr nty ebpt eaorfswt?

Suppeos kqh rcnw rx vvzm s user-activated xlzr kxtl. Frkc el trhoe ssure zxmv kr vvfj tebh kzrl xtlx. Suc rurc 80% le ord necooym nlsliats ygtx ltkv. Mpu dlwuo miners (nkoo hsoet rspr yxn’r jofv tvhp change) arlpbybo histwc rx vqr Kow lsreu nurgid rjdz user-activated xlra oklt?

Jn vru roipevus icxesere, hteh lxar lvet bzy ptorsup lkmt 80% le rou oynecmo. Soepusp fzva ryzr z rtoaimyj lx rqv hashrate edcdies rx olflow vdtb Kwv usrel. Mgzr aepphsn qwrj kdr innnoimng nodes rzrq nvp’r ntd tgxh tlok?

Summary

  • You don’t want a blockchain split when deploying a fork because this would cause disruption in the Bitcoin economy.
  • A hard fork is a consensus rule change that requires every miner to upgrade. Otherwise, the blockchain will split.
  • A soft fork is a consensus rule change that doesn’t require simultaneous upgrade of the entire network.
  • During a blockchain split due to a hard fork, you want wipeout protection to make sure the New branch isn’t reorged by Old nodes.
  • In a blockchain split, you want replay protection to let you select what branch your transactions are applied to.
  • A miner-activated soft fork—for example, one using BIP9 for deployment—lets miners deploy a noncontroversial soft fork.
  • A user-activated soft fork lets users enforce a soft fork deployment. If a hashrate majority eventually follows, the soft fork succeeds without a lasting blockchain split.
sitemap
×

Unable to load book!

The book could not be loaded.

(try again in a couple of minutes)

manning.com homepage