Johdanto
Työntodiste (Proof of Work, yleisesti lyhennettynä PoW) on mekanismi, jolla estetään kaksinkertainen kulutus. Useimmat suuret kryptot käyttävät tätä mallia konsensusalgoritminaan. Konsensusalgoritmi on menetelmä krypton pääkirjan turvaamiseksi.
Työntodiste oli ensimmäinen käyttöön otettu konsensusalgoritmi, ja tähän mennessä se on edelleen hallitseva. Satoshi Nakamoto esitteli sen Bitcoinin vuoden 2008 white paperissaan, mutta itse tekniikka suunniteltiin kauan ennen sitä.
Adam Backin HashCash oli varhainen esimerkki työntodistealgoritmista kryptoja edeltävinä aikoina. Vastaanottajat pystyivät vähentämään roskapostia vaatimalla lähettäjiä suorittamaan pienen määrän laskentatoimia ennen sähköpostin lähettämistä. Tämä laskenta ei maksaisi käytännössä mitään oikealle lähettäjälle, mutta useat haitalliset lähetykset maksaisivat paljon jollekulle, joka lähettää valtavia määriä sähköposteja.
Mikä on kaksinkertainen kulutus?
Kaksinkertainen kulutus tapahtuu, kun samat varat käytetään useampaan kertaan. Termiä käytetään lähes yksinomaan digitaalisten varojen yhteydessä, koska sinun olisi vaikea käyttää samaa fyysistä rahaa kahdesti. Jos maksat kahvisi käteisellä, se todennäköisesti lukitaan kassakoneeseen. Et voi mennä tien toisella puolella sijaitsevaan kahvilaan ja maksaa toista kahvia samalla setelillä.
Digitaalisissa valuuttajärjestelmissä tämä on mahdollista. Olet varmasti kopioinut tietokonetiedoston aiemmin – sen kopiointi ja liittäminen on yksinkertaista. Voit lähettää saman tiedoston sähköpostitse kymmenelle, kahdellekymmenelle tai vaikka viidellekymmenelle henkilölle.
Koska digitaalinen raha on vain dataa, sinun on estettävä ihmisiä kopioimasta ja käyttämästä samoja yksiköitä eri paikoissa. Muuten valuuttasi romahtaisi hetkessä.
Jos haluat perusteellisemman katsauksen kaksinkertaiseen kulutukseen, tutustu Kaksinkertaisen kulutuksen selitys -artikkeliin.
Miksi työntodiste on tarpeen?
Jos olet lukenut lohkoketjutekniikan oppaamme, tiedät, että käyttäjät lähettävät transaktioita verkkoon. Näitä transaktioita ei kuitenkaan katsota heti kelvollisiksi. Tämä tapahtuu vain, kun ne lisätään lohkoketjuun.
Lohkoketju on suuri tietokanta, jonka jokainen käyttäjä voi nähdä, joten he voivat tarkistaa, onko varat käytetty aiemmin. Kuvittele se näin: sinulla ja kolmella ystävälläsi on muistilehtiö. Aina kun joku teistä haluaa tehdä siirron käyttämissäsi yksiköissä, kirjoitat siirron muistiin – Alice maksaa Bobille viisi yksikköä, Bob maksaa Carolille kaksi yksikköä jne.
Tähän liittyy myös toinen monimutkaisuus – joka kerta kun teet transaktion, viittaat transaktioon, josta varat tulivat. Joten jos Bob maksaisi Carolille kaksi yksikköä, merkintä näyttäisi itse asiassa seuraavalta: Bob maksaa Carolille kaksi yksikköä tästä aiemmasta transaktiosta Alicen kanssa.
Meillä on siis tapa seurata yksiköitä. Jos Bob yrittää tehdä toisen transaktion samoilla yksiköillä, jotka hän juuri lähetti Carolille, kaikki tietävät asiasta heti. Ryhmä ei salli transaktion lisäämistä muistilehtiöön.
Tämä saattaa toimia hyvin pienessä ryhmässä. Kaikki tuntevat toisensa, joten he todennäköisesti sopivat siitä, kenen ystävyksistä tulisi lisätä transaktiot muistilehtiöön. Entä jos ryhmässämme onkin 10 000 osallistujaa? Muistilehtiöidea ei skaalaudu hyvin, koska kukaan ei halua luottaa siihen, että muukalainen hallitsee sitä.
Tässä kohtaa työntodiste astuu kuvaan. Se varmistaa, että käyttäjät eivät käytä rahaa, jota heillä ei ole oikeutta käyttää. Käyttämällä peliteorian ja kryptografian yhdistelmää PoW-algoritmin avulla kuka tahansa voi päivittää lohkoketjun järjestelmän sääntöjen mukaisesti.
Miten PoW toimii?
Edellä mainittu muistilehtiömme on lohkoketju. Emme kuitenkaan lisää transaktioita yksitellen – niputamme ne sen sijaan lohkoiksi. Ilmoitamme transaktioista verkkoon, minkä jälkeen lohkon luovat käyttäjät sisällyttävät ne ehdokaslohkoon. Transaktioita pidetään kelvollisina vasta, kun niiden ehdokaslohkosta tulee vahvistettu lohko, mikä tarkoittaa, että se on lisätty lohkoketjuun.
Lohkon liittäminen ei kuitenkaan ole halpaa. Työntodistemekanismi edellyttää, että louhija (lohkon luova käyttäjä) käyttää osan omista resursseistaan saadakseen oikeuden luoda sen. Tämä resurssi on laskentateho, jota käytetään lohkon tietojen hajauttamiseen, kunnes ratkaisu pulmaan löytyy.
Lohkon tietojen hajauttaminen tarkoittaa, että ne kuljetetaan hajautustoiminnon läpi lohkon hajautusarvon luomiseksi. Lohkon hajautusarvo toimii kuin "sormenjälki" – se on syöttämiesi tietojen identiteetti ja yksilöllinen jokaiselle lohkolle.
Lohkon hajautusarvoa on käytännössä mahdotonta muuntaa takaisin syötettyjen tietojen saamiseksi. Kun tiedät syötteen, sinun ei tosiasiassa tarvitse vahvistaa, että hajautusarvo on oikea. Sinun tarvitsee vain lähettää syötetyt tiedot toiminnon kautta ja tarkistaa, että tulos on sama.
Työntodistemallissa sinun on annettava tietoja, joiden hajautusarvo vastaa tiettyjä ehtoja. Et kuitenkaan tiedä, miten pääset tähän lukuun. Ainoa vaihtoehto on syöttää tiedot hajautustoiminnon läpi ja tarkistaa, vastaavatko ne ehtoja. Jos näin ei ole, sinun on muutettava tietojasi hieman saadaksesi toisen hajautusarvon. Jopa yhden merkin muuttaminen tiedoissasi johtaa täysin erilaiseen tulokseen, joten ei ole mitään keinoa ennustaa, mikä tulos voi olla.
Tämän seurauksena lohkon luominen edellyttää arvailua. Yleensä tähän sisältyy tietojen ottaminen kaikista transaktioista, jotka haluat lisätä, ja joistakin muista tärkeistä tiedoista sekä niiden hajauttaminen yhdessä. Tietojoukkosi ei kuitenkaan tällöin muutu, joten sinun on lisättävä muuttuvia tietoja. Muuten saisit aina tulosta vastaavan hajautusarvon. Näitä muuttuvia tietoja kutsutaan nonceksi. Nonce on numero, joka muuttuu jokaisella yrityskerralla, joten saat joka kerta erilaisen hajautusarvon. Kutsumme tätä louhinnaksi.
Yhteenvetona voidaan todeta, että louhinta on prosessi, jossa lohkoketjutiedot kerätään ja hajautetaan yhdessä noncen kanssa, kunnes löydetään tietty hajautusarvo. Jos löydät hajautusarvon, joka täyttää protokollan asettamat ehdot, saat oikeuden lähettää uuden lohkon verkkoon. Tässä vaiheessa verkon muut osallistujat päivittävät lohkoketjunsa sisältämään uuden lohkon.
Nykypäivän suurissa kryptoverkoissa nämä ehdot ovat uskomattoman haastavat täyttää. Mitä korkeampi hajautusnopeus verkossa on, sitä vaikeampaa on löytää kelvollinen hajautusarvo. Tämä tehdään sen varmistamiseksi, että lohkot eivät löydy liian nopeasti.
Kuten voit kuvitella, valtavien hajautusarvomäärien arvaaminen tietokoneella voi olla kallista. Tuhlaat laskennallisia syklejä ja sähköä. Protokolla kuitenkin palkitsee sinut kryptoilla, jos löydät kelvollisen hajautusarvon.
Kerrataanpa, mitä olemme oppineet tähän mennessä:
Louhinta on kallista.
Sinut palkitaan, jos tuotat kelvollisen lohkon.
Syötteen tietävä käyttäjä voi helposti tarkistaa sen hajautusarvon – muut kuin louhijat voivat näin varmistaa, että lohko on kelvollinen ilman, että he kuluttavat paljon laskentatehoa.
Kaikki hyvin toistaiseksi. Mutta entä jos yrität huijata? Mikä estää sinua lisäämästä joukkoa vilpillisiä transaktioita lohkoon ja tuottamasta kelvollista hajautusarvoa?
Tässä kohtaa kuvaan astuu julkisen avaimen kryptografia. Emme perehdy tähän aiheeseen sen syvällisemmin tässä artikkelissa, mutta voit tutustua Mikä on julkisen avaimen kryptografia? -artikkeliin saadaksesi aiheesta kattavan kuvan. Lyhyesti sanottuna käytämme joitain käteviä kryptografisia temppuja, joiden avulla kuka tahansa käyttäjä voi tarkistaa, onko jollakulla oikeus siirtää varoja, joita he yrittävät käyttää.
Kun luot transaktion, allekirjoitat sen. Kuka tahansa verkon käyttäjä voi verrata allekirjoitustasi julkiseen avaimeesi ja tarkistaa, vastaavatko ne toisiaan. He voivat myös tarkistaa, voitko todella käyttää varojasi ja onko syöttämiesi arvojen summa suurempi kuin tuotostesi summa (eli että et kuluta enemmän kuin mitä sinulla on).
Verkko hylkää automaattisesti kaikki lohkot, jotka sisältävät virheellisen transaktion. Sinun olisi kallista edes yrittää huijata, sillä tuhlaisit vain omia resurssejasi saamatta palkkioita.
Tässä piileekin työntodistemallin upeus: se tekee huijaamisesta kallista, mutta rehellisestä toiminnasta kannattavaa. Jokainen järkevä louhija hakee sijoitetun pääoman tuottoprosenttia, joten hänen voidaan odottaa käyttäytyvän tavalla, joka takaa tulot.
Työntodiste vs. varantotodiste
Konsensusalgoritmeja on monia, mutta yksi odotetuimmista on varantotodiste (Proof of Stake, PoS). Konsepti on peräisin vuodelta 2011, ja se on toteutettu joissakin pienemmissä protokollissa. Sitä ei kuitenkaan ole vielä tähän mennessä otettu käyttöön missään suuressa lohkoketjussa.
Varantotodistejärjestelmissä louhijat korvataan vahvistajilla. Prosessiin ei kuulu louhintaa eikä kilpailua hajautusarvojen arvaamiseksi. Sen sijaan käyttäjät valitaan satunnaisesti – kun tietty vahvistaja valitaan, hänen on ehdotettava (tai luotava) lohko. Jos lohko on luotu oikein, hän saa palkkion, joka koostuu lohkon transaktiomaksuista.
Ketä tahansa käyttäjää ei kuitenkaan voida valita – protokolla valitsee vahvistajan useiden tekijöiden perusteella. Ollakseen kelvollisia valittaviksi osallistujien on lukittava panos, joka on ennalta määrätty määrä lohkoketjun natiivitokenia. Panos toimii takuun tavoin: aivan kuten syytettyjen täytyy tallettaa suuri summa rahaa, jotta heitä voidaan estää katoamasta ennen oikeudenkäyntiä, vahvistajat lukitsevat panoksen huijausten estämiseksi. Jos he toimivat epärehellisesti, he menettävät panoksensa (tai osan siitä).
Varantotodistemalliin liittyy joitain etuja työntodistemalliin verrattuna. Merkittävin on pienempi hiilijalanjälki – koska PoS:ssä ei tarvita suuritehoisia louhintafarmeja, kulutettu sähkö on vain murto-osa PoW:n kuluttamasta sähköstä.
Siitä huolimatta sen käyttökokemus ei ole läheskään yhtä pitkä kuin PoW-mallin. Vaikka louhinta voidaan katsoa tuhlaavaksi, se on ainoa konsensusalgoritmi, joka on osoittautunut toimivaksi suuressa mittakaavassa. Hieman yli vuosikymmenessä se on vahvistanut miljardien dollarien arvosta transaktioita. Jotta voimme varmuudella sanoa, pystyykö PoS kilpailemaan PoW:n turvallisuuden kanssa, steikkausta on testattava kunnolla tosielämässä.
Yhteenveto
Työntodiste oli alkuperäinen ratkaisu kaksinkertaisen kulutuksen ongelmaan, ja se on osoittautunut luotettavaksi ja turvalliseksi malliksi. Bitcoin osoitti, että emme tarvitse keskitettyjä tahoja estääksemme samojen varojen käytön kahdesti. Kryptografian, hajautusfunktioiden ja peliteorian älykkäällä käytöllä hajautetun ympäristön osallistujat voivat sopia rahoitustietokannan tilasta.