Kryptoskolan del 2 – Konsensus? – Proof of Work Explained

Permalänk

Kryptoskolan del 2 – Konsensus? – Proof of Work Explained

Distribuerad förtroendelös konsensus (engelska: trustless consensus), anses vara ett av de stora genombrotten med Blockkedje-teknologin. Denna artikel kommer att fokusera på en av dessa konsensusmekanismer som används i dag av Bitcoin och Ethereum nätverket för att uppnå just ”distribuerad förtroendelös konsensus”, specifikt Proof Of Work.

Vad är distribuerad förtroendelös konsensus?

Termen distribuerad förtroendelös konsensus beskriver det sätt som noderna i en Blockchain synkroniserar sin data och når en överenskommelse (konsensus) om transaktioner som händer på nätverket.

Så vad menas med förtroendelös konsensus? Man kallar det förtroendelöst av två anledningar:
A) Då systemet inte bygger på förtroende för någon tredje part, till exempel banker, utan man har förtroendet inbakat som en del av teknologin som får allt att fungera.
B) Det inte existerar något förtroende för enskilda noder i nätverket.

För att förklara detta på ett enklare sätt använder vi oss av följande exempel på en transaktion som sker:

Bob mottager 10 BTC (Bitcoin) från sin vän Alice.
Majoriteten av noderna på nätverket måste nu nå ett samförstånd (konsensus) innan denna transaktion skrivs till den distribuerade databasen som varje nod har en kopia av, även mer känt som ”huvudbok” (engelska: ledger).
Det är först när majoriteten av noderna når en enighet (konsensus) och skrivs till samtliga noders databas som transaktionen anses vara ”immutable” (omöjlig att ändra).

Bildkälla: https://www.ybrikman.com/

För att detta ska fungera så finns det ett antal sanningar som måste säkerställs för att nå konsensus:

  1. Transaktionens skapare (i vårt exempel Alice) är i ägandeskap av medlen som ska överföras till Bob.

  2. Transaktionens skapare har fått ägandeskap av medlen (mynten) på korrekt väg.

  3. Resultatet av transaktionen gör att mottagaren (Bob i vårt exempel) erkänns, av alla (noder), som den nya ägaren av medlen i transaktionen.

  4. Resultatet av transaktionen gör att medlenas tidigare ägare (Alice) inte längre ska kunna identifiera sig som ägare av medlena.

Så nu när vi har en bättre förståelse om vad distribuerad förtroendelös konsensus är, kan vi gå vidare och prata om konsensusmekanismen Proof of Work som används för att uppnå detta.

Proof of Work

Bildkälla: https://softwareengineeringdaily.com/tag/proof-of-work/

Proof of Work är inte något nytt koncept som myntades (hehe) i samband med Bitcoin, tvärtom har begreppet funnits länge i IT-världen.

Idén nämndes ursprungligen redan 1992 i en artikel av Cynthia Dwork, Moni Naor och Eli Ponyatovskiav vid namn ”Pricing via Processing or Combatting Junk Mail”.

Där är syftet att skydda datorer och nätverk från Spam och Denial of Service (DoS) attacker genom att få klienter att svara på vissa beräkningsfrågor för att få access till/av servern.

Detta gör att potentiella attackerare behöver ta i beakt denna kostnad vid ett angrepp och därmed görs tröskeln lite högre för att attackera denna typ av nätverk/system.

Hashcash var även det ett exempel på ett sådant proof of work system som myntades av Adam Back år 1997.

Satoshi Nakamoto, skaparen/skaparna bakom Bitcoin, introducerade i Bitcoins whitepaper hur man använder Proof Of Work (PoW) för att skapa distribuerad konsensus och lösa en mängd problem, däribland ”Double spend” utmaningen.

Denna sårbarhet tacklades av Satoshi genom att kombinera Proof of Work med andra befintliga koncept – såsom kryptografiska signaturer, Merkle-kedjor och P2P-nätverk till ett fullt fungerande distribuerat konsensussystem, där kryptovalutor som Bitcoin är den första och grundläggande applikationen.

