Александр Цихилов - Блокчейн. Принципы и основы
- Название:Блокчейн. Принципы и основы
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:2019
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Александр Цихилов - Блокчейн. Принципы и основы краткое содержание
Помимо истории возникновения и описания технологии, в книге рассмотрены наиболее популярные проекты, реализованные на блокчейн, уже существующее и потенциальное применение в различных отраслях, а также проблематика взаимоотношений блокчейн-проектов и государств. Наконец, автор подробно разбирает самые востребованные и популярные темы — инвестиции в криптоактивы, связанные с ними риски и перспективы развития блокчейн. Книга адресована широкому кругу читателей и будет интересна как техническим специалистам, так и аудитории, далекой от финансовых и IT-технологий.
Блокчейн. Принципы и основы - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Однако Сатоши Накамото в своем проекте Биткоин эту задачу решил, и, как мы
сейчас убедимся, достаточно элегантно.
На самом деле для данной проблемы напрашивается очевидное решение: если статическая сложность задачи является барьером для экономической
стабильности системы, то необходимо сделать ее динамической. Как нам уже
известно, для того, чтобы получить n нулевых бит в начале строки хеша, надо
перебрать для хеширования максимум 2n прообразов. Очевидно, что чем
больше число n, тем сложность задачи экспоненциально увеличивается.
Накамото предложил хешировать заголовок создаваемого блока, начав с
самой маленькой сложности. В этом случае нужно было получить всего восемь
нулевых символов в начале строки хеша заголовка. Поскольку один символ
занимает четыре бита, то необходимо было перебрать не более
232 вариантов, то есть около 4,3 млрд. А затем, по мере увеличения
количества узлов в сети, которые пытаются искать валидные хеши, пропорционально поднимать сложность, увеличивая требования к количеству
стартовых нулей.
Когда Накамото запустил свою сеть Биткоин в начале января 2009 года, в ней, помимо самого создателя системы, не было других участников. Поэтому
первые блоки «намайнил» именно сам Накамото. Когда в сети Биткоин стали
появляться другие узлы, сложность сети начала постепенно увеличиваться.
Логика управления сложностью была заложена следующая: сложность сети
должна быть такова, чтобы вне зависимости от количества узлов, которые
ищут блоки, а также от их вычислительной мощности новый блок можно было
бы найти в среднем не более и не менее чем за десять минут. Сложность
пересчитывалась каждые 2016 блоков, то есть примерно один раз в две
недели. Совокупное, реально затраченное время нахождения всех 2016 блоков
разделялось на их количество, и полученный результат сравнивался с
десятиминутным эталоном. Если блоки находились в среднем быстрее, сложность увеличивалась — то есть поднимались требования к количеству
нулей в хеше заголовка блока. Если медленнее — требования уменьшались.
Теперь следует сделать отступление, чтобы разобраться, каким образом
перебираются хеши в процессе майнинга. Поскольку хешируется заголовок
блока, это означает, что хешируемая информация довольно статична. А это, в
свою очередь, говорит о том, что при неизменном прообразе мы будем все
время получать один и тот же хеш. Что входит в противоречие с нашей целью
— найти «золотой» хеш, чтобы он начинался с большого количества нулей.
Давайте взглянем еще раз на структуру заголовка блока, чтобы понять: есть ли
там какая-либо динамическая величина, которая будет меняться настолько
быстро, чтобы у майнера была возможность хешировать миллионы, миллиарды или даже триллионы прообразов в секунду?
Порядковый номер блока — информация сугубо статичная, которая меняться
не будет. Номер версии блока также представляет собой фиксированное
значение. Теперь что касается времени создания блока, которое выражается в
секундах, прошедших с 1 января 1970 года. Логично было бы предположить, что оно будет меняться не чаще раза в секунду, что для нашей задачи
является крайне низкой динамикой. Число транзакций в блоке и вычисленное
из них корневое значение дерева Меркла — информация также относительно
постоянная. Однако бывают случаи, когда во время поиска валидного хеша
майнеру поступают новые транзакции с более высокой комиссией, чем те, что
он ранее включил в блок, — тогда блок будет иметь смысл пересобрать
заново. Но данная процедура также имеет достаточно низкую динамику и
проблем с необходимым разнообразием хешей не решает.
Получается, что коль скоро высокодинамичная информация в заголовке блока
естественным образом отсутствует, для решения поставленной задачи
необходимо вводить в процедуру майнинга некий искусственный элемент. Он
не будет нести никакой полезной нагрузки, кроме как играть роль
дополнительной составляющей заголовка блока, как прообраза для
хеширования. И такой элемент действительно присутствует в заголовке
каждого блока, и называется он «нонс» (nonce). Именно значение этого нонса
майнер и будет исключительно быстро менять при переборе, открывая
возможности для получения огромного количества разнообразных хешей, среди которых может оказаться и заветный «золотой» хеш с требуемым
количеством нулей.
По сути, процедура майнинга и сводится к поиску подходящего значения этого
самого нонса, который, будучи добавленным к заголовку блока, позволит
майнеру вычислить валидный хеш, дающий ему право на создание нового
блока, безусловно принимаемого всей сетью. Однако процедура поиска
необходимого значения нонса достаточно сложна. В сети Биткоин
используется алгоритм хеширования SHA-256, который предполагает два
цикла по 64 итерации хеширования каждый. По состоянию на весну 2019 года
сложность сети Биткоин требует наличия 18 первых нулевых символов для
нахождения валидного хеша, соответствующим 72 нулевым битовым
значениям. Что требует примерно 272 или около 5 · 1021 переборов хешей.
Много это или мало? Давайте попробуем сравнить это число, скажем, с
количеством песчинок на всех пляжах нашей планеты. Ученые сопоставляют
количество песчинок с величиной, приближенной к 1018. Таким образом, сложность нахождения нужного нам валидного хеша с такими требованиями
сопоставима с процедурой перебора всех песчинок примерно на 5000 планет, условно подобных Земле. Вот пример такого валидного хеша, с требованием
по сложности в 18 начальных нулей:
Как уже упоминалось, первые блоки сети Биткоин Сатоши Накамото находил
самостоятельно и использовал для этого обычный компьютер. Как, собственно, и другие участники сети, которые стали постепенно в ней появляться. И на том
самом начальном уровне сложности обычного процессора компьютера вполне
хватало, чтобы находить блок за положенные в среднем десять минут. Однако
по мере роста количества участников сети сложность стала автоматически
пересчитываться в сторону увеличения, и в какой-то момент для обычного
компьютерного процессора вычислительная задача стала «неподъемной». Тем
не менее майнеры быстро нашли выход — они задействовали для поиска
блоков не центральный процессор, а тот, который был установлен на их
видеокартах. В силу специфики своей вычислительной архитектуры
графический процессор гораздо быстрее рассчитывал хеши, чем центральный.
Но через определенное время сложность возросла настолько, что и
Читать дальшеИнтервал:
Закладка: