Vad som finns i ett block: huvud, höjd, storlek och subvention
Ett block är ett litet, fast huvud plus en kropp med transaktioner. Att veta vilket som är vilket förklarar vad mining faktiskt hashar och varför.
Två delar, och bara den ena hashas
Ett block har ett huvud och en kropp. Kroppen är transaktionerna, och den kan vara några hundra byte eller flera megabyte beroende på hur upptagen kedjan är. Huvudet är en fast sammanfattning av blocket, och på de flesta kedjor är det exakt 80 byte.
Mining hashar huvudet och ingenting annat. Det är det enskilt mest användbara faktumet i den här artikeln, eftersom det förklarar något som annars ser omöjligt ut: ett miningprogram provar miljarder varianter per sekund, och det skulle inte gå om varje försök innebar att ett block fullt av transaktioner hashades om. Det gör det inte. Det hashar om 80 byte.
De sex fälten i huvudet
Huvudet innehåller en version, hashen för det föregående blocket, merkle-roten, en tidsstämpel, svårighetsbitarna och noncen. Vart och ett av dem finns där av en anledning, och två av dem gör det mesta av arbetet.
Hashen för det föregående blocket är det som gör det till en kedja. Varje huvud namnger blocket före sig, så att skriva om ett gammalt block skulle ändra dess hash, vilket skulle bryta nästa huvud, och nästa, hela vägen till toppen. Det är hela säkerhetsargumentet för proof of work i ett enda fält.
Merkle-roten är en enda hash som sammanfattar varje transaktion i kroppen. Ändra en transaktion, även med en enda byte, så ändras merkle-roten, så ändras huvudet, så är varje hash som provats hittills värdelös. Det är så 80 byte ärligt kan stå för ett block av vilken storlek som helst.
Svårighetsbitarna är målet som hashen måste hamna under, i kompakt form. Tidsstämpeln är ungefär när blocket skapades, och den får vara ungefärlig. Noncen är fältet som miningprogrammet fritt får ändra, vilket är det som över huvud taget gör sökningen möjlig.
Noncen tar slut, och det gör inget
Noncen är en liten räknare, och ett modernt miningprogram har gått igenom alla värden den kan rymma nästan omedelbart. Det låter som en återvändsgränd men är det inte, eftersom noncen bara är det smidigaste att ändra, aldrig det enda.
När den tar slut ändrar miningprogrammet något annat som påverkar huvudet. Tidsstämpeln kan flyttas. Coinbase-transaktionen kan ändras något, vilket ändrar merkle-roten, vilket ger ett helt nytt huvud att söka igenom. På en pool är det precis det som extranonce är till för: den låter poolen ge varje gruvarbetare en egen startpunkt så att inga två av dem maler samma tal.
Höjden är en position, inte ett fält
Blockhöjden är hur många block som kom före ett visst block. Genesisblocket har höjd noll, nästa har ett, och så vidare. Det är siffran du ser bredvid varje post på poolens sida Block och i varje blockutforskare.
Det är värt att veta att höjden egentligen inte lagras i huvudet. Den härleds från var blocket befinner sig i kedjan. På de flesta moderna kedjor skrivs höjden också in i coinbase-transaktionen, vilket är en regel som lades till senare så att två block på olika höjder aldrig kan vara identiska byte för byte, men det auktoritativa svaret på hur högt ett block ligger förblir dess position.
Det är också därför höjden är det naturliga sättet att tala om bekräftelser. En transaktion som ligger sex block djupt är en vars blockhöjd ligger sex under toppen, och varje ytterligare block gör det så mycket dyrare att skriva om den.
Storleken är kroppen, och det är den som fylls
Blockstorleken är i princip kroppens storlek, eftersom huvudet är försumbart bredvid den. När folk säger att en kedja har en gräns för blockstorleken talar de om hur många transaktioner som får plats, inte om huvudet.
Ett fullt block och ett tomt block kräver exakt samma mängd miningarbete. Svårighetsgraden avgör hur svårt ett block är att hitta, storleken avgör hur mycket blocket bär. De hänger inte ihop, och att blanda ihop dem är källan till mycket felaktig intuition om avgifter.
Det storleken påverkar är avgiftsmarknaden. När fler transaktioner vill in än som får plats kommer de som erbjuder högre avgifter in först, och de totala avgifterna i blocket stiger. Det går direkt in i vad blocket betalar.
Coinbase-transaktionen och subventionen
Den första transaktionen i varje block är speciell. Den har ingen avsändare, den skapar mynt ur ingenting, och den betalar dem till den som skapade blocket. Den kallas coinbase-transaktionen, vilket inte har något att göra med börsen med samma namn.
Det den betalar är subventionen plus avgifterna för alla andra transaktioner i blocket. Subventionen är den nyutgivna delen, som bestäms av kedjans emissionsschema och minskar över tid på de flesta mynt. Avgifterna är det användarna lade till sina transaktioner för att få dem inkluderade. Tillsammans utgör de blockbelöningen.
På en pool betalar coinbase till poolen, som sedan fördelar belöningen mellan alla som bidrog med shares till den rundan. Det är ingen omväg: det är så en pool kan betala många personer för en belöning som kommer som en enda odelbar betalning.
Varför något av det här spelar roll medan du minar
Tre saker blir uppenbara när ett blocks form är klar, och alla tre dyker upp hela tiden.
- Varför ett nytt block omedelbart ogiltigförklarar ditt arbete. Fältet med hashen för det föregående blocket ändrades, så huvudet du sökte igenom finns inte längre. Allt du skickar in för det efteråt är en stale share, och ingen hastighet i världen ändrar det.
- Varför poolen skickar nytt arbete så ofta. Varje ny transaktion som poolen vill ta med ändrar merkle-roten, och en färskare mall bär fler avgifter, vilket ger mer belöning för samma arbete.
- Varför blockstorleken aldrig förekommer i en uppskattning av intäkter. Det du tjänar avgörs av svårighetsgraden, subventionen och avgifterna, inte av hur många byte som fanns i kroppen.
Sidan Block på den här poolen visar höjden, belöningen och när blocket hittades, vilket är den användbara delen av allt ovan sammanfattad på en rad. Blockutforskaren visar dig resten, inklusive coinbase-transaktionen som betalade det.