Overzicht van Hashing
Hashing en blok-hashes zijn meerdere keren genoemd, maar het concept zelf is nog niet in detail onderzocht. Het is nu tijd om te begrijpen wat hashing daadwerkelijk is.
Hashing is een proces dat een invoer neemt en een string van vaste grootte in bytes produceert, meestal weergegeven als een hexadecimaal getal. De uitvoer, bekend als een hash, lijkt willekeurig en verandert volledig bij elke wijziging van de invoer, een eigenschap die bekend staat als het "lawine-effect".
Eigenschappen van hashfuncties
In blockchain worden hashfuncties gebruikt om:
- Transacties te beveiligen door een unieke vingerafdruk voor elke transactie te creëren;
- Adressen te genereren uit openbare sleutels;
- De koppelingen in de blockchain te maken via blok-hashes.
Met dit in gedachten heeft een goede hashfunctie voor blockchain verschillende belangrijke eigenschappen:
Hashing, vooral met een goede hashfunctie, kan worden vergeleken met het maken van een smoothie. Bekijk de volgende illustratie:
Het is inderdaad mogelijk om de oorspronkelijke invoer te achterhalen op basis van een hash, maar dit zou te veel tijd kosten om praktisch te zijn.
Blokhashing
Om de hash van een bepaald blok te verkrijgen, gebruikt Bitcoin de SHA-256 hashfunctie, die een 256-bit (32-byte) hash oplevert. Dit is onderdeel van de SHA-2 familie, ontworpen door de National Security Agency (NSA) en bekend om zijn sterke beveiligingseigenschappen, waardoor het bestand is tegen botsingen, preimage-aanvallen en andere cryptografische kwetsbaarheden.
De hash van een Bitcoin-blok wordt berekend door de gegevens van de blokheader te nemen. Deze gegevens worden twee keer ingevoerd in de SHA-256 hashfunctie in een proces dat dubbele SHA-256 wordt genoemd.
Hier is een afbeelding ter verduidelijking:
De resulterende 256-bits hash moet voldoen aan bepaalde criteria die zijn vastgesteld door het moeilijkheidsdoel van het netwerk. Als de hash niet onder het doel ligt, wordt de nonce aangepast en wordt de hash opnieuw berekend totdat een geldige hash is gevonden. Deze uiteindelijke hash is de unieke identificatie van het blok.
Merkle Root
De Merkle root is een enkele hash die alle transacties in een blok vertegenwoordigt. De berekening begint met de hashes van elke individuele transactie, gebruikmakend van double SHA-256.
Elke transactiehash wordt vervolgens gekoppeld aan een andere, en het paar wordt samen gehasht om een nieuwe hash te produceren. Dit proces van koppelen en hashen gaat laag voor laag door totdat er nog maar één hash overblijft. De uiteindelijke hash is de Merkle root, die de volledige set transacties omvat en hun integriteit waarborgt door ze in één enkele waarde te coderen. Deze hiërarchische structuur staat bekend als een Merkle-boom.
Het volgende voorbeeld illustreert hoe een Merkle-boom wordt gevormd:
Zoals te zien is, bevat ons blok 6 transacties (elk aangeduid als Tx) en wordt via hashing en het koppelen van nieuwe hashes een Merkle root berekend.
Wanneer de meest rechtse hash geen paar heeft, zoals bij Hash56 in ons voorbeeld, wordt deze laatste hash gedupliceerd om een paar te vormen. Deze techniek behoudt de integriteit en efficiëntie van de Merkle-boomstructuur, zelfs bij een oneven aantal transacties of hashes op een bepaald moment.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain more about how the Merkle tree structure works?
What is the purpose of the nonce in block hashing?
How does double SHA-256 improve security in Bitcoin?
Awesome!
Completion rate improved to 6.25
Overzicht van Hashing
Veeg om het menu te tonen
Hashing en blok-hashes zijn meerdere keren genoemd, maar het concept zelf is nog niet in detail onderzocht. Het is nu tijd om te begrijpen wat hashing daadwerkelijk is.
Hashing is een proces dat een invoer neemt en een string van vaste grootte in bytes produceert, meestal weergegeven als een hexadecimaal getal. De uitvoer, bekend als een hash, lijkt willekeurig en verandert volledig bij elke wijziging van de invoer, een eigenschap die bekend staat als het "lawine-effect".
Eigenschappen van hashfuncties
In blockchain worden hashfuncties gebruikt om:
- Transacties te beveiligen door een unieke vingerafdruk voor elke transactie te creëren;
- Adressen te genereren uit openbare sleutels;
- De koppelingen in de blockchain te maken via blok-hashes.
Met dit in gedachten heeft een goede hashfunctie voor blockchain verschillende belangrijke eigenschappen:
Hashing, vooral met een goede hashfunctie, kan worden vergeleken met het maken van een smoothie. Bekijk de volgende illustratie:
Het is inderdaad mogelijk om de oorspronkelijke invoer te achterhalen op basis van een hash, maar dit zou te veel tijd kosten om praktisch te zijn.
Blokhashing
Om de hash van een bepaald blok te verkrijgen, gebruikt Bitcoin de SHA-256 hashfunctie, die een 256-bit (32-byte) hash oplevert. Dit is onderdeel van de SHA-2 familie, ontworpen door de National Security Agency (NSA) en bekend om zijn sterke beveiligingseigenschappen, waardoor het bestand is tegen botsingen, preimage-aanvallen en andere cryptografische kwetsbaarheden.
De hash van een Bitcoin-blok wordt berekend door de gegevens van de blokheader te nemen. Deze gegevens worden twee keer ingevoerd in de SHA-256 hashfunctie in een proces dat dubbele SHA-256 wordt genoemd.
Hier is een afbeelding ter verduidelijking:
De resulterende 256-bits hash moet voldoen aan bepaalde criteria die zijn vastgesteld door het moeilijkheidsdoel van het netwerk. Als de hash niet onder het doel ligt, wordt de nonce aangepast en wordt de hash opnieuw berekend totdat een geldige hash is gevonden. Deze uiteindelijke hash is de unieke identificatie van het blok.
Merkle Root
De Merkle root is een enkele hash die alle transacties in een blok vertegenwoordigt. De berekening begint met de hashes van elke individuele transactie, gebruikmakend van double SHA-256.
Elke transactiehash wordt vervolgens gekoppeld aan een andere, en het paar wordt samen gehasht om een nieuwe hash te produceren. Dit proces van koppelen en hashen gaat laag voor laag door totdat er nog maar één hash overblijft. De uiteindelijke hash is de Merkle root, die de volledige set transacties omvat en hun integriteit waarborgt door ze in één enkele waarde te coderen. Deze hiërarchische structuur staat bekend als een Merkle-boom.
Het volgende voorbeeld illustreert hoe een Merkle-boom wordt gevormd:
Zoals te zien is, bevat ons blok 6 transacties (elk aangeduid als Tx) en wordt via hashing en het koppelen van nieuwe hashes een Merkle root berekend.
Wanneer de meest rechtse hash geen paar heeft, zoals bij Hash56 in ons voorbeeld, wordt deze laatste hash gedupliceerd om een paar te vormen. Deze techniek behoudt de integriteit en efficiëntie van de Merkle-boomstructuur, zelfs bij een oneven aantal transacties of hashes op een bepaald moment.
Bedankt voor je feedback!