Глоссарий / Майнинг и консенсус
Блок
- Что такое блок?
- Блок представляет собой один пакет транзакций биткоина вместе с заголовком из 80 байт, который его запечатывает; он добавляется в цепочку примерно каждые десять минут тем майнером, который найдет его первым.
Блоки превращают поток платежей в упорядоченную постоянную запись. Каждый блок несет заголовок, число транзакций и сами транзакции, а весь пакет ограничен четырьмя миллионами весовых единиц, что на практике означает несколько тысяч платежей. Когда говорят, что платеж подтвержден, имеют в виду, что майнер включил его в блок.
Как это работает
У блока три части, и фиксированный размер имеет только первая.
Заголовок занимает 80 байт и никогда не меняется. После него идет число транзакций, записанное в формате переменной длины compactSize, принятом в биткоине. Затем идут сами транзакции по порядку, с одним жестким требованием: первая должна быть транзакцией coinbase, той, что платит майнеру. Блок, в котором coinbase стоит на втором месте, отклоняется так же твердо, как блок с подделанной подписью.
Размер больше не считается в простых байтах. С момента активации SegWit в августе 2017 года лимит составляет 4 000 000 весовых единиц, где байт вне свидетеля стоит четыре единицы, а байт свидетеля стоит одну. Отсюда потолок около 4 МБ для блоков с большим объемом данных свидетеля и около 1 МБ для блока, заполненного транзакциями старого формата, а типичные реальные блоки укладываются между 1,5 МБ и 2 МБ. Исходное правило 1 000 000 байт сохраняется в основе как ограничение части, не относящейся к свидетелю, поэтому честный ответ на вопрос «какого размера может быть блок» представляет собой диапазон, а не число.
Все остальное каждый узел проверяет независимо. Хеш заголовка должен быть равен целевому значению или ниже его, корень Меркла должен совпадать с фактически присутствующими транзакциями, ни один вход не может быть потрачен дважды, а выход coinbase не может требовать больше, чем субсидия плюс комиссии включенных транзакций. Протокол также накладывает на майнера период ожидания: биткоины, созданные в блоке, нельзя потратить, пока поверх не построено еще 100 блоков, так что майнер, чей блок позже отброшен при реорганизации, не мог успеть потратить полученное.
Почему это важно при покупке биткоина
Место в блоке продается на аукционе, и комиссия за ваш вывод средств является в нем ставкой.
Блоки конечны, а спрос нет, поэтому когда пул памяти загружен, первыми берутся транзакции, которые платят больше за виртуальный байт, а остальные ждут. Этот механизм стоит за каждым обращением в поддержку вида «почему мой вывод застрял». Проверка оценки комиссии перед тем, как переводить биткоины, и перевод в спокойный час, когда это возможно, ничего не стоит и регулярно экономит больше, чем разница в комиссиях биржи, на сравнение которых вы потратили полдня.
Цифра в десять минут является средним значением, а не расписанием. Обнаружение блоков ведет себя как случайный процесс без памяти, поэтому интервалы сильно разбросаны: более трети блоков находятся дольше десяти минут, а примерно один из двадцати дольше получаса. Поэтому биржа, которая зачисляет пополнения после нескольких подтверждений, сообщает вам распределение, а не срок доставки, и пополнение, не пришедшее за двадцать минут, обычно является нормальным, а не потерянным.
Есть и способ вовсе обойти место в блоке. Платежи Lightning рассчитываются вне блокчейна (офчейн) и касаются блока только при открытии или закрытии канала, поэтому приложение вроде Strike может перемещать стоимость за секунды, пока ончейн-вывод ждет следующего блока. Этот компромисс стоит понять, прежде чем предполагать, что каждый перевод биткоина обязательно должен стоить комиссии майнеру.
Внутри блока 774 628, самого большого из когда-либо добытых
Блок 774 628, добытый пулом Luxor 1 февраля 2023 года, является самым большим блоком, который когда-либо создал биткоин: 3,96 МБ.
Он содержал 63 транзакции, и одна из них заняла 3,94 МБ от общего объема: надпись с изображением Taproot Wizard, втиснутая в свидетель Taproot. Пул координировал эту транзакцию напрямую, а не выбирал ее из пула памяти, и заплатил блоку почти ничего: около 0,009 BTC в виде комиссий при субсидии, которая в то время все еще составляла 6,25 BTC. Предыдущий рекорд составлял 2,77 МБ.
Этот блок стоит посмотреть, потому что он показывает правило веса в действии. Старый лимит 1 МБ сделал бы эту транзакцию невозможной, а бюджет в 4 000 000 весовых единиц позволил ее только потому, что данные свидетеля учитываются со скидкой. Он также показывает, что один участник может занять весь блок, и именно об этом шла война за размер блока.
Блок vs заголовок блока
Блок представляет собой весь объект; заголовок является сводкой из 80 байт в его начале. Различие практическое, а не педантичное. Майнеры хешируют только заголовок, легкие кошельки скачивают только заголовки, а узел, который синхронизируется впервые, получает цепочку заголовков, прежде чем запросить хотя бы одну транзакцию. Если в документе сказано «хеш блока», имеется в виду хеш этих 80 байт, а не хеш платежей внутри.
Блок vs устаревший блок
Блок находится в той цепочке, с которой согласна сеть; устаревший блок является вполне действительным блоком, который проиграл гонку за место в этой цепочке. Иногда два майнера находят блок почти одновременно, сеть ненадолго держит двух кандидатов, и ветвь, которая перестает расти, забрасывается. С отброшенным блоком все было в порядке, и его транзакции почти всегда появляются в следующем блоке. Поэтому одно подтверждение слабее шести: чем глубже находится блок, тем менее правдоподобно, что конкурирующая ветвь его обгонит.