tirsdag 18. juli 2017

Skjebnetid for Bitcoin

(Foto: Zack Copley, CC BY-SA 2.0)
Ei gruppe Bitcoin-interessentar har teke ladegrep og siktar seg inn – mot sin eigen fot! Det er duka for ei skotveksling i månadsskiftet juli/august og i dette tilfellet er ikkje utfallet død, men kanskje to Bitcoin-nettverk. To Bitcoin-nettverk er ikkje dobbelt så bra som eitt - det vil vera ei ulykke for kryptovalutaen, men det vil likevel ikkje bli Bitcoins undergang.

Skalering on- eller offchain?
Det er den betente skaleringsdiskusjonen som no toppar seg. Ord blir følgde av handling, og på kvar si side av fronten står Bitcoin-gravarar (delar av miljøet) og ordinære Bitcoin-brukarar. Striden står om korleis Bitcoin skal veksa (skalera) i framtida. Skal det skje ved at Bitcoin-blokkjeda får større kapasitet (Bitcoin-gravarane), eller skal det skje ved at dei fleste transaksjonane blir løfta over i eit anna lag og at Bitcoin-blokkjeda berre blir brukt som eit avstemmingslag (Bitcoin-brukarane). Den første løysinga kan karakteriserast som ei kortsiktig og dristig løysing medan den andre er meir langsiktig og forsiktig. Ironisk nok er det Bitcoin sin suksess som har skapt dette dilemmaet.

Hardt eller mjukt skifte?
Sentralt i striden står også spørsmålet om eit hardt eller mjukt skifte (hard fork vs. soft fork). Eit hardt skifte (hard fork) er eit definitivt brot med fortida og i realiteten skaping av eit nytt nettverk. Eit mjukt skifte (soft fork) er ei meir forsiktig endring som ivaretek kompatibilitet med tidlegare historie. Den kortsiktige løysinga baserer seg på eit hardt skifte, den langsiktige på eit mjukt. Den 21. juli blir endringa støtta av Bitcoin-gravarane sett i verk og avslutta tre månader seinare med eit hardt skifte. Svaret frå Bitcoin-brukarane kjem 1. august med ei anna endring. Det blir spennande å sjå kven av dei to fraksjonane som lykkast, eller om resultatet kanskje blir ei splitting i to uavhengige Bitcoin-nettverk og tilhøyrande valutaer.

Splitt og hersk?
Ei splitting vil vera særs uheldig, sjølv om det ikkje betyr slutten for Bitcoin. Den alternative blokk-kjeda Ethereum gjekk gjennom ein liknande prosess i fjor på denne tida, og resultatet vart to Ethereum-blokkjeder med kvar sin valuta. Det uheldige er at det vil skapa forvirring om kva Bitcoin eigentleg er, og det vil også bryta den «heilage» regelen om at det berre vil bli produsert 21 mill. bitcoin. Resultatet kan blir at me plutseleg får 42 mill. bitcoin, og kven veit om det ikkje blir meir også i framtida.

Dilemmaet er også eit klassisk spelteori-dilemma: Begge partar får truleg eit betre resultat av å samarbeida og søkja kompromiss, men ingen av dei trur at motparten kjem til å gjera det. Det blir difor som å leika "chicken"; dvs. to bilar som køyrer mot kvarandre og der den som svingar unna sist er vinnaren (den andre er "chicken"). I dette tilfellet ser det ut til at motstandardane i tillegg har demontert rattet og kasta det ut sidevindauga!

Mange forslag på bordet
BIP står for Bitcoin Improvement Proposal og er måten endringar blir føreslegne i Bitcoin-systemet. Det minner mykje om RFC og Internett-styring. Endringane blir lagde fram på GitHub og etter kommentarar og diskusjon kan dei enda opp med å bli implementerte i Bitcoin-koden. Men dersom endringane er omstridde, som t.d. SegWit, kan prosessen stoppa opp eller bli regelrett hindra av gravarar med mykje makt.

SegWit og BIP 141
SegWit vart føreslått som BIP 141 for eit par år sidan. Den går i hovudsak ut på å løfta ut signaturane frå transaksjonane og lagra dei separat, derav namnet Segregated Witness. Endringa skal først og fremst korrigera ein stor svakheit i dagens Bitcoin: transaksjons-endringar i ettertid (Transaction Malleability). Dersom transaksjonen T er ei overføring av M bitcoin frå A til B, er det muleg å laga ein transaksjon T' som også overfører M bitcoin frå A til B. Dei to transaksjonane er syntaktisk ulike, men semantisk like. Dette kan skapa problem og utnyttast til svindel. Det var det vekslingstenesta Mt. Gox oppga som forklaring på tapet av 850.000 bitcoin i 2012/2014 (200.000 vart seinare funne att), men det er tvilsamt om det stemmer.

Ein slik svindel kunne skje på følgjande måte (eksempelet er henta frå Andrychowicz et al. "On the Malleability of Bitcoin Transactions"):

1. Ein kunde (svindlar) P overfører x bitcoin til Mt.Gox-kontoen sin.
2. Han ber Mt. Gox overføra x bitcoin til si private lommebok.
3. Mt. Gox lagar ein transaksjon T som overfører x bitcoin til P.
4. Svindlaren lagar sjølv ein transaksjon T' som overfører x bitcoin frå Mt. Gox-kontoen til seg sjølv.
5. T'-transaksjonen blir plukka opp først og inkludert i ei blokk.
6. Svindlaren klagar til Mt. Gox over at transaksjonen T ikkje har skjedd, noko som stemmer.
7. Mt. Gox sjekkar og finn ut at transaksjonen T ikkje har gått gjennom. Kunden har rett og Mt. Gox krediterer han for den manglande summen (dermed får han betalt dobbelt opp!).