Proof of Work används för att verifiera transaktioner och skapa nya block i kedjan. Denna huvudbok (ledger) av tidigare transaktioner kallar man blockkedjan, eftersom det är en kedja av block (youdontsay.jpeg).

Blockkedjans syfte är alltså (återigen) att bekräfta transaktioner som ägt rum, till resten av nätverket.

Varför? Jo, för att noderna använder blockkedjan för att skilja legitima transaktioner från försök att återanvända mynt för betalning som redan har spenderats någon annanstans.

”Double spend” är en attack där man försöker använda samma mynt som betalningsmedel i mer än en transaktion. Detta går till genom att man skickar två motstridiga transaktioner i snabb följd till Bitcoin-nätverket.

För Proof of Work är ”Mining” väsentligt, det är processen där nya mynt skapas och transaktioner skickas över nätverket. Både de människor som engagerar sig i det och de datorer som utför miningen kallas ”miners”.

Under miningprocessen utför datorerna så kallad ”hashing” som man de-facto kan kalla självaste beviset på arbetet (zing!), alltså Proof of Work. Hashing innebär att de tar en serie slumpmässigt genererade strängar av indata och tillämpar en specifik kryptografisk funktion på den (SHA-256 (SHA-2) i Bitcoins fall och ETHash för Ethereum). Resultatet av varje beräkning kommer alltid att vara samma ”hash”, som är unik för en viss indata, men dess exakta värde kan inte förutsägas förrän den faktiska beräkningen utförs. Hur snabbt som en dator beräknar hashen kallas ”hashrate” och mäts i Megahash Per sekund (MH/s).

Nätverket har ett övergripande målvärde (target value), och så fort en av alla minersfår en hash som är i linje med målvärdet får denne miner rätten att registrera alla transaktioner som ägde rum på nätverket sedan sista blocket blev funnet, paketera dessa till ett block, lägga till blocket i slutet av kedjan samt belöna en viss mängd mynt till sitt eget konto för den beräkningskraft som denne spenderade på att beräkna hashen. Desto starkare hårdvara du har, desto högre hashrate, desto högre hashrate du har ökar din möjlighet att hitta nästa block och få belöning för mödan.

Vem som helst kan ladda ner en Bitcoin eller Ethereum klient och sätta upp sin egna miner, dock är det inte längre lönsamt att göra det med sin typiska hemdator. Detta då Bitcoinminingen idag domineras av ASICs (Application-Specific Integrated Circuit) maskiner i Bitcoins fall, specialiserade för detta ändamål.

På Ethereumfronten krävs ett större antal GPU:er för att nå någon ansenlig lönsamhet vid mining men då beräkningssvårigheten ökar så krävs det allt mer beräkningskraft för att nå lönsamhet.

För att motverka detta så finns det numer ”mining pools” där flera datorer tillsammans går ihop, gör jobbet samt delar på belöningen om en av datorerna i mining poolen hittar nästa block. Detta gör givetvis belöningen mindre för den enskilde minern, dock vägs det hela upp av garantin man har. Värt att tillägga är att även här är ens hashrate avgörande för hur snabbt du får belöning.

Då efterfrågan på GPU:er har varit sanslöst hög i denna mininghysteri så har det också gjort mining till ett hatobjekt för många gamers som efterfrågar GPU:er för annat ändamål än mining. Något som undertecknad sympatiserar med.

GTX 1080 Ti har en hashrate på ca 36 MH/s

Sammanfattning

Man kan alltså kortfattat beskriva Proof of Work i fem steg:

  1. Transaktioner paketeras samman I form av block på en kedja

  2. Noderna verifierar transaktionerna inom blocken som legitima.

  3. Miners löser sedan ett matematiskt problem som kallas proof-of-work. Detta görs via hashing.

  4. En belöning ges sedan till den datorn som först lyckas lösa problemet.

  5. De verifierade transaktionerna lagras i den offentliga blockkedjan, även kallad ledgern i detta fall, som varje nod har en kopia på.

