Inde i en blok: header, højde, størrelse og subsidie
En blok er en lille fast header plus en body med transaktioner. Lær headerens seks felter, hvad mining hasher, og hvad højde og størrelse betyder.
Hvad består en blok af?
En blok har to dele, en header og en body. Mining hasher kun headeren.
- Body indeholder transaktionerne. Den kan fylde nogle hundrede bytes eller flere megabytes, afhængigt af hvor travl kæden er.
- Headeren er et fast resumé af blokken. På de fleste kæder er den præcis 80 bytes.
- Mining hasher headeren og intet andet.
Det sidste punkt er den mest nyttige kendsgerning i denne artikel. En miner prøver milliarder af varianter i sekundet. Det kunne den ikke, hvis hvert forsøg betød, at en blok fuld af transaktioner skulle hashes igen. Den hasher kun 80 bytes igen.
Hvilke seks felter er der i headeren?
Headeren har seks felter. Hvert af dem er der af en grund, og to af dem gør det meste af arbejdet.
- Versionen.
- Hashen af den forrige blok.
- Merkle-roden, én hash, der opsummerer alle transaktioner.
- Et tidsstempel.
- Sværhedsgradsbits.
- Noncen, en tæller, som mineren må ændre.
Hashen af den forrige blok gør det til en kæde. Hver header peger på blokken før den. At omskrive en gammel blok ville ændre dens hash. Det ville bryde den næste header, og den næste, hele vejen frem til toppen. Dette ene felt er hele sikkerhedsargumentet for proof of work.
Merkle-roden opsummerer hver transaktion i body. Ændr én transaktion med en enkelt byte, og merkle-roden ændrer sig. Så ændrer headeren sig, og hver hash, der er prøvet indtil nu, er værdiløs. Sådan kan 80 bytes ærligt stå for en blok af enhver størrelse.
Sværhedsgradsbits er det mål, hashen skal komme under, i kompakt form. Tidsstemplet angiver nogenlunde, hvornår blokken blev lavet, og det må gerne være omtrentligt. Noncen er det felt, mineren frit må ændre. Den frihed er det, der overhovedet gør søgningen mulig.
Hvad sker der, når noncen løber tør?
Noncen er en lille tæller. En moderne miner bruger alle de værdier, den kan rumme, næsten med det samme. Det er ingen blindgyde. Noncen er bare det letteste at ændre, aldrig det eneste.
Når den løber tør, ændrer mineren noget andet, der indgår i headeren.
- Tidsstemplet kan flyttes.
- Coinbase-transaktionen (den første transaktion i blokken, forklaret nedenfor) kan ændres en smule. Det ændrer merkle-roden, hvilket giver en helt ny header at søge i.
På en pool er det det, extra nonce er til. Poolen giver hver miner sit eget startpunkt. Så to minere regner aldrig på de samme tal.
Hvad er blokhøjde?
Blokhøjde er, hvor mange blokke der kom før en given blok. Genesis-blokken, den allerførste, har højde nul. Den næste har højde et, og så videre. Det er tallet ved siden af hver række på poolens blokside og i enhver explorer.
Højden er egentlig ikke gemt i headeren. Den følger af, hvor blokken ligger i kæden.
På de fleste moderne kæder bliver højden også skrevet ind i coinbase-transaktionen. Den regel kom til senere, så to blokke i forskellige højder aldrig kan være identiske byte for byte. Alligevel er det positionen, der giver det gældende svar på en bloks højde.
Højden er også den naturlige måde at tælle bekræftelser på. En transaktion, der ligger seks blokke dybt, sidder i en blok seks under toppen. Hver ny blok gør det dyrere at omskrive den.
Hvad måler blokstørrelsen?
Blokstørrelsen er i bund og grund størrelsen af body. Headeren er en afrundingsfejl ved siden af. En grænse for blokstørrelse handler om, hvor mange transaktioner der er plads til, ikke om headeren.
En fuld blok og en tom blok kræver præcis det samme mining-arbejde. Sværhedsgraden afgør, hvor svær en blok er at finde. Størrelsen afgør, hvor meget blokken bærer. De to har intet med hinanden at gøre, og at blande dem sammen giver mange forkerte forestillinger om gebyrer.
Størrelsen påvirker til gengæld gebyrmarkedet. Når flere transaktioner vil med, end der er plads til, kommer dem med de højeste gebyrer først med. De samlede gebyrer i blokken stiger, og det går direkte ind i, hvad blokken betaler.
Hvad er coinbase-transaktionen?
Den første transaktion i hver blok er speciel. Den har ingen afsender. Den skaber coins ud af ingenting og betaler dem til den, der lavede blokken.
Den hedder coinbase-transaktionen. Den har intet at gøre med børsen af samme navn.
Den udbetaler blokbelønningen, som har to dele.
- Subsidiet, de nyudstedte coins. Kædens udstedelsesplan fastsætter det, og på de fleste coins bliver det mindre med tiden.
- Gebyrerne fra alle de andre transaktioner i blokken. Brugerne tilføjer dem for at få deres transaktioner med.
På en pool betaler coinbase-transaktionen poolen. Poolen deler derefter belønningen mellem alle, der sendte shares i den runde. Det er ikke en omvej. Det er sådan, en pool betaler mange mennesker fra en belønning, der kommer som én udelelig betaling.
Hvorfor betyder det noget, mens du miner?
Når man først kender en bloks opbygning, bliver tre ting indlysende. Alle tre dukker op hele tiden.
- En ny blok gør dit arbejde værdiløst med det samme. Den forrige bloks hash ændrede sig, så den header, du søgte i, findes ikke længere. Alt, hvad du sender ind til den bagefter, er en stale share, og ingen hastighed i verden løser det.
- Poolen sender dig ofte nyt arbejde. Hver ny transaktion, poolen vil have med, ændrer merkle-roden. Friskere arbejde bærer flere gebyrer, hvilket betyder mere belønning for den samme indsats.
- Blokstørrelsen indgår aldrig i et indtjeningsestimat. Det, du tjener, afhænger af sværhedsgraden, subsidiet og gebyrerne. Det afhænger ikke af antallet af bytes i body.
Poolens blokside viser hver bloks højde, dens belønning og hvornår den blev fundet. Den række er den nyttige del af alt ovenfor. Exploreren viser resten, også den coinbase-transaktion, der betalte den.