Meer over Blokkop
Veeg om het menu te tonen
Voordat we dieper ingaan op de blokheader, moeten we eerst het verschil begrijpen tussen big endian en little endian formaten.
Little Endian en Big Endian
Eerst moeten we begrijpen wat endianness precies betekent.
Endianness verwijst naar de volgorde waarin bytes (elke byte is gelijk aan 8 bits) worden gerangschikt binnen grotere gegevenstypen in het computergeheugen.
Big endian-formaat slaat het meest significante byte eerst op, wat overeenkomt met hoe mensen doorgaans getallen lezen. Laten we het decimale getal 234567890 als voorbeeld nemen en dit omzetten naar hexadecimaal en binair met behulp van Python en de resultaten weergeven:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Aangezien computers gehele getallen opslaan met een heel aantal bytes, en elke 2 hex-cijfers overeenkomen met één byte, hebben we een even aantal cijfers nodig. De hexadecimale weergave van ons getal, 0xDFB38D2, bevat 7 cijfers, dus moeten we een nul 0 aan de linkerkant toevoegen. Het resulterende getal, 0x0DFB38D2, heeft nu 8 hex-cijfers (past precies in 4 bytes) en dezelfde waarde.
Op dezelfde manier heeft ons binaire getal 28 bits, en elke 8 bits komen overeen met 1 byte, dus moeten we het aantal bits deelbaar door 8 maken door 4 nullen 0 aan de linkerkant toe te voegen. Het resulterende getal, 0b00001101111110110011100011010010, heeft nu 32 bits (past precies in 4 bytes) en dezelfde waarde.
Met Python hebben we het big endian-formaat verkregen, wat we ook zouden krijgen als we handmatig zouden omzetten, en ons getal ziet er als volgt uit:
0x0DFB38D2in hex;0b00001101111110110011100011010010in binair.
Bekijk de onderstaande tabel om het big endian-formaat beter te begrijpen:
Daarentegen slaat het little endian-formaat de minst significante byte eerst op, waardoor de intuïtieve volgorde wordt omgekeerd:
Zoals je kunt zien, ziet ons getal in little-endian formaat er als volgt uit:
-
0xD238FB0Din hex; -
0b11010010001110001111101100001101in binair.
Terug naar het blokhoofd
Samenvattend: de header is precies 80 bytes en bevat zes gegevensvelden, elk in little-endian formaat. Laten we nu kijken naar de header van blok 645536:
Aangezien de blokheader precies 80 bytes in beslag neemt, zijn er exact 160 hexadecimale cijfers (elke byte komt overeen met 2 hexadecimale cijfers). Het versie-veld neemt bijvoorbeeld 4 bytes in beslag, dus zijn er 8 hexadecimale cijfers.
Hier volgt de gedetailleerde informatie over dit blok in de explorer:
De velden hier worden weergegeven in big-endian formaat. Laten we bijvoorbeeld het bits-veld bekijken en dit vergelijken met de weergave in de blokheader. De hexadecimale weergave is 0x171007ea in big-endian formaat:
Als we het omzetten naar little-endian formaat, ziet het er als volgt uit:
Zoals je kunt zien, is dat precies wat we in de blokheader hadden.
1. Waar verwijst "endianness" naar in de context van blockchain en computersystemen?
2. Koppel blokcomponenten aan hun definities.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.