Все эти данные имеют существенный размер: по состоянию на весну 2019 года
объем базы данных Биткоин составлял около 570 000 блоков и занимал около
250 гигабайт на дисковом пространстве. Для тех, кто не желает выделять
место для хранения столь приличного объема данных, имеет смысл
воспользоваться возможностью получить статус «легкого клиента», когда
вместо всего объема информации он скачивает себе только заголовки блоков
без списка транзакций. В этом случае ему необходимо получить на свое
устройство всего лишь несколько сотен мегабайт информации, что
несопоставимо легче и быстрее, чем синхронизировать себе полную базу.
Однако в этом случае данный «легкий» узел сети не сможет участвовать в
создании новых блоков. Впрочем, этим занимаются далеко не все участники
сети — весной 2019 года в сети Биткоин насчитывалось около 10 000 полных
узлов, а число уникальных активно используемых адресов составляло около
640 000.
Исследуя принципы работы блокчейн в целом и сети Биткоин в частности, необходимо представлять себе механику создания новых блоков в
распределенной сети. Понятно, что в конец цепочки всегда добавляется только
один блок, который создается на тот момент только одним участником сети.
При этом вся остальная сеть должна с этим согласиться посредством
механизмов достижения консенсуса и синхронизировать у себя базу блоков
вместе с новым, последним созданным блоком. Однако, как мы могли
убедиться, количество полных узлов в сети исчисляется тысячами, и
потенциально каждый из них может независимо от других узлов создать свой
собственный блок и предложить его всей остальной сети для включения в
общую цепочку блоков. Из этого факта неизбежно следует, что в течение
небольшого временного интервала, исчисляемого минутами, в сети могут
возникать конфликтующие между собой блоки, претендующие на включение в
общую цепочку. Причем часть узлов может включить себе один блок, а часть —
совершенно другой. С этого момента в сети образуется разветвление, рассинхронизация базы блоков, иными словами — возникает проблема для
всей сети в целом, которую необходимо решать.
Если мы хотим решить эту проблему, нам нужно рассмотреть процесс
создания блока как такового. Чтобы создать блок, необходимо набрать из
мемпула транзакций, пока хватает места в блоке, вычислить на их основе
корневое значение дерева Меркла, на базе которого вместе с остальной
служебной информацией будет сформирован заголовок блока. Далее следует
поместить в заголовок создаваемого блока хеш заголовка предыдущего блока, чтобы продолжить непрерывность цепочки блоков, после чего новый блок
готов и его можно отправить в сеть, чтобы остальные узлы включили его в свои
цепочки. А теперь зададимся вопросом: а что, если достаточно большое
количество узлов одновременно начнут предлагать свои блоки остальным
участникам сети? Вне всякого сомнения, начнется полнейший хаос. Каналы
связи будут перегружены пересылаемой для синхронизации информацией, неизбежно возникнет огромное количество различных вариантов разветвления
цепочек — в общем, сеть фактически утратит целостность и, как следствие, работоспособность.
Чтобы избежать такого негативного сценария развития событий, необходимо
сделать так, чтобы количество предлагаемых сети блоков для включения в
цепочку было чрезвычайно малым. В идеале — чтобы в течение среднего
временного интервала между созданием блоков (в сети Биткоин — около
десяти минут) конкурирующие блоки в сети вообще отсутствовали. Но как этого
достичь? Ответ прост: необходимо сделать процесс создания блоков
настолько сложным, чтобы внутри кванта времени, выделяемого на создание
нового блока, сети предлагалось минимальное количество новых блоков. В
этом случае необходимым условием для их создания должно стать решение
сложной вычислительной задачи — примерно такой, как описывалось в
концепте «Доказательства работы», или Proof-of-Work. В сети Биткоин
подобный процесс создания блока называется «майнингом», по аналогии с
добычей полезных ископаемых, где необходимо затратить серьезные усилия, прежде чем можно будет извлечь драгоценный ресурс из шахты и реализовать
его, получив материальную выгоду. Как же осуществляется цифровой майнинг
в сети Биткоин?
Майнинг в сети Биткоин
Читать дальше
Конец ознакомительного отрывка
Купить книгу