SegWit set ein stoppar for denne mulegheita. Men SegWit inneheld også mykje meir. Den opnar for ei lettare implementering av såkalla betalingskanalar, som er off-line betalingar der hovud-blokkjeda berre blir brukt til avstemmingar av balansar, og elles til store og viktige bitcoin-transaksjonar. Ved å ta signaturane ut av transaksjonsdata, blir det også plass til fleire transaksjonar i kvar blokk. SegWit er dermed også ein måte å auka kapasiteten på, om enn indirekte. SegWit doblar kapasiteten i blokk-kjeda på denne måten.

Ei så omfattande endring ville normalt måtta gjennomførast som eit hardt skifte (hard fork), men ein luring (Luke Dashjr.) fann ein måte å implementera dette som eit mjukt skifte (soft fork), og den vart formulert som BIP 141.

SegWit2X
BIP 141 skulle innførast etter reglande sette i BIP 9, dvs. at 95 % av gravarane måtte signalisera støtte til forslaget og det ville då bli implementert to veker seinare (2016 blokker etter at 95 % var nådd). Det som i utgangspunktet såg ut til å vera grei skuring og ei endring alle var einige i, vart etter kvart fanga opp i den intense skaleringsdebatten og dermed gjenstand for boykott. Dei ivrigaste storblokk-forkjemparane ("Big-blockers") med Bitmain/Antpool-sjef  Jihan Wu og tidlegare Bitcoin-evangelist Roger Ver i spissen, hadde nok gravarkapasitet til å trenera gjennomføringa av SegWit og heile prosessen stagnerte.

Etter mykje intens debatt og ein fastlåst situasjon, vart ein del sentrale aktørar (Bitcoin-gravarar pluss nokre profilserte Bitcoin-brukarar) einige om eit kompromiss kalla SegWit2X. Dette forslaget går ut på først å innføra SegWit som føreslått i BIP 141, og så gjennomføra eit hardt skifte der blokk-størrelsen blir dobla til 2 MB tre månader seinare. Altså eit typisk kompromiss mellom on - og offchain-skalering. Denne endringa skal ta til 21. juli.

UASF og BIP 148
Mange såg seg etter kvart leie på ein situasjon der Bitcoin-gravarane "tok makta" og utviklaren Shaolinfry lanserte så forslaget om eit brukarstyrt mjukt skifte (User-activated Soft Fork - USAF). Den vart formulert som BIP 148. Den seier at frå midnatt 1. august vil alle som køyrer programvara med BIP 148 implementert, vil avvisa blokker som ikkje signaliserer støtte for SegWit. Det blir ein boykott-aksjon som i verste fall kan resultera i eit splitta Bitcoin-nettverk med to ulike valutaer som resultat.

User-activated Soft Fork må sjåast i samanheng med den til no vanlegaste endringsmetoden Miner-activiated Soft Fork (MASF). Det kan også sjåast på som ein brukarstyrt aksjon for å visa at Bitcoin-brukarane har (minst) like mykje makt som Bitcoin-gravarane, og at dei er villige til å bruka den! Den er også ein reaksjon på SegWit2X-forslaget.

BIP 91 som kompromiss og redning?
"Chicken"-kampen mellom UASF-tilhengjarar og SegWit2X-tilhengjarar, der rattet/ratta er demonterte, kan likevel unngå å enda som frontkollisjon. James Hilliard, BitmainWarranty, har utarbeida eit forslag som let gravarar signalisera støtte for SegWit i forkant av innføringa av SegWit2X. BIP 91 går vidare ut på at SegWit blir innført dersom minst 80 % av gravarane støttar forslaget, og implementeringa skal skje 336 blokker etter at 80 % er nådd, i motsetning til 2016 blokker for BIP 141. Utviklinga kan følgjast på tenesta Coindance.com/blocks

BIP 91 prøver å komma UASF og BIP 148 i forkjøpet. Dersom minst 80 % av gravarane signaliserer støtte til dette forslaget, blir ikkje UASF og BIP 148 lenger nødvendig. Det er å håpa at dette forslaget vinn fram og at ei splitting blir unngått i denne omgangen. Spørsmålet er berre om det er ei utsetjing av problemet og dei grunnleggjande motsetningane som er i Bitcoin-miljøet..

Hovudproblemet er ein manglande styringsmodell
Heile prosessen illustrerer ein av manglane ved Bitcoin og kryptovaluta generelt i dag: Mangel på gode styringssystem (governance). Det er ganske normalt for nye teknologiar og også Internett brukte mange år på å komma fram til fungerande styringssystem. Og framleis er det spenningar og motsetningar i styringssystema for Internett, men det fungerer godt likevel. Bitcoin må også finna fram til styringssystem som kan handtera ulike meiningar og likevel finna ein farbar veg framover. Store delar av Bitcoin-miljøet, som andre kryptomiljø, har vore naive i trua på at teknologien styrer alt («code is law») og har ignorert at alle system der menneske er involvert, er politiske system. Det er grunn til å håpa at den vanskelege skaleringssituasjonen i Bitcoin kan bli starten på utforminga av eit fungerande styringssystem for framtida.


Ingen kommentarer: