Block Header to krótki zapis na początku bloku Bitcoina. Zawiera odcisk poprzedniego bloku, wspólny odcisk transakcji oraz dane potrzebne do weryfikacji Proof of Work. Same płatności znajdują się w innej części bloku.
Wyobraź sobie blok jako paczkę transakcji, a nagłówek jako dołączoną do niej metrykę. Nie ma w nim listy odbiorców ani kwot. Zamiast tego zawiera odciski kryptograficzne: krótkie wartości obliczane z danych, które pozwalają wykrywać ich zmiany. Jeden wskazuje poprzedni blok. Drugi, nazywany Merkle root, podsumowuje identyfikatory transakcji w tym bloku. Nagłówek wiąże więc konkretną zawartość z konkretnym miejscem w historii. Nie jest jednak pomniejszoną kopią transakcji: z odcisku nie można odczytać ich treści. [1] [4]
Górnik przygotowuje kandydata na blok i szuka odpowiedniego hasha, czyli odcisku interpretowanego jako liczba. Musi ona być mniejsza lub równa wyznaczonemu celowi. To poszukiwanie nazywa się Proof of Work: górnik zmienia dane i ponawia obliczenie, ponieważ nie da się po prostu przewidzieć właściwego wyniku. Najbardziej znaną zmienną jest nonce, pomocnicza liczba w nagłówku. Aby uzyskać więcej możliwości, górnik może zmienić dane szczególnej Coinbase Transaction, którą tworzy na początku bloku. Zmienia to również Merkle root i daje inny nagłówek. Pozostałe węzły mogą szybko powtórzyć obliczenie i sprawdzić wynik. [1] [3] [4]
Łańcuch nagłówków pozwala śledzić powiązania bloków i sprawdzać odpowiadającą im pracę bez pobierania wszystkich transakcji. Wyobraź sobie jednak blok z prawidłowym Proof of Work, w którym ktoś próbuje wydać cudze środki bez wymaganego podpisu. Kontrola samego nagłówka nie wykryje tego problemu. Dlatego Full Node sprawdza również transakcje, ich podpisy, dostępne niewydane wyjścia i dozwoloną nagrodę. Prawidłowy nagłówek nie gwarantuje zatem prawidłowości całego bloku. [2]
Pole nBits określa cel, który musi spełniać hash. Jest to zwięzłe kodowanie celu, a nie wartość „difficulty” wyświetlana w eksploratorze bloków. Węzeł sprawdza też, czy cel jest zgodny z regułami dla danego miejsca w łańcuchu. Górnik nie może również podać dowolnego czasu. Musi on być późniejszy niż mediana poprzednich 11 bloków, czyli środkowa wartość ich uporządkowanych czasów, i nie może wskazywać czasu zbyt odległego w przyszłości. Mimo to nie jest dokładnym czasem każdej płatności ani pomiarem długości wydobywania. [2] [3]
Kolejność i rozmiary pól są stałe: version zajmuje 4 bajty, hash poprzedniego nagłówka 32, Merkle root 32, time 4, nBits 4 i nonce 4. Razem to 80 bajtów, niezależnie od liczby transakcji. Identyfikator bloku powstaje przez dwukrotne zastosowanie SHA-256 do tak zapisanego nagłówka. Pola liczbowe stosują little-endian, czyli najmniej znaczący bajt jako pierwszy; hashe mają wewnętrzną kolejność bajtów inną niż zwyczajowy zapis identyfikatora. Aby samodzielnie odtworzyć obliczenie, nie wystarczy więc połączyć wartości widocznych w eksploratorze. [1] [4]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Block, Proof of Work, Merkle Tree, Nonce. Do tego hasła prowadzą również odsyłacze z Block, Hash, SHA-256, Merkle Tree.