Bonusfråga: Vad är skillnaden mellan en Nod och en Miner?

En fullständig nod har en komplett kopia av blockkedjan och kan verifiera alla transaktioner från blockkedjans skapelse. Bitcoins blockkedja kräver cirka 149 GB diskutrymme (storlek December 2017)

En Miner å andra sidan skapar blocken som noderna lagrar. I grund och botten arbetar minern med att komma med den bästa kombinationen (hash) för att lagra denna information. Miners spenderar ca 10 minuter på att arbeta med ett problem, men noder lagrar resultatet för alltid i sin databas och verifierar det med andra noder. Minern har inget behov eller nytta av att veta om tidigare block.

// OBS. Då artikeln skulle bli tok för lång för att även nämna Proof of Stake så kommer jag skriva en separat artikel där jag går igenom för och nackdelar med Proof of Work kontra Proof of Stake, samt att jag kortfattat även vidrör ”proof of elapsed time” som används av Hyperledgerprotokollet Sawtooth för att nå konsensus. //

Detta sammanfattar del två av kryptoskolan! I nästa inlägg går vi igenom konsensusmekanismen Proof of Stake (PoS). Jag kan också nämna att jag pararellt jobbar med ett introduktionsinlägg för Ripple.

Mvh

Visa signatur

CPU: Ryzen 9 5950x - NXZT Kraken Z73 (white sleeved) GPU: Gamerock 3080Ti
RAM: 128GB Trident Z Royal Gold DDR4 3600 CL16
MB: ASUS B550-A Gaming Silver/White Screen:55" LG OLED B9 (4k 120Hz @4:4:4)
Case: ASUS Rog Strix Helios White
HiFi Desktop: Sennheiser HD800S AMP: Cayin HA-1A MK2 DAC: Moon Neo 390

Permalänk
Medlem

Så bra beskrivet! Följer de här artiklarna.

Visa signatur

Intel i9 10900k @5,2Ghz, MSI Z590 Gaming EK-X, G-Skill Elite Royal 4x8gb @3600mhz cl16, Asus TUF 3080ti OC, 2xSamsung 960 EVO 1Tb M2, Seasonic Prime 1300W Platinum, EK D5 Revo, 2x360mm EK SE, Acer X34P 1440p 120hz IPS G-sync, CSFG The Crow
Galleri Ancalagon The Black | Galleri The White Crow

Permalänk
Medlem

@Helionart: Tack för en mycket bra skriven artikel!

Visa signatur

|| Citera för svar! ||

Chassi: Xigmatek Elysium | PSU: EVGA Supernova G2 750W | MB: ASUS Strix Z390-F GAMING | CPU: INTEL i9-9900K & Corsair H60 | GPU: Asus Strix RTX 2080 OC | SSD: Samsung 970 EVO 500 GB | RAM: HyperX Fury 4x8 GB CL16 2666 Mhz | Ljudkort: Asus Xonar D2X | Nätverkskort: TP-Link Archer TX3000E

Tangentbord: Keychron K8 Pro | Switchar: Boba U4 | stabilizers: AEboards Staebis V2

Permalänk
Skrivet av Deriveh:

Så bra beskrivet! Följer de här artiklarna.

Skrivet av FireFox:

@Helionart: Tack för en mycket bra skriven artikel!

Stort tack ska ni ha! Det är väldigt motiverande att få höra det!

Visa signatur

CPU: Ryzen 9 5950x - NXZT Kraken Z73 (white sleeved) GPU: Gamerock 3080Ti
RAM: 128GB Trident Z Royal Gold DDR4 3600 CL16
MB: ASUS B550-A Gaming Silver/White Screen:55" LG OLED B9 (4k 120Hz @4:4:4)
Case: ASUS Rog Strix Helios White
HiFi Desktop: Sennheiser HD800S AMP: Cayin HA-1A MK2 DAC: Moon Neo 390

Permalänk
Medlem

Snälla nämn det inte som "kryptoskolan"... Krypto != Kryptovaluta! Använd korrekt term istället.

Krypto är en försvenskad version av engelskans crypto. Crypto i sig kommer från början från antikens Grekland och ordet kruptós som betyder gömd.

Det betyder inte heller kryptografi. Men om något så är det mer rätt än kryptovaluta då det myntades och förkortades som krypto långt tidigare. Om än felaktigt.

I övrigt bra skrivet och väl förklarat!

Mvh
Mattias

Skickades från m.sweclockers.com

Permalänk
Medlem

@Helionart: Jag är själv ETH miner och minar. Använde de här för att förklara för sambon.

Visa signatur

Intel i9 10900k @5,2Ghz, MSI Z590 Gaming EK-X, G-Skill Elite Royal 4x8gb @3600mhz cl16, Asus TUF 3080ti OC, 2xSamsung 960 EVO 1Tb M2, Seasonic Prime 1300W Platinum, EK D5 Revo, 2x360mm EK SE, Acer X34P 1440p 120hz IPS G-sync, CSFG The Crow
Galleri Ancalagon The Black | Galleri The White Crow

Permalänk
Medlem
Skrivet av Helionart:

GTX 1080 Ti har en hashrate på ca 36 MH/s

Utmärkt artikel, tummen upp. Bara en liten anmärkning...

Just 1080Ti är ett dåligt exempel för ETH mining, och tack vare ett asskönt gäng individer, sen 22:a April ger den inte cirka 36MH/s, utan ~51-54MH/s. Det är fortfarande inte jättemycket mer lönsamt att köra den på ETH med dagens siffror, så frågan är varför av alla AMD-kort du kunde välja att ha bild på när du pratar BTC och ETH så valde du just 1080Ti?

Permalänk
Skrivet av Raphaei:

Utmärkt artikel, tummen upp. Bara en liten anmärkning...

Just 1080Ti är ett dåligt exempel för ETH mining, och tack vare ett asskönt gäng individer, sen 22:a April ger den inte cirka 36MH/s, utan ~51-54MH/s. Det är fortfarande inte jättemycket mer lönsamt att köra den på ETH med dagens siffror, så frågan är varför av alla AMD-kort du kunde välja att ha bild på när du pratar BTC och ETH så valde du just 1080Ti?

Tjo! Tack för anmärkningen. Ska uppdatera inlägget om det går! Vad gäller valet av grafikkort tänkte jag att jag tar "top" performern vad gäller gaming (samt att jag sitter med en 1080 ti själv) bara som ett exempel.

Självfallet så dominerar röda laget rätt hårt på hashrate i förhållande till det gröna vad gäller most bang for the buck.

(Jag har själv ingen preferens mellan AMD/Nvidia/Intel utan kör både med Ryzens och i7:or, Geforce och Radeon, dock har jag mycket nostalgiminnen med det röda laget. )

Visa signatur

CPU: Ryzen 9 5950x - NXZT Kraken Z73 (white sleeved) GPU: Gamerock 3080Ti
RAM: 128GB Trident Z Royal Gold DDR4 3600 CL16
MB: ASUS B550-A Gaming Silver/White Screen:55" LG OLED B9 (4k 120Hz @4:4:4)
Case: ASUS Rog Strix Helios White
HiFi Desktop: Sennheiser HD800S AMP: Cayin HA-1A MK2 DAC: Moon Neo 390

Permalänk
Medlem

Mycket bra artikel

Permalänk
Medlem
Skrivet av Helionart:

En Miner å andra sidan skapar blocken som noderna lagrar. I grund och botten arbetar minern med att komma med den bästa kombinationen (hash) för att lagra denna information. Miners spenderar ca 10 minuter på att arbeta med ett problem, men noder lagrar resultatet för alltid i sin databas och verifierar det med andra noder. Minern har inget behov eller nytta av att veta om tidigare block.

Inte helt korrekt. Miners använder föregående block i uträkningarna för nästa. Det är detta som skapar kedjan. Utan det hade det bara varit en hög med lösa block som inte garanterar någon form av säkerhet och allt skulle falla.

Sen kanske man bör förtydliga att det är genomsnittstiden per hittat block som specificeras till ca 10 minuter, för Bitcoin. Ethereum verkar vara bra mycket tätare än så. Samt att svårigheten att hitta block ökas eller sänks i förhållande till genomsnittliga blocktiden senaste perioden så att man hålla nära samma tid mellan varje hittat block även om det tillkommer eller faller bort miners.

Skrivet av Helionart:

På Ethereumfronten krävs ett större antal GPU:er för att nå någon ansenlig lönsamhet vid mining men då beräkningssvårigheten ökar så krävs det allt mer beräkningskraft för att nå lönsamhet.

För att motverka detta så finns det numer ”mining pools” där flera datorer tillsammans går ihop, gör jobbet samt delar på belöningen om en av datorerna i mining poolen hittar nästa block. Detta gör givetvis belöningen mindre för den enskilde minern, dock vägs det hela upp av garantin man har. Värt att tillägga är att även här är ens hashrate avgörande för hur snabbt du får belöning.

Här är första stycket (delvis?) felaktigt i sig självt. Men tillsammans med förklaringen under antar jag att du syftar på att det krävs extrem beräkningskraft för att lyckas klara av solo-mining. Att det är detta som "mining pools" löser. Teoretiskt sett borde du tjäna lika mycket på solo-mining men du kanske bara hittar ett block per år eller ännu mindre på egen hand.

Permalänk
Skrivet av epaaj:

Inte helt korrekt. Miners använder föregående block i uträkningarna för nästa. Det är detta som skapar kedjan. Utan det hade det bara varit en hög med lösa block som inte garanterar någon form av säkerhet och allt skulle falla.

Sen kanske man bör förtydliga att det är genomsnittstiden per hittat block som specificeras till ca 10 minuter, för Bitcoin. Ethereum verkar vara bra mycket tätare än så. Samt att svårigheten att hitta block ökas eller sänks i förhållande till genomsnittliga blocktiden senaste perioden så att man hålla nära samma tid mellan varje hittat block även om det tillkommer eller faller bort miners.

Här är första stycket (delvis?) felaktigt i sig självt. Men tillsammans med förklaringen under antar jag att du syftar på att det krävs extrem beräkningskraft för att lyckas klara av solo-mining. Att det är detta som "mining pools" löser. Teoretiskt sett borde du tjäna lika mycket på solo-mining men du kanske bara hittar ett block per år eller ännu mindre på egen hand.

Tack för din input! Du har givetvis rätt att jag bör understryka att det är genomsnittstid det rör sig om för Bitcoin. Och för din andra anmärkning så stämmer ditt antagande, det var just solo-mining kontra mining pools jag ville lyfte fram. Dessvärre verkar jag inte kunna redigera inlägget då det gått för lång tid.

Ha en bra dag!

Visa signatur

CPU: Ryzen 9 5950x - NXZT Kraken Z73 (white sleeved) GPU: Gamerock 3080Ti
RAM: 128GB Trident Z Royal Gold DDR4 3600 CL16
MB: ASUS B550-A Gaming Silver/White Screen:55" LG OLED B9 (4k 120Hz @4:4:4)
Case: ASUS Rog Strix Helios White
HiFi Desktop: Sennheiser HD800S AMP: Cayin HA-1A MK2 DAC: Moon Neo 390

Permalänk
Medlem

Vore bra att ha föregående artiklar som referenslänkar i första inlägget på varje del