Inhoudsopgave:

Hoe de blockchain eigenlijk werkt
Hoe de blockchain eigenlijk werkt

Video: Hoe de blockchain eigenlijk werkt

Video: Hoe de blockchain eigenlijk werkt
Video: What If the Sith Empire Returned During the Clone Wars (FULL MOVIE) 2024, April
Anonim

Dit bericht is bedoeld om iedereen te vertellen waarom de blockchain is uitgevonden, hoe cryptocurrencies werken en waarom het vanuit logisch oogpunt het mooiste systeem van de afgelopen jaren is.

Ik zal je onmiddellijk waarschuwen dat er onder de snede een ENORM stuk tekst is en als je niet klaar bent om de vraag over het onderwerp cryptocurrencies voor eens en voor altijd te "sluiten", voeg dan nu een item toe aan je favorieten en reserveer tijd)

Blockchain is een technologie, nieuw, vreemd, onbegrijpelijk, maar het lijkt de wereld te veranderen, in tegenstelling tot deze verhalen van jou. Blijkbaar is ze al heel lang bij ons.

Dit bericht is geschreven alsof het wordt verteld aan mensen die erg ver van computers zijn en ze slechts oppervlakkig kennen, stel je bijvoorbeeld voor dat hij zich voorbereidde op je ouders. Ik kan het zelfs aan mijn mede-geesteswetenschappen afwerpen en er zeker van zijn dat ze het zullen begrijpen.

En Oleg zal ons allemaal helpen in deze moeilijke zaak. Maak kennis met!

Als je Oleg niet mag, schop ik hem eruit.

De basis: waarom hebben we blockchain nodig?

De blockchain werd beschreven in Satoshi Nakamoto's artikel "Bitcoin: A Peer-to-Peer Electronic Cash System". Daar beschreef de auteur in slechts acht pagina's de basis van de Bitcoin-cryptocurrency, die was gebaseerd op het Blockchain-algoritme.

Lijst die niet kan worden gewijzigd

Blockchain - een aaneenschakeling van blokken of met andere woorden een gelinkte lijst. In zo'n lijst verwijst elk volgend record naar een vorig record, en zo verder in de keten tot het allereerste. Zoals de wagons van een trein, sleept elk de volgende mee. Wat betreft de lijsten is er een goed artikel van Nikita Likhachev op TJ, waar hetzelfde wordt uitgelegd voor volledig nieuwelingen. De analogieën zijn deels daaruit ontleend.

Laten we een voorbeeld nemen

De vrienden van Oleg lenen constant geld van hem. Oleg is aardig, maar extreem vergeetachtig. Een week later herinnert hij zich niet meer wie de schuld niet aan hem heeft terugbetaald, maar hij schaamt zich om iedereen ernaar te vragen. Daarom besloot hij er op een dag een einde aan te maken door op het bord bij hem thuis een vriendenlijst te maken aan wie hij geld leende.

Nu kan Oleg altijd naar het bestuur gaan en ervoor zorgen dat Max alles teruggeeft, maar Vanya geeft al geen 700 roebel. Op een dag nodigt Oleg Vanya uit voor een drankje bij hem thuis. Terwijl Oleg naar het toilet gaat, wist Vanya de vermelding "Ik leende 200 roebel voor Vanya" en schrijft in plaats daarvan "Vanya gaf 500 roebel".

Oleg, die op zijn lijst vertrouwde, vergeet de schuld en verliest 700 roebel. Hij besluit er op de een of andere manier tegen te vechten. Vorig jaar volgde Oleg een programmeercursus, waar hem werd verteld over hashing. Hij herinnert zich dat elke tekenreeks kan worden omgezet in een ondubbelzinnige reeks tekens - een hash, en het veranderen van een teken in de tekenreeks zal deze volledig veranderen.

Het toevoegen van een punt aan het einde veranderde de laatste hash onherkenbaar - u kunt het gebruiken.

Oleg neemt de bekende SHA-256-hash en hasht elke record ermee, en voegt het resultaat aan het einde toe. Nu kan Oleg ervoor zorgen dat niemand zijn records heeft gewijzigd door ze opnieuw te hashen en te vergelijken met de groene.

Maar EVIL IVAN weet ook hoe hij SHA-256 moet gebruiken en kan de invoer samen met de hash gemakkelijk wijzigen. Vooral als de hash ernaast op het bord staat.

Daarom besluit Oleg voor meer veiligheid niet alleen de record zelf te hashen, maar deze samen met de hash van de vorige record toe te voegen. Nu zijn alle volgende vermeldingen afhankelijk van de vorige. Als u ten minste één regel wijzigt, moet u de hashes van alle andere hieronder in de lijst opnieuw berekenen.

Maar op een dag sluipt Ivan 's nachts naar binnen, verandert de invoer die hij nodig heeft en werkt de hashes voor de hele lijst bij tot het einde. Het kost hem enkele uren, maar Oleg slaapt nog steeds diep en kan niet horen. In de ochtend ontdekt Oleg een absoluut correcte lijst - alle hashes komen overeen. Maar Ivan bedroog hem toch, ook al bracht hij er een slapeloze nacht door. Hoe kun je jezelf anders beschermen tegen Night Ivan?

Oleg besluit zijn leven op de een of andere manier ingewikkelder te maken. Om nu een nieuw item aan de lijst toe te voegen, zal Oleg een complex probleem oplossen dat daarmee samenhangt, bijvoorbeeld een wiskundige vergelijking. Hij zal het antwoord aan de laatste hash toevoegen.

Oleg is goed in wiskunde, maar zelfs het duurt tien minuten om een item toe te voegen. Desondanks is de bestede tijd de moeite waard, want als Ivan weer iets wil veranderen, zal hij de vergelijkingen voor elke rij opnieuw moeten oplossen, en er kunnen er tientallen zijn. Het zal veel tijd kosten, omdat de vergelijkingen telkens uniek zijn en gekoppeld zijn aan een specifiek record.

Maar het controleren van de lijst is net zo eenvoudig: eerst moet je de hashes vergelijken zoals eerder, en dan de oplossingen van de vergelijkingen controleren door eenvoudige substitutie. Als alles samenkomt, wordt de lijst niet gewijzigd.

In werkelijkheid gaat het niet zo goed met vergelijkingen: computers lossen ze te goed op en waar zoveel unieke vergelijkingen kunnen worden opgeslagen. Daarom kwamen de auteurs van de blockchain met een mooier probleem: je moet zo'n getal (nonce) vinden zodat de laatste hash van het hele record begint met 10 nullen. Zo'n nonce is moeilijk te vinden, maar het resultaat is altijd met de ogen te controleren.

Nu verifieert Oleg alle hashes en zorgt er bovendien voor dat elk begint met het opgegeven aantal nullen. Sly Ivan, zelfs gewapend met een krachtige laptop, zal geen tijd hebben om alle hashes in een nacht opnieuw te berekenen, zodat ze aan de voorwaarde voldoen - er zal niet genoeg tijd zijn.

Zo'n lijst is in feite de thuisblockchain op zijn knie. De veiligheid ervan wordt gegarandeerd door wiskundigen, die hebben bewezen dat deze hashes niet op de een of andere manier sneller kunnen worden berekend, behalve met brute kracht. Een dergelijke opsomming van hashes voor elk record is mijnbouw, waarover vandaag veel en in detail zal zijn.

Centralisatie van vertrouwen

Onze vrienden hielden van het idee om een neplijst bij te houden van "wie wie heeft geleend". Ze willen ook niet onthouden wie voor wie heeft betaald in de bar en hoeveel ze nog verschuldigd zijn - alles staat op de muur geschreven. Je besprak het idee en besloot dat je nu een enkele lijst nodig hebt voor iedereen.

Maar aan wie moet zo'n belangrijke boekhouding worden toevertrouwd? Als het om geld gaat, komt vertrouwen immers naar voren. We zullen het onbekende niet vertrouwen om ons geld te houden. Hiervoor hebben onze voorouders banken uitgevonden, die na verloop van tijd vertrouwd begonnen te worden, omdat ze worden ondersteund door een vergunning, wetten en verzekeringen van de Centrale Bank.

In de vriendenkring vertrouwt iedereen elkaar en kun je eenvoudig de meest verantwoordelijke kiezen voor deze rol. Maar wat als de vraag over vreemden gaat? Een hele stad, land of de hele wereld, zoals bij Bitcoin het geval is? Over het algemeen kan niemand daar iemand vertrouwen.

Decentralisatie: niemand vertrouwt iemand

Dus bedachten ze een alternatieve aanpak: bewaar voor iedereen een kopie van de lijst. Een aanvaller zou dus niet alleen één lijst moeten herschrijven, maar ook elk huis moeten binnensluipen en de lijsten daar opnieuw moeten schrijven. En dan blijkt dat iemand thuis meerdere lijsten bijhield, waar niemand iets vanaf wist. Dit is decentralisatie.

Het nadeel van deze aanpak is dat u, om nieuwe gegevens te kunnen invoeren, alle andere deelnemers moet bellen en elk van hen op de hoogte moet stellen van de laatste wijzigingen. Maar als deze deelnemers zielloze machines zijn, is dat geen enkel probleem meer.

In een dergelijk systeem is er geen enkel vertrouwenspunt, en dus de mogelijkheid van omkoping en bedrog. Alle deelnemers aan het systeem handelen volgens één regel: niemand vertrouwt iemand. Iedereen gelooft alleen de informatie die hij tot zijn beschikking heeft. Dit is de hoofdwet van elk gedecentraliseerd netwerk.

Transacties

Bij het kopen van een pot in een winkel voer je de pincode van je kaart in, waardoor de winkel aan de bank kan vragen of je 35 roebel op je rekening hebt staan. Met andere woorden, u ondertekent een transactie voor 35 roebel met uw pincode, die de bank bevestigt of afwijst.

Onze gegevens van het type "Ik heb Vanya 500 roebel geleend" zijn ook transacties. Maar we hebben geen bank die de auteur van de transacties autoriseert. Hoe kunnen we controleren of Ivan niet stilletjes de vermelding "Max is Oleg 100.500 roebel schuldig" heeft toegevoegd?

De blockchain gebruikt hiervoor het mechanisme van publieke en private sleutels; IT-specialisten gebruiken ze al lang voor autorisatie in dezelfde SSH. Ik legde het op mijn vingers uit in de post "Beveiliging, versleuteling, cyberpunk" in de sectie "Inleiding tot versleuteling".

Kort over hoe deze complexe maar mooie wiskunde werkt: je genereert een paar lange priemgetallen op je computer - een openbare en een privésleutel. De privésleutel wordt als supergeheim beschouwd omdat deze kan decoderen wat in het openbaar is versleuteld.

Maar het tegenovergestelde werkt ook. Als u de openbare sleutel met al uw vrienden deelt, kunnen zij elk bericht voor hen versleutelen, zodat alleen u het kunt lezen, aangezien u de privésleutel bezit.

Maar daarnaast heeft de openbare sleutel een nuttig effect - hiermee kunt u controleren of de gegevens zijn versleuteld met uw privésleutel, zonder de gegevens zelf te ontsleutelen. Al deze eigenschappen zijn goed beschreven in het "Book of Ciphers".

We zitten op een gedecentraliseerd internet waar niemand te vertrouwen is. De transactie wordt ondertekend met een privésleutel en wordt samen met de openbare sleutel naar een speciale opslag gestuurd - een pool van niet-bevestigde transacties. Dus elk lid van het netwerk kan verifiëren dat jij het was die het heeft geïnitieerd, en niet iemand anders wil afbetalen met je geld.

Dit zorgt voor de openheid en veiligheid van het netwerk. Als eerdere banken hiervoor verantwoordelijk waren, dan zijn in de blockchain wiskundigen hiervoor verantwoordelijk.

Voor gewone gebruikers die niet willen weten hoe ze privésleutels moeten uitgeven en opslaan, kunnen online portemonnee-services helpen. Om lange openbare sleutels te kopiëren, worden daar handige QR-codes gemaakt. Bijvoorbeeld Blockchain Wallet, omdat het een handige mobiele applicatie heeft en de twee belangrijkste cryptocurrencies ondersteunt: BTC en ETH.

Gebrek aan het concept van "balans"

Net als ons bord bestaat de blockchain in wezen alleen uit transactiegeschiedenis. Het slaat niet het saldo van elke portemonnee op, anders zouden we aanvullende beveiligingsmethoden moeten bedenken.

Alleen de privésleutel bevestigt het eigendom van de portemonnee. Maar hoe kunnen andere leden van het netwerk ervoor zorgen dat ik genoeg geld heb om te kopen?

Aangezien we geen saldo hebben, moet u het bewijzen. Een blockchaintransactie omvat dus niet alleen uw handtekening en hoeveel u wilt uitgeven, maar ook links naar eerdere transacties waarin u het benodigde geldbedrag heeft ontvangen.

Dat wil zeggen, als u 400 roebel wilt uitgeven, doorloopt u uw hele geschiedenis van inkomsten en uitgaven en voegt u aan uw transactie die inkomsten toe waar u 100 + 250 + 50 roebel hebt gekregen, waarmee u bewijst dat u deze 400 roebel hebt.

Elk lid van het netwerk zal er nogmaals voor zorgen dat u niet twee keer inkomsten heeft vastgemaakt. Die 300 roebel die Max vorige week gaf, heb je echt nog niet uitgegeven.

Dergelijke inkomsten die aan een transactie zijn gekoppeld, worden inputs genoemd in de blockchain en alle ontvangers van geld worden outputs genoemd. De som van alle ingangen is zelden precies hetzelfde als wat u tegelijk wilt overdragen - daarom is een van de uitgangen meestal uzelf. Met andere woorden, de transactie op de blockchain ziet eruit als "Ik heb 3 en 2 BTC gekregen, ik wil 4 BTC van hen overdragen en de resterende 1 BTC teruggeven."

Het mooie van blockchain is dat input niet uit één portemonnee hoeft te komen. Er wordt immers alleen de sleutel gecontroleerd. Als u de privésleutel van alle invoer kent, kunt u deze eenvoudig aan uw transactie koppelen en met dit geld betalen. Alsof je in een supermarkt betaalt met meerdere pasjes waarvan je de pincode kent.

Als u echter uw privésleutel verliest, uw schijf sterft of uw laptop wordt gestolen, zijn uw bitcoins voor altijd verloren. Niemand kan ze gebruiken als input voor nieuwe transacties.

Dit bedrag zal voor altijd ontoegankelijk zijn voor de hele wereld - alsof je een bundel bankbiljetten verbrandt. Er is geen enkele bank waar u een aanvraag kunt doen met een kopie van uw paspoort, en hij zal het afdrukken. Dit vereist een extra release van nieuwe bitcoins "uit het niets".

Dubbel bestedingsprobleem

Hierboven zei ik dat transacties worden toegevoegd aan een speciale "pool van niet-bevestigde transacties". Waarom hebben we een soort tussenpersoon nodig, als we in feite al kant-en-klare ondertekende transacties hebben? Waarom schrijf je ze niet rechtstreeks naar de blockchain?

Want de signalen van punt A naar punt B gaan altijd met vertraging. Twee transacties kunnen totaal verschillende kanten opgaan. En de transactie die het eerst is geïnitieerd, kan later de ontvanger bereiken, omdat het een langer pad heeft gekost.

Dit resulteert in dubbele bestedingen, wanneer hetzelfde geld naar twee geadresseerden tegelijk werd gestuurd, waar ze niet eens naar zouden raden. Dit is niet om rekeningen van hand tot hand te overhandigen.

Voor een gedecentraliseerd netwerk waarin niemand te vertrouwen is, is dit probleem bijzonder acuut. Zo zorg je ervoor dat de ene transactie zeker voor de andere was? Vraag de afzender om de verzendtijd erin te naaien, toch? Maar onthoud: je kunt niemand vertrouwen, zelfs de afzender niet.

De tijd op alle computers zal noodzakelijkerwijs verschillen en er is geen gegarandeerde manier om ze te synchroniseren. Een kopie van de blockchain wordt opgeslagen op elke computer in het netwerk en elke deelnemer vertrouwt alleen deze.

Hoe zorg je ervoor dat de ene transactie eerder was dan de andere?

Het antwoord is simpel: het is onmogelijk. Er is geen manier om het tijdstip van een transactie op een gedecentraliseerd netwerk te bevestigen. En de oplossing voor dit probleem is het derde belangrijke blockchain-idee dat Satoshi heeft uitgevonden en dat, vreemd genoeg, precies in zijn naam wordt gespeld: blokken.

Blokken zijn de ruggengraat van de blockchain

Elke werkende computer op het netwerk selecteert alle transacties die hij leuk vindt uit de algemene pool. Meestal alleen voor de hoogste commissie die hij erover kan verdienen. Dus hij verzamelt transacties voor zichzelf totdat hun totale omvang de onderhandelde limiet bereikt. In Bitcoin is deze limiet voor blokgrootte 1 MB (na SegWit2x zal dit 2 MB zijn), en in Bitcoin Cash - 8 MB.

De hele blockchain is in wezen een lijst van dergelijke blokken, waarbij elk naar de vorige verwijst. Het kan worden gebruikt om elke transactie in de hele geschiedenis te volgen, waarbij de blockchain zelfs tot het allereerste record wordt afgewikkeld.

Het is deze lijst die nu honderden gigabytes weegt en volledig moet worden gedownload naar alle computers die aan het netwerk willen deelnemen (maar dit is niet nodig om alleen transacties aan te maken en geld over te maken). Het wordt op dezelfde manier gedownload van alle dichtstbijzijnde computers op het netwerk, alsof je een serie downloadt van torrents, er worden elke 10 minuten alleen nieuwe nieuwe afleveringen uitgebracht.

Nadat hij zelf transacties uit de pool heeft getypt, begint de computer er dezelfde onvervalste lijst van samen te stellen als aan het begin van de post op het bord thuis.

Alleen hij maakt het in de vorm van een boom - hasht de records in paren, dan is het resultaat weer in paren, enzovoort totdat er nog maar één hash over is - de wortel van de boom, die aan het blok wordt toegevoegd. Waarom precies met een boom - ik heb het antwoord niet gevonden, maar ik veronderstel dat het op die manier gewoon sneller is. Lees meer op de wiki: Merkle tree.

Omdat de huidige blockchain al is gedownload, weet onze computer precies wat het laatste blok erin zit. Hij hoeft er alleen maar een link naar toe te voegen in de blokheader, alles te hashen en alle andere computers op het netwerk te vertellen "kijk, ik heb een nieuw blok gemaakt, laten we het toevoegen aan onze blockchain".

De rest moet controleren of het blok volgens alle regels is gebouwd en dat we daar geen onnodige transacties hebben toegevoegd, en deze vervolgens toevoegen aan onze ketens. Nu zijn alle transacties erin bevestigd, wordt de blockchain met één blok verhoogd en gaat alles goed, toch?

Maar nee. Duizenden computers werken tegelijkertijd op het netwerk en zodra ze een nieuw blok samenstellen, haasten ze zich bijna gelijktijdig om iedereen te informeren dat hun blok als eerste is gemaakt. En uit de vorige sectie weten we al dat het in een gedecentraliseerd netwerk onmogelijk is om te bewijzen wie echt de eerste was.

Net als op school, toen iedereen een moeilijke test oploste, gebeurde het zelden dat zelfs excellente leerlingen de antwoorden tegelijkertijd maakten.

Maar als het voor een persoon een moeilijke taak is om een vakantie te plannen zodat hij op de meivakantie komt, en kaartjes voor de zee goedkoop zijn, dan is het voor een computer om zo'n nummer (nonce) toe te voegen aan het einde van de blok zodat als resultaat de SHA-256-hash voor het hele blok begint, laten we zeggen 10 nullen. Dit is het probleem dat moet worden opgelost om een blok aan het Bitcoin-netwerk toe te voegen. Voor andere netwerken kunnen de taken verschillen.

Dus komen we bij het concept van mijnbouw, waar iedereen de afgelopen jaren zo geobsedeerd door is.

Mijnbouw

Bitcoin-mining is niet een soort heilig sacrament. Mijnbouw gaat niet over het vinden van nieuwe bitcoins ergens in de diepten van het internet. Mining is wanneer duizenden computers over de hele wereld in kelders zoemen, miljoenen getallen per seconde doornemen en proberen een hash te vinden die begint met 10 nullen. Ze hoeven hiervoor niet eens online te zijn.

Videokaarten met honderden parallelle cores lossen dit probleem sneller op dan welke CPU dan ook.

Waarom precies 10 nullen? En zomaar, het slaat nergens op. Dus Satoshi bedacht. Want dit is een van die problemen waar altijd een oplossing voor is, maar sneller dan een lange eentonige opsomming van opties kan het zeker niet.

De complexiteit van mijnbouw hangt rechtstreeks af van de grootte van het netwerk, dat wil zeggen van het totale vermogen. Als u uw eigen blockchain maakt en deze zelf thuis op twee laptops uitvoert, zou de taak eenvoudiger moeten zijn. Bijvoorbeeld zodat de hash met slechts één nul begint, of zodat de som van de even cijfers gelijk is aan de som van de oneven.

Het zal tientallen jaren duren voordat één computer een hash vindt die begint met 10 nullen. Maar als je duizenden computers in een enkel netwerk combineert en parallel zoekt, dan is dit probleem volgens de waarschijnlijkheidstheorie gemiddeld in 10 minuten opgelost. Dit is het moment waarop een nieuw blok in de bitcoin blockchain verschijnt.

Elke 8-12 minuten vindt iemand op aarde zo'n hash en krijgt het voorrecht om hun ontdekking aan iedereen aan te kondigen, waardoor het probleem wordt vermeden wie de eerste was.

Voor het vinden van een antwoord ontvangt de computer (vanaf 2017) 12,5 BTC - dit is de hoeveelheid beloning die wordt gegenereerd door het bitcoin-systeem "uit het niets" en elke vier jaar afneemt.

Technisch gezien betekent dit dat elke miner altijd een andere transactie aan zijn blok toevoegt - "maak 12,5 BTC en stuur ze naar mijn portemonnee". Als je hoort "het aantal bitcoins in de wereld is beperkt tot 21 miljoen, nu hebben ze al 16 miljoen ingehuurd" - dit zijn de beloningen die door het netwerk worden gegenereerd.

Ga naar een echt live Bitcoin-blok op een van de speciale sites. Er zijn ook transacties met invoer en uitvoer, en maar liefst 18 nullen aan het begin en alle hierboven beschreven hashes.

Het zijn de miners die de opkomende transacties aan de blockchain toevoegen. Dus als iemand je vertelt dat hij "een blockchain zal maken voor ***", is de eerste vraag die hij moet beantwoorden, wie erop zal minen en waarom. Meestal is het juiste antwoord "iedereen zal, want voor mijnbouw geven we onze munten, die zullen groeien en het is winstgevend voor mijnwerkers". Maar dat geldt niet voor alle projecten.

Een of ander ministerie van Volksgezondheid creëert bijvoorbeeld morgen zijn eigen gesloten blockchain voor artsen (en ze willen het), wie zal het ontginnen? Weekendtherapeuten?

Maar wat is het voordeel voor miners later, wanneer de beloningen verdwijnen of schaars worden?

Volgens het idee van de Schepper zullen mensen tegen die tijd moeten geloven in de realiteit van bitcoin en zal mijnbouw vruchten beginnen af te werpen door het bedrag aan vergoedingen dat bij elke transactie is inbegrepen. Dit is waar alles heen gaat: in 2012 waren alle commissies nul, miners werden alleen gedolven voor beloningen van blokken. Tegenwoordig kan een transactie zonder commissie enkele uren in de pool blijven hangen, omdat er concurrentie is en mensen bereid zijn te betalen voor snelheid.

Dat wil zeggen, de essentie van mijnbouw is het oplossen van zinloze problemen. Zou al deze kracht niet voor iets nuttigers kunnen worden gebruikt - bijvoorbeeld de zoektocht naar een geneesmiddel voor kanker?

De essentie van mijnbouw is om elk rekenprobleem op te lossen. Deze taak moet eenvoudig genoeg zijn voor netwerkdeelnemers om een stabiele kans te hebben om een antwoord te vinden - anders worden transacties voor altijd bevestigd. Stel je voor dat je bij de kassa in een winkel telkens een half uur moet wachten op de bank om je transactie te bevestigen. Niemand zal zo'n bank gebruiken.

Maar de taak moet tegelijkertijd moeilijk zijn, zodat niet alle netizens het antwoord in één keer vinden. Omdat ze in dit geval veel blokken met dezelfde transacties aan het netwerk zullen aankondigen en er een mogelijkheid is van "dubbele verspilling", die ik al zei. Of nog erger: het verdelen van een enkele blockchain in meerdere branches, waarin niemand kan achterhalen welke transactie is bevestigd en welke niet.

Als er maar één keer per 10 minuten een beloning van 12,5 BTC wordt uitgedeeld en er is maar één persoon die het blok heeft gevonden, dan blijkt dat ik een aantal jaren videokaarten moet verspillen in de hoop dat ik op een dag $ 40.000 zal laten vallen (bij de huidige wisselkoers)?

Dit is precies het geval voor bitcoin. Maar het was niet altijd zo. Voorheen was het netwerk kleiner, de complexiteit lager, waardoor de kans om eigenhandig een hash voor een nieuw blok te vinden groter is. Maar toen was bitcoin nog niet zo duur.

Nu mineert niemand bitcoins alleen. Nu zijn de deelnemers verenigd in speciale groepen - mining pools, waar iedereen samen de juiste hash probeert te vinden.

Als ten minste één van de groep vindt, wordt de volledige beloning verdeeld over de deelnemers, afhankelijk van hun bijdrage aan het gemeenschappelijke werk. Het blijkt dat je aan het minen bent en elke week een cent van het totale aandeel krijgt.

Maar solo-mining is heel goed mogelijk op andere netwerken. Tot voor kort was het gemakkelijk om Ethereum te minen, waar elke 10 seconden blokken worden gevonden. De blokbeloning is daar veel lager, maar de kans op het verdienen van een aardig centje is groter.

Dus we gaan tevergeefs duizenden videokaarten verbranden en is er geen uitweg?

Ja, maar er zijn ideeën. De mining die ik beschreef is klassiek en heet Proof-of-Work (proof of work). Dat wil zeggen, elke machine bewijst dat hij in het voordeel van het netwerk werkte door betekenisloze problemen met een bepaalde waarschijnlijkheid op te lossen.

Maar sommige jongens beginnen blockchains te maken met andere soorten mijnbouw. Nu is het op één na populairste concept Proof-of-Stake (proof of stake). Bij dit type mijnbouw geldt dat hoe meer "munten" een netwerkdeelnemer in zijn account heeft, hoe groter de kans dat hij zijn blok in de blockchain invoegt. Zoals de luidruchtigste van het dorp.

Je kunt denken aan andere vormen van mijnbouw. Zoals al gesuggereerd, kunnen alle computers op het netwerk zoeken naar een remedie voor kanker, alleen moet je uitzoeken hoe, in dit geval, hun bijdrage aan het systeem kan worden geregistreerd. Ik kan immers verklaren dat ik ook meedoe, maar zet mijn videokaart uit en tel niets.

Hoe kwantificeer je de bijdrage van elke deelnemer aan het vinden van een remedie voor kanker? Als je het bedenkt - durf je CancerCoin te snijden, een hype in de media is gegarandeerd voor jou.

Blockchain

Stel je een situatie voor waarin, ondanks al onze waarschijnlijkheidstheorie, twee miners er toch in slaagden om tegelijkertijd het juiste antwoord te vinden. Ze beginnen twee absoluut correcte blokken over het netwerk te sturen.

Deze blokken zijn gegarandeerd verschillend, want zelfs als ze op wonderbaarlijke wijze dezelfde transacties uit de pool kiezen, absoluut identieke bomen maken en hetzelfde willekeurige getal (nonce) raden, zullen hun hashes nog steeds verschillend zijn, omdat elk zijn portemonneenummer in het blok voor beloning.

Nu hebben we twee geldige blokken en opnieuw rijst het probleem van wie als eerste moet worden overwogen. Hoe zal het netwerk zich in dit geval gedragen?

Het blockchain-algoritme stelt dat netwerkdeelnemers simpelweg het eerste juiste antwoord accepteren dat hen bereikt. Dan leven ze vanuit hun eigen wereldbeeld.

Beide miners zullen hun beloning ontvangen, en de rest begint te minen, vertrouwend op het laatste blok dat ze persoonlijk hebben ontvangen, waarbij de rest wordt weggegooid. Er verschijnen twee versies van de juiste blockchain op het netwerk. Zo is de paradox.

Dit is een routinesituatie waarbij de kansrekening weer helpt. Het netwerk functioneert in zo'n gespleten toestand totdat een van de miners het volgende blok naar een van deze ketens vindt.

Zodra zo'n blok wordt gevonden en in de keten wordt gestoken, wordt deze langer en wordt een van de afspraken van het blockchain-netwerk opgenomen: onder alle voorwaarden wordt de langste blockchain geaccepteerd als de enige echte voor het hele netwerk.

De korte keten wordt, ondanks al zijn juistheid, door alle deelnemers aan het netwerk afgewezen. Transacties ervan worden teruggestuurd naar de pool (als ze niet in een andere zijn bevestigd) en de verwerking begint opnieuw. De miner verliest zijn beloning omdat zijn blok niet meer bestaat.

Met de groei van het netwerk vallen dergelijke toevalligheden van 'zeer onwaarschijnlijk' in de categorie van 'nou, soms gebeurt het'. Oldtimers zeggen dat er gevallen waren waarin een ketting van vier blokken tegelijk werd laten vallen.

Daarom zijn er drie regels voor onveiligheid aan het einde van de keten bedacht:

1. Beloningen voor mijnbouw kunnen pas worden gebruikt na nog eens 20 bevestigde blokken na ontvangst. Voor Bitcoin is dit ongeveer drie uur.

2. Als bitcoins naar u zijn verzonden, kunt u deze pas na 1-5 blokken als invoer in nieuwe transacties gebruiken.

3. Regel 1 en 2 zijn gewoon beschreven in de instellingen van elke klant. Niemand controleert hun naleving. Maar de langste ketenwet zal nog steeds al uw transacties tenietdoen als u het systeem probeert te misleiden om ze niet af te dwingen.

Proberen de blockchain te bedriegen

Nu je alles weet over mining, het apparaat van de blockchain en de regel van de langste keten, heb je misschien een vraag: is het mogelijk om op de een of andere manier specifiek de blockchain in te halen door zelf de langste keten te maken en zo je neptransacties te bevestigen.

Laten we zeggen dat je de krachtigste computer ter wereld hebt. Google en Amazon datacenters samen tot uw beschikking en u probeert zo'n keten te berekenen die de langste blockchain in het netwerk zal worden.

Je kunt niet meerdere blokken van de keten nemen en meteen berekenen, omdat elk volgend blok afhangt van het vorige. Dan besluit je zo snel mogelijk om elk blok op je enorme datacenters te tellen, parallel met hoe alle andere deelnemers de hoofdblockchain blijven vergroten. Is het mogelijk om ze in te halen? Waarschijnlijk wel.

Als uw rekenkracht meer dan 50% is van de kracht van alle netwerkdeelnemers, dan kunt u met een kans van 50% sneller een langere keten bouwen dan alle andere samen. Dit is een theoretisch mogelijke manier om de blockchain te misleiden door een langere transactieketen te berekenen. Dan worden alle transacties van het echte netwerk als ongeldig beschouwd en verzamel je alle beloningen en begin je aan een nieuwe mijlpaal in de geschiedenis van cryptocurrency, die "blockchain-divisie" wordt genoemd. Ooit was dit door een bug in de code het geval bij Ethereum.

Maar in werkelijkheid is geen enkel datacenter qua stroom te vergelijken met alle computers ter wereld. Anderhalf miljard Chinezen met ijsjes, nog eens anderhalf miljard hongerige Indiërs met mijnbouwboerderijen en goedkope elektriciteit - dit is een enorme rekenkracht. Niemand ter wereld kan nog alleen met hen concurreren, zelfs Google niet.

Het is alsof je de straat op gaat en iedereen ter wereld probeert te overtuigen dat de dollar nu 1 roebel waard is en dat je op tijd bent voordat de media je ontmaskeren. En als het je lukt om iedereen te overtuigen, kun je de wereldeconomie laten instorten. Is dat in theorie niet mogelijk? Maar in de praktijk slaagde niemand er om de een of andere reden in.

De blockchain berust ook op deze kans. Hoe meer deelnemers-miners, hoe meer veiligheid en vertrouwen in het netwerk. Daarom, wanneer een andere grote mijnbouwboerderij in China wordt gedekt, stort het tarief in. Iedereen is bang dat er ergens in de wereld een kwaadaardig genie was die al een pool van miners had verzameld met een capaciteit van ~ 49%.

Gevolgtrekking

Blockchain is geen strikt gedefinieerde reeks algoritmen. Het is een structuur voor het bouwen van een nepnetwerk tussen deelnemers, waar niemand iemand kan vertrouwen. Tijdens het lezen heb je waarschijnlijk meer dan eens de gedachte gehad: "je kunt het zo doen en het zal nog nuttiger zijn". Dit betekent dat je de blockchain begrijpt, gefeliciteerd.

Sommige jongens in de wereld begrepen het ook en wilden het verbeteren of aanpassen voor een aantal specifieke taken. Cryptocurrencies zijn niet hetzelfde, hoewel er ook veel zijn. Hier is een korte lijst van enkele van de ideeën en projecten die aan populariteit hebben gewonnen dankzij de heroverweging van het blockchain-idee.

Ethereum

"Ethers" is het tweede meest populaire woord dat je hoort in crypto-hypenieuws, na Bitcoin. Voor gewone mensen is dit een andere cryptocurrency en een manier om het meest trendy ding genaamd ICO te doen. De ontwikkelaars op de site beschrijven Ethereum als "een blockchain-builder voor uw behoeften". Dat kan ook, ja.

Maar als je nog dieper graaft, is ether niet alleen een netwerk van munten. Dit is een enorme wereldwijde computermachine, waar gebruikers de code van andermans programma's (slimme contracten) uitvoeren en een beloning ontvangen voor elke uitgevoerde regel. En dit alles is gedecentraliseerd, onverwoestbaar en met alle garanties van de blockchain.

We kunnen zo lang over Ethereum en slimme contracten praten dat het genoeg zal zijn voor nog zo'n bericht. Daarom zullen we handelen in de stijl van topbloggers: als dit bericht actief wordt gerepost en geretweet, en tegen vrijdag minstens 1.500 unieke views krijgt, zal ik een vervolg schrijven over Ethereum en slimme contracten.

Aanbevolen: