Mi van egy blokkban: fejléc, magasság, méret és támogatás
A blokk egy kicsi, rögzített fejléc plusz egy tranzakciókat tartalmazó törzs. Ha tudja, melyik melyik, érti, mit hashel valójában a bányászat, és miért.
Két rész, és csak az egyiket hashelik
Egy blokknak van fejléce és törzse. A törzs a tranzakciók, és néhány száz bájttól több megabájtig terjedhet attól függően, mennyire forgalmas a lánc. A fejléc a blokk rögzített összefoglalója, és a legtöbb láncon pontosan 80 bájt.
A bányászat a fejlécet hasheli, és semmi mást. Ez a cikk leghasznosabb ténye, mert megmagyaráz valamit, ami egyébként lehetetlennek tűnik: egy bányászprogram másodpercenként milliárdnyi változatot próbál ki, és erre nem lenne képes, ha minden próbálkozás egy tranzakciókkal teli blokk újrahashelését jelentené. Nem azt jelenti. 80 bájtot hashel újra.
A fejléc hat mezője
A fejléc egy verziót, az előző blokk hashét, a merkle gyökeret, egy időbélyeget, a nehézségi biteket és a nonce-ot tartalmazza. Mindegyik okkal van ott, és kettő végzi a munka nagy részét.
Az előző blokk hashe teszi lánccá. Minden fejléc megnevezi az előtte lévőt, így egy régi blokk átírása megváltoztatná annak hashét, ami elrontaná a következő fejlécet, és az azt követőt, egészen a csúcsig. Ez a proof of work teljes biztonsági érvelése egyetlen mezőben.
A merkle gyökér egyetlen hash, amely a törzs minden tranzakcióját összefoglalja. Ha egy tranzakciót megváltoztat, akár egyetlen bájttal is, a merkle gyökér megváltozik, így a fejléc is, így az eddig kipróbált összes hash értéktelen. Így képviselhet 80 bájt hitelesen egy bármekkora blokkot.
A nehézségi bitek tömör formában azt a célértéket adják meg, amely alá a hashnek kerülnie kell. Az időbélyeg nagyjából a blokk elkészítésének ideje, és lehet közelítő. A nonce az a mező, amelyet a bányászprogram szabadon változtathat, és ez teszi egyáltalán lehetővé a keresést.
A nonce elfogy, és ez rendben van
A nonce egy kis számláló, és egy modern bányászprogram szinte azonnal kimeríti az összes értéket, amelyet tárolni tud. Ez zsákutcának hangzik, de nem az, mert a nonce csak a legkényelmesebben változtatható dolog, soha nem az egyetlen.
Amikor elfogy, a bányászprogram valami mást változtat meg, ami a fejlécbe kerül. Az időbélyeg elmozdulhat. A coinbase tranzakció kissé módosítható, ami megváltoztatja a merkle gyökeret, ami teljesen új fejlécet ad a kereséshez. Egy poolban pontosan erre való az extra nonce: lehetővé teszi, hogy a pool minden bányászprogramnak más kiindulópontot adjon, így nincs két bányászprogram, amely ugyanazokat a számokat őrölné.
A magasság pozíció, nem mező
A blokkmagasság azt mutatja, hány blokk előzte meg az adott blokkot. A genezisblokk magassága nulla, a következőé egy, és így tovább. Ezt a számot látja minden bejegyzés mellett a pool Blokkok oldalán és bármely blokkfelfedezőben.
Érdemes tudni, hogy a magasságot valójában nem a fejléc tárolja. Abból származik, hol helyezkedik el a blokk a láncban. A legtöbb modern láncon a magasságot a coinbase tranzakcióba is beírják, ami egy később bevezetett szabály, hogy két különböző magasságú blokk soha ne lehessen bájtra azonos, de a hiteles válasz arra, milyen magasan van egy blokk, továbbra is a pozíciója.
Ezért a magasság a megerősítésekről való beszéd természetes módja is. Egy hat blokk mélyen eltemetett tranzakció olyan, amelynek blokkmagassága hattal a csúcs alatt van, és minden további blokk ennyivel drágábbá teszi az átírását.
A méret a törzs, és az telik meg
A blokkméret lényegében a törzs mérete, mert a fejléc mellette elhanyagolható. Amikor azt mondják, hogy egy láncnak blokkméret-korlátja van, arról beszélnek, hány tranzakció fér bele, nem a fejlécről.
Egy teli és egy üres blokk pontosan ugyanannyi bányászati munkát igényel. A nehézség dönti el, milyen nehéz megtalálni egy blokkot, a méret pedig azt, mennyit visz a blokk. Nincs közük egymáshoz, és ha összekeverik őket, abból sok rossz megérzés születik a díjakról.
Amit a méret befolyásol, az a díjpiac. Ha több tranzakció akar bekerülni, mint amennyi elfér, a magasabb díjat kínálók kerülnek be először, és a blokkban lévő összes díj nő. Ez egyenesen abba folyik, amit a blokk fizet.
A coinbase tranzakció és a blokktámogatás
Minden blokk első tranzakciója különleges. Nincs küldője, a semmiből hoz létre érméket, és annak fizeti őket, aki a blokkot készítette. Coinbase tranzakciónak hívják, és semmi köze az azonos nevű tőzsdéhez.
Amit fizet, az a blokktámogatás plusz a blokk összes többi tranzakciójának díja. A blokktámogatás az újonnan kibocsátott rész, amelyet a lánc kibocsátási ütemterve határoz meg, és a legtöbb érmén idővel csökken. A díjak azok, amelyeket a felhasználók a tranzakcióikhoz csatoltak, hogy bekerüljenek. Együtt alkotják a blokkjutalmat.
Egy poolban a coinbase a poolnak fizet, amely aztán szétosztja a jutalmat mindazok között, akik részesedésekkel hozzájárultak az adott körhöz. Ez nem kerülőút: így tud egy pool sok embernek fizetni egy olyan jutalomért, amely egyetlen oszthatatlan kifizetésként érkezik.
Miért számít mindez, amíg bányászik
Három dolog válik nyilvánvalóvá, amint világos egy blokk felépítése, és mindhárom folyton előkerül.
- Miért teszi egy új blokk azonnal érvénytelenné a munkáját. Az előző blokk hashe mező megváltozott, így a fejléc, amelyben keresett, már nem létezik. Amit utána benyújt hozzá, az elavult részesedés, és ezen semmilyen sebesség nem segít.
- Miért küld a pool ilyen gyakran friss munkát. Minden új tranzakció, amelyet a pool be akar venni, megváltoztatja a merkle gyökeret, és egy frissebb sablon több díjat hordoz, ami több jutalom ugyanazért a ráfordításért.
- Miért nem szerepel soha a blokkméret egy keresetbecslésben. Amit keres, azt a nehézség, a blokktámogatás és a díjak döntik el, nem az, hány bájt volt a törzsben.
Ennek a poolnak a Blokkok oldala a magasságot, a jutalmat és a megtalálás idejét mutatja, ami a fentiek hasznos része egy sorba sűrítve. A blokkfelfedező a többit is megmutatja, beleértve a coinbase tranzakciót, amely kifizette.