søndag 30. juli 2017

To bitcoin for prisen av ein?

Ja, det ser ut som alle bitcoin-eigarar får dobla behaldninga si 1. august. Men det som ved første augekast ser ut til å vera ein veldig bra "deal", er nok ikkje slik. Akkurat då det såg ut som Bitcoin-verda klart å bli einige om å innføra SegWit gjennom kompromiss-forslaget BIP-91 (sjå tidlegare blogg-innlegg), vart det klart at det er enkelte som ikkje vil ha SegWit, kosta kva det kosta vil.

Fare for reduserte nettverkseffektar
Det vil kosta i form av reduserte nettverkseffektar og forvirring blant potensielle nye Bitcoin-brukarar. Har det vore vanskeleg å forklara Bitcoin tidlegare, blir det ikkje lettare når du må begynna samtalen med at eigentleg finst det to Bitcoin-valutaer..

Bitcoin Cash = altcoin
Dei fleste altcoin er kopiar av Bitcoin, så ein kan gjerne spørja seg om ikkje Bitcoin Cash berre er ein ny altcoin. Den er det på ein måte, men skilnaden er at den vil ha ein felles historie med den "vanlege" Bitcoin. Når eg skriv vanleg på den måten, er det fordi det er Bitcoin Cash som bryt av frå hovudkjeda med eit hardt skifte (hard fork), ikkje omvendt. Den nye valutaen blir difor eigentleg ein altcoin. Kva namn den til slutt vil få, er uklart. Det ligg mange skjer i sjøen her..

Altcoin med Bitcoin-historie
Den felles blokk-kjeda før brotet gjer at alle som eig bitcoin før brotet, plutseleg får ein ny Bitcoin-valuta i fanget. Og det sjølv om dei fleste ikkje har bedt om det! Det er ikkje slik at to er dobbelt så bra som ein. Det kan godt henda at totalen kjem ut negativt samanlikna med verdien før brotet.

Den nye valutaen vil også skapa problem ved bruk av bitcoin frå den felles blokk-kjeda. Om du har 1 bitcoin før 1. august, får du etter 1. august 1 btc og 1 bcc. Dei to er på same adressa i blokk-kjeda og korleis skal dei då skiljast? Det er dette som opnar for såkalla "replay"-angrep; enten målretta angrep eller at ein uforvarande brukar "feil" type bitcoin når ein skal gjennomføra ein transaksjon. For å få ei sikker handtering av den doble valutaen, må "gamle" bitcoin splittast og overførast til dei to separate blokk-kjedene. Først då er ein heilt trygg for muleg misbruk og mistyding.

Etter 1. august vil det vera to Bitcoin-blokkjeder; den "gamle" (grøn) og den nye Bitcoin Cash (raud).
Den som eig bitcoin før 1. august må passa på å få ei trygg splitting av gamle bitcoin til dei to separate kjedene.
Kva bør du gjera med nye bitcoin cash?
Kva bør du så gjera viss du får nye bitcoin-myntar i fanget? Eg trur den beste strategien er "vent og sjå". Det blir fort litt kaotisk rett etter eit hardt skifte. Mange vil nok "kæsja" inn dei nye myntane raskast muleg, men ver merksam på "replay"-faren.
Her er ein oversikt over kva strategi og tenester ulike vekslingstenester tilbyr.

Skaleringsspørsmålet ligg til grunn
Den nye valutaen blir pressa fram av dei som meiner at Bitcoin-skaleringa må skje på hovud-blokkjeda, og ikkje i eit sekundært lag slik SegWit opnar for. Dei er ikkje berre i mot SegWit innført som eit mjukt skifte (soft fork), men er grunnleggjande motstandarar av denne teknologien. Det er vanskeleg å forstå kvifor dei er det, men her er det nok kommersielle krefter som er dei drivande.

Bitcoin-nettverket har til no vore dominert av konservative krefter som vil gjera så lite drastiske endringar som muleg for å halda nettverket samla. Dette skil Bitcoin frå t.d. Ethereum, der terskelen for å utføra harde skifte er mykje lågare. Ethereum er også meir sentralstyrt enn Bitcoin.

Bitcoin og Internett
Eg meiner det er lurt å samanlikna Bitcoin med Internett-protokollane, særleg TCP/IP. Til dei som meiner ei oppsplitting av Bitcoin-nettverket er bra fordi ein då får klare valmulegheiter for framtidig retning, kan ein spørja om korleis Internett ville sett ut om det var like lett å endra TCP/IP. Styringa av den protokollen har vore konservativ og har bidrege til å halda Internett samla. Det er ingen naturlov som seier at heile Internett skal vera kompatibelt på det laget me her snakkar om, men på grunn av forsiktig utvikling (tenk IPv4 vs. IPv6) har det vorte slik.

Kva er den største verdien i Bitcoin-nettverket?
Eg meiner den største verdien av Bitcoin ligg i eit samla nettverk med stor motstand mot endring. Nokre ganger kan det slå uheldig ut, som t.d. innføringa av SegWit. Men nettverket av ulike brukargrupper og interesser har likevel vist seg i stand til å komma fram til konsensu (!) og halde saman i meir enn 8,5 år. Men 1. august er det slutt, og faren er at terskelen for harde skifte også er senka for Bitcoin slik at me kan oppleva fleire splittingar.

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.