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.