Читаем 1c2b9509b53cb0837976a7dc6c8bcd37 полностью

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

всей сети в целом, которую необходимо решать.

Если мы хотим решить эту проблему, нам нужно рассмотреть процесс

создания блока как такового. Чтобы создать блок, необходимо набрать из

мемпула транзакций, пока хватает места в блоке, вычислить на их основе

корневое значение дерева Меркла, на базе которого вместе с остальной

служебной информацией будет сформирован заголовок блока. Далее следует

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

готов и его можно отправить в сеть, чтобы остальные узлы включили его в свои

цепочки. А теперь зададимся вопросом: а что, если достаточно большое

количество узлов одновременно начнут предлагать свои блоки остальным

участникам сети? Вне всякого сомнения, начнется полнейший хаос. Каналы

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

цепочек — в общем, сеть фактически утратит целостность и, как следствие, работоспособность.

Чтобы избежать такого негативного сценария развития событий, необходимо

сделать так, чтобы количество предлагаемых сети блоков для включения в

цепочку было чрезвычайно малым. В идеале — чтобы в течение среднего

временного интервала между созданием блоков (в сети Биткоин — около

десяти минут) конкурирующие блоки в сети вообще отсутствовали. Но как этого

достичь? Ответ прост: необходимо сделать процесс создания блоков

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

нового блока, сети предлагалось минимальное количество новых блоков. В

этом случае необходимым условием для их создания должно стать решение

сложной вычислительной задачи — примерно такой, как описывалось в

концепте «Доказательства работы», или Proof-of-Work. В сети Биткоин

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

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

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

в сети Биткоин?

Майнинг в сети Биткоин

Занимаясь интеграцией концепта Proof-of-Work в свой проект Bit Gold, который

многие считают «предтечей» Биткоина, Ник Сабо столкнулся с проблемой, когда фиксированная сложность вычислительной задачи вела к потенциальной

уязвимости, которая с большой вероятностью проявилась бы в будущем. Дело

в том, что совокупная вычислительная мощность сети будет со временем

естественным образом расти. Произойдет это по двум причинам: во-первых, вырастет общее количество узлов, а во-вторых, согласно закону Мура, усредненная вычислительная мощность отдельно взятого узла системы будет

также постепенно увеличиваться. Таким образом, через какое-то время

заложенная в логике проекта фиксированная сложность вычислительной

задачи перестанет быть для сети проблемой. В конечном итоге сетевые узлы

превратятся в «печатные станки» для электронных денег, что неизбежно

спровоцирует в системе гиперинфляцию. Стоит ли сомневаться, что после

этого все узлы системы будут материально демотивированы и едва ли захотят

в дальнейшем участвовать в подобном проекте.

Напомним, что суть сложновычислимой задачи в проекте Bit Gold состояла в

переборе хешей различных прообразов. А конечной целью было нахождение

такого хеша, который бы считался для всей сети валидным — то есть в данном

случае содержал определенное количество нулей в начале строки данных.

Статическая сложность вычислительной задачи стала для Сабо одним из

непреодолимых препятствий, которое так и не позволило BitGold увидеть свет.

Однако Сатоши Накамото в своем проекте Биткоин эту задачу решил, и, как мы

сейчас убедимся, достаточно элегантно.

На самом деле для данной проблемы напрашивается очевидное решение: если статическая сложность задачи является барьером для экономической

стабильности системы, то необходимо сделать ее динамической. Как нам уже

известно, для того, чтобы получить n нулевых бит в начале строки хеша, надо

перебрать для хеширования максимум 2n прообразов. Очевидно, что чем

больше число n, тем сложность задачи экспоненциально увеличивается.

Накамото предложил хешировать заголовок создаваемого блока, начав с

самой маленькой сложности. В этом случае нужно было получить всего восемь

нулевых символов в начале строки хеша заголовка. Поскольку один символ

занимает четыре бита, то необходимо было перебрать не более

232 вариантов, то есть около 4,3 млрд. А затем, по мере увеличения

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

стартовых нулей.

Когда Накамото запустил свою сеть Биткоин в начале января 2009 года, в ней, помимо самого создателя системы, не было других участников. Поэтому

первые блоки «намайнил» именно сам Накамото. Когда в сети Биткоин стали

Перейти на страницу:

Похожие книги

Linux
Linux

Книга посвящена операционной системе Linux. Приводятся подробные сведения о ее особенностях и возможностях, идеологии файловой системы, инсталляции и основных командах, вопросах компиляции ядра, настройках и сервисах. Большое внимание уделяется организации на базе Linux различных серверов и служб: электронной почты, WWW, FTP, INN, Proxy, NTP, а также проблемам администрирования сети, обеспечения безопасной работы и другим вопросам. Описаны способы настройки под Linux рабочих станций, в т. ч. и бездисковых, установки и эксплуатации на них графических сред типа X Window, а также конфигурирование модемных соединений, принтеров и сканеров, отладка взаимодействия с Linux-машинами такой «экзотической» периферии, как карманные компьютеры, мобильные телефоны, TV-тюнеры и т. п. Рассматриваемые в книге конфигурационные файлы и структура каталогов соответствуют дистрибутиву Red Hat Linux 7.x, тем не менее, при минимальной адаптации все упоминаемые в книге пакеты устанавливаются в любом дистрибутиве Linux.Для начинающих администраторов или пользователей Linux.

Алексей Александрович Стахнов

ОС и Сети, интернет
Атака на Internet
Атака на Internet

Эта книга является одним из первых специализированных изданий, написанных отечественными авторами, которое посвящено обстоятельному анализу безопасности сети Internet. В книге предлагаются и подробно описываются механизмы реализации основных видов удаленных атак как на протоколы TCP/IP и инфраструктуру Сети, так и на многие популярные сетевые операционные системы и приложения.Особое внимание авторы уделили причинам возникновения и успеха удаленных атак, а также их классификации. Были также рассмотрены основные способы и методы защиты от удаленных атак.Издание предназначено для сетевых администраторов и пользователей Internet, администраторов безопасности, разработчиков систем защит, системных сетевых программистов, студентов и аспирантов вузов, а также для всех интересующихся вопросами нарушения и обеспечения информационной безопасности компьютерных сетей.

Дмитрий Геннадьевич Леонов , Илья Давыдович Медведовский , Павел Валентинович Семьянов

ОС и Сети, интернет / Интернет / Книги по IT
Как раскрутить и разрекламировать Web-сайт в сети Интернет
Как раскрутить и разрекламировать Web-сайт в сети Интернет

Настоящая книга заинтересует всех, кто столкнулся с вопросами подготовки, размещения в Сети и популяризации Internet ресурсов различного уровня: от домашней странички до корпоративного сайта. В ней вы найдете все, что необходимо для оптимизации Web сайтов под поисковые системы: приемы написания Web-страниц, описание множества самых популярных специализированных программ, предназначенных для подготовки сайта и его раскрутки, создания удачного HTML-кода страниц с правильными метаданными.Книга является практическим руководством для разработчиков Web сайтов и всех, занимающихся их продвижением. Автор приводит множество советов, касающихся создания и анонсирования Web страниц. Рассмотрены средства автоматизации для повышения эффективности разработки и маркетинга при создании и обслуживании сайта. Описание программных и сетевых средств, автоматизирующих процессы тестирования и отладки сайта, обеспечивающих проверку работоспособности и корректности гиперссылок, синтаксиса HTML кода и грамматики размещенного на странице текста, занимает центральное место в книге. Подробно излагаются возможности таких программ, как Linkbot Developer Edition, Domain NameChecker, Retrieve, CyberSpyder Link Test, HTML Link Validator, CSE HTML Validator, A Real Validator, MetaTag ToolKit, MetaMan, WebQA.Отдельная глава посвящена регистрации Web ресурсов в поисковых системах и каталогах. Описываются программы автоматической регистрации (WebPosition, Page Promoter, Web Регистратор), способы взаимодействия с индексирующими роботами поисковых машин, правила применения метаданных. Рассматриваются приемы и методы рекламы сайтов в Internet, указаны критерии ее эффективности.Издание рассчитано на широкий круг читателей и будет полезно как начинающим создателям Web сайтов, так и профессионалам, которые хотят научиться более качественно продвигать в Сети свой Web продукт.

Александр Петрович Загуменнов

ОС и Сети, интернет