Hva er 'Mining'?
May 19, 2016Ingen sentral bank styrer valutaen Bitcoin, så hvem passer da på? Hvem er banken liksom? Det er altså her 'minerene' kommer inn. Det er 'minerene' som prosesserer transaksjoner, og sikrer all eierskapshistorikk. Så hvem er de, og hvordan gjør de dette?
De fleste som leser denne artikkelen har nok hørt om fenomenet 'mining' før, eller graving som det litt rart kan kalles på norsk. Kanskje dere har hørt at 'mining' foregår ved at en skal løse en vanskelig matematisk oppgave, og at det fungerer som et stort lotteri der førstemann som klarer å løse oppgaven får gevinsten. Denne forenklingen er forsåvidt riktig.
'Minere' kan hvem som helst bli. En er dog nødt til å disponere billig og spesialbygd datakraft, hvis en vil tjene penger på det i dag. Men om du bare er nysgjerrig eller ønsker å gjøre det av idealistiske grunner, så kan du sette i gang å 'mine' med et enkelt program på PC'en din nå.
I begynnelsen av Bitcoin sin historie var det derimot veldig lukrativt å 'mine' med sin private PC. I dag vil du nok gå kraftig i tap økonomisk sett. Det skyldes den enkle grunn, at maskinen din vil forbruke mer strøm enn du klarer å tjene på 'miningen', samt at du sannsynligvis vil bli gammel før du ser noen betydelige inngående kontantstrømmer.
Forklaringen på hvorfor en ikke kan bruke en vanlig PC til å 'mine' lenger, er at vanskelighetsgraden på den matematisk oppgaven har økt kraftig siden starten. Og vanskelighetsgraden fortsetter å øke, ettersom flere og kraftigere datamaskiner brukes til å 'mine' i nettverket.
I starten brukte 'minerene' PC-prosessoren (CPU) til å 'mine', så fant noen smartinger ut at grafikkortet (GPU) var bedre egnet. Deretter begynte entusiastene å designe egne kretser (FPGA) til formålet, og nå de siste årene lages all maskinvare ferdig spesialbygd på fabrikker (ASIC).
Husk at uansett hvor mange og kraftige maskiner som 'miner', så skal det ta like lang tid å finne en ny blokk. Dette medfører da naturlig nok at det må bli vanskeligere for den enkelte, når flere deltar.
Vanskelighetsgradens utvikling:
En ny blokk, med nye transaksjoner, blir som kjent dannet hvert 10. minutt. Systemet er bygget opp slik at det akkurat er vanskelig nok å lage en ny blokk, slik at det statistisk sett bare skjer hvert 10. minutt. Samtidig blir det eksponentielt vanskeligere å redigere tidligere blokker, for da må du løse tilsvarende mange blokker alene, innenfor det vinduet hvor hele verden lager kun èn blokk. Vanskelighetsgraden justeres hver 14. dag for å opprettholde dette tidsvinduet.
Det utstedes nye bitcoins til den 'mineren' som hver runde løser oppgaven først, og dermed får danne den nye blokken. For tiden er gevinsten 25 bitcoins, noe som tilsvarer rundt 90 000 kr med dagens kurs! Så her ligger inntekten til 'minerene', og samtidig er dette også en mekanisme som skaper jevn inflasjon i økonomien.
Siden det er så vanskelig og ytterst sjelden en selv kan vinne hele potten, så går 'minere' ofte i lag i såkallte 'mining-pools'. Dette er å anse som tippelag, der en øker sjansen for å vinne, men samtidig må dele gevinsten med de andre som er med.
Dette er snedige mekanismer som er finjusterte, og avhenger av at et fellesskap opprettholder høy nok ratio av ærlige aktører i forhold til uærlige. Så lenge mer enn halvparten av blokkmakerene, dvs 'minerene', er ærlige, så vil nettverket fungere etter hensikten. Alle 'minerene' sitter jo på en kopi av Blockchain, og det tjener både som backup av Blockchain, og som en stemme på hvordan Blockchain skal se ut til enhver tid. Blockchain er ikke lagret på ett sted, det er flertallets versjon av Blockchain som gjelder. Det er her litt av magien ligger!
I tillegg kan hver enkelt bruker, lett og selvstendig, kontrollere at ting går riktig for seg, med hensyn til sine transaksjoner og saldoer. Det kan alle således gjøre om ønskelig, ved å operere sin egen Full-node Wallet. Denne utfører da en helt uavhengig sjekk mot sin lokale og oppdaterte kopi av hele Blockchain!
Så hva gjør 'minerene' egentlig?
De forsøker å finne bindeleddet fra den siste blokken til den nye som skal lages. Det kryptografiske limet som sikrer at ikke hvem som helst kan lage en ny blokk. Jeg har skrevet en tidligere artikkel om 'hasher', og det begrepet blir vesentlig nå i den videre forklaringen.
En 'hash' har som egenskap at det er en enveis-algoritme. Når noe 'hashes' så fungerer det som et fingeravtrykk, fordi det som 'hashes' alltid vil gi det samme avtrykket. Men som ved et fingeravtrykk kan du ikke vite hvem som eier det, uten at du har vedkommendes fingeravtrykk i databasen fra før. En kan bare sammenligne med andre fingeravtrykk.
For Bitcoin sin del er det tilnærmet tilfeldig hvilket fingeravtrykk, eller 'hash', en beregning gir, og en kan aldri gå baklengs og finne det som var utgangspunktet hvis en bare har fingeravtrykket. En må altså gjette vilt, og forsøke alle kombinasjoner i så fall!
Og det er nettopp dette som er den matematiske oppgaven; prøve alle kombinasjoner i tur og orden. Vanskelighetsgraden som til enhver tid er oppgitt, sier at 'hashen', eller fingeravtrykket, må være et tall lavere enn grensen gitt av vanskelighetsgraden (komplisert formel som jeg ikke tar med her.)
Som dere skjønner er det ikke bare èn mulig løsning på oppgaven! Vi jakter på en løsning som først og fremst er riktig og samtidig lav nok. Det er ingen snarveier til svaret, og en må regne om igjen, og om igjen, 'hasher' med ulike parametre og håpe at vi får et lavt nok svar før noen andre.
Med et antatt statistisk normalfordelt utfallsrom, og ingen systematikk i fingeravtrykkets verdi, så blir vanskelighetsgraden et verktøy for å styre hvor mange forsøk som gjennomsnittlig må til globalt, for å lykkes i hver runde.
Bonus:
Innenfor et styrt 10-minuttersvindu, opplever en hele tiden at tilfeldigheter fører til at en runde likevel går mye raskere eller senere enn dette. Dette skjer hele tiden, men mer hyppig når det nærmer seg ny justering hver 14. dag. Statistikk er bare forventet verdi!
Typisk antall minutter mellom hver blokk kan se slik ut over en 14-dagersperiode: