Innholdsfortegnelse:

Hvordan blokkjeden faktisk fungerer
Hvordan blokkjeden faktisk fungerer

Video: Hvordan blokkjeden faktisk fungerer

Video: Hvordan blokkjeden faktisk fungerer
Video: How did Hitler rise to power? - Alex Gendler and Anthony Hazard 2024, Kan
Anonim

Dette innlegget er ment å fortelle alle hvorfor blokkjeden ble oppfunnet, hvordan kryptovalutaer fungerer og hvorfor det er det vakreste systemet de siste årene sett fra et logisk synspunkt.

Jeg vil umiddelbart advare deg om at under kuttet er det et STORT ark med tekst, og hvis du ikke er klar til å "lukke" spørsmålet om temaet kryptovalutaer en gang for alle, legg til en oppføring i favorittene dine akkurat nå og reserver tid)

Blockchain er en teknologi, ny, merkelig, uforståelig, men den ser ut til å forandre verden, i motsetning til disse historiene dine. Tilsynelatende er hun med oss lenge.

Dette innlegget er skrevet som om det blir fortalt til folk som er veldig langt unna datamaskiner og kjenner dem bare overfladisk, for eksempel forestille seg at han forberedte seg på foreldrene dine. Jeg kan til og med kaste det over til mine medmennesker og være sikker på at de vil forstå.

Og Oleg vil hjelpe oss alle i denne vanskelige saken. Møte!

Hvis du ikke liker Oleg, sparker jeg ham ut.

Det grunnleggende: hvorfor trenger vi blockchain?

Blokkjeden ble beskrevet i Satoshi Nakamotos artikkel "Bitcoin: A Peer-to-Peer Electronic Cash System". Der, på bare åtte sider, beskrev forfatteren det grunnleggende om Bitcoin-kryptovalutaen, som var basert på Blockchain-algoritmen.

Liste som ikke kan endres

Blockchain - en kjede av blokker eller med andre ord en lenket liste. I en slik liste refererer hver neste post til en tidligere, og så videre nedover i kjeden til den aller første. Som vognene til et tog, drar hver og en av den neste med seg. Angående listene er det en god artikkel av Nikita Likhachev på TJ, hvor det samme er forklart for helt nybegynnere. Analogiene er delvis hentet derfra.

La oss ta et eksempel

Olegs venner låner stadig penger av ham. Oleg er snill, men ekstremt glemsom. En uke senere husker han ikke lenger hvem som ikke returnerte gjelden til ham, men han er flau over å spørre alle om det. Derfor bestemte han seg en dag for å sette en stopper for dette ved å lage en liste over venner på tavlen hjemme hos ham som han lånte penger til.

Nå kan Oleg alltid gå til styret og sørge for at Max returnerte alt, men Vanya gir ikke 700 rubler allerede. En dag inviterer Oleg Vanya til å ta en drink hjemme hos ham. Mens Oleg går på toalettet, sletter Vanya oppføringen "Jeg lånte 200 rubler for Vanya" og skriver i stedet "Vanya ga 500 rubler".

Oleg, som stolte på listen sin, glemmer gjelden og taper 700 rubler. Han bestemmer seg for å kjempe mot det på en eller annen måte. I fjor gikk Oleg på programmeringskurs, hvor han ble fortalt om hashing. Han husker at enhver streng kan gjøres om til et entydig sett med tegn - en hash, og å endre et hvilket som helst tegn i strengen vil endre det fullstendig.

Å legge til en prikk på slutten endret den endelige hasjen til det ugjenkjennelige - du kan bruke den.

Oleg tar den velkjente SHA-256-hashen og hasheser hver post med den, og legger til resultatet på slutten. Nå kan Oleg forsikre seg om at ingen har endret postene hans ved å hashe dem på nytt og sammenligne dem med den grønne.

Men EVIL IVAN vet også hvordan man bruker SHA-256 og kan enkelt endre oppføringen sammen med hashen. Spesielt hvis hashen er skrevet rett ved siden av på tavlen.

Derfor, for større sikkerhet, bestemmer Oleg seg for å hash ikke bare selve posten, men legge den sammen med hashen fra forrige post. Nå avhenger alle de følgende oppføringene av de forrige. Hvis du endrer minst én linje, må du beregne hashen på nytt for alle de andre nedenfor i listen.

Men en dag sniker Ivan seg om natten, endrer oppføringen han trenger og oppdaterer hashen for hele listen til slutten. Det tar ham flere timer, men Oleg sover fortsatt i dyp søvn og kan ikke høre. Om morgenen oppdager Oleg en helt korrekt liste - alle hashes stemmer. Men Ivan lurte ham uansett, selv om han tilbrakte en søvnløs natt på det. Hvordan ellers kan du beskytte deg mot Night Ivan?

Oleg bestemmer seg for å komplisere livet hans på en eller annen måte. Nå, for å legge til en ny oppføring i listen, vil Oleg løse et komplekst problem knyttet til det, for eksempel en matematisk ligning. Han vil legge svaret til den siste hasjen.

Oleg er god i matematikk, men selv det tar ti minutter å legge til en oppføring. Til tross for dette er tidsbruken verdt det, for hvis Ivan vil endre noe igjen, må han løse likningene på nytt for hver rad, og det kan være dusinvis av dem. Det vil ta mye tid, fordi ligningene er unike hver gang og knyttet til en spesifikk post.

Men å sjekke listen er like enkelt: først må du sammenligne hashene som før, og deretter sjekke løsningene av ligningene ved enkel substitusjon. Hvis alt konvergerer, endres ikke listen.

I virkeligheten er ting ikke så bra med ligninger: datamaskiner løser dem for godt, og hvor de skal lagre så mange unike ligninger. Derfor kom forfatterne av blokkjeden opp med et vakrere problem: du må finne et slikt tall (nonce) slik at den endelige hashen av hele posten starter med 10 nuller. En slik nonce er vanskelig å finne, men resultatet kan alltid sjekkes med bare øyne.

Nå verifiserer Oleg alle hashene og sørger i tillegg for at hver begynner med det angitte antallet nuller. Sly Ivan, selv bevæpnet med en kraftig bærbar PC, vil ikke ha tid til å beregne alle hashene på en natt slik at de tilfredsstiller betingelsen - det vil ikke være nok tid.

En slik liste er faktisk hjemmeblokkkjeden på kneet. Dens sikkerhet er garantert av matematikere, som beviste at disse hasjene ikke kan beregnes på en eller annen måte raskere, bortsett fra ved brute force. Slik oppregning av hash for hver post er gruvedrift, som i dag vil være mye og detaljert om.

Sentralisering av tillit

Vennene våre likte ideen om å holde en falsk liste over "hvem lånte hvem". De vil heller ikke huske hvem som betalte for hvem i baren og hvor mye de fortsatt skylder - alt står skrevet på veggen. Du diskuterte ideen og bestemte deg for at nå trenger du en enkelt liste for alle.

Men hvem skal ha så viktig bokføring? Tross alt, når det kommer til penger, kommer tillit i forgrunnen. Vi vil ikke stole på det ukjente for å beholde pengene våre. For dette oppfant våre forfedre banker, som over tid begynte å bli klarert, fordi de er støttet av en lisens, lover og forsikring fra sentralbanken.

I vennekretsen stoler alle på hverandre og du kan ganske enkelt velge den mest ansvarlige for denne rollen. Men hva om spørsmålet handler om fremmede? En hel by, land eller hele verden, slik tilfellet er med Bitcoin? Generelt kan ingen stole på noen der.

Desentralisering: ingen stoler på noen

Så de kom opp med en alternativ tilnærming: behold en kopi av listen for alle. Dermed ville en angriper ikke bare måtte skrive om én liste, men også snike seg inn i hvert hus og skrive om listene der. Og så viser det seg at noen førte flere lister hjemme, som ingen visste om. Dette er desentralisering.

Ulempen med denne tilnærmingen er at for å gjøre nye oppføringer, må du ringe alle andre deltakere og informere hver av dem om de siste endringene. Men hvis disse deltakerne er sjelløse maskiner, slutter det å være noe problem i det hele tatt.

