Wat is hashing? Een complete uitleg

hashing

Wat is hashing?

Hashing is het proces waarbij data via een wiskundig algoritme wordt omgezet in een hash. Een hash is het resultaat in een vaste lengte code van cijfers en letters. Hashing wordt gebruikt om blockchains veilig te houden. Zo gebruikt Bitcoin bijvoorbeeld het SHA-256 algoritme, waarbij SHA staat voor Secure Hashing Algorithm.

In principe werkt elk hashing algoritme hetzelfde: het is een soort programma waar je informatie aan geeft en waar een soort code uit komt. Je kunt allerlei soorten informatie in de machine stoppen, er komt altijd een nieuwe hash uit. Het genereren van een hash is gemakkelijk, maar om vanuit de hash de input te raden is vrijwel onmogelijk.

Kijk bijvoorbeeld naar de volgende twee zinnen. Ze lijken op elkaar, maar als je ze in een SHA-256 algoritme gooit, kun je niet zien dat ze op elkaar lijken. Zelfs als alleen de 'w' naar een hoofdletter is veranderd.

Invoer Hash uitkomst
wat is hashing? 5bd2d25c26e0867770fff333bafcd5edbcb728e4a37132258d3d531091ca9cd4
Wat is hashing? 536e87ed74003930ef194625005265c3d60ee1bb90782ae6f9c53d0cde01492d

Korte samenvatting

  • Hashing zet data via een algoritme om in een vaste, unieke code (hash), die praktisch niet terug te herleiden is naar de originele data.
  • Cryptografische hashfuncties zijn snel, deterministisch, éénrichtings, gevoelig voor kleine veranderingen, en bijna onmogelijk te manipuleren.
  • Merkle trees bundelen veel transacties in één compacte hash (Merkle root), wat opslag bespaart en snelle verificatie mogelijk maakt.
  • De Block Header bevat kerninformatie zoals de hash van het vorige block, de Merkle root, timestamp en nonce, die essentieel zijn voor de blockchainstructuur.
  • Bitcoin-mining is het oplossen van cryptografische puzzels via Proof of Work, waarbij miners nieuwe blocks toevoegen en beloningen ontvangen.
  • Hashing is ook cruciaal bij Proof of Stake, waar het de veiligheid waarborgt zonder het zware rekenwerk van mining.

Hoe werkt hashing in crypto?

Hashing werkt dus als techniek waarbij gegevens worden omgezet in een vaste reeks tekens (de hash). Deze techniek speelt een cruciale rol in de wereld van crypto en blockchains, omdat het zorgt voor veiligheid, integriteit en efficiëntie. Blockchains maken gebruik van cryptografische hashfuncties, waarbij iedere transactie op de blockchain wordt omgezet in een unieke hashwaarde. Dit staat ook wel bekend als de transaction hash en werkt als een soort digitale handtekening van de transactie.

Je kunt de hash van een transactie gebruiken om deze op te zoeken in een blockchain explorer. Dit is een soort boek waar alle transacties op een blockchain genoteerd staat. Hierin staat tussen welke adressen de transactie heeft plaatsgevonden en om welke hoeveelheid het gaat, zonder dat persoonlijke namen zichtbaar zijn.

Daarnaast maken blockchains gebruik van een merkle tree waarbij transactiedata op een efficiënte manier wordt opgeslagen.

Wat is het voordeel van cryptografische hashfuncties?

Blockchains maken gebruik van cryptografische hashes. Deze zijn ontworpen om veilig, betrouwbaar en efficiënt te zijn. Cryptografische hashes hebben 5 eigenschappen die belangrijk zijn:

  1. Deterministisch (voorspelbaar)
    Dit wil zeggen dat de invoer altijd precies dezelfde uitvoer geeft. Het maakt niet uit wanneer je het invult, je krijgt altijd dezelfde hash.

  2. Snelheid
    De algoritmes werken heel snel, de data is razendsnel omgezet naar een hash. Dit is vooral belangrijk voor de snelheid van transacties op een blockchain.

  3. Het is een éénrichtingsfunctie
    De algoritmes kunnen van de invoer een hash maken, maar ze kunnen niet van hash naar invoer gaan. Het is praktisch onmogelijk vanwege de eigenschappen van cryptografische hashfuncties en omdat niemand beschikt over de geheime sleutel.

  4. Kleine veranderingen leiden tot een compleet andere hash
    Zoals al eerder is vermeld, verandert de gehele hash als er maar een kleine aanpassing is gedaan in de invoer. Hierdoor is het makkelijk te controleren als er iets is veranderd in de invoer.

  5. Moeilijk te manipuleren
    Het is vrijwel onmogelijk om twee verschillende invoeren te vinden die precies dezelfde hash hebben. Dit heet collision resistance en het voorkomt dat gegevens vervalst kunnen worden.

Wat zijn Merkle trees?

Een Merkle Tree of hash tree is een datastructuur die gebruikt wordt om transactiedata efficiënt en veilig op te slaan in de blockchain. Het werkt als volgt: elke transactie op een blockchain wordt gehasht, vervolgens wordt deze hash gecombineerd met een andere hash die opnieuw wordt gehasht. Dit proces gaat door en door, totdat er één hoofdhash overblijft, namelijk de Merkle root (ook wel Root Hash genoemd). Deze staat voor alle transacties in een block.

Je kunt het zien als een soort kerstboom die onderin veel takken (veel data) heeft en breed is. Naarmate je naar de top kijkt, wordt de boom steeds smaller, omdat de hash die alle transacties in een block bevat steeds compacter wordt. Heel veel transacties worden uiteindelijk samengevoegd en gehasht tot één Merkle root.

Doordat al een klein verschil in de invoer een hash kan veranderen is dit erg handig in een merkle tree. Mocht een van de onderliggende transacties veranderen, dan zou de merkle root ook veranderen. Hierdoor kunnen transacties snel en betrouwbaar geverifieerd worden, zonder dat elke transactie opgeslagen hoeft te worden in de Block Header.

Voordelen van Merkle trees:

  • Het bundelt veel data (alle transacties in een block) in één hash, waardoor het opslagruimte bespaart en de snelheid bevordert.
  • Het bewijst gemakkelijk de betrouwbaarheid en geldigheid van transacties.
  • Het houdt alle data in chronologische volgorde en zorgt ervoor dat blocks correct op elkaar aansluiten.

Wat staat er in de Block Header?

De Block Header is een essentieel onderdeel van elk block in een blockchain. Het bevat de belangrijkste gegevens die nodig zijn om blocks met elkaar te verbinden, transacties te verifiëren en nieuwe blocks te kunnen minen. In plaats van alle data op te slaan, bundelt de Block Header alleen de belangrijkste informatie, wat zorgt voor snelheid en efficiëntie binnen het netwerk.

Een Block Header bevat de volgende onderdelen:

1. Prev_Hash
De hash van het vorige block. Dit zorgt ervoor dat blocks met elkaar verbonden zijn en samen een ononderbroken keten vormen.

2. Tx_Root (Merkle root)
Een samenvattende hash van alle transacties in het block, afkomstig uit de Merkle Tree. Hiermee kunnen transacties snel en betrouwbaar worden gecontroleerd.

3. Timestamp
Het tijdstip waarop het block is aangemaakt.

4. Nonce
Een willekeurig getal dat miners aanpassen om een geldige hash te vinden tijdens het miningproces (bij Proof of Work).

Het minen van Bitcoin

Bitcoin mining is het proces waarbij nieuwe blokken aan de blockchain worden toegevoegd en waarbij miners BTC kunnen verdienen. Dit doen zij door een ingewikkelde cryptografische puzzel op te lossen. In makkelijke termen: Computers moeten de juiste invoer raden die past bij een hash. Eerder werd al vermeld hoe lastig dit is, daarom is het veel gebaseerd op kans en lijkt het op een loterij. De computer die als eerste de juiste oplossing vindt, mag het block toevoegen aan de blockchain en ontvangt hiervoor een block reward van 3,125 BTC. Voorheen was de block reward 50 BTC per block, maar door de halving wordt deze ongeveer elke 4 jaar gehalveerd.

Dit gehele proces is gebaseerd op het Proof of Work consensus algoritme, waarbij computerkracht gebruikt wordt om de blockchain te laten werken. Toen Bitcoin gelanceerd werd in 2009, was het nog mogelijk om dit te doen vanaf je laptop, maar doordat de puzzels steeds lastiger worden, zijn er nu speciale computers die dit doen.

Wat is de hashrate?

De hashrate geeft aan hoe snel hashes op een netwerk berekend worden. Hoe meer miners actief zijn op een netwerk, hoe hoger de hashrate is en hoe veiliger het netwerk is. Als de hashrate stijgt, wordt de moeilijkheidsgraad van de puzzels automatisch verhoogd. Hetzelfde gebeurt als de hashrate daalt, dan worden de puzzels gemakkelijker. Dit zorgt ervoor dat nieuwe blokken consistent aan de blockchain worden toegevoegd. Bij Bitcoin is dit gemiddeld elke 10 minuten.

Hashing in Proof of Stake

Ook bij Proof of Stake (PoS) blockchains, zoals Ethereum, speelt hashing een belangrijke rol. In PoS gebruiken validators hashing om transacties te verifiëren en blocks veilig te maken, maar er is geen intensief rekenwerk nodig zoals bij mining. Hashfuncties zorgen er nog steeds voor dat data onveranderlijk blijft en dat elke wijziging meteen zichtbaar is, dankzij de unieke hashwaarden. Hashing zorgt er dus ook bij Proof of Stake voor dat de blockchain veilig en betrouwbaar blijft, terwijl het veel energiezuiniger is dan Proof of Work.

Conclusie

Hashing is de fundamentele techniek die de veiligheid, integriteit en efficiëntie van blockchains mogelijk maakt. Door data om te zetten in unieke, vaste codes die vrijwel niet te manipuleren zijn, zorgen cryptografische hashfuncties ervoor dat transacties betrouwbaar en onveranderlijk zijn. In combinatie met datastructuren zoals Merkle trees en de Block Header zorgt hashing ervoor dat blockchains veilig verbonden blijven en snel kunnen functioneren. Zowel bij Proof of Work als Proof of Stake blijft hashing een onmisbare rol spelen in het garanderen van de betrouwbaarheid en veiligheid van de digitale keten.

Over Finst

Finst is een van de toonaangevende cryptocurrency-aanbieders in Nederland en biedt een eersteklas investeringsplatform samen met institutionele veiligheidsnormen en ultra-lage handelskosten. Finst wordt geleid door het ex-core team van DEGIRO en is geregistreerd als aanbieder van cryptodiensten bij De Nederlandsche Bank (DNB). Finst biedt een volledig pakket aan crypto-diensten, waaronder handel, bewaring, fiat on/off ramp en staking voor zowel particuliere als institutionele beleggers.

Het cryptoplatform dat je geweldig gaat vinden

We zijn hier om je de tools, inspiratie en ondersteuning te geven die je nodig hebt om een betere investeerder te worden.