Kandidatblok
Kort sagt er en kandidatblok en blok, som en mining-
node (miner) forsøger at mine for at modtage block-belønningen. En kandidatblok kan altså beskrives som en midlertidig blok, der enten vil blive valideret eller kasseret af netværket. Minere konkurrerer med hinanden om at validere den næste blok og føje den til blockchainen, men først skal de skabe en kandidatblok for at deltage i
mining-konkurrencen.
Kandidatblokke skabes af minere ved at indsamle og organisere flere ubekræftede transaktioner fra hukommelses-poolen. Transaktionerne hashes derefter for at danne en
Merkle-træstruktur, som til sidst vil producere en Merkle-rod (eller rod-hash). Merkle-roden er en enkelt hash, der repræsenterer alle tidligere hashes i det pågældende træ, og derfor alle transaktioner, der var inkluderet i den pågældende blok.
Rodhashen – sammen med hashen fra den forrige blok og et tilfældigt tal kaldet
nonce – sættes derefter ind i blokkens header. Denne block header hashes derefter af mineren, som genererer et output baseret på disse komponenter (rod-hash, forrige bloks hash og nonce) plus et par andre elementer. Det resulterende output er blokhashen og vil fungere som en unik identifikator for den nyligt genererede blok (kandidatblok).
For at blive betragtet som gyldig skal outputtet (blokhashen) starte med et bestemt antal nuller (mindre end en målværdi, der er defineret af protokollen). Det betyder, at mining-processen er baseret på flere forsøg (prøve og fejl), eftersom mining-noderne er nødt til at udføre et utal af hashing-funktioner med forskellige nonce-værdier, indtil der til sidst produceres en gyldig blok-hash. Den producerede blok-hash er det, der beviser, at mineren har gjort sit arbejde (deraf
Proof-of-Work).
Når en miner har fundet en gyldig blok-hash, vil dennes kandidatblok blive udsendt til resten af noderne i netværket, som vil verificere hashens ægthed. Hvis alt er i orden, vil kandidatblokken blive registreret i
blockchainen. På dette tidspunkt opdaterer hver validerende node sin kopi af blockchain-dataene, så de afspejler den nyligt minede blok, og mineren får block-belønningen.