mandag 21. desember 2020

Bitcoin som demokratisk investering

Finanskommentator Terje Erikstadi Dagens Næringsliv omtalar i ein kommentar 16.12 børsnoteringa av AirBnB og korleis utvalde investorar og mellommenn står først i køen for utdeling av «gratis pengar». Dette er ikkje eit eineståande eksempel, det er slik finansverda fungerer, og særleg investeringar i nye selskap. Folk flest må pent venta til dei rikaste har forsynt seg.

Bitcoin representerer eit alternativ til denne forfordelinga. Bitcoin er rett nok ikkje eit selskap, og du kjøper ikkje aksjar i systemet. Men så langt har Bitcoin vore eit investeringsobjekt som på mange måtar liknar ei investering i aksjar.

Kven som helst kan investera i bitcoin eller andre kryptovalutaer. I motsetnad til tradisjonelle børsnoteringar er det ingen forfordelingar til dei rikaste. Dei som eig bitcoin i dag er heller ikkje dei tradisjonelle investorane i finansmiljøet. Bitcoin-eigarane er spreidde over heile verda og har det til felles at dei har stor tru på eit alternativ til dagens ganske skakk-køyrde finanssystem.

Dette innlegget vart også publisert på nettutgåva av Dagens Næringsliv 28.12.2020, og på papir dagen etter.

tirsdag 8. desember 2020

Offentleg nøkkel som lokkemat

Låsing- og opplåsingsscript i P2PKH
Viss du er over gjennomsnittet interessert i Bitcoin, er Marty Bent og Matt Odells Tales From The Crypt (TFTC) ein obligatorisk podkast, i alle fall "Rabbit Hole Recap" som er ei oppdatering av dei viktigaste sakeene i Bitcoin-verda siste veke. I RHR frå 30.11 presenterte dei ein ganske spesiell konspirasjonsteori: Satoshi Nakamotos bitcoin er eigentleg lokkemat ("bait") for kvante-datamaskiner (Quantum Computing - QC). 

Eg bryr meg vanlegvis ikkje om konspirasjonteoriar, og det trur eg ikkje Matt og Marty gjer heller, men denne var ganske morsom, og gir anledning til litt refleksjonar rundt adressetypar i Bitcoin. Den første adresse-typen i Bitcoin var "Pay to Public Key", eller P2PK som den vanlegvis blir forkorta. 

Satoshis P2PK-bitcoin som honningfelle
Teorien går då ut på at dette er litt av ein lokkemat for QC, for dersom denne teknologien klarer å knekka offentleg nøkkel-kryptografien, dvs. å finna den private nøkkelen gitt den offentlege, er gevinsten heile Satoshis formue. Teorien seier vidare at dersom kinesarane er dei første som klarer å utvikla QC så langt, vil dei halda det hemmeleg så lenge som muleg fordi dei då får tilgang til store mengder hemmeleg informasjon. Men så seier teorien vidare at ein eller annan i systemet ikkje klarer å dy seg fordi alle som arbeider med kryptografi kjenner til Bitcoin og dei store summane som er kontrollerte av Satoshis private nøkkel. Vedkommande vil då bruka teknologien og rana til seg formuen, og vips er Kina avslørt som innehavar av teknologi som kan knekka det meste av det som er kryptert på nettet. 

Artig historie, om ikkje anna :)

P2PKH
Etter kvart vart adressetypen Pay to Public Key Hash, P2PKH, innført. Med P2PKH blir den offentlege nøkkelen køyrt gjennom hash-funksjonen RIPEMD-160 og resultatet blir den offisielle Bitcoin-adressa til mottakaren. Fordelen med denne metoden er at den offentlege nøkkelen ikkje blir eksponert, annan enn akkurat i validering, og dette skaper eit ekstra vern mot brute force-angrep mot digitale signaturar. P2PKH-adresser startar alltid med '1'. 

Men truleg vart adressetypen innført først og fremst fordi adressa vart ein god del kortare enn den offentlege nøkkelen. Komprimering av offentleg nøkkel ("Compressed Public Key") var ikkje kjent då Bitcoin vart sett i gang. Hadde Satoshi kjent til metoden ville kanskje den ha vorte brukt i staden for P2PKH, men det får me truleg aldri vita.

Andre adressetypar
P2PKH er den desidert vanlegaste adresseforma i Bitcoin og ein analyse av UTXO-settet i 2017/18 viste at den utgjorde om lag 82 % av alle UTXO. I 2012 vart ein ny adressetype føreslått av Gavin Andresen, teken i bruk. Det var PayToScriptHash, P2SH. Denne adressetypen opna også for multi-signturar, og adressetypen startar alltid med eit 3-tal ('3....'). Innbakt i P2SH er det to typar adresser: P2WPKH (Pay to Witness Public Key Hash) og P2WSH (Pay to Witness Script Hash).

Artikkelen nemnt over, viser følgjande fordeling på adressetypar i 2017/18:

P2PKH: 81,99 % 
P2SH:  17,11 %
P2PK:   0,12 %
Andre:  0,78 %

Som om ikkje det var nok, er det også innført ein ny måte å koda (teiknsetja) adressene på. Kall det gjerne ulike typar alfabet for Bitcoin-adresser. Den vanlege teiknsetjinga har vore Base-58, eit teiknsett som inneheld alle små og stor bokstavar pluss tal, men minus teikn som lett kan forvekslast, enten med tal eller bokstavar: 'I' (stor I for Ivar) 'l' (liten L), 'O' (stor O for Ola) og 0 (null).

Ei ny teiknsetjing er Bech32. Det er eit teiknsett med 32 teikn og har små bokstavar pluss tal, minus følgjande teikn: '1' (eitt-tal), 'b', 'i', og 'o' (liten O). Bech32-koda adresser startar alltid med 'bc1'

Oppsummert
Ei Bitcoin-adresse startar alltid med ein av desse teikn-kombinasjonane:

'1': Den "gamle" P2PKH-typen adresser, koda med Base58-teiknsett
'3': Den nyare P2SH-typen, men framleis koda med Base58
'bc1': P2SH-adresser koda med Bech32

I tillegg finst det Bitcoin-adresser som startar med 'n' eller 'm', og det er testnett-adresser.

fredag 4. desember 2020

Proof of Work i Bitcoin

Bitcoin-graving i Dale (2018)
Denne veka har eg delteke på eit PhD-seminar i regi av Høgskolen i Molde, som "blokkjede-ekspert". Det har vore ein interessant veke saman med 10 PhD-studentar og 4-5 rettleiarar og forelesarar. Det heile godt leia av førsteamanuensis Bjørn Jæger. 

Dei fleste stipendiatane har ikkje blokkjede som tema for doktorgraden, men Bjørn har likevel tenkt at eit kurs i blokkjedeteknologi (kurset heiter "PhD Seminar on Blockchain Applications in Supply Chain Management"). I løpet av kurset skal stipendiatane læra om blokkjedeteknologi (forelesingar), lesa gjennom ein del artiklar og presentera dei, og begynna arbeidet med ein publikasjon innan emnet. Det er ganske intensivt og krev mykje av deltakarane, men dei ser ut til å klara det fint.

Misforståelsar om blokkjedesikkerheit
Eg har følgt kurset, gitt innspel og delteke i diskusjonane og også halde eit lite innlegg basert på ei undersøking eg gjorde av 100 blokkjede-relaterte artiklar henta frå Web of Science. Eg undersøkte korleis artiklane omtalar sikkerheit i blokkjedeteknologien, og då basert på konsensus-metoden proof of work (PoW). Resultatet var ganske nedslåande: av dei 100 artiklane fann eg at heile 30 hadde ei feilaktig framstilling av sikkerheitsmekansimane i PoW-styrte blokkjeder. Den vanlegaste feilen var samanblanding av endrings-synleg (tamper evident) og endrings-sikker (tamper resistant). Meir om dette seinare.

For liten 'nonce'?
I samband med presentasjonen begynte eg å fundera på PoW-prosessen i Bitcoin. I omtalen av denne prosessen heiter det at felta i blokk-hovudet (block header) blir hasha med SHA-256-metoden for å komma fram til ein verdi som er mindre enn oppgitt størrelse (difficulty target). Det er ein prøving og feiling-metode der verdiar må endrast for å rekna ut nye hash-verdiar. Feltet 'nonce' blir brukt til å endra ein teljar for å få nye verdiar. Feltet er 4 bytes heiltal (232), noko som gir 4.294.967.296 mulege kombinasjonar (vel 4 milliardar). Ei vanleg Bitcoin-maskin i dag klarer fort 100 Th/s (100 tera-hash/sek.), noko som betyr at å rasa gjennom nonce-rommet tek mindre enn 1 millisekund. Kva skal gravarane då gjera? Eg spurde studentane om det, men kunne ikkje godt forventa at dei skulle klara å svara på det.

Svaret ligg i coinbase-transaksjonen, den første transaksjonen i alle nye blokker. Feltet for coinbase-skriptet har frå 2-100 byte plass og dei 8 første byta blir brukte som ein ekstra nonce. Det gir 232 + 264) = 296 handlingsrom, og det er eit tal med 28 nullar bak. Om det også skulle bli for lite, kan ein begynna å triksa med tidsstemplinga. Dei andre felta i blokk-hovudet kan ikkje endrast på.

I figuren over har eg prøvt å få fram at (delar) av coinbase-transaksjonen også inngår i det som blir rekna hash-verdi av. Det er ikkje ofte det kjem fram i litteraturen.