I et slikt system er det ikke et enkelt tillitspunkt, og dermed muligheten for bestikkelser og juks. Alle deltakere i systemet handler etter en enkelt regel: ingen stoler på noen. Alle tror bare på informasjonen de har til rådighet. Dette er hovedloven for ethvert desentralisert nettverk.

Transaksjoner

Når du kjøper en pott i en butikk, skriver du inn pinkoden fra kortet ditt, slik at butikken kan spørre banken om du har 35 rubler på kontoen din. Med andre ord signerer du en transaksjon for 35 rubler med pinkoden din, som banken bekrefter eller avviser.

Våre poster av typen "Jeg lånte Vanya 500 rubler" er også transaksjoner. Men vi har ikke en bank som autoriserer forfatteren av transaksjonene. Hvordan kan vi sjekke at Ivan ikke stille har lagt til oppføringen "Max skylder Oleg 100 500 rubler"?

Blokkjeden bruker mekanismen til offentlige og private nøkler for dette; IT-spesialister har lenge brukt dem for autorisasjon i samme SSH. Jeg forklarte det på fingrene i innlegget "Sikkerhet, kryptering, cyberpunk" i delen "Introduksjon til kryptering".

Kort om hvordan denne komplekse, men vakre matematikken fungerer: du genererer et par lange primtall på datamaskinen din - en offentlig og en privat nøkkel. Den private nøkkelen anses som superhemmelig fordi den kan dekryptere det som er kryptert i offentligheten.

Men det motsatte fungerer også. Hvis du deler den offentlige nøkkelen med alle vennene dine, vil de kunne kryptere hvilken som helst melding for dem slik at bare du kan lese den, siden du eier den private.

Men i tillegg til dette har den offentlige nøkkelen en nyttig effekt - med den kan du sjekke at dataene ble kryptert med din private nøkkel, uten å dekryptere selve dataene. Alle disse egenskapene er godt beskrevet i "Chifferboken".

Vi er på et desentralisert internett hvor ingen kan stole på. Transaksjonen signeres med en privat nøkkel og sendes sammen med den offentlige nøkkelen til et spesielt lager - en pool av ubekreftede transaksjoner. Så ethvert medlem av nettverket kan bekrefte at det var du som startet det, og ikke noen andre ønsker å betale med pengene dine.

Dette sikrer åpenheten og sikkerheten til nettverket. Hvis tidligere banker var ansvarlige for dette, er det matematikere som er ansvarlige for dette i blokkjeden.

For vanlige brukere som ikke vil finne ut hvordan de skal utstede og lagre private nøkler, vil elektroniske lommeboktjenester hjelpe. For å kopiere lange offentlige nøkler lages praktiske QR-koder der. For eksempel Blockchain Wallet, fordi den har en praktisk mobilapplikasjon og støtter de to viktigste kryptovalutaene - BTC og ETH.

Mangel på konseptet "balanse"

I likhet med styret vårt, består blokkjeden i hovedsak bare av transaksjonshistorikk. Den lagrer ikke saldoen til hver lommebok, ellers må vi finne opp ytterligere beskyttelsesmetoder.

Bare den private nøkkelen bekrefter eierskapet til lommeboken. Men hvordan kan andre medlemmer av nettverket sørge for at jeg har nok penger til å kjøpe?

Siden vi ikke har noen balanse, må du bevise det. Derfor inkluderer en blokkjedetransaksjon ikke bare din signatur og hvor mye du vil bruke, men også lenker til tidligere transaksjoner der du mottok det nødvendige beløpet.

Det vil si, hvis du vil bruke 400 rubler, går du gjennom hele historien din med inntekter og utgifter, og legger ved transaksjonen de inntektene du fikk 100 + 250 + 50 rubler, og beviser dermed at du har disse 400 rubler.

Hvert medlem av nettverket vil igjen sørge for å sjekke at du ikke har knyttet inntekt to ganger. At de 300 rublene som Max ga forrige uke, har du virkelig ikke brukt ennå.

Slike inntekter knyttet til en transaksjon kalles inputs i blokkjeden, og alle mottakere av penger kalles outputs. Summen av alle innganger er sjelden helt den samme som du ønsker å overføre om gangen – derfor vil en av utgangene som oftest være deg selv. Med andre ord ser transaksjonen på blokkjeden ut som "Jeg fikk 3 og 2 BTC, jeg vil overføre 4 BTC fra dem og returnere de resterende 1 BTC tilbake."

Det fine med blockchain er at innganger ikke trenger å komme fra én lommebok. Tross alt er det bare nøkkelen som sjekkes. Hvis du kjenner den private nøkkelen til alle innganger, kan du enkelt legge dem til transaksjonen din og betale med disse pengene. Som om du betaler i et supermarked med flere kort som du kjenner pinkoden fra.

Men hvis du mister din private nøkkel, disken din dør eller den bærbare datamaskinen blir stjålet, vil bitcoins gå tapt for alltid. Ingen kan bruke dem som input for nye transaksjoner.

Dette beløpet vil være utilgjengelig for hele verden for alltid - som om du brenner en bunt med sedler. Det er ingen enkelt bank der du kan skrive en søknad med en kopi av passet ditt, og han vil skrive det ut. Dette krever en ekstra utgivelse av nye bitcoins "ut av løse luften".

Dobbeltforbruksproblem

Ovenfor sa jeg at transaksjoner legges til en spesiell "pool av ubekreftede transaksjoner". Hvorfor trenger vi en slags mellomliggende enhet, hvis vi allerede har, faktisk, ferdige signerte transaksjoner? Hvorfor ikke skrive dem direkte til blokkjeden?

Fordi signalene fra punkt A til punkt B alltid går med forsinkelse. To transaksjoner kan gå helt forskjellige veier. Og transaksjonen som ble igangsatt først kan nå mottakeren senere, fordi den tok en lengre vei.

Dette resulterer i dobbeltforbruk, når de samme pengene ble sendt til to adressater samtidig, som de ikke en gang ville gjette seg til. Dette er ikke for å overlevere regninger fra hånd til hånd.

For et desentralisert nettverk der ingen kan stole på, er dette problemet spesielt akutt. Slik sikrer du at en transaksjon definitivt var før en annen? Be avsenderen om å sy inn forsendelsestiden, ikke sant? Men husk – du kan ikke stole på noen, ikke engang avsenderen.

Tiden på alle datamaskiner vil nødvendigvis variere, og det er ingen garantert måte å synkronisere dem på. En kopi av blokkjeden lagres på hver datamaskin i nettverket, og hver deltaker stoler kun på den.

Hvordan kan du forsikre deg om at en transaksjon var tidligere enn en annen?

Svaret er enkelt: det er umulig. Det er ingen måte å bekrefte tidspunktet for en transaksjon på et desentralisert nettverk. Og løsningen på dette problemet er den tredje viktige blokkjedeideen som Satoshi fant opp og som merkelig nok er stavet rett i navnet hans - blokker.

Blokker er ryggraden i blokkjeden

Hver fungerende datamaskin på nettverket velger alle transaksjoner den liker fra den generelle poolen. Vanligvis bare for den høyeste provisjonen han kan tjene på det. Så han samler transaksjoner for seg selv til deres totale størrelse når den forhandlede grensen. I Bitcoin er denne blokkstørrelsesgrensen 1 MB (etter SegWit2x vil den være 2 MB), og i Bitcoin Cash - 8 MB.

Hele blokkjeden er i hovedsak en liste over slike blokker, hvor hver enkelt refererer til den forrige. Den kan brukes til å spore enhver transaksjon i hele historien, og avvikle blokkjeden helt til den aller første posten.

Det er denne listen som nå veier hundrevis av gigabyte og må lastes ned fullstendig til alle datamaskiner som ønsker å ta del i nettverket (men dette er ikke nødvendig for bare å opprette transaksjoner og overføre penger). Den lastes ned på samme måte fra alle de nærmeste datamaskinene på nettverket, som om du laster ned en serie fra torrenter, bare nye nye episoder slippes i den hvert 10. minutt.

Etter å ha skrevet transaksjoner fra bassenget for seg selv, begynner datamaskinen å komponere fra dem den samme uforglemmelige listen som vi gjorde i begynnelsen av innlegget på tavlen hjemme.

Bare han lager det i form av et tre - hashes postene i par, så er resultatet igjen i par, og så videre til det bare er en hash igjen - roten av treet, som legges til blokken. Hvorfor akkurat med et tre - jeg fant ikke svaret, men jeg antar at det rett og slett er raskere på den måten. Les mer på wikien: Merkle tree.

Siden den nåværende blokkjeden allerede er lastet ned, vet datamaskinen vår nøyaktig hva den siste blokken er i den. Han trenger bare å legge til en lenke til den i blokkhodet, hash alt og fortelle alle andre datamaskiner på nettverket "se, jeg har laget en ny blokk, la oss legge den til blokkjeden vår".

Resten bør sjekke at blokken er bygget i henhold til alle reglene og at vi ikke har lagt til unødvendige transaksjoner der, for så å legge dem til våre kjeder. Nå er alle transaksjoner i den bekreftet, blokkjeden økes med en blokk og alt går bra, ikke sant?

Men nei. Tusenvis av datamaskiner jobber på nettverket samtidig, og så snart de setter sammen en ny blokk, skynder de seg nesten samtidig for å informere alle om at blokken deres ble opprettet først. Og fra forrige avsnitt vet vi allerede at i et desentralisert nettverk er det umulig å bevise hvem som egentlig var den første.

Som på skolen, når alle løste en vanskelig prøve, skjedde det sjelden at selv fremragende elever tok svarene samtidig.

Men hvis det for en person er en vanskelig oppgave å planlegge en ferie slik at han kommer på maiferien, og billetter til sjøen er rimelige, så er det for en datamaskin å legge til et slikt tall (ikke) til slutten av blokk slik at som et resultat begynner SHA-256-hashen for hele blokken, la oss si 10 nuller. Dette er problemet som må løses for å legge til en blokk til Bitcoin-nettverket. For andre nettverk kan oppgavene variere.

Så vi kommer til konseptet gruvedrift, som alle har vært så besatt av de siste årene.

Gruvedrift

Bitcoin-gruvedrift er ikke en slags hellig sakrament. Gruvedrift handler ikke om å finne nye bitcoins et sted i dypet av Internett. Gruvedrift er når tusenvis av datamaskiner rundt om i verden surrer i kjellere, går gjennom millioner av tall per sekund og prøver å finne en hash som starter med 10 nuller. De trenger ikke engang å være online for å gjøre dette.

Skjermkort med hundrevis av parallelle kjerner løser dette problemet raskere enn noen CPU.

Hvorfor nøyaktig 10 nuller? Og akkurat som det gir det ingen mening. Så Satoshi kom opp med. Fordi dette er et av de problemene som det alltid er en løsning på, men det kan absolutt ikke finnes raskere enn en lang monoton oppregning av alternativer.

Kompleksiteten til gruvedrift avhenger direkte av størrelsen på nettverket, det vil si dens totale kraft. Hvis du lager din egen blokkjede og kjører den selv hjemme på to bærbare datamaskiner, bør oppgaven være enklere. For eksempel slik at hashen starter med bare én null, eller slik at summen av partallene er lik summen av de odde.

Det vil ta flere tiår for én datamaskin å finne en hash som starter med 10 nuller. Men hvis du kombinerer tusenvis av datamaskiner i et enkelt nettverk og søker parallelt, så løses dette problemet i henhold til sannsynlighetsteorien i gjennomsnitt på 10 minutter. Dette er tiden da en ny blokk dukker opp i bitcoin-blokkjeden.

Hvert 8.–12. minutt finner noen på jorden en slik hasj og får privilegiet å kunngjøre oppdagelsen for alle, og dermed unngå problemet med hvem som var den første.

For å finne et svar mottar datamaskinen (fra og med 2017) 12,5 BTC - dette er mengden belønning som genereres av bitcoin-systemet "ut av løse luften" og avtar hvert fjerde år.

Teknisk sett betyr dette at hver gruvearbeider alltid legger til en annen transaksjon til blokken sin - "opprett 12,5 BTC og send dem til lommeboken min". Når du hører «antallet bitcoins i verden er begrenset til 21 millioner, nå har de allerede ansatt 16 millioner» – dette er belønningene som genereres av nettverket.

Gå og se en ekte live Bitcoin-blokk på en av de dedikerte nettstedene. Det er også transaksjoner med innganger og utganger, og så mange som 18 nuller i begynnelsen og alle hashene beskrevet ovenfor.

Det er gruvearbeiderne som legger de nye transaksjonene til blokkjeden. Så hvis noen forteller deg at han vil «lage en blokkjede for ***», er det første spørsmålet han må svare på hvem som vil gruve på den og hvorfor. Oftest er det riktige svaret "alle vil, fordi for gruvedrift gir vi våre mynter, som vil vokse og det er lønnsomt for gruvearbeidere". Men dette gjelder ikke alle prosjekter.

For eksempel oppretter et eller annet helsedepartement i morgen sin egen lukkede blokkjede for leger (og de vil ha det), hvem vil utvinne det? Helgeterapeuter?

Men hva vil være fordelen for gruvearbeidere senere, når belønningene forsvinner eller blir sparsomme?

I følge Skaperens idé, vil folk på den tiden måtte tro på virkeligheten til bitcoin, og gruvedrift vil begynne å betale seg med beløpet som er inkludert i hver transaksjon. Det er her alt går: tilbake i 2012 var alle provisjoner null, gruvearbeidere utvunnet kun for belønninger fra blokker. I dag kan en transaksjon med null provisjon henge i bassenget i flere timer, fordi det er konkurranse og folk er villige til å betale for fart.

Det vil si at essensen av gruvedrift er å løse meningsløse problemer. Kunne ikke all denne kraften brukes til noe mer nyttig – søken etter en kur mot kreft, for eksempel?

Essensen av gruvedrift er å løse ethvert beregningsproblem. Denne oppgaven bør være enkel nok til at nettverksdeltakere har en stabil sannsynlighet for å finne et svar – ellers vil transaksjoner bli bekreftet for alltid. Tenk deg at du i kassen i en butikk må vente en halvtime hver gang på at banken skal bekrefte transaksjonen din. Ingen vil bruke en slik bank.

Men oppgaven må samtidig være vanskelig, slik at ikke alle nettbrukere finner svaret på en gang. For i dette tilfellet vil de kunngjøre mange blokker med samme transaksjoner til nettverket og det vil være en mulighet for "dobbelt avfall", som jeg nevnte. Eller enda verre - å dele en enkelt blokkjede i flere grener, der ingen kan finne ut hvilken transaksjon som er bekreftet og hvilken som ikke er det.

Hvis en belønning på 12,5 BTC deles ut bare én gang hvert 10. minutt og bare én person som fant blokken, viser det seg at jeg må kaste bort skjermkort i flere år i håp om at jeg en dag vil slippe 40 000 dollar (på gjeldende valutakurs)?

Dette er akkurat tilfellet for bitcoin. Men det var ikke alltid slik. Tidligere var nettverket mindre, kompleksiteten er lavere, noe som betyr at sannsynligheten for egenhendig å finne en hash for en ny blokk er høyere. Men så var ikke bitcoin så dyrt.

Nå er det ingen som utvinner bitcoins alene. Nå er deltakerne forent i spesielle grupper - gruvebassenger, hvor alle sammen prøver å finne riktig hasj.

Hvis minst én i gruppen finner, så deles hele belønningen mellom deltakerne, avhengig av deres bidrag til fellesarbeidet. Det viser seg at du gruver og du får en krone av den totale andelen hver uke.

Men solo mining er fullt mulig på andre nettverk. Inntil nylig var det enkelt å mine Ethereum, hvor blokker blir funnet hvert 10. sekund. Blokkbelønningen er mye lavere der, men sannsynligheten for å tjene en pen krone er høyere.

Så vi skal brenne tusenvis av skjermkort forgjeves og det er ingen vei utenom?

