Ongelma, jonka proof of work ratkaisee
Digitaalinen tilikirja on helppo kopioida ja helppo muokata. Jos kuka tahansa voisi lisätä tapahtumia vapaasti, hän voisi myös käyttää samat kolikot kahdesti — klassinen "kaksinkertaisen käytön" ongelma. Järjestelmässä, jossa ei ole keskitettyä operaattoria, tarvitaan tapa, jolla itsenäiset osallistujat sopivat siitä, mitkä tapahtumat tapahtuivat ja missä järjestyksessä, myös silloin kun jotkut heistä ovat epärehellisiä tai poissa verkosta.
Aiemmat digitaalisen käteisen yritykset nojasivat luotettuun osapuoleen, joka piti kirjaa. Bitcoinin suunnittelu, joka kuvattiin vuoden 2008 white paperissa, korvasi tuon luotetun osapuolen julkisella kilpailulla: osallistujat käyttävät todellisia resursseja lohkojen lisäämiseen, ja verkko seuraa jaettua sääntöä voittavan ketjun valitsemiseksi. Konsensus syntyy kustannuksesta ja matematiikasta eikä auktoriteetista.
Mitä louhijat oikeasti laskevat
Jokainen ehdokaslohko sisältää erän tapahtumia, viittauksen edelliseen lohkoon ja pienen muutettavan luvun, jota kutsutaan nonceksi. Louhijat ajavat tämän datan SHA-256-hajautusfunktion läpi, joka muuttaa minkä tahansa syötteen kiinteänmittaiseksi, ennustamattoman näköiseksi tulosteeksi. Tavoitteena on löytää syöte, joka tuottaa tietyn tavoitearvon alittavan hajautusarvon — käytännössä hajautusarvon, joka alkaa tietyllä määrällä nollia.
Koska hajautustulosteita ei voi ennustaa tai käänteistää, ainoa tapa löytää kelvollinen hajautusarvo on yritys ja erehdys: muuta noncea, hajauta uudelleen, toista, miljardeja kertoja sekunnissa. Tämä raa'an voiman haku on "työ". Se on tarkoituksellisesti vaikeaa tehdä mutta vaivatonta kenen tahansa muun tarkistaa — yksittäinen hajautuslaskenta vahvistaa, että vastaus on kelvollinen. Tämä epäsymmetria (vaikea tuottaa, helppo varmentaa) on proof of workin ydin.
Vaikeus ja noin kymmenen minuutin rytmi
Bitcoin pyrkii uuteen lohkoon keskimäärin noin joka kymmenes minuutti. Kun verkkoon liittyy lisää laskentatehoa (hajautusnopeus), lohkot saapuisivat yleensä nopeammin, joten protokolla säätää ajoittain vaikeutta — kuinka matala tavoitehajautusarvon on oltava — pitääkseen keskimääräisen tahdin tasaisena. Suunnilleen joka toinen viikko (2 016 lohkoa) jokainen solmu laskee vaikeuden uudelleen viimeaikaisista lohkoajoista.
Tämä itsesäätö on syy siihen, miksei enempi louhintateho tarkoita ajan myötä nopeampaa lohkojen tuotantoa; se tarkoittaa pääasiassa, että enemmän työtä käytetään saman tasaisen lohkovirran turvaamiseen. Minkä tahansa yksittäisen lohkon tarkka ajoitus on satunnainen, joten kymmenen minuuttia on pitkän aikavälin keskiarvo, ei aikataulu.
Lohkoista konsensukseen: pisin kelvollinen ketju
Kelvollisen lohkon löytäminen on vain puolet tarinasta. Solmujen on silti sovittava yhdestä historiasta, kun kaksi louhijaa löytää lohkoja lähes samalla hetkellä. Sääntönä on, että solmut seuraavat sitä kelvollista ketjua, johon on kertynyt eniten kokonaistyötä (proof of work) — usein tiivistettynä "pisimmäksi ketjuksi", vaikka se on todellisuudessa raskain kumulatiivisen työn mukaan.
Jokainen täysi solmu varmentaa itsenäisesti jokaisen lohkon Bitcoinin sääntöjä vastaan: kelvolliset allekirjoitukset, ei kaksinkertaista käyttöä, oikea lohkopalkkio ja tavoitteen täyttävä hajautusarvo. Sääntöjä rikkovat lohkot yksinkertaisesti hylätään riippumatta siitä, kuinka paljon työtä niihin on käytetty. Väliaikaiset erimielisyydet (haarat) ratkeavat, kun seuraava lohko jatkaa yhtä haaraa, ja rehelliset louhijat päätyvät siihen, koska hyväksytylle ketjulle rakentaminen on siellä missä palkkio on.
Miksi tämä turvaa verkon
Kirjoittaakseen menneen tapahtuman uudelleen hyökkääjän olisi tehtävä proof of work uudelleen kyseiselle lohkolle ja jokaiselle sen jälkeiselle lohkolle, ja sitten päihitettävä koko rehellinen verkko rakentaakseen pidemmän ketjun. Mitä syvemmälle tapahtuma on hautautunut, sitä enemmän työtä olisi tehtävä uudelleen — minkä vuoksi kauppiaat odottavat usein useita vahvistuksia. Kustannus skaalautuu verkon kokonaishajautusnopeuden mukaan.
Tämä on intuitio "51 %:n hyökkäyksen" takana: hajautustehon enemmistön hallitseminen voisi antaa jonkun järjestää uudelleen tai sensuroida viimeaikaisia tapahtumia. Mutta laitteiston hankkiminen ja käyttäminen on kallista, se ei voi väärentää allekirjoituksia tai varastaa kolikoita suoraan, ja näkyvä hyökkäys voisi heikentää juuri sen omaisuuserän arvoa, jonka louhintaan hyökkääjä käyttää resurssejaan. Kannustimet on kohdistettu niin, että rehellinen osallistuminen on yleensä kannattavampaa kuin hyökkääminen. Turvallisuus on tässä taloudellista ja todennäköisyyspohjaista, ei absoluuttinen takuu.
Kompromissit ja laajempi keskustelu
Proof of workin vahvuus — todellinen, ulkoinen kustannus — on myös sen yleisimmän kritiikin lähde: energiankulutus. Arviot Bitcoinin sähkönkäytöstä vaihtelevat suuresti ja muuttuvat ajan myötä, ja kuvaa mutkistaa kasvava osuus juuttunutta, ylijäämä- tai uusiutuvaa energiaa, jota jotkut louhijat käyttävät. Järkevät ihmiset ovat eri mieltä, ja yksityiskohdat muuttuvat; kannattaa tarkistaa ajantasaisia, uskottavia lähteitä yksittäisen luvun sijaan.
Vaihtoehtoiset konsensussuunnittelut, kuten proof of stake, turvaavat joitakin muita verkkoja huomattavasti vähemmällä energialla käyttämällä taloudellista vakuutta laskennan sijaan. Ne sisältävät erilaisia oletuksia ja kompromisseja, ja niiden reilu vertailu on oma aiheensa. Bitcoinin osalta erityisesti proof of work pysyy mekanismina, ja sen turvallisuus ja liikkeeseenlaskuaikataulu ovat sidoksissa siihen.