Mis on töötõendus (Proof of Work - PoW)?
Sisukord
Sissejuhatus
Mis on topeltkulutus?
Milleks on töötõendust vaja?
Kuidas PoW toimib?
Töötõendus vs panuse tõendus
Lõppmärkused
Avaleht
Artiklid
Mis on töötõendus (Proof of Work - PoW)?

Mis on töötõendus (Proof of Work - PoW)?

Keskmine
Avaldatud Dec 6, 2018Värskendatud Dec 12, 2022
8m

Sissejuhatus

Töötõendus (tavaliselt lühendatult PoW) on mehhanism topeltkulutuste vältimiseks. Enamik suuremaid krüptorahasid kasutab seda oma konsensusalgoritmina. Just seda me nimetame meetodiks krüptoraha arvestusraamatu turvamiseks.

Töötõendus oli esimene konsensusalgoritm, mis ilmale tuli ja on siiani domineeriv. Seda tutvustas Satoshi Nakamoto 2008. aasta Bitcoini valges raamatus, kuid tehnoloogia ise loodi juba palju varem. 

Adam Backi HashCash on varajane näide töötõenduse algoritmist krüptorahaeelsetel aegadel. Nõudes saatjatelt enne e-kirjade saatmist väikest arvutustööd, võivad vastuvõtjad rämpsposti vähendada. See arvutus ei maksaks legitiimsele saatjale praktiliselt midagi, kuid jookseb kiiresti kokku, kui keegi saadab massiliselt e-kirju.


Mis on topeltkulutus?

Topeltkulutus tekib siis, kui samu vahendeid kulutatakse rohkem kui üks kord. Seda terminit kasutatakse peaaegu eranditult digitaalse raha kontekstis – lõppude lõpuks on raske kaks korda sama füüsilist raha kulutada. Täna kohvi eest tasudes annad sularaha üle kassapidajale, kes selle tõenäoliselt registrisse lukustab. Ei saa minna üle tee asuvasse kohvikusse ja maksta sama arvega teise kohvi eest.

Digitaalsete sularahaskeemide puhul on võimalus, et saad seda teha. Oled kindlasti varem arvutifaili kopeerinud – lihtsalt kopeerid ja kleebid selle. Saad sama faili meiliga saata kümnele, kahekümnele, viiekümnele inimesele. 

Kuna digitaalraha on lihtsalt andmed, pead takistama inimestel samade ühikute kopeerimist ja kulutamist erinevates kohtades. Vastasel juhul kukub sinu raha kiiresti kokku. 

Topeltkulutustest põhjalikuma ülevaate saamiseks loe artiklit Topeltkulutuse seletus.


Milleks on töötõendust vaja?

Kui oled lugenud meie plokiahela tehnoloogia juhendit, tead, et kasutajad edastavad tehinguid võrku. Neid tehinguid ei peeta siiski kohe kehtivaks. See juhtub ainult siis, kui need lisatakse plokiahelasse. 

Plokiahel on suur andmebaas, mida iga kasutaja näeb, nii et nad saavad kontrollida, kas raha on varem kulutatud. Kujuta ette seda nii: sinul ja kolmel sõbral on märkmik. Iga kord, kui keegi teist soovib teie kasutatavaid ühikuid üle kanda, kirjutage see üles – Alice maksab Bobile viis ühikut, Bob maksab Carolile kaks ühikut jne.

Siin on veel üks keerukus – iga kord, kui teed tehingu, viitad tehingule, kust raha tuli. Seega, kui Bob maksaks Carolile kahe ühikuga, näeks kirje tegelikult välja nii: Bob maksab Carolile kaks ühikut sellest varasemast tehingust Alice'iga.

Nüüd on meil viis ühikute jälgimiseks. Kui Bob proovib teha uut tehingut samade ühikutega, mille ta just Carolile saatis, saavad kõik sellest kohe teada. Grupp ei lubaks tehingut märkmikusse lisada.

See võib väikeses rühmas hästi toimida. Kõik tunnevad üksteist, nii et tõenäoliselt lepivad nad kokku, kes sõpradest peaks märkmikusse tehinguid lisama. Mis siis, kui tahame 10 000 osalejaga rühma? Märkmiku idee ei skaleeru hästi, sest keegi ei taha usaldada võõrast inimest seda haldama.

Siin tulebki mängu töötõendus. See tagab, et kasutajad ei kuluta raha, mida neil pole õigust kulutada. Kasutades mänguteooria ja krüptograafia kombinatsiooni, võimaldab PoW-algoritm igaühel plokiahelat uuendada vastavalt süsteemi reeglitele.


Kuidas PoW toimib?

Meie ülaltoodud märkmik on plokiahel. Kuid me ei lisa tehinguid ükshaaval, vaid koondame need plokkidesse. Teatame tehingutest võrku, seejärel lisavad plokki loovad kasutajad need kandidaatplokki. Tehinguid loetakse kehtivaks alles siis, kui nende kandidaatplokk muutub kinnitatud plokiks, mis tähendab, et see on plokiahelasse lisatud.

Ploki lisamine pole aga odav. Töötõendus nõuab, et kaevandaja (plokki loov kasutaja) kasutaks privileegi jaoks osa oma ressurssidest. See ressurss on arvutusvõimsus, mida kasutatakse ploki andmete räsimiseks, kuni mõistatuse lahendus leitakse.

Ploki andmete räsimine tähendab, et need lastakse läbi räsifunktsiooni, et genereerida ploki räsi. Ploki räsi toimib nagu "sõrmejälg" – see on sinu sisendandmete identiteet ja on iga ploki jaoks ainulaadne.

Sisendandmete saamiseks on ploki räsi ümberpööramine praktiliselt võimatu. Teada sisendit pole aga piisav, et räsi saaks õigeks kinnitada. Sisendi peab lihtsalt funktsiooni kaudu sisestama ja kontrollima, kas väljund on sama.

Töötõenduses peab esitama andmed, mille räsi vastab teatud tingimustele. Aga kuidas sinna jõuda, see pole teada. Ainus võimalus on edastada andmed läbi räsifunktsiooni ja kontrollida, kas need vastavad tingimustele. Kui seda ei juhtu, peab erineva räsi saamiseks andmeid veidi muutma. Andmetes kasvõi ühe märgi muutmine annab täiesti teistsuguse tulemuse, nii et pole võimalik ennustada, milline väljund võib olla.

Selle tulemusena, on ploki loomiseks vaja mängida äraarvamismängu. Tavaliselt võetakse teave kõigi tehingute kohta, mida soovitakse lisada ja veel teisi olulisi andmeid ning seejärel räsitakse need kokku. Kuid kuna andmestik ei muutu, on vaja lisada muutuvat teavet. Vastasel juhul saadaks väljundina alati sama räsi. Neid muutujaandmeid nimetatakse nonsiks. See on number, mida muudetakse iga katsega, nii et iga kord saadakse erinev räsi. Ja seda nimetatakse kaevandamiseks.

Kokkuvõtteks võib öelda, et kaevandamine on protsess, mille käigus kogutakse plokiahela andmeid ja räsitakse need koos räsimärgiga, kuni leitakse konkreetse räsi. Kes leiab räsi, mis vastab protokollis sätestatud tingimustele, saab õiguse uue ploki võrku levitada. Sel hetkel värskendavad teised võrgus osalejad oma plokiahelaid, et lisada uus plokk.

Tänapäeva suuremate krüptorahade jaoks on tingimuste täitmine uskumatult keeruline. Mida kõrgem on võrgu räsimäär, seda keerulisem on kehtivat räsi leida. Seda tehakse selleks, et plokke liiga kiiresti ei leitaks.

Nagu võid ette kujutada, võib suurte räsikoguste ära arvamine sinu arvutis osutuda kulukaks. Sa raiskad arvutustsükleid ja elektrit. Kuid protokoll premeerib sind krüptorahaga, kui leiad kehtiva räsi.

Võtame kokku, mida me seni teame:

  • Kaevandamine on kallis.

  • Sind premeeritakse, kui esitad kehtiva ploki.

  • Teades sisendit, saab kasutaja selle räsi hõlpsalt kontrollida – mittekaevandajatest kasutajad saavad ploki kehtivust kontrollida ilma palju arvutusvõimsust kulutamata.

