Introduktion
Bevis på arbete var den första konsensusalgoritmen som togs fram och hittills är det den som fortfarande dominerar. Den introducerades av Satoshi Nakamoto i Bitcoin White Paper 2008, men själva tekniken var uttänkt långt innan dess.
Adam Backs HashCash är ett tidigt exempel på en bevis på arbete-algoritm under dagarna före kryptovaluta. Genom att kräva att avsändaren utför en liten mängd beräkningar innan hen skickar ett e-postmeddelande kan mottagaren få mindre spam. Den här beräkningen skulle praktiskt taget inte kosta något för en legitim avsändare, men det skulle snabbt bli stora summor för någon som skickar massor av e-post.
Vad är en dubbelutgift?
En dubbelutgift uppstår när samma tillgångar spenderas mer än en gång. Termen används nästan uteslutande i samband med digitala pengar – trots allt skulle det vara svårt att spendera samma fysiska pengar två gånger. När du betalar för en kaffe idag lämnar du över kontanter till en kassörska som förmodligen låser in dem i kassan. Du kan inte gå till kaféet tvärs över gatan och betala för en till kaffe med samma räkning.
I digitala kontantsystem finns möjligheten att du kan göra detta. Du har säkert kopierat en datorfil förut – du bara kopierar och klistrar in den. Du kan e-posta samma fil till tio, tjugo eller femtio personer.
Eftersom digitala pengar bara är data, måste du förhindra att människor kopierar och spenderar samma enheter på olika platser. Annars kommer din valuta att kollapsa på nolltid.
Varför krävs bevis på arbete?
Nu har vi ett sätt att spåra enheterna. Om Bob försöker göra en annan transaktion med samma enheter som han just skickade till Carol, kommer alla att veta om det direkt. Gruppen tillåter inte att denna transaktion läggs till i anteckningsblocket.
Det här fungerar bra i en liten grupp. Alla känner varandra, så de kommer förmodligen överens om vem av vännerna som ska lägga till transaktionerna i anteckningsblocket. Vad händer om vi vill ha en grupp på 10 000 personer? Anteckningsblocksidén kan inte skalas så bra, eftersom ingen vill lita på att en främling hanterar den.
Det är här bevis på arbete kommer in i bilden. Det säkerställer att användarna inte spenderar pengar som de inte har rätt att spendera. Genom att använda en kombination av spelteori och kryptografi gör PoW-algoritmen det möjligt för vem som helst att uppdatera blockkedjan enligt systemets regler.
Hur fungerar PoW?
Vårt anteckningsblock ovan är blockkedja. Men vi lägger inte till transaktioner en efter en – istället klumpar vi ihop dem i block. Vi tillkännager transaktionerna till nätverket, sedan kommer användaren som skapar ett block att inkludera det i ett kandidatblock. Transaktionerna kommer bara att anses giltiga när dess kandidatblock blir ett bekräftat block, vilket betyder att det har lagts till i blockkedjan.
Det är praktiskt taget omöjligt att vända en blockhash för att få indata. När du känner till indata är det dock enkelt för dig att bekräfta att hashen är korrekt. Du behöver bara skicka in indata via funktionen och kontrollera om utgången är densamma.
I bevis på arbete måste du tillhandahålla data vars hash matchar vissa villkor. Men du vet inte hur du ska ta dig dit. Ditt enda alternativ är att skicka dina data genom en hashfunktion och kontrollera om de matchar villkoren. Om de inte gör detta måste du ändra dina data något för att få en annan hash. Att ändra bara ett tecken i dina data kommer att resultera i ett helt annat resultat, så det finns inget sätt att förutsäga vad utdata kan vara.
Sammanfattningsvis är utvinningsprocessen att samla blockkedjedata och hasha dessa tillsammans med en nonce tills du hittar en viss hash. Om du hittar en hash som uppfyller villkoren i protokollet får du rätt att sända det nya blocket till nätverket. Vid denna tidpunkt uppdaterar de andra deltagarna i nätverket sina blockkedjor för att inkludera det nya blocket.
För stora kryptovalutor idag är villkoren otroligt utmanande att uppfylla. Ju högre hashfrekvens på nätverket desto svårare är det att hitta en giltig hash. Detta görs för att säkerställa att block inte hittas för snabbt.
Som du kanske kan tänka dig kan det bli dyrt att försöka gissa enorma mängder hash på din dator. Du slösar bort beräkningscykler och elektricitet. Protokollet kommer dock att belöna dig med kryptovaluta om du hittar en giltig hash.
Låt oss sammanfatta vad vi lärt oss hittills:
- Det är dyrt för dig att utvinna.
- Du belönas om du skapar ett giltigt block.
- Genom att känna till indata kan en användare enkelt kontrollera dess hash – användare som inte arbetar med utvinning kan verifiera att ett block är giltigt utan att förbruka mycket beräkningskraft.
Än så länge låter allt bra. Men vad händer om du försöker fuska? Vad hindrar dig från att lägga till ett gäng falska transaktioner i blocket och producera en giltig hash?
Varje block som inkluderar en ogiltig transaktion avvisas automatiskt av nätverket. Det blir dyrt för dig att ens försöka fuska. Du kommer att slösa bort dina egna resurser utan någon belöning.
Vill du komma igång med kryptovaluta? Köp bitcoin på Binance!
Bevis på arbete kontra bevis på insats
Med detta sagt har det inte alls samma meritlista som PoW. Även om det kan uppfattas som slösaktigt, är utvinningen den enda konsensusalgoritmen som har visat sig fungera i stor skala. På drygt ett decennium har det säkrat transaktioner till ett värde av biljontals dollar. För att med säkerhet säga om PoS kan konkurrera med dess säkerhet måste insatsen testas ordentligt i praktiken.
Sammanfattningsvis
Bevis på arbete var den ursprungliga lösningen på problemet med dubbla utgifter och har visat sig vara pålitligt och säkert. Bitcoin visade att vi inte behöver centraliserade enheter för att förhindra att samma tillgångar spenderas två gånger. Med smart användning av kryptografi, hashfunktioner och spelteori kan deltagarna i en decentraliserad miljö komma överens om tillståndet för en finansiell databas.