blockchain

Bitcoin Basics: Blockchain, Hashing & Mining….oh my!

We blijven de archieven afstoffen met dit stuk uit Daz Bea, voor het eerst gepubliceerd op Medium in juli 2021. Er zijn enkele kleine wijzigingen aangebracht om de duidelijkheid te vergroten... veel plezier.

Misschien ben je nieuw bij bitcoin, of misschien zit je al een tijdje in het konijnenhol maar heb je nooit echt begrepen wat er achter de schermen gebeurt, op de blockchain. Ik hoop het mysterie achter blockchain, hashing, bitcoin-mining en gedistribueerde grootboeken allemaal in één eenvoudig artikel te onthullen. Zet je schrap, we hebben veel te doorstaan.

SHA256-hashen

Het bitcoin-netwerk gebruikt het SHA256-algoritme om hashing-functies uit te voeren. Al in de war? Maak je geen zorgen, dit kan heel ingewikkeld zijn en ver boven mijn salarisschaal liggen, maar ik zal de basis zo goed mogelijk uitleggen.

Zie hashing als het maken van een digitale vingerafdruk van een set gegevens. Gegevens gaan het algoritme in (de invoer), het algoritme werkt zijn magie uit en spuugt een reeks alfanumerieke tekens uit (de uitvoer). Wat echt cool is aan hashing, is dat het niet uitmaakt hoeveel gegevens je door het algoritme haalt, de uitvoer is altijd even lang, 64 hexadecimale tekens voor het SHA256-algoritme.

Figuur 1 toont de SHA256-hashfunctie (we zullen dit vanaf hier hashing noemen) van de naam "Daz". "Daz" is de invoer en 3445748836aa04e53fd5de81c41c4a370f0cf52004659abf87920abc0da1bbaf is de uitvoer...
Eenvoudig, toch?

figuur 1
Figuur 1. Hash van de naam “Daz”

Nu verander ik de hoofdletter "D" in een kleine letter "d" (Afbeelding 2) om aan te tonen dat een simpele, kleine wijziging in de invoer resulteert in een geheel nieuwe uitvoer. Invoer=daz, uitvoer = ae5e9de1ed5510933a86705cb253b3cbd0b0891e70217c7a64603869aeaac093. Zoals je kunt zien aan onze nieuwe uitvoer, zijn de karakters in vergelijking met het origineel compleet anders. Er is geen duidelijk patroon tussen de twee.

screenshot 2023 07 15 om 10.22.51 am
Figuur 2. Hash van de naam “daz” met een kleine letter “d”

Zoals eerder vermeld, is de resulterende hash 64 tekens lang. Dit is altijd het geval, ongeacht de grootte van de gegevens die we in het algoritme plaatsen. In figuur 3 plak ik een heel Wikipedia-artikel over Fender Stratocasters in de invoer, de uitvoer blijft 64 tekens lang. Deze functie zou blijven bestaan ​​als je de volledige inhoud van het internet door het algoritme zou halen, telkens 64 tekens.

spatbord hasj
Figuur 3. Hash van een Wikipedia-artikel over Fender Stratocaster's (bron: https://en.wikipedia.org/wiki/Fender_Stratocaster)

Een kenmerk van de SHA256-hashfunctie is dat als we exact dezelfde set gegevens opnieuw zouden hashen, we elke keer dezelfde hash van die gegevens zouden krijgen. Dit is iets dat over de hele wereld vaak wordt gebruikt om een ​​aantal grote datasets te vergelijken om hun nauwkeurigheid te garanderen. Het vergelijken van hash-outputs is eenvoudiger dan het karakter voor karakter van de volledige inhoud te vergelijken. Deze functie vormt de basis van de bitcoin-blockchain. Laten we in het volgende stukje van die puzzel duiken... Blokken.

Blokken en mijnbouw

We kunnen de SHA256-hashfunctie gebruiken om datablokken te bouwen. Voor elk blok hebben we de invoer (de set gegevens) en we voegen enkele onderscheidende kenmerken toe aan die gegevens, zoals een bloknummer, als voorbeeld. En we halen het door de hash-functie.

In figuur 4 kunnen we zien dat we enkele gegevensvelden hebben, zoals blok #, een nonce (we zullen hier binnenkort over praten), en op dit moment is ons gegevensveld leeg. De hash van deze inclusieve gegevensvelden is: 0000f727854b50bb95c054b39c1fe5c92e5ebcfa4bcb5dc279f56aa96a365e5a

blok 1 hasj
Figuur 4. Blokvoorbeeld 1

U zult een onderscheidend kenmerk van deze hash opmerken, merk op dat de 4 hoofdtekens allemaal nullen zijn. Dit is geen toeval. Zie je, de output-hash van het SHA0-algoritme is eigenlijk een heel groot aantal. In het dagelijks leven zijn we gewend om een ​​nummersysteem te gebruiken dat base256 wordt genoemd. Dit betekent dat ons nummerstelsel een systeem is dat is gebaseerd op de cijfers van 10 tot en met 0.

Er zijn verschillende nummerstelsels, vooral in de informatica. Base2 is een ander veelgebruikt nummeringssysteem, u bent misschien meer bekend met de term binair. Base 2 of Binary is een nummersysteem dat gewoonlijk wordt gebruikt voor de basisstructuur van computersystemen die bestaan ​​uit de nummers 0 en 1.

De uitvoer van de bitcoin SHA256-algoritmen is in Base16, ook wel hexadecimaal genoemd. Base 16 gebruikt simpelweg het base10-nummersysteem van 0 tot en met 9, en breidt dit nummersysteem uit met de letters a door naar f in kleine letters om een ​​equivalent getallenstelsel te creëren met waarden van 0 tot en met 15 geïllustreerd in tabel 1.

figure2.26
Tabel 1: Base 16 (hexadecimaal) nummeringssysteem.

Waarom base16 gebruiken? Kortheidshalve gebruiken we grondtal 16. Een manier om extreem grote getallen weer te geven en tegelijkertijd het totale aantal tekens te verminderen.

Laten we nu 2 nieuwe termen introduceren die verband houden met bitcoin-mining. Moeilijkheidsgraad en doel. Moeilijkheidsgraad en doel zijn manieren waarop het bitcoin-protocol bepaalt hoe moeilijk het is om blokken te vinden. Ik kom hier tot op zekere hoogte op terug in een van mijn eerdere artikelen over de Moeilijkheidsaanpassing, dat kun je lezen hier.

Voor nu, begrijp gewoon dat het programma dat we gebruiken voor deze demonstratie een vast "doel" om de hash-functie van de uitvoer onder een bepaald doelnummer te laten werken, waardoor de nonce moeilijker te vinden is. Voor het bitcoin-protocol, de doel wordt elke 2 weken aangepast om een ​​gemiddelde vrijgave van de bloksnelheid van 1 x blok elke 10 minuten te reguleren, aangezien er meer rekenkracht naar het Bitcoin-netwerk wordt gegooid, de blokken sneller worden opgelost, het protocol kijkt terug naar de vorige blokken van 2016 en past zich aan de moeilijkheid van het ontginnen van blokken door de doelwaarde te verlagen, waardoor de nonce moeilijker te vinden is.

In dit artikel gaan we hier niet verder op in, we bewaren het voor een andere keer. Vandaag zullen we ons meer richten op de nonce en het bouwen van een blockchain.

Terug naar ons voorbeeld in Figuur 4. Laten we nu wat gegevens aan dit blok toevoegen. Ik zal de zin toevoegen "Hallo Wereld". Zodra ik deze gegevens heb toegevoegd, zult u merken dat de achtergrond rood is geworden (Figuur 5), het programma is nu niet blij met ons blok. Bedenk uit figuur 4 dat de hash van die set gegevens begon met 4 x leidende nullen. Dit specifieke programma dat ik gebruik, vereist dat de hash altijd onder een doelwaarde moet liggen, waarbij de output-hash begint met 0 leidende nullen, waarbij dat getal in zijn volledige base4-vorm is: 0ffffffffffffffffffffffffffffffffffffffffffffffffffffff

hallo wereld blok 1
Afbeelding 5. Een wijziging in de gegevens heeft het blok ongeldig gemaakt.

Toen ik de gegevens veranderde door "Hello World" toe te voegen, leverde het SHA256-algoritme een nieuwe hash op, en zoals we kunnen zien, begint mijn nieuwe hash niet met 4 leidende nullen, de output-hash ligt boven onze doelwaarde en is dus ongeldig.

Er zit een fundamentele waarheid in de SHA256-algoritmen bestaat een set gegevens die, eenmaal opgenomen in combinatie met mijn andere gegevens in het blok, zou resulteren in een output-hash onder mijn doelnummer. Er kan inderdaad meer dan één antwoord zijn, in feite zijn er waarschijnlijk veel. De moeilijkheid (bedoelde woordspeling) is echter welke gegevens het zouden kunnen zijn om het probleem op te lossen?

Dit is waar de nonce komt in het spel. Als we mijn dataset binnen het blok opsplitsen, hebben we het bloknummer (1) en de gegevens (Hello World) en een extra veld genaamd de nonce (momenteel met een waarde van: 72608). Wat als er een set gegevens was die ik zou kunnen opnemen als de nonce-waarde, die, eenmaal toegevoegd aan de rest van de gegevens, zou resulteren in een hash die voldeed aan de eis van mijn programma dat de output-hash zou resulteren in een getal kleiner dan 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff

Het mooie van crytopografie is dat dit niet handmatig berekend kan worden. Mijn enige optie is om te proberen willekeurig te raden wat die gegevens kunnen zijn. Ik kan de nonce-waarde wijzigen in 1? Of verander het in 2? of ik kan 2456395697 of 45628496902074 proberen?…….. Ik ben hier misschien een tijdje.

Of we kunnen de kracht van mijn computer gebruiken. We kunnen het vermogen van de computer gebruiken om snel informatie te verwerken om te raden welke gegevens we zouden kunnen opnemen in het "Nonce"-veld, dat, eenmaal door de hash-functie gehaald, zou resulteren in een output-hash van minder dan 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff.

Als ik in mijn programma op "Mine" druk, begint mijn pc de waarden voor de nonce te raden, er is geen andere manier om deze waarde te berekenen dan gissen en controleren, raden en controleren, totdat we een nonce-waarde vinden die een onderstaande uitvoer bereikt onze streefwaarde.

Zodra er een oplossing is gevonden, controleert het programma het resultaat en wordt het blok weer groen. Het is gelukkig. Dit proces kan enige tijd duren, afhankelijk van hoe moeilijk het is om een ​​gegevensset te vinden die overeenkomt. Dit staat in eenvoudige bewoordingen bekend als mijnbouw. We "graven" door combinaties van gegevens om een ​​oplossing te vinden voor een wiskundig probleem. We proberen een waarde van de nonce te vinden, die in combinatie met onze gegevens een vooraf bepaalde vereiste oplevert (in ons geval een uitvoerhash onder de numerieke waarde van base16 van 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff). Figuur 6 laat zien hoe dit eruit ziet voor ons voorbeeld, dit duurde ongeveer 3 seconden om te voltooien op mijn desktopcomputer. De nonce was het nummer 24894.

hallo wereld gedolven
Figuur 6. Een nieuwe nonce minen om te voldoen aan een hashfunctie met 4 x voorloopnullen.

Gefeliciteerd! We hebben ons eerste blok gedolven.

Blockchain

Een blockchain is…….wacht erop…….een ketting van blokken. Het is een ketting van blokken, net als het eerste blok dat we hierboven hebben gedolven, maar met enkele verschillen.

Een set gegevens wordt ingevoerd in blok 1, we ontginnen dat blok om de nonce te ontdekken om aan de moeilijkheidsvereiste te voldoen (een output-hash onder de doelwaarde). Dit levert een hasj op en ons blok is compleet. Vervolgens maken we een nieuw blok aan. We zullen een nieuw gegevensveld opnemen in dit nieuwe blok. Een gegevensveld waarbij we de uitvoer hasj van het voortgangsblok als invoergegevens in het nieuwe blok.

We kunnen naar binnen kijken Figuur 7, dat we een ketting van 2 blokken hebben. Het eerste blok is een kopie van onze bovenstaande voorbeelden, maar we hebben een nieuw veld met het label "Vorige" met nieuwe gegevens. Blok 1 is ons ontstaansblok, het bevat willekeurige informatie in het vorige veld. Het blok wordt gedolven en onze hash van die gegevens wordt verkregen.

In blok 2 nemen we de uitvoerhash van blok 1 op als invoergegevens voor ons nieuwe blok. We plaatsen die gegevens in het veld "Vorige". We voegen de nieuwe gegevens toe die we in dat tweede blok willen opnemen en we ontginnen dat blok. Onze beide blokken zijn blij.

blockchain x2 blokken
Figuur 7. Een Blockchain bouwen. De output-hash van blok 1 wordt toegevoegd aan het veld "Prev" van blok 2.

Laten we nu teruggaan en iets veranderen in blok 1. Ik zal een punt "." naar de gegevens. We kunnen nu in figuur 8 zien dat de hele blockchain niet gelukkig is. Beide blokken zijn rood. Ik heb de gegevens gewijzigd en de ketting verbroken. De hash van blok 1 ligt niet meer onder de streefwaarde. Het toevoegen van de punt "." aan de gegevens, heeft geresulteerd in een nieuwe hash met een waarde boven onze doelwaarde van 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, en is dus niet compatibel met de vereisten van het programma. Maar de uitvoer van blok 1 is ook een invoer voor blok 2, waardoor ook de hash van blok 2 ongeldig wordt. We hebben de ketting verbroken.

blockchain voegt volledige stop toe
Figuur 8. Een verandering in blok 1 heeft de keten verbroken.

Het opnieuw ontginnen van blok 1 heeft het programma voor blok 1 opgelost, maar nogmaals, de gegevens in blok 2 zijn gewijzigd vanwege de wijziging in de nieuwe output-hash van blok 1, het is nog steeds niet tevreden (Afbeelding 9).

voeg punt mijn 1 toe
Figuur 9. We hebben blok 1 opnieuw gedolven, maar blok 2 is nog steeds niet tevreden.

We moeten nu ook blok 2 opnieuw ontginnen om ervoor te zorgen dat het voldoet aan de moeilijkheidsvereiste. Figuur 10 laat zien dat we weer 2 x blije blokken hebben als we de werk voor de 2 blokken. "Werk" is een term om de rekenkracht te beschrijven die we hebben uitgeoefend tijdens het mijnbouwproces. Je hebt de term misschien wel eens gehoord Bewijs van het werk daarvoor heeft betrekking op dit concept van het beveiligen van de bitcoin-blockchain door het proces van energieverbruik ... het werk.

voeg punt mijn 2 toe
Figuur 10. Blokken 1 en vervolgens 2 opnieuw minen. Het programma is weer blij.

Let op de noodzaak om de blokken op volgorde te minen. Als we blok 2 opnieuw zouden minen voordat we klaar waren met het werk dat nodig was voor blok 1, zouden we blok 2 opnieuw moeten minen.

We hebben nu de basis voor onze blockchain, een 3e en dan 4e blok kan worden toegevoegd, waarbij elk blok wordt gemined met de nieuwe invoergegevens, waarbij de uitvoerhash van blok 2 leidt tot de invoer van blok 3 en de uitvoer van blok 3 leidt tot de ingang van blok 4 enzovoort enzovoort.

Als onze blockchain nu 4 blokken lang is, en we proberen opnieuw gegevens in blok 1 te wijzigen, dan wordt de hele keten ongeldig. We zouden dan blok 1 opnieuw moeten ontginnen, dan blok 2, dan blok 3…..zie je waar ik heen wil?

We hebben nu een goed begrip van een blockchain en de stukjes die samen moeten gaan om de keten te creëren. Laten we dit denken nu verder uitdiepen en kijken naar een gedistribueerde blockchain.

Gedistribueerde blockchain en consensus

Een van de mooie dingen van de bitcoin-blockchain is het gedistribueerde grootboek. We komen binnenkort bij de "grootboek" -kant van de zaak, laten we nu gewoon kijken naar een gedistribueerde blockchain om het concept te begrijpen.

Laten we zeggen dat ik een blockchain had, die een reeks blokken bevatte, waarbij elk blok wat gegevens bevatte. Deze gegevens zijn gehasht en aan elkaar geketend, zoals we hierboven hebben gezien, om een ​​blockchain te vormen. Ik bewaar een kopie van deze blockchain op mijn computer. Wat als het nodig was om aantekeningen met iemand anders te vergelijken? Wat als de integriteit van deze gegevens echt belangrijk voor me was en ik er zeker van wilde zijn dat er niet mee was geknoeid? Wat als ik er zeker van wilde zijn dat de gegevens die ik had een echte en correcte versie waren van die reeks gegevens? Het zou handig zijn als er een exacte kopie van deze blockchain zou zijn zodat ik mijn versie kan vergelijken met…. Rechts?

Dit is waar de schoonheid van de gedistribueerde blockchain om de hoek komt kijken. Wat als ik iemand anders een kopie van mijn blockchain zou geven, zodat ik op elk moment aantekeningen kan gaan vergelijken. Wat als ik een programma zou schrijven dat dat automatisch voor mij zou doen? Het kon continu mijn gegevensset vergelijken met die van mijn vrienden en eventuele discrepanties signaleren.

Om een ​​verkleind voorbeeld te geven. Stel dat ik een blockchain had, slechts 3 blokken lang met een aantal echt belangrijke gegevens waar ik aan werkte. Ik zou deze gegevens in een gedistribueerde blockchain kunnen beveiligen door thuis een kopie te bewaren (Afbeelding 11 — Peer A) en iemand anders er een kopie van te geven, of gewoon een kopie op mijn computer op kantoor te bewaren (Afbeelding 11 — Peer B).

uitgedeeld 1.
Afbeelding 11. Voorbeeld van gedistribueerde blockchain: peer A is thuis en peer B is op kantoor.

Als ik mijn computer aan en ontgrendeld laat, en een of andere snode acteur (ze zijn overal) komt langs en verandert de gegevens in blok 2 (kun je de verschillen zien?). Ze zouden elk blok van 2 tot en met 4 opnieuw kunnen ontginnen, zodat mijn exemplaar van de blockchain er goed uitziet in termen van de ketting en de hashing-functies voor elk blok. Als ik echter terugkom naar mijn gedistribueerde blockchain-programma, geeft dit aan dat mijn versie van de waarheid verschilt van die op mijn kantoorcomputer? Een snelle vergelijking laat zien dat de hashing inderdaad helemaal is veranderd van blok 2 naar blok 4. (Afbeelding 12). Beide ketens zien er op zichzelf goed uit, ze zijn allebei groen, maar mijn computerprogramma dat elke gedistribueerde versie vergelijkt, signaleerde de discrepantie tussen de hashes en waarschuwde me dat ze niet overeenkomen.

verdeeld 2
Figuur 12. Gegevens zijn gewijzigd in Blok 2 van Peer A's blockchain, de blokken zijn opnieuw gedolven. De hashes uit blok 2 zijn nu anders.

Maar welke versie is de juiste? Het is onmogelijk te zeggen tenzij ik wist welke specifieke versie de aanvaller had gewijzigd.

Het zou dan logisch zijn dat het handig zou zijn als ik nog een andere versie had om mee te vergelijken. Ik bewaar een kopie thuis (Afbeelding 13a — Peer A), een kopie op kantoor (Afbeelding 13b — Peer B) en nog een kopie bij mijn schoonmoeder (Afbeelding 13c — Peer C).

consensuscollega a
Figuur 13a — Peer A's versie van de blockchain

consensuspeer b
Figuur 13b — Peer B's versie van de blockchain

consensuspeer c
Figuur 13c — Peer C's versie van de blockchain

Nu slaat de snode acteur opnieuw toe, ze veranderen de gegevens op mijn thuis-pc-versie opnieuw en hermijnen alle blokken thuis. Maar nu heb ik een consensusmechanisme om versies te vergelijken. Ik heb een stemsysteem. Ik heb 3 kopieën van de waarheid. Peer A (Figuur 14a) vertelt me ​​het ene en de andere 2 (Figuur 14b) zijn het eens over een andere versie van de waarheid.

geen consensus peer a
Figuur 14a — Peer A's versie (wijziging aangebracht in blok 2)

geen consensus peer b&c
Figuur 14b — Collega B en Peer C zijn het eens.

Ik kan een zekere mate van vertrouwen stellen in deze consensus door aan te nemen dat de snode actor niet in staat zou zijn geweest om:

  1. Ken de fysieke locatie van mijn blockchains
  2. In staat zijn om in te breken, de gegevens te wijzigen en 2 van de 3 sets van deze blockchain opnieuw te minen.

Hoewel het bovenstaande scenario mogelijk is, is het niet erg waarschijnlijk.

Ik kan dus mijn thuisversie negeren, een back-up maken van deze versie met behulp van de versies van mijn kantoor- en schoonmoedersversie, en er zeker van zijn dat ik DE JUISTE versie van de waarheid heb hersteld. Godzijdank voor schoonmoeders en blockchain-technologie.

Stel je nu voor dat ik tienduizenden computers (knooppunten) had, willekeurig verspreid over de wereld, die deze blockchain draaiden (die gegevens zijn tenslotte vrij speciaal voor mij). Die slechterik zou meer dan 10% van deze knooppunten moeten opsporen en elke versie ervan moeten wijzigen om twijfel te zaaien over welke versie van de keten de waarheid was. Dit is hoogst onwaarschijnlijk, zo niet onmogelijk. Dit is precies hoe de bitcoin blockchain werkt. Een netwerk van willekeurig verdeelde knooppunten, gerund door gewone mensen, op software op hun computers of kleine goedkope speciale hardwareapparaten, die een versie van de waarheid opslaan en elkaar eerlijk houden. Dit is wat bitcoin gedecentraliseerd en vertrouwensloos maakt. Er is niet één partij die de blockchain controleert, het wordt beheerd door de gemeenschap van deelnemers.

Maar Daz, hoe zit het met bitcoin zelf? Hoe zit het met de munten? Hoe zit het met het Grootboek?

Bitcoins en het grootboek

Van de kennis die we tot nu toe over blockchain hebben opgebouwd, is het begrijpen van het grootboek net zo eenvoudig als het kunnen formatteren van de dataset waarmee we hebben gespeeld. Tot nu toe hebben we gespeeld met een tekstveld. En hoe belangrijk de informatie ook is, "Daz is behoorlijk rad", zo blijkt, niemand anders geeft erom.

Maar wat nuttig zou zijn, is als we het "gegevensveld" zouden gebruiken om iets nuttigs op te nemen, zoals transacties. Laten we ons voorstellen dat we nu een blockchain hebben die over veel knooppunten is verdeeld, maar we zullen alleen naar Peers A & B kijken om het idee te krijgen, maar in werkelijkheid zijn er duizenden knooppunten die dezelfde blockchain gebruiken. In ons voorbeeld hebben we het vrije-tekstveld voor gegevens vervangen door een reeks transactievelden. Figuur 15 toont blokken 4 en 5 van Peer A en Peer B en we kunnen zien dat er nu een reeks transactiegegevens in elk blok zit.

grootboek 1
Figuur 15 — Peer A en Peer B met transactiegegevens binnen een blockchain.

In blok 4 zien we dat er een bedrag van $62.19 is overgemaakt van iemand genaamd Rick naar iemand genaamd Isla. Dit was één transactie van de 5 totale transacties die in dat blok waren opgenomen. Het gegevensblok wordt gehasht en gedolven, precies zoals we eerder hebben gezien.

Onze snode acteur slaat weer toe, zijn naam is Sam, en hij ontving $ 97.13 van Rick. Sam kent een beetje coderen en besluit dat hij wat $$ van Rick wil stelen. Hij besluit zijn versie van de waarheid te veranderen en verandert het transactiebedrag in $ 97,000.13. Hij ontgint zijn versie opnieuw (Figuur 16), maar het heeft geen zin. Het enorme aantal knooppunten op het netwerk ziet dat dit een versie van de waarheid is die niet in overeenstemming is met de meerderheid, deze versie wordt door het netwerk afgewezen. Leuk geprobeerd Sam.

Sam tegen Rick
Figuur 16. Sam probeert Rick op te lichten door het transactiebedrag te wijzigen. Dit wordt afgewezen door het consensusnetwerk.

We zien een hele hoop transacties tussen partijen, maar hoe weten we dat Rick in de eerste plaats $ 97.13 te besteden had?

Coinbase — Het Genesis-blok

Als je al een tijdje deel uitmaakt van de bitcoin-gemeenschap, heb je ongetwijfeld gehoord van het beruchte genesis-blok. Satoshi Nakamoto, (Bitcoin's beruchte, pseudonieme maker), ontgonnen het eerste blok dat een blokbeloning van 50 Bitcoin bevatte. Block rewards vormen de coinbase voor bitcoin, oftewel, om munten uit te geven moeten ze eerst in omloop worden gebracht. Het Bitcoin Genesis-blok werd eigenlijk geteld als blok "0" en de eerste 50 bitcoin waren eigenlijk niet te besteden, maar vanaf blok 1 vormden ze de muntbasis.

Munten worden bij elk blok geïntroduceerd volgens een strak gecontroleerd vrijgaveschema. Dit releaseschema is ongeveer elke 1 minuten 10 blok. Elke 210,000 blokken wordt de blokbeloning gehalveerd. Op het moment van schrijven in juli 2021 is de blokbeloning 6.25 BTC elke ~10 minuten. Er is momenteel $ 18.7 miljoen bitcoin in omloop, met naar schatting de laatste 21 miljoenste bitcoin in het jaar 2140.

Blok 1 vestigde de initiële muntbasis, de daaropvolgende mijnbouw van verdere blokken breidt de muntbasis uit via de blokbeloningen. Kijkend naar ons voorbeeld begin ik met blok nummer 1, dit vormt mijn coinbase.

Als we naar ons blockchain-voorbeeld kijken (afbeelding 17), kunnen we zien dat ik mezelf in ons eerste blok $ 100 heb beloond. Deels omdat ik een goede kerel ben en deels omdat ik toevallig degene ben die het eerste blok heeft gedolven. Als we naar blok 2 gaan, begin ik mijn munten uit te geven.

Het programma zal altijd controleren of mijn transactie-outputs (de munten die ik uitgeef) mijn saldo in de coinbase niet overschrijden. Ik neem de transactiegegevens op in blok 2 en ik min dat blok ook, ik word beloond met meer munten als blokbeloning voor blok 2.

Vanaf hier blijft de blockchain bouwen, waarbij een gedistribueerde kopie van het grootboek tussen de knooppunten wordt bewaard en deze knooppunten handhaven de regels die door het programma zijn bepaald. Blok 3 is opgenomen met meer transacties naarmate andere gebruikers beginnen met transacties. Lucas is ook aan het mijnen, waarbij hij de moeilijkheidspuzzel voor blok 3 oplost en hij wordt beloond met de blokbeloning voor dat blok. En maar door en door groeit de ketting.

muntenbasis 1
Figuur 17. Er is nu een coinbase toegevoegd aan de blockchain

Zoals consistent is, als gegevens worden gewijzigd, zelfs mijn enige simpele karakter, of het nu in de hash-output zelf is of in de transactiegegevens, als iemands keten het niet eens is met de meerderheid, wordt het gewoon afgewezen.

In termen van saldo, als ik probeer meer uit te geven dan mijn saldo, zal het netwerk de transactie weigeren. In ons eerdere voorbeeld van Sam die probeert te veranderen hoeveel Rick hem heeft gestuurd, is er nog een beveiligingslaag ingebouwd, genaamd cryptografie met openbare en privésleutels, die het onderwerp zal zijn van het volgende artikel. Het is eigenlijk onmogelijk voor Sam om dit item te bewerken, tenzij hij ook in het bezit is van Rick's privésleutel.

Als ik probeer de geschiedenis te wijzigen, zal het netwerk de geschiedenis weigeren door de hashes van elk blok te vergelijken. De knooppunten zijn de bron van waarheid en houden iedereen eerlijk.

De mijnwerkers gooien rekenkracht in het oplossen van de cryptografische puzzels voor elk blok, ze worden beloond met de blokbeloning voor hun inspanningen. Mijnbouw is een noodzakelijke functie van de bitcoin blockchain, zonder mijnbouw is er geen waarde en geen veiligheid.

Mijnwerkers moeten energie verbruiken om de blokken op te lossen, dit is een echt ingetogen kenmerk van de beveiliging van Bitcoin. In dit artikel hebben we uitgebreid gesproken over mining en het reminen van blokken waar wijzigingen zijn aangebracht. Wat echt belangrijk is om op te merken, is de enorme hoeveelheid rekenkracht die elke minuut van de dag naar het Bitcoin-protocol wordt gegooid. Als dit enorm uitgebreide netwerk er 10 minuten over deed om het laatste blok te vinden, hoe lang zou het dan duren voordat een slechte acteur, alleen handelend, een alternatieve nonce vond om zelf een blok te minen om de gegevens erin te wijzigen. Hoeveel energie zou een natiestaat moeten opvangen om de geschiedenis van de Bitcoin-blockchain te veranderen? En, in combinatie met het eerdere punt over openbare en privésleutels die het grootboek beschermen, is het enige dat de kwaadwillende zou kunnen bereiken, een dubbele uitgave van de munten die ze al in bezit hebben, en ze zouden moeten hebben meer rekenkracht met de beschikbare energie om de hele rest van het netwerk te verslaan. Dit is vrijwel onmogelijk.

Dit helpt ook verklaren waarom Bitcoin het enige digitale activum is dat de moeite waard is om je tijd aan te besteden, het wint alleen in termen van netwerkeffecten. Vergelijk de hash-snelheid van Bitcoin met elk ander protocol en ze verbleken in vergelijking.

Voor meer voorbeelden van al deze functies raden we u ten zeerste aan ons boek te lezen B staat voor Bitcoin, verkrijgbaar via Amazon. We nemen u door dit alles en nog veel, veel meer voor een diepgaande maar laagdrempelige inleiding tot alles wat u moet weten over Bitcoin.

Conclusie

Wat we hier hebben behandeld, is een vereenvoudigde versie van hoe het bitcoin-netwerk precies werkt. Gedistribueerde grootboeken, hashing, blockchains, knooppunten en mijnwerkers die in harmonie samenwerken om een ​​volledig vertrouwensloos, censuurbestendig, open-source, open-ledger, open-monetair netwerk te bieden. Niemand kan het grootboek wijzigen, niemand kan transacties stopzetten, niemand kan transacties terugdraaien en niemand kan zijn munten dubbel uitgeven. Het is niets minder dan briljant en zorgt voor een volledige revolutie in de wereldwijde financiën.

De volledige geschiedenis van transacties is voor iedereen beschikbaar om te ondervragen en te verifiëren. Het is duidelijk dat, in tegenstelling tot onze voorbeelden hier vandaag, de bitcoin-blockchain niet de identiteit weergeeft van de mensen die transacties uitvoeren, alleen hun adressen. Adressen zullen het onderwerp zijn van het volgende artikel, het is een te groot onderwerp om vandaag te behandelen.

In dit artikel heb ik het verbazingwekkend interactieve platform gebruikt dat is gebouwd door Anders Brownworth, die blockchain doceerde aan het MIT. Bezoek hier, ga spelen en krijg een beter begrip van de concepten die we in dit artikel hebben behandeld, je zult een veel dieper begrip krijgen als je ermee speelt. Anders heeft ook een zeer goede video-tutorial met deze inhoud, ook om het leren te versterken.

Wat betreft de acceptatie van bitcoins, als u dit leest, loopt u al voorop wat betreft de acceptatie van bitcoins. Institutionele adoptie komt en komt snel, we hebben nog tijd om de grote jongens voorop te lopen. Uit mijn artikelen probeer ik de gemiddelde Joe te helpen zichzelf te onderwijzen over deze technologie, zodat we ervan kunnen profiteren. Wij zullen er het meest van profiteren, de jongens in de loopgraven, vechtend voor loon. Begin met dollar-cost-averaging in bitcoin, koop elke dag/elke week een beetje. Behandel bitcoin als uw spaarrekening en berijd de golf omhoog, het is het moeilijkste geld dat ooit heeft bestaan ​​en het groeit elke dag exponentieel. (Niet alleen voor financieel advies, educatie en entertainment)

Veel plezier met stapelen, bedankt voor het lezen

Daz Bea
Twitter @dazbea

Aanbevolen literatuur:
B staat voor Bitcoin
"Bitcoin onder de knie krijgen"– Andreas M. Antonopoulos
Blockchain-demo –Anders Brownworth

laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *

afbeelding bewerken 3 4203740775
Mede-oprichter, hoofd bedrijfsvoering