Ja, men det finnes ideer. Gruvedriften som jeg beskrev er klassisk og heter Proof-of-Work (bevis på arbeid). Det vil si at hver maskin beviser at den fungerte til fordel for nettverket ved å løse meningsløse problemer med en gitt sannsynlighet.

Men noen gutter begynner å lage blokkjeder med andre typer gruvedrift. Nå er det nest mest populære konseptet Proof-of-Stake (proof of stake). I denne typen gruvedrift, jo flere "mynter" en nettverksdeltaker har på kontoen sin, jo mer sannsynlig er det at han setter inn blokken sin i blokkjeden. Som den mest høylytte karen i landsbyen.

Du kan tenke på andre typer gruvedrift. Som allerede foreslått, kan alle datamaskiner på nettverket se etter en kur mot kreft, bare du trenger å finne ut hvordan du i dette tilfellet registrerer deres bidrag til systemet. Jeg kan tross alt erklære at jeg også deltar, men slå av skjermkortet mitt og tell ingenting.

Hvordan kvantifiserer du hver enkelt deltakers bidrag til å finne en kur mot kreft? Hvis du kommer på det - våg å kutte din CancerCoin, en hype i media er garantert for deg.

Blockchain

Se for deg en situasjon der, til tross for all vår sannsynlighetsteori, to gruvearbeidere likevel klarte å finne det riktige svaret samtidig. De begynner å sende to helt riktige blokker over nettverket.

Disse blokkene er garantert forskjellige, for selv om de på mirakuløst vis valgte de samme transaksjonene fra bassenget, laget helt identiske trær og gjettet det samme tilfeldige tallet (ikke noen gang), vil hashen deres fortsatt være forskjellige, siden hver vil skrive lommeboknummeret sitt i blokken for belønning.

Nå har vi to gyldige blokker og igjen oppstår problemet med hvem som bør vurderes først. Hvordan vil nettverket oppføre seg i dette tilfellet?

Blockchain-algoritmen sier at nettverksdeltakere ganske enkelt godtar det første riktige svaret som når dem. Da lever de ut fra sitt eget verdensbilde.

Begge gruvearbeiderne vil motta sin belønning, og alle de andre begynner å gruve, stole på den siste blokken de personlig mottok, og forkaste alle resten er re-korrekte. To versjoner av riktig blokkjede vises på nettverket. Slik er paradokset.

Dette er en rutinesituasjon der sannsynlighetsteori hjelper igjen. Nettverket fungerer i en slik todelt tilstand til en av gruvearbeiderne finner neste blokk til en av disse kjedene.

Så snart en slik blokk er funnet og satt inn i kjeden, blir den lengre og en av avtalene til blokkjedenettverket er inkludert: under alle forhold aksepteres den lengste blokkjeden som den eneste sanne for hele nettverket.

Den korte kjeden, til tross for all dens korrekthet, blir avvist av alle deltakere i nettverket. Transaksjoner fra den returneres til bassenget (hvis de ikke er bekreftet i en annen), og behandlingen av dem begynner på nytt. Gruvearbeideren mister belønningen sin fordi blokken hans ikke lenger eksisterer.

Med veksten av nettverket går slike tilfeldigheter fra "veldig usannsynlig" inn i kategorien "vel, noen ganger skjer det." Oldtimers sier at det var tilfeller da en kjede med fire blokker ble droppet på en gang.

På grunn av dette har tre ende av kjeden usikkerhetsregler blitt oppfunnet:

1. Belønninger for gruvedrift kan kun brukes etter ytterligere 20 bekreftede blokker etter mottak. For Bitcoin er dette omtrent tre timer.

2. Hvis bitcoins ble sendt til deg, kan du bruke dem som input i nye transaksjoner først etter 1-5 blokker.

3. Regel 1 og 2 er bare stavet i innstillingene til hver klient. Ingen overvåker deres overholdelse. Men den lengste kjedeloven vil likevel slette alle transaksjonene dine hvis du prøver å lure systemet til ikke å håndheve dem.

Prøver å jukse blokkjeden

Nå som du vet alt om gruvedrift, enheten til blokkjeden og regelen for den lengste kjeden, har du kanskje et spørsmål: er det mulig på en eller annen måte spesifikt å overta blokkjeden ved å lage den lengste kjeden selv, og dermed bekrefte de falske transaksjonene dine.

