Innehållsförteckning:

Hur blockkedjan faktiskt fungerar
Hur blockkedjan faktiskt fungerar

Video: Hur blockkedjan faktiskt fungerar

Video: Hur blockkedjan faktiskt fungerar
Video: PBS Documentary: The March of the Bonus Army 2024, April
Anonim

Det här inlägget är tänkt att berätta för alla varför blockkedjan uppfanns, hur kryptovalutor fungerar och varför det är det vackraste systemet på senare år ur logisk synvinkel.

Jag kommer omedelbart att varna dig för att under klippet finns ett ENORMT textark och om du inte är redo att "stänga" frågan om ämnet kryptovalutor en gång för alla, lägg till ett inlägg till dina favoriter just nu och reservera tid)

Blockchain är en teknologi, ny, märklig, obegriplig, men den verkar förändra världen, i motsats till dina berättelser. Tydligen är hon med oss länge.

Det här inlägget är skrivet som om det berättas för människor som är väldigt långt ifrån datorer och kan dem bara ytligt, till exempel föreställ dig att han förberedde för dina föräldrar. Jag kan till och med slänga det till mina humaniora och vara säker på att de kommer att förstå.

Och Oleg kommer att hjälpa oss alla i denna svåra fråga. Träffa!

Om du inte gillar Oleg så sparkar jag ut honom.

Grunderna: varför behöver vi blockchain?

Blockkedjan beskrevs i Satoshi Nakamotos artikel "Bitcoin: A Peer-to-Peer Electronic Cash System". Där beskrev författaren på bara åtta sidor grunderna i Bitcoin-krypteringsvalutan, som baserades på Blockchain-algoritmen.

Lista som inte kan ändras

Blockchain - en kedja av block eller med andra ord en länkad lista. I en sådan lista hänvisar varje nästa post till en tidigare, och så vidare i kedjan till den allra första. Som vagnarna på ett tåg släpar var och en med nästa. Angående listorna finns det en bra artikel av Nikita Likhachev på TJ, där detsamma förklaras för helt nybörjare. Analogierna är delvis hämtade därifrån.

Låt oss ta ett exempel

Olegs vänner lånar ständigt pengar av honom. Oleg är snäll, men extremt glömsk. En vecka senare minns han inte längre vem som inte lämnade tillbaka skulden till honom, men han skäms över att fråga alla om det. Därför bestämde han sig en dag för att sätta stopp för detta genom att skapa en lista över vänner på svarta tavlan hemma hos honom som han lånade pengar till.

Nu kan Oleg alltid gå till styrelsen och se till att Max lämnade tillbaka allt, men Vanya ger inte 700 rubel redan. En dag bjuder Oleg Vanya att ta en drink hemma hos honom. Medan Oleg går på toaletten raderar Vanya posten "Jag lånade 200 rubel för Vanya" och skriver i dess ställe "Vanya gav 500 rubel".

Oleg, som litade på sin lista, glömmer skulden och förlorar 700 rubel. Han bestämmer sig för att på något sätt bekämpa det. Förra året gick Oleg en programmeringskurs, där han fick veta om hash. Han kommer ihåg att vilken sträng som helst kan förvandlas till en entydig uppsättning tecken - en hash, och att ändra vilket tecken som helst i strängen kommer att förändra det helt.

Att lägga till en prick i slutet ändrade den sista hashen till oigenkännlighet - du kan använda den.

Oleg tar den välkända SHA-256-hashen och hashar varje post med den och lägger till resultatet i slutet. Nu kan Oleg se till att ingen har ändrat hans poster genom att hasha dem igen och jämföra dem med den gröna.

Men EVIL IVAN vet också hur man använder SHA-256 och kan enkelt ändra posten tillsammans med dess hash. Speciellt om hashen står skrivet bredvid på tavlan.

Därför, för större säkerhet, bestämmer Oleg sig för att hasha inte bara själva posten, utan lägga till den tillsammans med hashen från den tidigare posten. Nu beror alla följande poster på de föregående. Om du ändrar minst en rad måste du räkna om hasharna för alla andra nedan i listan.

Men en dag smyger Ivan upp på natten, ändrar posten han behöver och uppdaterar hasharna för hela listan till slutet. Det tar honom flera timmar, men Oleg sover fortfarande snabbt och kan inte höra. På morgonen upptäcker Oleg en helt korrekt lista - alla hash matchar. Men Ivan bedrog honom ändå, även om han tillbringade en sömnlös natt på det. Hur kan du annars skydda dig från Night Ivan?

Oleg bestämmer sig för att på något sätt komplicera sitt liv. Nu, för att lägga till en ny post i listan, kommer Oleg att lösa ett komplext problem som är associerat med det, till exempel en matematisk ekvation. Han kommer att lägga till svaret i den sista hashen.

Oleg är bra på matematik, men även det tar tio minuter att lägga till en post. Trots detta är tiden värt det, för om Ivan vill ändra något igen måste han lösa om ekvationerna för varje rad, och det kan finnas dussintals av dem. Det kommer att ta mycket tid, eftersom ekvationerna är unika varje gång och associerade med en specifik post.

Men att kontrollera listan är lika enkelt: först måste du jämföra hasharna som tidigare och sedan kontrollera ekvationslösningarna genom enkel substitution. Om allt konvergerar ändras inte listan.

I verkligheten är det inte så bra med ekvationer: datorer löser dem för bra, och var man lagrar så många unika ekvationer. Därför kom författarna till blockkedjan med ett vackrare problem: du måste hitta ett sådant nummer (nonce) så att den slutliga hashen för hela posten börjar med 10 nollor. En sådan nonce är svår att hitta, men resultatet kan alltid kontrolleras med bara ögon.

Nu verifierar Oleg alla hash och ser dessutom till att var och en börjar med det angivna antalet nollor. Sly Ivan, även beväpnad med en kraftfull bärbar dator, kommer inte att ha tid att räkna om alla hash på en natt så att de uppfyller villkoret - det kommer inte att finnas tillräckligt med tid.

En sådan lista är faktiskt hemblockkedjan på knä. Dess säkerhet garanteras av matematiker, som bevisade att dessa hash inte kan beräknas på något sätt snabbare, utom med brute force. Sådan uppräkning av hash för varje post är gruvdrift, om vilken det idag kommer att finnas mycket och i detalj.

Centralisering av förtroende

Våra vänner gillade idén att hålla en falsk lista över "vem som lånade vem". De vill inte heller komma ihåg vem som betalade för vem i baren och hur mycket de fortfarande är skyldiga - allt står skrivet på väggen. Du diskuterade idén och bestämde dig för att nu behöver du en enda lista för alla.

Men vem ska anförtros en så viktig bokföring? När allt kommer omkring, när det kommer till pengar, kommer förtroendet i förgrunden. Vi kommer inte att lita på att det okända får behålla våra pengar. För detta uppfann våra förfäder banker, som med tiden började lita på, eftersom de stöds av en licens, lagar och försäkringar från centralbanken.

I vänkretsen litar alla på varandra och du kan helt enkelt välja den mest ansvarsfulla för denna roll. Men tänk om frågan handlar om främlingar? En hel stad, land eller hela världen, som är fallet med Bitcoin? I allmänhet kan ingen lita på någon där.

Decentralisering: ingen litar på någon

Så de kom på ett alternativt tillvägagångssätt: behåll en kopia av listan för alla. En angripare skulle alltså inte bara behöva skriva om en lista, utan även smyga in i varje hus och skriva om listorna där. Och så visar det sig att någon fört flera listor hemma, som ingen kände till. Detta är decentralisering.

Nackdelen med detta tillvägagångssätt är att för att göra nya poster måste du ringa alla andra deltagare och informera var och en av dem om de senaste ändringarna. Men om dessa deltagare är själlösa maskiner upphör det att vara några som helst problem.

I ett sådant system finns det ingen enskild förtroendepunkt, och därmed möjligheten till mutor och fusk. Alla deltagare i systemet agerar enligt en enda regel: ingen litar på någon. Alla tror bara på den information de har till sitt förfogande. Detta är huvudlagen för alla decentraliserade nätverk.

Transaktioner

När du köper en pott i en butik anger du pinkoden från ditt kort, vilket gör att butiken kan fråga banken om du har 35 rubel på ditt konto. Med andra ord signerar du en transaktion för 35 rubel med din pinkod, som banken bekräftar eller avvisar.

Våra register av typen "Jag lånade Vanya 500 rubel" är också transaktioner. Men vi har ingen bank som godkänner transaktionens författare. Hur kan vi kontrollera att Ivan inte tyst har lagt till posten "Max är skyldig Oleg 100 500 rubel"?

Blockkedjan använder mekanismen för offentliga och privata nycklar för detta; IT-specialister har länge använt dem för auktorisering i samma SSH. Jag förklarade det på mina fingrar i inlägget "Säkerhet, kryptering, cyberpunk" i avsnittet "Introduktion till kryptering".

Kort om hur denna komplexa men vackra matematik fungerar: du genererar ett par långa primtal på din dator - en offentlig och en privat nyckel. Den privata nyckeln anses vara superhemlig eftersom den kan dekryptera det som är krypterat offentligt.

Men motsatsen fungerar också. Om du delar den offentliga nyckeln med alla dina vänner kommer de att kunna kryptera alla meddelanden åt dem så att bara du kan läsa den, eftersom du äger den privata.

Men förutom detta har den publika nyckeln en användbar effekt - med den kan du kontrollera att data krypterades med din privata nyckel, utan att dekryptera själva datan. Alla dessa egenskaper är väl beskrivna i "Book of Ciphers".

Vi är på ett decentraliserat internet där ingen kan lita på. Transaktionen signeras med en privat nyckel och skickas tillsammans med den publika nyckeln till en speciell lagring - en pool av obekräftade transaktioner. Så vilken medlem som helst i nätverket kan verifiera att det var du som initierade det, och inte någon annan vill betala av med dina pengar.

Detta säkerställer nätverkets öppenhet och säkerhet. Om tidigare banker var ansvariga för detta, så i blockkedjan är matematiker ansvariga för detta.

För vanliga användare som inte vill ta reda på hur man utfärdar och lagrar privata nycklar, kommer onlineplånbokstjänster att hjälpa. För att kopiera långa publika nycklar görs bekväma QR-koder där. Till exempel Blockchain Wallet, eftersom den har en bekväm mobilapplikation och stöder de två viktigaste kryptovalutorna - BTC och ETH.

Brist på begreppet "balans"

Liksom vår styrelse består blockkedjan i huvudsak av endast transaktionshistorik. Den lagrar inte saldot i varje plånbok, annars skulle vi behöva uppfinna ytterligare skyddsmetoder.

Endast den privata nyckeln bekräftar ägandet av plånboken. Men hur kan andra medlemmar i nätverket se till att jag har tillräckligt med pengar att köpa?

Eftersom vi inte har någon balans måste du bevisa det. Därför inkluderar en blockchain-transaktion inte bara din signatur och hur mycket du vill spendera, utan även länkar till tidigare transaktioner där du fått den nödvändiga summan pengar.

Det vill säga, om du vill spendera 400 rubel, går du igenom hela din historia av inkomster och utgifter och bifogar till din transaktion de inkomster där du fick 100 + 250 + 50 rubel, vilket bevisar att du har dessa 400 rubel.

Varje medlem i nätverket kommer återigen se till att kontrollera att du inte har bifogat inkomst två gånger. Att de där 300 rubel som Max gav förra veckan har du verkligen inte spenderat än.

Sådana inkomster kopplade till en transaktion kallas ingångar i blockkedjan, och alla mottagare av pengar kallas utgångar. Summan av alla ingångar är sällan exakt densamma som du vill överföra åt gången - därför kommer en av utgångarna oftast att vara dig själv. Med andra ord, transaktionen på blockchain ser ut som "Jag fick 3 och 2 BTC, jag vill överföra 4 BTC från dem och returnera de återstående 1 BTC."

Det fina med blockchain är att indata inte behöver komma från en plånbok. Det är trots allt bara nyckeln som kontrolleras. Om du känner till den privata nyckeln för alla ingångar kan du enkelt bifoga dem till din transaktion och betala med dessa pengar. Som om du skulle betala i en stormarknad med flera kort som du känner till pinkoden från.

Men om du tappar din privata nyckel, din disk dör eller din bärbara dator blir stulen, kommer dina bitcoins att gå förlorade för alltid. Ingen kan använda dem som indata för nya transaktioner.

Denna summa kommer att vara otillgänglig för hela världen för alltid - som om du bränner en bunt sedlar. Det finns ingen enskild bank där du kan skriva en ansökan med en kopia av ditt pass, och han kommer att skriva ut det. Detta kräver ytterligare en utgivning av nya bitcoins "out of thin air".

Dubbla utgifter problem

Ovan sa jag att transaktioner läggs till en speciell "pool av obekräftade transaktioner". Varför behöver vi någon form av mellanliggande enhet, om vi redan har, faktiskt, färdiga signerade transaktioner? Varför inte skriva dem direkt till blockkedjan?

Eftersom signalerna från punkt A till punkt B alltid går med fördröjning. Två transaktioner kan gå helt olika vägar. Och transaktionen som initierades först kan nå mottagaren senare, eftersom den tog en längre väg.

Detta resulterar i dubbla utgifter, när samma pengar skickades till två adressater samtidigt, som de inte ens skulle gissa om. Detta är inte för att lämna över räkningar från hand till hand.

För ett decentraliserat nätverk där ingen kan lita på är detta problem särskilt akut. Så här säkerställer du att en transaktion definitivt var före en annan? Be avsändaren att sy in leveranstiden i den, eller hur? Men kom ihåg – du kan inte lita på någon, inte ens avsändaren.

Tiden på alla datorer kommer nödvändigtvis att skilja sig åt och det finns inget garanterat sätt att synkronisera dem. En kopia av blockkedjan lagras på varje dator i nätverket och varje deltagare litar bara på den.

Hur kan du säkerställa att en transaktion var tidigare än en annan?

Svaret är enkelt: det är omöjligt. Det finns inget sätt att bekräfta tidpunkten för en transaktion på ett decentraliserat nätverk. Och lösningen på detta problem är den tredje viktiga blockkedjeidén som Satoshi uppfann och som konstigt nog står precis i hans namn - block.

Blocken är ryggraden i blockkedjan

Varje fungerande dator i nätverket väljer alla transaktioner som den gillar från den allmänna poolen. Vanligtvis bara för den högsta provision han kan tjäna på det. Så han samlar transaktioner för sig själv tills deras totala storlek når den förhandlade gränsen. I Bitcoin är denna blockstorleksgräns 1 MB (efter SegWit2x blir det 2 MB), och i Bitcoin Cash - 8 MB.

Hela blockkedjan är i huvudsak en lista över sådana block, där var och en hänvisar till det föregående. Den kan användas för att spåra alla transaktioner i hela historien, och avveckla blockkedjan till och med den allra första posten.

Det är denna lista som nu väger hundratals gigabyte och måste laddas ner helt till alla datorer som vill delta i nätverket (men detta är inte nödvändigt för att bara skapa transaktioner och överföra pengar). Den laddas ner på samma sätt från alla närmaste datorer i nätverket, som om du laddar ner en serie från torrents så släpps bara nya nya avsnitt i den var tionde minut.

Efter att ha skrivit transaktioner från poolen för sig själv, börjar datorn att komponera från dem samma oförglömliga lista som vi gjorde i början av inlägget på tavlan hemma.

Det är bara han som gör det i form av ett träd - hashar posterna i par, sedan blir resultatet igen i par, och så vidare tills det bara finns en hash kvar - trädets rot, som läggs till i blocket. Varför just med ett träd - jag hittade inte svaret, men jag antar att det helt enkelt är snabbare så. Läs mer på wikin: Merkle tree.

Eftersom den nuvarande blockkedjan redan har laddats ner vet vår dator exakt vad det sista blocket är i den. Han behöver bara lägga till en länk till det i blockhuvudet, hasha allt och berätta för alla andra datorer i nätverket "titta, jag gjorde ett nytt block, låt oss lägga till det i vår blockchain".

Resten ska kontrollera att blocket är byggt enligt alla regler och att vi inte har lagt till onödiga transaktioner där, och sedan lägga till dem i våra kedjor. Nu är alla transaktioner i den bekräftade, blockkedjan ökas med ett block och allt går bra, eller hur?

Men nej. Tusentals datorer arbetar samtidigt på nätverket, och så fort de sätter ihop ett nytt block skyndar de sig nästan samtidigt för att informera alla om att deras block skapades först. Och från föregående avsnitt vet vi redan att i ett decentraliserat nätverk är det omöjligt att bevisa vem som verkligen var först.

Som i skolan, när alla löste ett svårt prov, hände det sällan att ens utmärkta elever tog svaren samtidigt.

Men om det för en person är en svår uppgift att planera en semester så att han kommer på semestern i maj, och biljetter till havet är billiga, så är det för en dator att lägga till ett sådant nummer (icke) i slutet av blockera så att som ett resultat börjar SHA-256-hash för hela blocket, låt oss säga 10 nollor. Detta är problemet som måste lösas för att lägga till ett block till Bitcoin-nätverket. För andra nätverk kan uppgifterna skilja sig åt.

Så vi kommer till begreppet gruvdrift, som alla har varit så besatta av de senaste åren.

Brytning

Bitcoin-brytning är inte något slags heligt sakrament. Gruvdrift handlar inte om att hitta nya bitcoins någonstans i djupet av Internet. Mining är när tusentals datorer runt om i världen surrar i källare, går igenom miljontals siffror per sekund och försöker hitta en hash som börjar med 10 nollor. De behöver inte ens vara online för att göra detta.

Grafikkort med hundratals parallella kärnor löser detta problem snabbare än någon CPU.

Varför exakt 10 nollor? Och bara så är det ingen mening. Så Satoshi kom på. För det här är ett av de problem som det alltid finns en lösning på, men det kan absolut inte hittas snabbare än en lång monoton uppräkning av alternativ.

Komplexiteten i gruvdrift beror direkt på nätverkets storlek, det vill säga dess totala kraft. Om du skapar din egen blockchain och kör den själv hemma på två bärbara datorer, borde uppgiften vara enklare. Till exempel så att hashen börjar med bara en nolla, eller så att summan av de jämna siffrorna är lika med summan av de udda.

Det kommer att ta flera decennier för en dator att hitta en hash som börjar med 10 nollor. Men om du kombinerar tusentals datorer i ett enda nätverk och söker parallellt, så löses detta problem enligt sannolikhetsteorin i genomsnitt på 10 minuter. Detta är den tid då ett nytt block dyker upp i bitcoin-blockkedjan.

Var 8-12:e minut hittar någon på jorden en sådan hash och får förmånen att tillkännage sin upptäckt för alla och därigenom undvika problemet med vem som var först.

För att hitta ett svar får datorn (från och med 2017) 12,5 BTC - det här är mängden belöning som genereras av bitcoinsystemet "ur tomma intet" och minskar vart fjärde år.

Tekniskt sett betyder detta att varje gruvarbetare alltid lägger till en annan transaktion till sitt block - "skapa 12,5 BTC och skicka dem till min plånbok". När du hör "antalet bitcoins i världen är begränsat till 21 miljoner, nu har de redan anställt 16 miljoner" - det här är belöningarna som genereras av nätverket.

Gå och se ett riktigt live Bitcoin-block på en av de dedikerade sajterna. Det finns också transaktioner med ingångar och utgångar, och så många som 18 nollor i början och alla hash som beskrivs ovan.

Det är gruvarbetarna som lägger till de framväxande transaktionerna till blockkedjan. Så om någon säger till dig att han kommer att "göra en blockchain för ***", är den första frågan han måste svara på vem som ska bryta på den och varför. Oftast är det korrekta svaret "alla kommer, för för gruvdrift ger vi våra mynt, som kommer att växa och det är lönsamt för gruvarbetare". Men detta gäller inte alla projekt.

Till exempel, ett hälsoministerium skapar i morgon sin egen stängda blockchain för läkare (och de vill ha det), vem ska bryta det? Helgterapeuter?

Men vad blir fördelen för gruvarbetare senare, när belöningarna försvinner eller blir knappa?

Enligt Skaparens idé kommer folk vid den tiden att behöva tro på verkligheten med bitcoin och gruvdrift kommer att börja löna sig med mängden avgifter som ingår i varje transaktion. Det är här allt går: tillbaka 2012 var alla provisioner noll, gruvarbetare bröt endast för belöningar från block. Idag kan en transaktion med noll provision hänga i poolen i flera timmar, eftersom det råder konkurrens och folk är villiga att betala för snabbhet.

Det vill säga att kärnan i gruvdrift är att lösa meningslösa problem. Kunde inte all denna kraft användas till något nyttigare – sökandet efter ett botemedel mot cancer till exempel?

Kärnan i gruvdrift är att lösa alla beräkningsproblem. Denna uppgift bör vara tillräckligt enkel för att nätverksdeltagare ska ha en stabil sannolikhet att hitta ett svar - annars kommer transaktioner att bekräftas för alltid. Föreställ dig att du i kassan i en butik måste vänta en halvtimme varje gång på att banken ska bekräfta din transaktion. Ingen kommer att använda en sådan bank.

Men uppgiften måste samtidigt vara svår, så att alla nätanvändare inte hittar svaret på en gång. För i det här fallet kommer de att meddela många block med samma transaktioner till nätverket och det kommer att finnas en möjlighet till "dubbelt slöseri", vilket jag nämnde. Eller ännu värre - att dela upp en enda blockkedja i flera grenar, där ingen kan ta reda på vilken transaktion som är bekräftad och vilken som inte är det.

Om en belöning på 12,5 BTC delas ut bara en gång var tionde minut och bara en person som hittade blocket, visar det sig att jag måste slösa bort grafikkort i flera år i hopp om att jag en dag ska släppa $40 000 (vid nuvarande växelkurs)?

Detta är exakt fallet för bitcoin. Men det var inte alltid så. Tidigare var nätverket mindre, komplexiteten är lägre, vilket gör att sannolikheten att på egen hand hitta en hash för ett nytt block är högre. Men då var bitcoin inte så dyrt.

Nu är det ingen som bryter bitcoins ensam. Nu är deltagarna förenade i speciella grupper - gruvpooler, där alla tillsammans försöker hitta rätt hash.

Om minst en i gruppen hittar, så delas hela belöningen mellan deltagarna, beroende på deras bidrag till det gemensamma arbetet. Det visar sig att du gruvdrift och du får en slant av den totala andelen varje vecka.

Men solo mining är fullt möjligt på andra nätverk. Tills nyligen var det lätt att bryta Ethereum, där block hittas var tionde sekund. Blockbelöningen är mycket lägre där, men sannolikheten att tjäna en ganska slant är högre.

Så vi kommer att bränna tusentals grafikkort förgäves och det finns ingen väg ut?

Ja, men det finns idéer. Gruvdriften som jag beskrev är klassisk och kallas Proof-of-Work (bevis på arbete). Det vill säga att varje maskin bevisar att den fungerade till fördel för nätverket genom att lösa meningslösa problem med en given sannolikhet.

Men vissa killar börjar göra blockkedjor med andra typer av gruvdrift. Nu är det näst mest populära konceptet Proof-of-Stake (proof of stake). I denna typ av gruvdrift, ju fler "mynt" en nätverksdeltagare har på sitt konto, desto mer sannolikt är det att han infogar sitt block i blockkedjan. Som den mest högljudda killen i byn.

Du kan tänka på andra typer av gruvdrift. Som redan föreslagits kan alla datorer i nätverket leta efter ett botemedel mot cancer, bara du behöver ta reda på hur man i det här fallet registrerar deras bidrag till systemet. Jag kan trots allt deklarera att jag också deltar, men stäng av mitt grafikkort och räkna ingenting.

Hur kvantifierar man varje deltagares bidrag till att hitta ett botemedel mot cancer? Om du kommer på det – våga klippa din CancerCoin, en hype i media garanteras dig.

Blockchain

Föreställ dig en situation där, trots all vår sannolikhetsteori, två gruvarbetare ändå lyckades hitta det rätta svaret samtidigt. De börjar skicka två helt korrekta block över nätverket.

Dessa block är garanterat olika, för även om de mirakulöst valde samma transaktioner från poolen, gjorde helt identiska träd och gissade samma slumpmässiga nummer (icke), kommer deras hash fortfarande att vara olika, eftersom var och en kommer att skriva sitt plånboksnummer i blocket för belöning.

Nu har vi två giltiga block och återigen uppstår problemet med vem som ska övervägas först. Hur kommer nätverket att bete sig i det här fallet?

Blockchain-algoritmen säger att nätverksdeltagare helt enkelt accepterar det första korrekta svaret som når dem. Då lever de utifrån sin egen bild av världen.

Båda gruvarbetarna kommer att få sin belöning, och alla andra börjar bryta, förlitar sig på det sista blocket de personligen fick, och kasserar alla andra är korrekta igen. Två versioner av rätt blockchain visas på nätverket. Sådan är paradoxen.

Detta är en rutinsituation där sannolikhetsteorin hjälper igen. Nätverket fungerar i ett sådant delat tillstånd tills en av gruvarbetarna hittar nästa block till en av dessa kedjor.

Så fort ett sådant block hittas och sätts in i kedjan blir det längre och ett av blockkedjenätverkets avtal ingår: under alla förhållanden accepteras den längsta blockkedjan som den enda sanna för hela nätverket.

Den korta kedjan, trots all sin riktighet, avvisas av alla deltagare i nätverket. Transaktioner från den returneras till poolen (om de inte har bekräftats i en annan), och behandlingen av dem börjar på nytt. Gruvarbetaren förlorar sin belöning eftersom hans block inte längre existerar.

Med tillväxten av nätverket går sådana sammanträffanden från "mycket osannolikt" in i kategorin "ja, ibland händer det." Oldtimers säger att det fanns fall då en kedja med fyra block tappades på en gång.

På grund av detta har tre ände av kedjans osäkerhetsregler uppfunnits:

1. Belöningar för gruvdrift kan endast användas efter ytterligare 20 bekräftade block efter mottagande. För Bitcoin handlar det om cirka tre timmar.

2. Om bitcoins skickades till dig kan du använda dem som indata i nya transaktioner först efter 1-5 block.

3. Regler 1 och 2 är precis skrivna i inställningarna för varje klient. Ingen övervakar deras efterlevnad. Men den längsta kedjelagen kommer fortfarande att utplåna alla dina transaktioner om du försöker lura systemet att inte genomdriva dem.

Försöker lura blockkedjan

Nu när du vet allt om gruvdrift, blockkedjans enhet och regeln för den längsta kedjan, kanske du har en fråga: är det möjligt att på något sätt specifikt gå om blockkedjan genom att själv göra den längsta kedjan och därigenom bekräfta dina falska transaktioner.

Låt oss säga att du har den kraftfullaste datorn på jorden. Google och Amazons datacenter står till ditt förfogande och du försöker beräkna en sådan kedja som kommer att bli den längsta blockkedjan i nätverket.

Du kan inte ta och omedelbart beräkna flera block i kedjan, eftersom varje nästa block beror på det föregående. Sedan bestämmer du dig så snabbt som möjligt för att räkna varje block på dina enorma datacenter parallellt med hur alla andra deltagare fortsätter att öka huvudblockkedjan. Går det att köra om dem? Troligtvis Ja.

Om din datorkraft är mer än 50 % av kraften hos alla nätverksdeltagare, så kommer du med 50 % sannolikhet att kunna bygga en längre kedja snabbare än alla andra tillsammans. Detta är ett teoretiskt möjligt sätt att lura blockkedjan genom att beräkna en längre kedja av transaktioner. Då kommer alla transaktioner i det verkliga nätverket att betraktas som ogiltiga, och du kommer att samla alla belöningar och starta en ny milstolpe i kryptovalutans historia, som kallas "blockchain division". En gång, på grund av en bugg i koden, var detta fallet med Ethereum.

Men i verkligheten går inget datacenter att jämföra kraftmässigt med alla datorer i världen. En och en halv miljard kineser med icics, ytterligare en och en halv miljard hungriga indianer med gruvgårdar och billig el – det här är en enorm datorkraft. Ingen i världen kan ännu konkurrera med dem ensam, inte ens Google.

Det är som att gå ut på gatan och försöka övertyga alla människor i världen att dollarn nu är värd 1 rubel och vara i tid innan media avslöjar dig. Och lyckas man övertyga alla kan man kollapsa världsekonomin. I teorin, är det inte möjligt? Men i praktiken var det av någon anledning ingen som lyckades.

Blockkedjan vilar också på denna sannolikhet. Ju fler deltagare-gruvarbetare, desto mer säkerhet och förtroende i nätverket. Därför, när ytterligare en stor gruvgård täcks i Kina, kollapsar takten. Alla är rädda att det någonstans i världen fanns ett ondskefullt geni som redan hade samlat en pool av gruvarbetare med en kapacitet på ~49%.

Slutsats

Blockchain är inte en strikt definierad uppsättning algoritmer. Det är en struktur för att bygga ett falskt nätverk mellan deltagare, där ingen kan lita på någon. När du läste hade du förmodligen tanken mer än en gång att "du kan göra det så här och det kommer att vara ännu mer användbart". Det betyder att du förstår blockkedjan, grattis.

Vissa killar i världen förstod det också och ville förbättra eller anpassa sig för vissa specifika uppgifter. Kryptovalutor är inte samma sak, även om det finns många av dem också. Här är en kort lista över några av de idéer och projekt som har vunnit lite popularitet tack vare omtänket av blockchain-idén.

Ethereum

"Ethers" är det näst mest populära ordet du hör i kryptohype-nyheter, efter Bitcoin. För vanliga människor är detta ytterligare en kryptovaluta och ett sätt att göra det trendigaste som heter ICO. Utvecklarna på sajten beskriver Ethereum som "en blockchain-byggare för dina behov." Detta är också möjligt, ja.

Men om du gräver ännu djupare är eter inte bara ett nätverk av mynt. Detta är en enorm global datormaskin, där användare exekverar koden för andras program (smarta kontrakt), och får en belöning för varje rad som körs. Och allt detta är decentraliserat, oförstörbart och med blockkedjans alla garantier.

Vi kan prata om Ethereum och smarta kontrakt så länge att det räcker till ytterligare ett sådant inlägg. Därför kommer vi att agera i stil med toppbloggare: om det här inlägget aktivt repostas och retweetas, och på fredag får det minst 1 500 unika visningar, kommer jag att skriva en uppföljare om Ethereum och smarta kontrakt.

Rekommenderad: