Block, или блок, — очередная группа транзакций в истории Bitcoin. Когда платёж попадает в действительный блок цепочки, которой следует ваш узел, он получает первое подтверждение. Это не решение центрального администратора: майнер собирает блок, а остальные узлы проверяют соблюдение правил Bitcoin.
Вы отправляете платёж в биткоинах, и кошелёк сначала показывает ожидание подтверждения. Транзакция распространяется между узлами и может попасть в их мемпулы — местные списки неподтверждённых транзакций. Майнер выбирает некоторые из них для кандидата в блок. Если он находит нужный Proof of Work (результат вычислений майнера, соответствующий правилам сети), а узлы принимают блок в активную цепочку, включённый платёж получает первое подтверждение. Следующий блок поверх него увеличивает число до двух. Средняя цель — около десяти минут между блоками, а не обещание провести каждый платёж за десять минут. [1] [3]
В каждом блоке есть короткий заголовок и транзакции. Заголовок содержит, среди прочего, криптографический отпечаток предыдущего блока — ссылку, меняющуюся при изменении его данных. Так получается связанная история, а не куча отдельных платежей. Другой отпечаток в заголовке обобщает транзакции этого блока и называется Merkle root. Майнер перебирает варианты заголовка, пока его хеш, числовой отпечаток, не удовлетворит порогу сложности. Это ещё не доказывает правильность платежей. Полный узел проверяет также подписи, права расходования и другие правила. Действительный Proof of Work не исправляет недействительную транзакцию. [1] [3]
Первая транзакция называется Coinbase Transaction. В ней майнер может получить не более разрешённой новой эмиссии и комиссий от включённых транзакций. Далее узел по порядку проверяет обычные транзакции: прежние неизрасходованные суммы исчезают из доступных средств и создаются новые. Эти отдельные суммы называются UTXO. Платёж может в том же блоке потратить выход более раннего платежа, если выполнены остальные условия. Но один выход нельзя потратить дважды. Новую награду coinbase нельзя потратить сразу в этом блоке: действует особое правило ожидания 100 блоков. [1]
В блоке нет фиксированного числа мест для платежей. Простая транзакция требует меньше данных, чем сложная, поэтому одна и та же вместимость позволяет включить разное число транзакций. После SegWit (обновления правил Биткоина, изменившего хранение и учёт данных транзакций) её учитывают по весу с пределом 4 000 000 единиц. Это технический способ подсчёта данных, не физическая масса. Действуют и другие правила. Майнер не обязан заполнять всю вместимость. Так называемый пустой блок может не содержать обычных платежей, но coinbase в нём всё равно есть. Поэтому пустой не означает ни отсутствие всех транзакций, ни автоматическую недействительность. [1] [2]
Иногда два майнера почти одновременно находят блоки на одном предшественнике. Оба могут быть действительными, но создают соперничающие ветви. Узел выбирает среди действительных ветвей по совокупной доказанной работе, не простым голосованием и не только по числу блоков. Смена ветви называется реорганизацией. Платёж из оставленного блока может потерять подтверждения; если он остаётся действительным и отсутствует в новой ветви, то может снова ждать включения. Дополнительные подтверждения обычно повышают уверенность, но не обещают математической необратимости. Для тех, кому нужны технические подробности: заголовок занимает 80 байт. Merkle root — отпечаток, вычисленный из идентификаторов транзакций, называемых txid, в порядке их расположения в блоке. Данные witness из SegWit, например подписи для проверки расходования, имеют дополнительный криптографический отпечаток, записанный через coinbase. Эти связи позволяют узлу проверить, что полученные данные относятся именно к этому блоку. [1] [2]
Для полной картины прочитайте эту статью вместе с Block Header, Транзакция, Timechain / Blockchain, Майнинг. На эту статью также ссылаются Block Header, Merkle Tree, Подтверждение, Coinbase-транзакция.