La oss si at du har den kraftigste datamaskinen på jorden. Google og Amazon datasentre satt sammen til din disposisjon, og du prøver å beregne en slik kjede som vil bli den lengste blokkjeden i nettverket.

Du kan ikke ta og umiddelbart beregne flere blokker av kjeden, fordi hver neste blokk avhenger av den forrige. Så bestemmer du deg så raskt som mulig for å telle hver blokk på dine enorme datasentre parallelt med hvordan alle andre deltakere fortsetter å øke hovedblokkjeden. Er det mulig å kjøre forbi dem? Sannsynligvis ja.

Hvis din datakraft er mer enn 50 % av kraften til alle nettverksdeltakere, vil du med 50 % sannsynlighet kunne bygge en lengre kjede raskere enn alle de andre til sammen. Dette er en teoretisk mulig måte å lure blokkjeden på ved å beregne en lengre kjede av transaksjoner. Da vil alle transaksjoner i det virkelige nettverket bli ansett som ugyldige, og du vil samle alle belønningene og starte en ny milepæl i kryptovalutaens historie, som kalles "blokkjededeling". En gang, på grunn av en feil i koden, var dette tilfellet med Ethereum.

Men i virkeligheten kan ingen datasenter sammenlignes når det gjelder strøm med alle datamaskiner i verden. Halvannen milliard kinesere med icics, ytterligere halvannen milliard sultne indianere med gruvegårder og billig strøm – dette er en enorm datakraft. Ingen i verden kan ennå konkurrere med dem alene, ikke engang Google.

Det er som å gå ut på gaten og prøve å overbevise alle mennesker i verden om at dollaren nå er verdt 1 rubel og være i tide før media avslører deg. Og klarer du å overbevise alle, kan du kollapse verdensøkonomien. I teorien, er det ikke mulig? Men i praksis var det av en eller annen grunn ingen som lyktes.

Blokkjeden hviler også på denne sannsynligheten. Jo flere deltakere-gruvearbeidere, jo mer sikkerhet og tillit i nettverket. Derfor, når en annen stor gruvegård dekkes i Kina, kollapser raten. Alle er redde for at det et sted i verden fantes et ondt geni som allerede hadde samlet en pool av gruvearbeidere med en kapasitet på ~49%.

Konklusjon

Blockchain er ikke et strengt definert sett med algoritmer. Det er en struktur for å bygge et falskt nettverk mellom deltakere, hvor ingen kan stole på noen. Mens du leste, hadde du sannsynligvis tenkt mer enn en gang at "du kan gjøre det slik, og det vil være enda mer nyttig". Dette betyr at du forstår blokkjeden, gratulerer.

Noen gutter i verden forsto det også og ønsket å forbedre eller tilpasse seg noen spesifikke oppgaver. Kryptovalutaer er ikke det samme, selv om det er mange av dem også. Her er en kort liste over noen av ideene og prosjektene som har fått en viss popularitet takket være omtenkningen av blokkjede-ideen.

Ethereum

"Ethers" er det nest mest populære ordet du hører i kryptohype-nyheter, etter Bitcoin. For vanlige folk er dette en annen kryptovaluta og en måte å gjøre det mest trendy som heter ICO. Utviklerne på nettstedet beskriver Ethereum som "en blokkjedebygger for dine behov." Dette er også mulig, ja.

Men hvis du graver enda dypere, er ikke eter bare et nettverk av mynter. Dette er en enorm global datamaskin, der brukere utfører koden til andres programmer (smarte kontrakter), og mottar en belønning for hver linje som utføres. Og alt dette er desentralisert, uforgjengelig og med alle garantiene til blokkjeden.

Vi kan snakke om Ethereum og smarte kontrakter så lenge at det vil være nok for et annet slikt innlegg. Derfor vil vi handle i stil med toppbloggere: hvis dette innlegget aktivt repostes og retweetes, og innen fredag får minst 1500 unike visninger, vil jeg skrive en oppfølger om Ethereum og smarte kontrakter.

Anbefalt: