Скачать книгу

новый блок ссылается на предыдущие.

      Рис. 4. Цепочка блоков

      Для блока № 1 формируется хэш из содержимого его транзакций. В хэш блока № 2 включены транзакции из этого блока + хэш блока № 1. В хэш блока № 3 кроме его транзакций попадет хэш блока № 2. Таким образом формируется цепочка. Если удалить какой-то из блоков или подменить транзакции внутри него, то изменятся хэши и такой блок выпадет из цепочки.

      Если новый добавляемый блок не ссылается на предыдущий, то он автоматически будет отвергнут цепочкой, а значит, транзакции из него останутся в реестре непроверенных и будут замайнены другим майнером в последующих блоках.

      Конкуренция цепочек

      Итак, кошельки подписывают транзакции и отправляют их в реестр. Майнеры наперегонки проверяют эти транзакции и собирают их в блоки. Мы уже знаем, что в блокчейне есть консенсус, который выберет блок, если сразу несколько майнеров добавят блоки одновременно (такое случается постоянно, так как майнеров много и все стремятся успеть получить награду за блок).

      Но при этом в блокчейне есть такое понятие – конкуренция цепочек блоков. Откуда же возникает конкуренция, если консенсус так красиво решает спорные ситуации?

      Все дело в скорости. Бывают ситуации, когда блок с транзакциями был добавлен в цепочку, а уже после этого появился более красивый блок с таким же номером. В этом случае, подчиняясь правилам консенсуса, блокчейн переключится на этот более красивый блок. Вознаграждение, которое было начислено майнеру-владельцу несчастливого блока, исчезнет и появится новое вознаграждение у другого майнера.

      Причем возможны ситуации, когда несчастливым оказывается не один блок, а цепочка из нескольких блоков.

      Представьте: где-то живет гениальный программист, который собрал свой собственный супермощный компьютер и майниттранзакции биткойна. Допустим, у него произошел сбой отправки сообщений в Интернет. И вот его компьютер вычислил один блок, а передать эту информацию другим нодам в блокчейн не может. Потом его компьютер вычислил второй блок, за ним третий, и тут связь появилась, и кошелек выгрузил в блокчейн информацию сразу про три созданных блока. Если окажется, что в этой цепочке больше нулей в начале хэша, то блокчейн сразу же разрушит уже сложившуюся цепочку из трех последних блоков и переключится на нашу.

      Именно по этой причине внутри блокчейна так важно количество подтверждений. Считается, что современная компьютерная техника не дает возможности собрать цепочку из шести более красивых хэшей.

      Поэтому и существует правило, что перевод биткойна полностью завершен, когда у него есть шесть подтверждений. Это значит, что уже шесть блоков ссылаются на нашу транзакцию, а цепочка из шести блоков не может быть заменена на другую версию.

      Конечно, остается вариант, что в один прекрасный день будет изобретен супермощный компьютер или прилетят инопланетяне со своей чудо-техникой и смогут моментально вычислять очень красивые цепочки гораздо длиннее

Скачать книгу