Министерство образования и науки Российской Федерации Федеральное агентство связи Государственное бюджетное образовательное учреждение Высшего профессионального образования Ордена Трудового Красного Знамени МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ Учебная дисциплина: «Криптографические протоколы» Курсовая работа «Основные алгоритмы майнинга для построения современных блокчейнов» Выполнил студент Группы БИБ1802 Таганов Н. С. Москва 2020 Оглавление курсовой работы 1.0 Введение ............................................................................................................. 3 2.0 Что такое блокчейн? ......................................................................................... 3 2.1 Базовые определения ..................................................................................... 4 2.2 Как работает блокчейн ................................................................................ 10 2.3 Как в блокчейне накапливаются блоки ..................................................... 10 3.0 Майнинг ........................................................................................................... 12 4.0 Алгоритмы майнинга ...................................................................................... 15 4.1 Что такое алгоритм майнинга? ................................................................... 15 4.2 Расширенная таблица с алгоритмами хеширования ................................ 18 4.3 Алгоритмы хеширования и криптовалюты ............................................... 21 4.3.1 SHA-256 .................................................................................................. 21 4.3.2 Equihash ................................................................................................... 22 4.3.3 Алгоритм Ethash (Dagger Hashimoto)................................................... 24 4.3.4 Scrypt ....................................................................................................... 25 4.3.5 X11 ........................................................................................................... 27 4.3.6 Crypto Night ........................................................................................... 28 4.3.7 Алгоритм SHA-256. Подробный разбор .............................................. 31 5.0 Вывод ................................................................................................................ 37 6.0 Список литературы ......................................................................................... 38 2 1.0 Введение В эпоху становления сети Интернет всё разнообразие сайтов по сути своей ограничивалось несколькими десятками относительно популярных сайтов, а использовала их в целом, небольшая часть людей. Что представляет собой сеть интернет сейчас? Риторический вопрос в данном случае, более чем уместен. Сегодня мир стоит на пороге внедрения новых информационных технологий, в том числе, в лице технологии блокчейн (от англ. block- блок, chain- цепь; blockchain- цепочка блоков). Данная технология, привносит в мир не только саму себя, но те цели и идеи, которые она позволяет решить и осуществить, как в своё время это позволила сделать сеть Интернет. В частности, это интернет вещей (internet of things), экономика совместного потребления (shareconomy) и умные-договоры (smart contracts) и это далеко не полный перечень. В связи с этим, актуальность работы, диктуется современным динамично развивающимися технологиями. Итак, цель исследования: формирование общего представления об алгоритмах майнинга, как инструмента для построения современных блокчейнов. Объект исследования: технология блокчейн. Методологической основой исследования являются общенаучные методы познания. 2.0 Что такое блокчейн? В 2008 году вышла эпохальная статья под названием «Биткойн. Децентрализованная электронная денежная система» на тему пиринговой электронной валюты, написанная под псевдонимом Сатоши Накамото (Satoshi Nakamoto). Именно в ней появился термин «цепочка блоков». Никому не известно, кто именно скрывается под именем Сатоши Накамото. После появления биткойна он оставался активным разработчиком этой 3 системы до 2011 года. Затем он передал развитие биткойна основной команде разработчиков и попросту исчез. С тех пор от него не было никаких вестей, его личность и сам факт его существования покрыты завесой тайны. Термин «цепочка блоков» с годами изменился, и теперь этот феномен называется «блокчейн». У технологии блокчейн масса прикладных вариантов, которые могут быть реализованы в различных сегментах экономики. Так, считается, что достигнутое в финансовом секторе значительное усовершенствование транзакций и расчетов позволило как следует ускорить эти процессы и сократить издержки на них. В отдельных сегментах практически всех промышленных отраслей уже оценены (или вскоре будут оценены) потенциал и многообещающие перспективы блокчейна, после чего придет время зарабатывать на этой технологии. Блокчейн – это пиринговый криптографически защищенный распределенный, (практически) неизменяемый реестр, поддерживающий только добавление блоков, обновляемый лишь в результате соглашения (договоренности) между всеми участниками. Если говорить более простым языком, то блокчейн – это непрерывно растущая, безопасная, разделяемая система учёта записей, где у каждого пользователя данных есть такая копия этих данных, обновить которую можно лишь при условии, что на это согласятся все стороны, участвующие в транзакции. 2.1 Базовые определения Разберем более подробно вышеизложенные определения. Первый термин в техническом описании — «пиринговый». Он означает, что в сети нет центрального контрольного органа и все участники напрямую коммуницируют друг с другом. Благодаря такому свойству денежные 4 транзакции могут происходить между участниками сети без вмешательства каких-либо посредников, например банка. Далее в техническом определении выясняем, что блокчейн — это распределенный реестр, то есть реестр, рассредоточенный по сети между всеми ее участниками, причем у каждого участника есть исчерпывающая копия всего реестра. Далее отмечаем, что реестр является криптографически безопасным — то есть безопасность в реестре обеспечивается при помощи криптографии, и благодаря криптографии реестр защищен от подделки и злоупотреблений. К сервисам безопасности относятся неотказуемость, целостность данных и аутентификация источника данных. Еще одно характерное свойство блокчейна заключается в том, что блоки в цепочку можно только добавлять в хронологически последовательном порядке. Это свойство подразумевает, что как только данные добавлены к блокчейну, эти данные почти невозможно скорректировать, поэтому они могут считаться практически неизменяемыми. Тем не менее изменить данные можно в ситуациях, когда в блокчейновой сети удается устроить коллизию и завладеть более чем 51% ее мощностей. Могут существовать вполне обоснованные причины, по которым потребуется изменить данные, попавшие в блокчейновую сеть, - например, право на забвение или право на стирание (также прописанное в Общем регламенте по защите данных (СОРЕ). Однако это частные случаи, которые должны рассматриваться отдельно и которые требуют изящного технического решения. В обычной практике блокчейн действительно неизменяем. Наконец, наиболее принципиальным атрибутом блокчейна является возможность обновления цепочки лишь по общему согласию. В этом и заключается мощь децентрализации. В таком сценарии отсутствует какойлибо центральный орган, который отвечал бы за обновление реестра. Напротив, любое обновление блокчейна проверяется на соответствие 5 строгим критериям, определенным в блокчейновом протоколе, и осуществляется только по достижении общего консенсуса (договорённости) между всеми релевантными участниками/узлами в сети. Достижение консенсуса упрощается благодаря множеству различных алгоритмов, специально предназначенных для этой цели, гарантирующих, что всех причастных устраивает итоговое состояние данных в блокчейновой сети и все участники сети решительно соглашаются с тем, что это обновление является верным. Блокчейн можно представить в виде распределенной пиринговой сети, наложенной и действующей поверх интернета, как показано на рис. 1. Блокчейн аналогичен протоколам SМТР, HTTP или ЕТР, работающим поверх ТСР/IР. Рисунок 1. Блокчейн с сетевой точки зрения. Блок – это просто подборка логически организованных транзакций, объединенных в пакет. 6 Рисунок 2. Структура блока в обобщенном виде. Транзакция – Регистрация события, например события пересылки денег со счета отправителя на счет бенефициара. Блок состоит из транзакций, а размер его может варьироваться в зависимости от типа и структуры используемого блокчейна. Также в блоке содержится ссылка на предыдущий блок, если только речь не о первичном блоке. Первичный блок (genesis block) идет первым в блокчейновой цепочке, он жестко запрограммирован в момент создания данной блокчейновой цепочки. Структура блока также зависит от типа и устройства конкретного блокчейна. Однако, как правило, есть всего несколько критичных атрибутов, необходимых для функционирования блока: это заголовок блока, состоящий из указателя на предыдущий блок, временной метки, одноразового номера (нонса), корня дерева Меркла и тела блока (в теле содержатся транзакции). В блоке присутствуют и другие атрибуты, но, как правило, вышеупомянутые компоненты есть в блоке всегда. Нонс - это случайное число, которое генерируется и используется лишь однажды. Нонсы широко применяются в различных криптографических операциях и обеспечивают защиту от повторного воспроизведения, аутентификацию. В блокчейне нонс используется в РоW-алгоритмах 7 консенсуса, а так же применяется для защиты транзакций от повторного воспроизведения. Узел – предлагает и проверяет транзакции, может выполнять майнинг для обеспечения консенсуса и защищать блокчейн. Корень дерева Меркла – это бинарное дерево, в котором входные данные сначала помещаются в листья (узлы без потомков). Затем значения каждой пары потомков хешируются вместе, а полученное значение записывается в соответствующий родительский узел (внутренний узел). Этот процесс повторяется до тех пор, пока не будет получено единое значение хеша, известное как корень дерева Меркла. Деревья Меркла широко используются для безопасной и эффективной валидации больших структур данных. В мире блокчейна деревья Меркла часто используются для эффективной верификации транзакций. Корень дерева Меркла в блокчейне присутствует в заголовке блока и представляет собой хеш всех транзакций, содержащихся в блоке. Таким образом, достаточно проверить только корень дерева Меркла содержащиеся — в и дереве так будут Меркла; верифицированы проверять отдельности не требуется. 8 каждую все транзакции, транзакцию в Рисунок 3. Дерево Меркла или хеш-дерево Построение дерева происходит следующим образом: 1. Вычисляются хеши транзакций, размещенных в блоке: hash(L1), hash(L2), hash(L3) и так далее. 2. Вычисляются хеши от суммы хешей транзакций, например hash(hash(L1) + hash(L2)). Так как дерево Меркла является бинарным, то число элементов на каждой итерации должно быть четным. Поэтому если блок содержит нечетное количество транзакций, то последняя дублируется и складывается сама с собой: hash (hash(L3) + hash(L3)). 3. Далее, вновь вычисляются хеши от суммы хешей. Процесс повторяется, пока не будет получен единый хеш — корень дерева Меркла (merkle root). Он является криптографическим доказательством целостности блока (то есть 9 того, что все транзакции находятся в заявленном порядке). Значение корня фиксируется в заголовке блока. В биткойн-блокчейне деревья Меркла строятся с использованием двойного хеширования SHA-256. Вот пример хеширования строки hello: Первый раунд SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 Второй раунд: 9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50 2.2 Как работает блокчейн Узлы действуют либо в качестве майнеров, создающих новые блоки и чеканящих валюту (монеты), либо в качестве представителей, проверяющих транзакции и снабжающих их цифровой подписью. Важнейшее решение, которое требуется принимать в любой блокчейновой сети, - определить, какой узел, как правило, будет добавлять следующий блок к цепочке. Это решение принимается в соответствии с механизмом консенуса. 2.3 Как в блокчейне накапливаются блоки Рассмотрим, как блокчейн валидирует транзакции, создает блоки и добавляет их в цепочку, наращивая ее таким образом. 1. Узел начинает транзакцию, создав ее, а затем скрепив цифровой подписью, для которой использует свой закрытый ключ. Транзакция в блокчейне может означать различные действия. Как правило, это структура данных, представляющая передачу активов между пользователями блокчейновой сети. Транзакционная структура данных обычно 10 содержит некоторую логику передачи актива, действующие правила, адрес отправителя и адрес получателя, а также другую проверочную информацию. 2. Транзакция распространяется между участниками сети при помощи протокола затопления, именуемого Gossip, и участники проверяют транзакцию на основе предустановленных критериев. Как правило, для проверки транзакции требуется более одного узла. 3. После проверки транзакция включается в блок, который затем распространяется по сети. На данном этапе транзакция считается подтвержденной. 4. Новоиспеченный блок становится частью реестра, и новый блок криптографически подцепляется к этому блоку. Такая связь называется указателем хеша. На данном этапе транзакция получает второе подтверждение, а блок - первое. 5. Затем транзакции перепроверяются всякий раз при создании нового блока. Как правило, в сети биткойн требуется шесть подтверждений, чтобы транзакция считалась завершенной. Необходимо отметить, что шаги 4 и 5 считаются необязательными, поскольку фактически транзакция завершается после 3-го этапа; однако подтверждение блока и дальнейшие переподтверждения являются необходимыми и выполняются на этапах 4 и 5. 11 транзакций Рисунок 4. Пример работы блокчейна 3.0 Майнинг Майнинг – это предоставление своей вычислительной мощности для создания новых блоков в цепочке блокчейн, взамен на вознаграждение в виде эмитированных единиц установленных алгоритмом криптовалюты. Для продуктивного майнинга (mining) не достаточно персонального компьютера, так как он обладает низкими вычислительными способностями. Чем «железо» мощнее, тем большее количество протоколов можно идентифицировать. Единственны выход для владельцев подобных машин это объединение в пулы, что позволит участвовать в коллективной добыче монет. Однако не все участники пула получат одинаковую долю вознаграждения, так она распределяется в зависимости от вложенных усилий. Популярность цифровых валют создала повышенный спрос на видеокарты, которые подорожали за последний год почти в два раза. Если 12 раньше мощное устройство можно было купить за 15-20 тысяч рублей, то теперь приходится значительно переплачивать – 30 тысяч рублей. Небольшое отступление. Майнинг ферма — установка, вся вычислительная мощность которой направлена на подбор правильного хешкода к блоку транзакций, за нахождение которого в сети предусмотрено вознаграждение в виде новых криптомонет. Майнинг фермы могут собираться из различного оборудования: видеокарт, центральных процессоров, жестких дисков, специальных устройств ASIC-майнеров. Майнинг ферма на процессорах давно не актуальна, а асик-майнеры стоят достаточно дорого. В классическом понимании строится майнинг ферма на видеокартах, простыми словами можно сказать, что это видеокарты объединенные между собой для добычи криптовалюты. Готовая майнинг ферма для начинающих сравнима с самодельным компьютером узкой направленности. Устанавливать ее необходимо в нежилом помещении, поскольку при работе ферма издает сильный гул. Также требуется обеспечить оптимальное охлаждение и подключение к электросети. 13 постоянное Рисунок 5. Пример майнинг фермы Я считаю нужным добавить и про вирусы-майнеров. Добыча криптовалюты представляет собой огромное множество сложных расчётов. Для выполнения этих расчётов используются вычислительные мощности компьютеров. Многие майнеры (люди, занимающиеся майнингом) тратят огромные деньги на покупку техники, обеспечивающей выполнение нужных расчётов. Но создатели вирусов-майнеров пошли ещё дальше – они не хотят проводить крупные инвестиции, они хотят использовать вычислительные мощности вашего компьютера в целях личного обогащения. Именно в этом и заключается суть работы данного типа вирусов. Вирус вирусу рознь. Одни вирусы относительно безобидные (например, какой-нибудь браузер Амиго, устанавливающийся наперекор вашему желанию), а другие такие, которые иначе как откровенным вымогательством и угрозой не назовёшь (например, винлокеры, которые блокируют ваш компьютер и требуют перечислить деньги на определённый кошелёк для разблокировки). Майнер на первый взгляд кажется безобидным вирусом. Якобы кто-то зарабатывает на вас, но сами вы от этого ничего не теряете. Но это не совсем так. 14 Как было упомянуто выше, майнинг работает за счёт огромного множества расчётов. Чтобы проводить эти расчёты, компьютер нагружает свои аппаратные компоненты (процессор, оперативную память, но главным образом видеокарту, потому что именно в ней происходят все вычисления и именно её мощности интересуют злоумышленника). Чем сильнее эти компоненты загружены, тем больше они нагреваются. Чрезмерная нагрузка приводит к перегреву, а перегрев – к неисправности компонентов. В лучшем же случае наличие вируса-майнера отрицательно скажется на производительности компьютера, например, снизит FPS в играх (количестве кадров в секунду). 4.0 Алгоритмы майнинга 4.1 Что такое алгоритм майнинга? Алгоритм майнинга состоит из следующих шагов. 1. Заголовок предыдущего блока получен из сети Bitcoin. 2. Составляется список транзакций, транслируемых по сети, в предложенный блок. 3. Вычисляется двойной хеш заголовка предыдущего блока в комбинации с нонсом и нового предложенного блока с помощью алгоритма SHA-256. 4. Полученный хеш сверяется с текущим уровнем сложности (целью). Если он ниже, значит, задача PoW решена. В результате успешного решения задачи полученный блок транслируется по сети, и майнеры получают вознаграждение. 5. Если полученный хеш не ниже, чем текущий уровень сложности (цель), тогда процесс повторяется после прироста нонса. Процесс добычи монет превращает набор случайных данных в упорядоченную систематизированную информацию, которая впоследствии записывается в блокчейн. 15 Сегодня насчитывается несколько десятков алгоритмов криптовалют. Некоторые алгоритмы более популярны и используются для нескольких разных криптовалют (блокчейнов). Наиболее популярные криптографические алгоритмы хеширования на сегодняшний день это: DaggerHashimoto, Scrypt, SHA256, ScryptNf, X11, X13, Keccak, X15, Nist5, NeoScrypt, Lyra2RE, WhirlpoolX, Qubit, Quark, Axiom, Lyra2REv2, ScryptJaneNf16, Blake256r8, Blake256r14, Blake256r8vnl, Hodl, Decred, CryptoNight, Skunk, Lbry, Equihash, Pascal, X11Gost, Sia, Blake2s. Как видно список алгоритмов весьма велик, я расскажу подробнее о самых востребованных и надежных из них: SHA256 – именно на этом алгоритме построен классический биткоин, для работы с ним видеокарт уже давно не достаточно, так как для него наши братья-китайцы изобрели специальное оборудование – АСИКи (от английской аббревиатуры ASIC (application specific integrated circuit – интегральная схема специального назначения). На этом же алгоритме основано и множество копирующих биткоин криптовалют, например, недавно появившийся BitcoinCash. Scrypt – на этом алгоритме работает «цифровое серебро» — Litecoin. В своё время этот алгоритм был отличной альтернативой, когда АСИКи были разработаны только для SHA256. Но времена идут, появились Scrypt-ASIC и этот алгоритм большинству майнеров тоже недоступен. Ethash (DaggerHashimoto) – алгоритм хеширования, нашедший применение в криптовалюте Ethereum. Для эффективной работы требуется иметь видеокарты с большим объемом ОЗУ и желательно на основе микропроцессоров AMD, хотя и Nvidia 10-й серии неплохо справляется с DaggerHashimoto. X11 – применяется в монетке Dash, доступен для современных видеокарт. Однако в конце 2017 — начале 2018, появились первые партии ASIC-майнеров для Dash. 16 Decred – модификация алгоритма Blake256, применяется в криптомонете Decred. Можно майнить на видеокартах. Майнинг Decred чаще всего запускается параллельно с DaggerHashimoto на программе Claymore’s Dual Miner. CryptoNight – на основе данного алгоритма работает Monero. Алгоритм примечателен тем, что относительно неплохо вычисляется на процессорах. Конкретно в данную минуту процессор Intel Xeon E3 даёт мне около четверти доллара в сутки (сопоставимые цифры и для Intel Core I7). Смешной заработок, но у криптоинвестора любая машина должна майнить хотя бы в фоновом режиме. Equihash – лежит в основе валюты Zcash, довольно популярной в наше время среди майнеров на видеокартах, в силу того что сложность сети Ethereum (лидера у GPU майнеров) сильно возросла. X11Gost – алгоритм лежит в основе криптомонеты Sibcoin, которая еще называется «Сибирский Червонец». По сути это форк, российский аналог валюты Dash. Не буду вдаваться в криптографию, но отмечу, что в основе алгоритма лежит хеш-функция в соответствии с ГОСТ Р 34.11-2012. 17 4.2 Расширенная таблица с алгоритмами хеширования Таблица 1. Таблица алгоритмами хеширования криптовалют. Наименование Bitcoin Год Тикер Алгоритм Ключевые особенности 2009 BTC SHA-256 Флагман цифровых валют признан тысячью и одним правосубьектом даже Евросоюзом Ethereum 2015 ETH DaggerHashimoto Steemit 2016 STEEM SHA-256 Ripple 2013 XRP ECDSA DigiByte 2014 DGB SHA256 Monero 2014 XMR CryptoNight Siacoin Litecoin 2015 2011 SC LTC blake2b Scrypt Ethereum Classi 2015 ETC DaggerHashimoto Dogecoin 2013 DOGE Scrypt NEM 2015 XEM blockchain Syscoin 2014 SYS Scrypt Augur 2015 REP Dash 2014 DASH Smart contract X11 ByteCoin 2012 BCN CryptoNight Идея создание вычислительных мощностей для возможности реализации практически любого цифрового проекта Мультимедийный контент может быть встроен с других веб-хостов. Валюта созданная для банков, чтобы быстрее и защищеннее совершать транзакции. Разработана для устранения слабых мест Bitcoin & Litecoin Предназначенная для анонимных денежных транзакций Главная идея хранение данных Litecoin по большому счету клон Биткоин, только быстрее транзакции проходят В принципе тот же эфир просто ребята чегото не поделили и разделились, но стоит гораздо дешевле Полностью скопированный алгоритм с Litecoin с некоторыми изменениями. Популярность обусловлена большими вложениями в рекламу и символомкартинкой с изображением знаменитой собаки известным и почитаемым в узких кругах есть сервис нотариального заверения плюс позволяет вам осуществлять мгновенные платежи и денежные переводы по всему миру, не опасаясь высоких комиссий. Все кошельки надежно защищены и исключают шанс несанкционированного доступа. Имеет необычный алгоритм хеширования и ориентирован на децентрализованную торговлю. Syscoin — это не криптовалюта плюс платформа, это платформа, встроенная в криптовалюту. Augur использует мощности для прогнозирования финансовых рынков Позволяет почти полностью исключить отслеживание отправителя. По желанию пользователя можно не использовать и проводить транзакции напрямую. Защищает деньги пользователя самыми безопасными и современными криптографическими алгоритмами. Их невозможно взломать. Сама попытка взлома 18 BelaCoin 2014 BELA Scrypt lbryCoin 2016 LBC LBRY Radium 2015 RADS Smartchain Decred 2015 DCR Blake256 Einsteinium 2014 EMC2 Scrypt Gridcoin 2013 GRC BOINC VertCoin 2014 VTC Lyra2RE Dashcoin 2014 DSH CryptoNight Potcoin 2014 POT Scrypt Peercoin 2012 PPC SHA-256 Namecoin 2011 NMC SHA-256 Nautiluscoin 2014 MAUT NXT Expanse 2015 EXP DaggerHashimoto 19 потребует огромного количества дорогостоящей электроэнергии и вычислительной мощности суперкомпьютера. Вы единственный, кто может получить доступ к вашему кошельку. По крайней мере так утверждают разработчики Позволяет вам получать оплату за фотографии, которые вы публикуете С помощью lbry пользователи могут создавать и делиться своим контентом, таким как музыка, фильмы, живопись и т.д. В процессе загрузки контента на платформу пользователь может требовать плату за доступ Цель — задействовать возможности блокчейна для предоставления различных 100% децентрализованных сервисов. По сути это гибридная proof-of-work proofof-stake (PoW/PoS) консенсусная система, которая направлена на баланс между PoW майнерами и PoS избирателями что бы создать более надежное понятие консенсуса Наподобие kickstarter только для научных проектов Система, которая путем объединения вычислительных мощностей помогает решать задачи в медицине, биологии, математике, климатологии, астрофизике и других науках Позиционирует себя как форк полностью защищенный от ASIC майнеров. Выступает против монополизации майнинга. Анонимная криптовалюта следующего поколения так как сетевой код всегда обновляется с минимальными затратами на разработку и близкими к 0% ошибками протоколов Представляет легальную индустрию марихуаны Интересен возможностью получения монет не только майнингом видеокарты, но еще и генерацией новых монет — монетами уже имеющимися в кошельке Главным применением Namecoin является цензура-устойчивый домен верхнего уровня .bit, который функционально похож на .com или .net домены, но не зависит от ICANN, главного руководящего органа для доменных имен. Цель — доказать, что электронные валюты могут быть хорошим классом инвестиционных активов. Идея состоит в том, чтобы использовать новейшую технологию blockchain для создания всего, что может представить PinkCoin 2014 PINK X11 FoldingCoin 2014 FLDC Stanford Folding Navcoin 2014 NAV X13 ViaCoin DNotes 2014 2014 VIA NOTE Scrypt Scrypt Vcash 2014 XVC Blake256 сообщество и команда, используя децентрализованную автономную организацию с самофинансируемым дизайном, чтобы сохранить ее понастоящему децентрализованной Валюта создана на базе платформы Ethereum и обеспеченна фиксированным активом цветных бриллиантов Использует ваш компьютер для моделирования процесса сворачивания белков в теле человека. Результаты полученные в этом исследовании будут использованные на изготовление и получение новых медицинских препаратов, способов лечение, а также, возможно, с вашей помощью будут открыты новые открытия в медицине и исследовании белка в частности, а также лечение смертельноопасных заболеваний При дополнительном использовании NAVTech и Tor вы можете защитить свою личность при совершении частных покупок в Интернете. DNotes — peer-to-peer децентрализованная криптовалюта, передаваемая через Интернет, которая позволяет осуществлять мгновенную оплату любому человеку в мире. Это быстро и безопасно с минимальной комиссией как утверждают разработчики Vcash был спроектирован как инновационный и перспективный. Он предотвращает подслушивание и цензуру, способствует децентрализованным, энергоэффективным и мгновенным сетевым транзакциям. 20 4.3 Алгоритмы хеширования и криптовалюты 4.3.1 SHA-256 SHA-256 - это алгоритм хеширования, который приобрел популярность после его использования в коде биткоина. Аббревиатура SHA - это Secure Hash Algorithm, а 256 означает, что алгоритм криптовалюты генерирует 256битный хеш, т.е. строку (дайджест) размером 256 бит. Хешрейт для криптовалют, работающих на основе SHA-256, вычисляется в единицах Gigahash в секунду (GH/s). На создание блока уходит от шести до десяти минут. Особенности Алгоритм SHA-256 был изобретен Агентством Национальной Безопасности США в 2001 году. Он входит в семейство алгоритмов SHA и сейчас является единственным алгоритмом криптовалют из данного семейства, который прошел тест на устойчивость к таким видам атак как нахождение коллизий и нахождение прообраза, что имеет решающее решение для безопасности криптовалют, работающих на основе данного алгоритма. Помимо криптовалют, SHA-256 также широко используется в некоторых других технологиях. Например, работа протоколов безопасности, таких как TLS, SSL, PGP, SSH, построена на SHA-256. В 2009 году, когда Bitcoin был известен лишь очень ограниченному кругу людей, для майнинга использовали обычные компьютеры, которые производили вычисления при помощи центрального процессора. Позже начали применять более мощные графические процессоры. Однако сейчас, экономически когда выгодным популярность стало биткоина использование 21 просто огромная, лишь ASIC-майнеров - специальных устройств, обладающих большой вычислительной мощностью. Монеты алгоритма SHA-256 На алгоритме SHA-256 работает Bitcoin, а также ряд других криптовалют, которые в основном являются форками биткоина. Криптовалюты алгоритма SHA-256: 1. Bitcoin (BTC). 2. Bitcoin Cash (BCH). 3. Bitcoin SV (BSV). 4. Emercoin (EMC). 5. Namecoin (NMC). 6. Peercoin (PPC). 7. BitcoinDark (BTCD). 8. Litecoin Cash (LCC). 4.3.2 Equihash Equihash — это анонимный алгоритм криптовалют, увидивший свет в 2016 году. Первой криптовалютой, которая использовала Equihash в качестве базы, была Zcash. Создание блоков занимает 150 секунд, а хешрейт измеряется в Megahash в секунду (MH/s). В основе данного алгоритма лежит хеш-функция, которая построена на принципе «Парадокса дней рождений» это математическая закономерность, которая используется для расчета вероятности. Правило гласит: Если в комнате находится 23 человека, то вероятность того, что день рождения как минимум двух из них приходится на один и тот же день, составляет 50%. Исходя из этой закономерности, вероятность нахождения числа nonce в процессе майнинга равняется 2, вознесенное в степень N и разделенное на 2. 22 Особенности Этот алгоритм криптовалют был разработан Александром Бирюковым и Дмитрием Ховратовичом — учеными Университета Люксембурга, которые входят в исследовательскую группу CryptoLUX. В 2016 году разработка была представлена широкому круга. Equihash требователен к объему оперативной памяти, а не к скорости обработки математических вычислений. Это делает майнинг «айсикоустойчивым», а сеть более децентрализованной. Для майнинга криптовалют, работающих на Equihash, используются видеокарты, обладающие минимальным объемом памяти в 2 Гб. Самые лучшие результаты показало применение графических процессоров бренда NVidia. Однако для майнинга Equihash также были разработаны устройства ASIC. Сегодня самыми популярными являются две модели: Antminer Z9 mini от Bitmain и A9 ZMaster от менее известной компании Innosilicon. В отличие от команды Monero, разработчики Zcash не предприняли никаких действий для защиты своей криптовалюты от централизации майнинга, а лишь высказали свое огорчение. Монеты алгоритма Equihash Самые популярные криптовалюты, работающие на алгоритме Equihash: 1. Zcash (ZEC). 2. Bitcoin Gold (BTG). 3. Komodo (KMD). 4. ZClassic (ZCL). 5. ZenCash (ZEN). 6. Bitcoin Private (BTCP). 23 4.3.3 Алгоритм Ethash (Dagger Hashimoto) Ethash (Dagger Hashimoto) — это алгоритм криптовалют, разработанный специально для майнинга Ethereum. В основу работы данного алгоритма хеширования положены два разных алгоритма: Dagger, созданный Виталиком Бутериным, и Hashimoto (название состоит из слов hash, shift, and modulo), разработанный программистом Thaddeus Dryja. Хейшрейт алгоритма Ethash измеряется в Megahash в секунду (MH/s). Особенности Dagger — это алгоритм криптовалют, который предъявляет жесткие требования к памяти видеокарты. Принцип его работы похож на Scrypt, однако его производительность выше, особенно это заметно в условиях повышения сложности сети. Но Dagger имеет некоторые уязвимости, поэтому он эффективен только в паре с Hashimoto. Алгоритм Hashimoto работает с операциями ввода/вывода в особом режиме. В частности, он ограничивает скорость добычи, из-за того, что количество памяти для записывания и считывания информации не является бесконечным. Hashimoto — это алгоритм криптовалют, который требует большой объем памяти, за счет чего не получается выполнить большое количество операций ввода/вывода, т.е. для расшифровки не получится использовать метод бесконечного подбора случайных значений. Это и являлось основной причиной того, почему устройства ASIC не подходили для майнинга Ethereum (об этом ниже). Для майнинга монет, работающих на основе Ethash, используется вычислительная мощность GPU-процессоров (видеокарт). Наибольшую эффективность показали видеокарты бренда AMD. Однако и применение видеокарт Nvidia 10-й серии приносят неплохой профит майнерам. 24 Основное требование - это высокий показатель оперативной памяти, который постоянно увеличивается из-за роста сложности сети. Как мы говорили выше, устройства ASIC не подходили для добычи монет, работающих на основе Ethash, однако все изменилось летом 2018 года, когда крупнейший китайский производитель майнеров Bitmain выпустил в продажу модель Innosilicon A10 ETHMaster, т.е. ASIC для Ethereum. Монеты алгоритма Ethash Изначально Ethash был создан для Ethereum, однако этот алгоритм также используют и другие монеты. Криптовалюты, в которых используется алгоритм Ethash: 1.Ethereum (ETH). 2. Ethereum Classic (ETC). 3. Ubiq (UBQ). 4. Expanse (EXP). 5. Pirl (PIRL). 6. Musicoin (MUSIC). 7. QuarkChain (QKC). 4.3.4 Scrypt Scrypt — это алгоритм майнинга криптовалют, который раньше был интересен многим одиночным майнерам в виду его устойчивости к так называемой «аппаратной атаке». Скорость создания блоков в блокчейне, работающем на базе Scrypt, составляет около 30 секунд. Хешрейт как и у Ethash измеряется в Megahash в секунду (MH/s). Scrypt, прежде всего, стал популярным благодаря его применению в криптовалюте Litecoin. 25 Особенности История создания этого алгоритма началась с того, что вскоре стало ясно, что майнинг биткоина очень легко монополизировать, из-за того что простота функции SHA-256 позволяет автоматизировать процесс майнинга. Поэтому основной задачей при создании Scrypt было усложнение механизма генерации блоков за счет повышенных требований к ресурсам, используемым для вычислительных операций. В частности, решающее значение имеет объем оперативной памяти (как и в Ethash), при этом требования к энергопотреблению и вычислительной мощности намного ниже чем в случае SHA-256. Изначально для добычи криптовалют на основе Scrypt применялись центральные и графические процессоры, однако алгоритм не мог противостоять майнинг-корпорациям и в 2014 году был создан первый ASIC для Scrypt-монет. В ответ на это криптоэнтузиасты создали усовершенствованный алгоритм под названием Scrypt-N, который впервые был применен в монете Vertcoin. Отличается он тем, что требования к оперативной памяти постоянно растут. Монеты алгоритма Scrypt Алгоритм майнинга Scrypt положен криптовалют: 1. Litecoin (LTC). 2. Dogecoin (DOGE). 3. Redcoin (RED). 4. Monacoin (MONA). 5. Viacoin (VIA). 6. Syscoin (SYS). 26 в основу работы следующих 4.3.5 X11 X11 - это алгоритм хеширования, в котором вместо одной функции используются одинадцать. Это означает, что данная технология может обеспечить высокую степень безопасности, ведь чтобы нанести вред системе, злоумышленнику придется взломать все 11 функций, а это очень маловероятно, потому что внесенные изменения будут видны уже после взлома первой функции, и у разработчиков будет масса времени защитить систему, прежде чем хакер дойдет до одиннадцатой функции. Алгоритм криптовалют X11 был создан специально для майнинга Dash. Особенности Данный алгоритм хеширования был разработан создателем одной из топовых криптовалют (Dash, в прошлом Darkcoin) — Эваном Даффилдом. Все началось с того, что он хотел улучшить анонимность и взаимозаменяемость биткоина, однако сообщество не одобрило его идею. Тогда Эвану не оставалось ничего, кроме как создать свою собственную криптовалюту. По словам Даффилда на разработку ушли всего лишь одни выходные. Еще одним достоинством X11 является то, что майнинг криптовалют, созданных на его основе, является очень экономным в плане потребления энергоресурсов. Следует сказать, что энергоэффективность — это всего лишь приятный «бонус», так как Эван не ставил за цель создать алгоритм, который бы не требовал больших энергозатрат. Данное свойство заметили майнеры. Проведенные эксперименты показали, что добыча Dash на видеокартах потребляет на 30-50% меньше электроэнергии, чем майнинг Bitcoin на ASICустройствах. Для добычи монет, которые работают на основе алгоритма X11, можно использовать не только GPU, но и CPU. Это один из немногих сегодня алгоритмов, который допускает майнинг на процессорах, что делает его 27 привлекательным для одиночных майнеров и небольших компаний. Конечно, ASIC для добычи криптовалют на основе алгоритма X11 также существуют. Как признался сам создатель X11, он не старался создать «айсикоустойчивый» алгоритм, однако он сделал все возможное, чтобы производителям пришлось «хорошенько потрудиться». На данный момент X11 — не единственный в своем роде, который использует больше одной хеш-функции. По его примеру были созданы другие алгоритмы, которые также построены на интеграции нескольких хеш-функций: X12, X13, X14, X14, X15, X16 и даже X17. Однако X11 до сих пор является самым популярным и самым используемым. Монеты алгоритма X11 На алгоритме криптовалют X11 созданы следующие монеты: 1. Dash (DASH). 2. Pura (PURA). 3. Tao (XTO). 4. Synergy (SNRG). 5. Enigma (ENG). 6. CannabisCoin (CANN). 4.3.6 Crypto Night CryptoNight — это алгоритм для анонимных криптовалют, в основе которого лежат такие технологии как кольцевые подписи и одноразовые адреса. Он стал, прежде всего, известен благодаря криптовалюте Monero (XMR). Генерация блока занимает около 60 секунд. 28 Осебенности Применение CryptoNight позволяет создать конфиденциальную, защищенную и взаимозаменяемую цифровую валюту. Эти свойства достигаются благодаря применению протокола CryptoNote, который был создан в 2012 году блокчейн-разработчиком (или группой разработчиков) под псевдонимом Николас ван Саберхаген. До сих пор неизвестно, кто скрывается за этим именем. Высокая степень анонимности алгоритма CryptoNight достигается благодаря использованию двух технологий: Кольцевые подписи (шифруют отправителя); Одноразовые адреса (шифруют получателя). Из-за того, что транзакции являются абсолютно анонимными, все монеты, построенной на алгоритме криптовалют CryptoNight, являются взаимозаменяемыми. Это означает, что они не имеют «темного прошлого», как, например, Bitcoin, блокчейн которого позволяет отследить движение определенного коина и его участие в «грязных делах». Еще одна очень важная особенность данного алгоритма состоит в том, что для майнинга наиболее эффективными является использование CPU в паре с GPU, хотя добыча только на центральном процессоре тоже дает положительные результаты. И, напротив, применение устройств ASIC является экономически невыгодным. Секрет в том, что CryptoNight требовательный к оперативной памяти (для правильной работы нужно минимум 2 Гб), а не к скорости проведения математических вычислений, в чем сильны ASIC-майнеры. Процесс поиска правильного nonce для генерации блока состоит в том, что CryptoNight создает вычислительного рандомные устройства, а блоки, не которые отправляет хранит в памяти непрерывные частые обращения к майнеру с целью проведения математических операций, как это 29 происходит в случае использования алгоритма SHA-256 (используемого для Bitcoin). Это позволяет построить более децентрализованную сеть и не допустить возникновения ситуации, когда больше половины хешрейта принадлежит одному узлу, и существует высокая вероятность проведения атаки 51%. Для эффективного майнинга криптовалют, работающих на основе CryptoNight, стоит использовать центральные процессоры Intel Core поколений i5 и i7. Также хорошие результаты показывает применение оборудования бренда Radeon HD (новые модели). Кроме того, для майнинга криптовалют на основе CryptoNight можно использовать ASIC-майнеры. На данный момент для этого подходят такие модели: Antminer X3, Baikal Giant-N, PinIdea RR-200, DragonMint X1/X2. Однако стоит отметить, что Monero каждый год вносит изменения в протокол, которые помогают защитить добычу монеты от использования ASIC. Но другие монеты, работающие на CryptoNight, например, Bytecoin, Aeon, без проблем добываются при помощи ASIC. Монеты алгоритма CryptoNight На анонимном алгоритме CryptoNight созданы следующие криптовалюты: 1. Monero (XMR). 2. Bytecoin (BCN). 3. DigitalNote (XDN). 4. Electroneum (ETN). 5. Aeon (AEON). 6. CryptoNoteCoin. 30 SHA-256 был первым алгоритмом хеширования, который нашел свое применение в криптовалютах. Однако он является далеко несовершенным, в виду низкой степени взаимозаменяемости. Это анонимности, послужило конфиденциальности стимулом для создания и более продвинутых криптографических алгоритмов. Монополизация сферы майнинга из-за использования огромных ASICферм - это еще одна проблема криптомира. Поэтому современные алгоритмы майнинга стремятся ограничить применение ASIC устройств для добычи новых монет. Добиться этого удается путем установления высоких требований к оперативной памяти, а не к скорости вычислений, что актуально для SHA256. Несмотря на то, что для добычи большинства монет уже созданы ASIC, их использование не всегда является экономически выгодным и оправданным. 4.3.7 Алгоритм SHA-256. Подробный разбор Криптографическая функция хеширования на вход получает блок с данными, а выдаёт небольшой, но непредсказуемый, выход. Она спроектирована так, что не существует быстрого способа получить нужный выход, и вы должны продолжать перебор пока не найдёте подходящее значение. Биткойн использует SHA-256 в качестве такой функции. Причём для усиления стойкости SHA-256 применяется к блоку дважды и называется уже двойным SHA-256. В биткойне критерием валидности хеша является достаточное число нулей в его начале. Найти такой хеш так же сложно, как, к примеру, найти номер машины или телефона, заканчивающийся на несколько нулей. Но, конечно, для хеша это экспоненциально сложнее. На текущий момент, правильный хеш должен содержать примерно 17 стартовых нулей, чему удовлетворяет только 1 из 1.4x1020. Если провести аналогию, то найти такое 31 значение сложнее, чем обнаружить конкретную частичку среди всего песка на Земле. На схеме ниже показан типичный блок в цепочке и его хеш. Желтым выделены байты, которые и участвуют в процессе хеширования. В данном примере хеш валиден и имеет достаточное число нулей в своём начале. Однако это нечастый случай, и обычно майнеру приходится перебирать значение поля nonce или других доступных для изменения данных. Рисунок 6. Структура биткойн блока Алгоритм работает с данными, разбитыми на куски по 512 бит (64 байт), криптографически их смешивает и выдаёт 256-битный (32 байта) хеш. SHA-256 состоит из относительно простого раунда, повторяющегося 64 раза. Снизу, как раз, и показан такой раунд, принимающий на вход 8 4-байтовых слов — от A до H. 32 Рисунок 7. Один раунд SHA-256 для восьми входных слов A-H Синие блоки нелинейно перемешивают биты для усложнения криптографического анализа. Причём для еще большей надежности используются разные функции перемешивания (если вы сможете найти математическую лазейку для быстрого генерирования валидных хешей, то возьмёте под контроль весь процесс майнинга биткойнов). Функция большинства (Ma блок) побитово работает со словами A, B и C. Для каждой битовой позиции она возвращает 0, если большинство входных битов в этой позиции — нули, иначе вернёт 1. Блок Σ0 циклически сдвигает A на 2 бита, затем исходное слово A циклически сдвигается на 13 бит, и, аналогично, на 22 бита. Получившиеся три сдвинутые версии A побитово складываются по модулю 2 (обычный xor, (A ror 2) xor (A ror 13) xor (A ror 22)). Ch реализует функцию выбора. На каждой битовой позиции проверяется бит из E, если он равен единице, то на выход идёт бит из F с этой позиции, иначе бит из G. Таким образом, биты из F и G перемешиваются, исходя из значения E. Σ1 по структуре аналогичен Σ0, но работает со словом E, а соответствующие сдвиговые константы — 6, 11 и 25. 33 Красные блоки выполняют 32-битное сложение, формируя новые значения для выходных слов A и E. Значение Wt генерируется на основе входных данных (это происходит в том участке алгоритма, который получает и обрабатывает хешируемые данные. Он вне нашего рассмотрения). Kt — своя константа для каждого раунда. На схеме сверху заметно, что только A и E меняются за один криптографический раунд. Остальные слова не меняются, но сдвигаются на выходе — старое A превращается в выходное B, старое B — в новое C, и так далее. Хотя отдельный раунд алгоритма не сильно изменяет данные, но после 64 раундов, входная информация будет полностью зашифрованной. Алгоритм майнинга вручную: Я изучил довольно интересную статью Кена Ширриффa (Ken Shirriff) и решил повторить его эксперимент самостоятельно. Насколько быстро можно майнить биткойны вручную? Хеширование SHA-256 достаточно простое и может быть вычислено даже без компьютера. Само собой, процесс очень небыстрый и совершенно непрактичный. Но, пройдя все шаги на бумажке, можно хорошо разобраться в деталях работы алгоритма. Чтобы просчитать одну итерацию хеш-функции SHA-256 начнем с восьми входящих значений: A, B, C, D, E, F, G , H - для первой итерации они являются постоянными величинами. Сначала нужно перевести эти значения в двоичную систему счисления. Результат перевода написан красным маркером (рис. 1). В качестве первого действия посчитаем значение мажоритарной функции для A, B и C: Ма(A, B, C)=(A ∧ B) ⊕ (A ∧ C) ⊕ (B ∧ C). Далее переводим эти значения обратно в шестнадцатиричную систему счисления. Результат операции maj выделен зеленым цветом. Следующий шаг. Начиная со строки А, смещаем все ячейки вправо на 2 две клеточки. После этого смещаем А на 13 клеточек вправо и заканчиваем смещением на 22 клеточки (∑0(A) = (A ≫ 2) ⊕ (A ≫ 13) ⊕ (E ≫ 22)) ). На рисунке 1 эти действия происходят под символом «>>>». Складываем 3 значения из смещенных ячеек и определяем четное число или нет. Если число четное, ставим «0», если нечетное, то ставим «1». В результате сложения у меня получился такой результат: fe02b3fe. Рассмотрим E, F, G. Так же переводим их в двоичную систему счисления. Сложим E, F, G нелинейным методом, который называется «выбор» Ch(E, F, G)=(E ∧ F) ⊕ (¬E ∧ G). Если клеточка в строке Е равна 34 нулю, мы обводим значение в строке G, если же это единица, то мы обводим ячейку в строке F. Выписываем обведенные ячейки в строку Ch и переводим в шестнадцатиричную систему счисления. Далее делаем тоже самое смещение, которое мы делали в строке А. На этот раз смещение будет на 6, на 1, на 25 ячеек (∑1(E) = (E ≫ 6) ⊕ (E ≫ 11) ⊕ (E ≫ 25)) . Тем же самым способом сложим 3 значения в каждой найденной строке. Переходим к пометке 2. Нужно сложить все полученные значения, чтобы получить их первую сумму. Буква «W» будет нашим входным значением. Это первый раз, когда наши входные данные становятся хешем. Запишем еще одну константу «k». Ниже вводим значение H, оно остается без изменений. Далее запишем значение Ch и сумму, которые мы посчитали ранее и сложим все эти значения в шестнадцатиричной системе счисления. Получаем число 19AD4D4D2 – первая сумма. Теперь нам нужно посчитать новое значение константы А. Здесь мы должны сложить 3 значения: сумма, которую мы получили ранее, значение maj и «первую сумму» из метки №2. Складываем эти числа в шестнадцатиричной системе счисления и на выходе получаем новое значение константы. В результате всей проделанной работы мы посчитали одно из наших выходных значений. Новое значение B это предыдущее значение A, новое значение C это предыдущее значение B, новое значение D это предыдущее значение C. Для того, чтобы посчитать новое значение E возьмем значение D(5113E2BE) и добавим к нему «первую сумму». Мы получили новое значение E. Новое значение F это предыдущее значение E, новое значение G это предыдущее значение F, новое значение H это предыдущее значение G. Мы завершили первый раунд хеширования SHA-256. У меня это заняло достаточно много времени, около часа, если учитывать разбор самого алгоритма. Если получить достаточно опыта в этом деле, то можно уложиться и за 15 минут. Как говорилось ранее таких раундов нужно 64. С такой скоростью обсчёт целого блока Bitcoin займёт примерно полтора дня, так что производительность «ручного метода» можно оценить в 0,67 хеша в сутки, а килокалорий на 1 хеш тратится, примерно, в 6-7 раз дороже, чем процессор на электричестве. 35 Рисунок 8. Алгоритм майнинга вручную 36 5.0 Вывод В связи с возрастающим влиянием электронных денег в мировой экономике и постепенным внедрением технологий распределённого реестра во многие сферы жизни общества, нельзя не сказать об актуальности детального изучения технологии блокчейн. В рамках данной курсовой работы были достигнуты следующие результаты: - Изучены основные понятия и принципы, заложенные в технологии блокчейн. -Изучены алгоритмы майнинга для построения современных блокчейнов. 37 6.0 Список литературы 1. Имран Башир. Блокчейн: архитектура, криптовалюты, инструменты разработки, смарт-контракты / Имран Башир. - ДМК Пресс, 2019. – 538 с. 2. Майнинг криптовалюты [Электронный ресурс]. – Режим доступа: https://mining--cryptocurrency-ru.turbopages.org/mining- cryptocurrency.ru/s/algoritmy-kriptovalyut/. 3. Yainvestor.guru [Электронный ресурс]. – Режим доступа: https://yainvestor.guru/wp-content/uploads/2017/11/754557113035132.jpg 4. AltcoinGid [Электронный ресурс]. – Режим доступа: https://altcoingid.ru/algoritmymajninga.html#Таблица_алгоритмов_применяемых_в_криптовалютах 5. Консультант по ПК и технике [Электронный ресурс]. – Режим доступа: https://pc-consultant.ru/bezopasnost/virus-majner-kak-najti-i-udalit/#i 6. Ken Shiriff Bitcoin mining the hard way: the algorithms, protocols, and bytes [Электронный ресурс]. – Режим доступа: http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html 7. Coinhome [Электронный ресурс]. – Режим доступа: https://www.youtube.com/watch?v=aBb_-bbA4ao&t=291s 38