Siiamaani on kõik korras. Aga mis siis, kui proovid petta? Mis takistab sind plokki panemast hunnikut petturlikke tehinguid ja tootmast kehtivat räsi?

Siin tulebki mängu avaliku võtmega krüptograafia. Selles artiklis me ei süvene, kuid loe artiklit „Mis on avaliku võtmega krüptograafia?“, et sellega põhjalikult tutvuda. Lühidalt öeldes kasutame mõningaid korralikke krüptograafilisi nippe, mis võimaldavad igal kasutajal kontrollida, kas kellelgi on õigus liigutada raha, mida nad üritavad kulutada.

Tehingu loomisel sa allkirjastad selle. Võrgus saab igaüks võrrelda sinu allkirja sinu avaliku võtmega ja kontrollida, kas need ühtivad. Samuti kontrollivad nad, kas saad oma raha tegelikult kulutada ja kas sinu sisendite summa on suurem kui sinu väljundite summa (st kas sa ei kuluta rohkem, kui sul on).

Võrk lükkab automaatselt tagasi kõik plokid, mis sisaldavad kehtetut tehingut. Isegi üritamine petta läheb sinu jaoks kalliks maksma. Raiskad oma ressursse ilma preemiat saamata.

Selles peitubki töötõenduse ilu: see muudab petmise kulukaks, kuid ausa tegutsemise tulusaks. Iga mõistlik kaevandaja otsib investeeringutasuvust, seega võib eeldada, et nad käituvad viisil, mis tagab tulu.



Kas soovid alustada krüptorahaga? Osta Bitcoini Binance'ist!



Töötõendus vs panuse tõendus

Konsensusalgoritme on palju, kuid üks oodatumaid on panuse tõendus (Proof of Stake - PoS). Kontseptsioon pärineb aastast 2011 ja seda on rakendatud mõnes väiksemas protokollis. Kuid seda pole veel üheski suures plokiahelas kasutusele võetud.

Panuse tõenduse süsteemides asendatakse kaevandajad valideerijatega. Sellega ei kaasne kaevandamist ega võidujooksu räsi mõistatamiseks. Selle asemel valitakse kasutajad juhuslikult – kui nad valitakse, peavad nad välja pakkuma (või „sepistama“) ploki. Kui plokk on kehtiv, saavad nad preemiat, mis koosneb ploki tehingutasudest.

Valida ei saa aga ükskõik millist kasutajat – protokoll valib nad mitme teguri põhjal. Osalemiseks peavad osalejad lukustama panuse, mis on ettemääratud summa plokiahela natiivsest rahast. Panus toimib nagu kautsjon: nii nagu süüdistatavad panevad suure rahasumma, et takistada neil kohtuistungit vahele jätmast, lukustavad valideerijad panuse, et välistada petmist. Kui nad käituvad ebaausalt, võetakse nende panus (või osa sellest) ära.

Panuse tõendusel on töötõendusega võrreldes mõningaid eeliseid. Kõige tähelepanuväärsem on väiksem süsiniku jalajälg – kuna PoS-is pole vaja suure võimsusega kaevandusfarme, on tarbitav elektrienergia vaid murdosa PoW-s tarbitavast. 

Sellegipoolest ei jõua see PoW-i rekordile ligilähedale. Kuigi seda võib pidada raiskavaks, on kaevandamine ainus konsensusalgoritm, mis on end skaleeritult tõestanud. Veidi enam kui kümne aastaga on see kindlustanud triljonite dollarite väärtuses tehinguid. Et kindlalt öelda, kas PoS suudab oma turvalisusega konkureerida, tuleb panustamist korralikult testida. 


Lõppmärkused

Töötõendus oli algne lahendus topeltkulutamise probleemile ning see on osutunud usaldusväärseks ja turvaliseks. Bitcoin tõestas, et me ei vaja tsentraliseeritud üksusi, et vältida samade vahendite kahekordset kulutamist. Krüptograafia, räsifunktsioonide ja mänguteooria nutika kasutamisega saavad detsentraliseeritud keskkonnas osalejad finantsandmebaasi olekus kokku leppida.