Какво има в един блок: заглавна част, височина, размер и субсидия
Блокът е малка фиксирана заглавна част плюс тяло с транзакции. Разликата обяснява какво точно хешира копаенето и защо.
Две части, и само едната се хешира
Блокът има заглавна част и тяло. Тялото са транзакциите и може да е няколкостотин байта или няколко мегабайта в зависимост от това колко натоварена е веригата. Заглавната част е фиксирано обобщение на блока и при повечето вериги е точно 80 байта.
Копаенето хешира заглавната част и нищо друго. Това е най-полезният факт в тази статия, защото обяснява нещо, което иначе изглежда невъзможно: програмата за копаене опитва милиарди варианти в секунда и не би могла да го прави, ако всеки опит означаваше повторно хеширане на блок, пълен с транзакции. Не означава. Тя хешира отново 80 байта.
Шестте полета в заглавната част
Заглавната част съдържа версия, хеша на предишния блок, корена на Merkle, времеви печат, битовете на трудността и nonce. Всяко от тях е там с причина, а две от тях вършат по-голямата част от работата.
Хешът на предишния блок е това, което прави веригата верига. Всяка заглавна част посочва предишната, така че пренаписването на стар блок би променило хеша му, което би развалило следващата заглавна част и следващата, чак до върха. Това е целият аргумент за сигурността на доказателството за работа в едно поле.
Коренът на Merkle е един хеш, който обобщава всяка транзакция в тялото. Променете една транзакция, дори с един байт, и коренът на Merkle се променя, значи се променя и заглавната част, значи всеки досегашен опит за хеш е безполезен. Така 80 байта могат честно да заместват блок с какъвто и да е размер.
Битовете на трудността са целта, под която трябва да попадне хешът, в компактна форма. Времевият печат е приблизително кога е създаден блокът и може да е приблизителен. Nonce е полето, което програмата за копаене може свободно да променя, и именно то прави търсенето възможно изобщо.
Nonce се изчерпва и това е наред
Nonce е малък брояч и съвременната програма за копаене изчерпва всяка стойност, която той може да побере, почти мигновено. Това звучи като задънена улица, но не е, защото nonce е само най-удобното нещо за промяна, а не единственото.
Когато се изчерпи, програмата променя нещо друго, което влиза в заглавната част. Времевият печат може да се измести. Транзакцията coinbase може да се промени леко, което променя корена на Merkle, което дава напълно нова заглавна част за търсене. В пул точно за това служи extranonce: позволява на пула да даде на всеки миньор различна начална точка, така че никои двама да не обработват едни и същи числа.
Височината е позиция, а не поле
Височината на блока е колко блока има преди даден блок. Генезис блокът е с височина нула, следващият е едно и така нататък. Това е числото, което виждате до всеки запис на страницата Блокове на пула и във всеки блок експлорър.
Струва си да знаете, че височината всъщност не се съхранява в заглавната част. Тя се извежда от мястото на блока във веригата. При повечето съвременни вериги височината се записва и в транзакцията coinbase, което е правило, добавено по-късно, за да не могат два блока на различни височини никога да бъдат еднакви байт по байт, но авторитетният отговор на въпроса колко висок е един блок остава неговата позиция.
Затова височината е и естественият начин да се говори за потвърждения. Транзакция, заровена шест блока надолу, е такава, чийто блок е с височина шест под върха, и всеки следващ блок прави пренаписването ѝ още по-скъпо.
Размерът е тялото и то е това, което се запълва
Размерът на блока по същество е размерът на тялото, защото заглавната част е пренебрежимо малка до него. Когато хората казват, че веригата има ограничение за размера на блока, те говорят за това колко транзакции могат да се поберат, а не за заглавната част.
Пълният и празният блок изискват точно едно и също количество работа по копаене. Трудността решава колко трудно е да се намери блок; размерът решава колко носи блокът. Те не са свързани и смесването им е източник на много погрешни интуиции за таксите.
Това, на което размерът влияе, е пазарът на такси. Когато повече транзакции искат да влязат, отколкото се побират, първи влизат тези, които предлагат по-високи такси, и общите такси в блока растат. Това се отразява директно в това, което блокът плаща.
Транзакцията coinbase и субсидията
Първата транзакция във всеки блок е специална. Тя няма подател, създава монети от нищото и ги плаща на този, който е създал блока. Нарича се транзакция coinbase, което няма нищо общо с борсата със същото име.
Това, което плаща, е субсидията плюс таксите на всички останали транзакции в блока. Субсидията е новоиздадената част, определена от графика на емисията на веригата и намаляваща с времето при повечето монети. Таксите са това, което потребителите са добавили към транзакциите си, за да бъдат включени. Заедно те са наградата за блок.
В пул coinbase плаща на пула, който след това разпределя наградата между всички, допринесли с дялове в този рунд. Това не е заобиколен път: така пулът може да плати на много хора за награда, която пристига като едно неделимо плащане.
Защо всичко това има значение, докато копаете
Три неща стават очевидни, щом формата на блока е ясна, и и трите се появяват постоянно.
- Защо новият блок обезсилва работата Ви мигновено. Полето с хеша на предишния блок се е променило, така че заглавната част, която сте търсили, вече не съществува. Всичко, което изпратите за нея след това, е остарял дял и никаква скорост не може да поправи това.
- Защо пулът Ви изпраща нова работа толкова често. Всяка нова транзакция, която пулът иска да включи, променя корена на Merkle, а по-новият шаблон носи повече такси, което е по-голяма награда за същото усилие.
- Защо размерът на блока никога не се появява в оценката на печалбата. Това, което печелите, се решава от трудността, субсидията и таксите, а не от това колко байта е имало в тялото.
Страницата Блокове на този пул показва височината, наградата и кога е намерен блокът, което е полезната част от всичко изброено, събрана в един ред. Блок експлорърът ще Ви покаже останалото, включително транзакцията coinbase, която го е изплатила.