Книга: Биткоин для всех. Популярно о первой распределенной одноранговой денежной системе
Назад: Понимание Биткоина
Дальше: Биткоин – первый продукт криптоэкономики. Термин «криптоэкономика» вызывает много путаницы, и люди часто не понимают, что это означает

Добавление блоков в блокчейн

Механизм консенсуса, который используется в Биткоине, называется Доказательством выполненной работы (PoW).



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



Процесс добавления нового блока, как мы уже знаем, называется «майнинг». Узлы, которые пытаются добавить блок в цепочку (называемые «майнерами»), используют вычислительную мощь своих компьютеров, чтобы попытаться решить некую криптографическую «головоломку». Правила утверждают, что только когда эта головоломка решена, блок может быть добавлен в блокчейн. Подробнее об этом читайте в главе «Технологические основы майнинга».



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

Впоследствии все остальные майнеры начинают «добывать» следующий блок.

Проверка блоков

Когда какой-то майнер решит криптографическую головоломку и сформирует новый блок, все узлы в сети проверят, действителен ли блок (правильность транзакций), и добавят его в свою копию блокчейна. Сначала узлам необходимо достичь консенсуса относительно действительности. Только тогда сеть синхронизируется и блокчейн обновится.

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



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

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

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

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

Как разрешаются конфликты

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

Это называется непреднамеренным «форком» (fork – «вилка»): блокчейн разветвляется на две разные цепи. Как определить, какая из двух разветвленных цепей блокчейна является «истинной»?



Консенсусный протокол решает эту проблему с помощью простого правила: выигрывают самые длинные цепочки.





Когда случается непреднамеренный форк (разветвление), некоторые майнеры начнут добывать новые блоки в одной цепочке, а другие начнут добычу в другой цепочке. Неизбежно одна из этих цепочек будет иметь больше майнеров, чем другая, и соответственно в неё будут быстрее добавляться новые блоки. Остальные майнеры перейдут к более длинной цепи, и другая ответвленная цепь отомрет, ее рост прекратится. При этом основной цепочке не будет нанесен ущерб.





Почему есть уверенность, что это всегда произойдет?





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





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





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







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

Назад: Понимание Биткоина
Дальше: Биткоин – первый продукт криптоэкономики. Термин «криптоэкономика» вызывает много путаницы, и люди часто не понимают, что это означает