Алгоритм биткоина и его роль в майнинге
Термин алгоритм биткоина люди используют, обсуждая криптовалюты, но подразумевают под этим понятием разные вещи. Ведь алгоритм майнинга биткоина SHA-256 используется в решении нескольких задач сети Биткоин:
- для цифровых подписей и аутентификации;
- в mining как доказательство его работы;
- для создания адресов биткойнов;
- для повышения безопасности и конфиденциальности;
- как алгоритм покупки биткоина и других видов монет.
Чтобы понять, что такое алгоритмы майнинга криптовалют, SHA, Scrypt, X15 и остальные, нужно познакомиться с теорией Хеш-функции:
Это процесс превращения информации математическими способами в строчку заданной длины.
Принцип шифрования информации биткоина
Алгоритм хеширования биткоина используется для наилучшего контроля данных методом сравнения. Когда информация обработана и переведена в хеш, обратно данные из него получить нельзя.
Если выберете захешированный файл биткоина, повторите расчёт и узнаете, что строчки хешей сходятся, значит, исходные данные не менялись.
В противном случае несовпадение означает, что информация начального файла изменилась, следовательно, нарушена безопасность системы хранения bitcoin и распространения данных.
Miner сети Биткоина перепроверяют и сравнивают хеши найденных при майнинге блоков, чем больше задач решено, тем сложнее следующие расчёты.
На каких алгоритмах майнятся криптовалюты
Функция Биткоина SHA — Secure hash Algorithm, это секретный хеш-алгоритм, генерирующий уникальную 256-битную или 32-байтную подпись для текстовой строки.
Но, функции есть разные, системы задаются крипто разработчиками виртуальных валют. Программисты используют много концепций, поэтому список алгоритмов криптовалют обширен. Вот некоторые, кроме популярных Scrypt и SHA для Биткоина:
- Scrypt Nf для Leocoin;
- X11 для Dash и Vcash;
- X13 для Ambercoin;
- Equihash для Bitcoin gold.
SHA-256 и Scrypt — самые распространённые системы алгоритмов для подтверждения блоков транзакций.
По поводу этих двух алгоритмов ведутся энергичные дискуссии. Майнеры Биткоина и последователи криптовалют часто спорят, какой подход выбрать лучше в плане сочетания доходности и безопасности.
Основные показатели алгоритма Биткоина
Если термин хеш чаще относится к вычислениям в целях майнинга, то понятие hash-ставка встречается в описании характеристик оборудования для добычи криптовалюты в pool и калькуляторах прибыльности. Чем выше хеш коэффициент, необходимый для успешной добычи, тем дольше и сложнее сам процесс майнинга.
Отсюда существует термин hash-сложность каждого типа валюты — KH/s, Килохеш в секунду или 1 тысяча хэш-вычислений в секунду, аналогично:
- MH/s, Мегахеш или 1 миллион хешей.
- GH/s, Гигахеш или 1 миллиард хешей.
- TH/s, Террахеш или 1 триллион хешей.
- PH/s, Петахеш или 1 квадриллион хешей.
Когда речь идёт о квадриллионах — единице с пятнадцатью нулями, ясно, что такая производительность криптовалюты недоступна обычным компьютерам, а тем более планшетам и требует большой объем энергии. Техническим требованиям соответствуют ASIC — устройства с видеокартами, выпускаемые специально под цели майнинга.
Какие криптовалюты майнятся алгоритмами SHA256
Алгоритм майнинга bitcoin SHA256 сложнее Скрипта, используется для большинства валют на основе кода BTC.
Обработка блоков криптовалюты с SHA-256 имеет тенденцию к замедлению транзакций, но очень надёжен, здесь практически исключены ошибки.
Сторонники кода Биткоина также говорят, что это лучше для общей безопасности данных. Что можно майнить на SHA-256, кроме Bitcoin:
- Биткоин Cash, 21Коин, Namecoin;
- Takeicoin, Unicoin, Zetacoin;
- PetroDollar Unobtanium.
Это далеко не полный перечень — код для шифрования открыт, воспользоваться им может любой человек. Учитывая, что общее число видов криптовалют приближается к 1600, многие монеты основаны на коде Биткоина.
Какие валюты майнит алгоритм Scrypt
Scrypt является более быстрым и простым алгоритмом:
- Scrypt легко запускать на CPU.
- Использует меньше энергии, чем майнинг алгоритм SHA256.
- Подходит для индивидуального майнинга, в том числе на обычных компьютерах.
Противники алгоритма утверждают, что чем проще система, тем восприимчивее к проблемам безопасности и делает менее тщательный анализ данных.
Сторонники указывают, что реальных проблем не возникает, а майнинг криптовалюты добываемых на scrypt имеют качественное шифрование.
На Scrypt майнятся:
- Litecoin, Dogecoin, Novacoin;
- WorldCoin, FeatherCoin;
- DigitalCoin и множество других виртуальных монет.
Со временем ожидаются проблемы с хешем для самых популярных валют, использующих алгоритм добычи SHA-256 Биткоина.
С этим уже столкнулась сеть Биткоина, выпуск форка Cash мало помог в решение проблемы.
Сложность ограничивает прибыльную добычу, как результат, ожидается, что новые цифровые валюты, использующие Scrypt, будут более выгодные майнерам, следовательно, вырастет их популярность, основанная на простоте добычи в одиночку.
Как вы считаете какой из алгоритмов более выгоден, перспективен? Расскажите каким пользуетесь вы.
Майнинг на бумаге, при помощи дыхания и другие способы добычи криптовалют :: РБК.Крипто
С момента создания цифровых активов было испробовано множество способов их добычи, для которых использовались не только промышленные ASIC-майнеры и видеокарты
Самые первый биткоины были добыты на обычных центральных процессорах, которые обеспечивают работу персональных компьютеров. За 12 лет индустрия майнинга первой криптовалюты выросла в тысячи раз. На смену процессорам и видеокартам пришли существенно их превосходящие по вычислительной мощности промышленные ASIC-майнеры. Однако энтузиасты создавали и другие, необычные способы майнинга.
Лунная миссия «Аполлон»
Программист из США Кен Ширифф попробовал заняться добычей криптовалюты на бортовом управляющем компьютере (AGC), который использовался на командных и лунных модулях миссии «Аполлон». Устройство было создано в 1960-х годах и на тот момент являлось передовой разработкой.
В 2019 году, когда средний хешрейт биткоина составлял 71 Eh/s (экзахеш в секунду), по данным BitInfoCharts, 15-битная вычислительная машина добывала один хеш за 5,1 секунды. 1 экзахеш — это 1 квинтиллион хешей.
Уже на тот момент Ширифф понял, что AGC никогда не добудет даже одного блока, поскольку для этого устройству необходимо в миллиард раз больше времени, чем существует Вселенная. В среднем на нахождение одного блока биткоина уходит около 10 минут, поэтому AGC не будет успевать проводить вычисления для добычи криптовалюты.
Добыча блоков на листе бумаги
Кен Ширифф пошел еще дальше и попробовал способ добычи биткоина, для которого не требуется никаких устройств. Разработчик решал математические задачи, необходимые для добычи, вручную на листе бумаги, а затем результаты расчетов самостоятельно вносил в блокчейн.
Решение одного цикла алгоритма, необходимого для добычи хеша, занимало у Шириффа в среднем 16 минут 45 секунд. Это обеспечивало 0,67 хеша в день. Главный минус этого способа заключается в том, что майнинг прекращался, как только программист переставал самостоятельно производить вычисления. Для сравнения, бортовой управляющий компьютер, на котором Ширифф также пытался добывать цифровые монеты, получал хеш каждые 5 секунд.
Майнинг дыханием
Британский исследователь Макс Дуви в 2017 году предложил майнить криптовалюту с помощью дыхания. Дуви создал устройство для добычи цифровых монет на основе спирометра (медицинский инструмент для измерения объема легких). Подключенный к спирометру микрокомпьютер Raspberry Pi преобразует дыхание в вычислительную мощность, которая используется для добычи Monero (XMR).
Сам исследователь отмечает, что смысл его изобретения заключается не в получении прибыли, а в популяризации экологически чистых и альтернативных способов майнинга. Дуви представил созданное им устройство на фестивале цифрового искусства GENERATORprojects. За все время майнер, основанный на спирометре, добыл всего $0,04 (0,000226495645 XMR с учетом курса на момент добычи).
Мечети и бесплатное электричество
Нередко майнеры придумывают необычные способы получения электричества для добычи цифровых денег. Сейчас в Иране действует временный запрет на майнинг криптовалют из-за засухи, которая привела к дефициту электроэнергии в результате малой эффективности гидроэлектростанций. До сих пор власти страны продолжают бороться с предприятиями по добыче криптовалют, которые работают незаконно.
В Иране мечети обеспечивают бесплатным электричеством. В 2019 году представитель министерства энергетики Ирана Мустафа Раджаби Машхади призвал к борьбе с мечетями, которые, по его словам, тратят энергоресурсы впустую, занимаясь майнингом. Машхади опубликовал в Twitter фотографию одну из таких мечетей с установками для добычи криптовалют.
По словам представителя иранского Минэнерго, около 100 ASIC-майнеров могут приносить $260 тыс.
Использование тепла
При работе ASIC-майнеров образуется большое количество тепловой энергии, поэтому на майнинг-фермах используются системы охлаждения. Сооснователь чешской криптобиржи NakamotoX Камил Брейча решил использовать эту энергию от майнеров для обогрева овощных теплиц.
Брейча запустил блокчейн-стартап Agritechture, который начал размещать ASIC-майнеры в теплицах, где выращивают помидоры.
— «Ожидания завышены». Почему уже поздно начинать майнить Chia Coin
— Майнеры биткоина возобновили накопление криптовалюты
— Почему в России не будут вводить запрет на майнинг
Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.
Автор
Алексей Корнеев
Инструкция по добыче одного блока биткоина — DeCenter Magazine
Рассмотренное ранее определение термина «блокчейн» практично и емко повествует об основных характеристиках технологии. Вместе с тем мы знакомимся с идеями практического применения данной системы в реальных условиях, будь то бизнес или государственный аппарат.
Но чтобы лучше разбираться в нюансах майнинга криптовалют, необходимо рассмотреть блокчейн как структуру и изучить каждый отдельный его аспект: что такое блоки, откуда они берутся и как найти хотя бы один блок самостоятельно.
Начнем с того, что блокчейн (Block — блок, chain — цепь) — это децентрализованная база данных, которая предназначена для хранения последовательных блоков с набором характеристик (версия, дата создания, информация о предыдущих действиях в сети). Аналоговым примером его структуры представляется бесконечно длинная металлическая цепь, в которой нельзя разорвать или поменять местами звенья.
Блоки, найденные майнерами, и есть те самые звенья. При создании блока в нем делается запись обо всех предыдущих действиях и транзакциях, затем он запечатывается и сохраняется в блокчейн на тысячах клиентских устройств в сети. Таким образом, мы не сможем отредактировать, удалить или переместить их. Только найти и добавить следующие. В этом и скрыта вся прелесть технологии.
Майнинг — это простейший перебор миллионов комбинаций кода, среди которых скрыто верное и уникальное значение (хэш) для каждого нового блока в сети. Поэтому, чтобы их находить, а, следовательно, подтверждать транзакции и поддерживать работу блокчейна монеты, необходимы постоянные и непрерывные вычисления.
Впрочем, разработчики пытаются оптимизировать алгоритмы добычи или вообще избавиться от классического майнинга и изменить способ подтверждения транзакций с помощью PoS системы. Ведь на поиск биткоинов уходит невероятное количество энергии. Если взять за среднее значение показатели мощности и энергопотребления ASIC-майнера Antminer S9, то на данный момент сеть биткоина потребляет около 5 ГВт электроэнергии в час.
Пока не будем вдаваться в числовые подробности, а разберемся с тем, как происходит добыча блоков. Перед майнером стоит задача решить математическую головоломку, чтобы быстрее всех разгадать ключ к блоку и вычислить подходящий криптографический код. С помощью сверхбыстрого (об этом мы еще поговорим) перебора комбинаций находится ключ nonce (number only used once), который откроет правильный хэш блока. Соответственно, чем быстрее сеть (так мы называем совокупность всех майнерских мощностей в сети монеты) решает такие задачи, тем быстрее находятся блоки. Так выглядит хэш блока биткоина:
0000000000000000002037646f063ea032548c4906a6a2b6e16d7ee90c8ba9bc
Для справки: количество нулей bits в начале хэша регулируется автоматически для уравнивания сложности сети. Это необходимо, чтобы ограничить эмиссию монеты. Так как эмиссия биткоина ограничена объемом монет в 21 миллион, возникает необходимость регулировать и ограничивать количество добываемых блоков в сети. Это и есть сложность майнинга. Математический расчет показал, что последний биткоин будет добыт в 2140 году. Так, Сатоши Накамото, создатель биткоина, первым предложил внедрить алгоритм увеличения сложности поиска блока в сети. То есть чем больше майнеров присоединяются к добыче, тем сильнее система закручивает гайки.
Возникает вопрос: если вычисления выполняются по инструкции, почему бы нам не попытаться найти блок вручную? Довольно простой алгоритм SHA256 можно повторить на бумаге, как это сделал в своем блоге американский энтузиаст-разработчик Кен Ширрифф.
Для криптографического перемешивания используются входные данные весом в 512 бит, которые впоследствии разделяются и образуют результат в 256 бит. Вычисление поделено на раунды, как на картинке ниже. Каждый такой раунд выполняется в 64 прохода.
После прохождения 64 кругов подбора на выходе получится уникальный код для шифрования свежего блока. Этот процесс довольно прост с точки зрения математических расчетов, но очень объемен и его практическое применение возможно лишь с учетом того, что каждый такой раунд будет выполняться молниеносно. Да, вручную такая задача решаема, но бессмысленна, ведь подсчет всего одного раунда будет длиться намного дольше, чем майнеры найдут валидный блок.
Так или иначе, каждый может попробовать себя в роли настоящего гения криптографии и найти блок биткоина на бумаге. Кен Ширрифф поделился знаниями и записал практическую часть процесса на видео.
Кратко разберем происходящее. Слова от A до H выписаны в столбик. Каждое из них записано в шестнадцатеричной системе, затем их переводят в двоичную. Итог maj находится под C, сдвиги и 0 записаны над шестнадцатеричным видом A. Функция выбора записывается под G, и, наконец, соответствующие сдвинутые версии E и значение после блока 1 идут над строкой с E. В нижнем правом углу выполняем сложение, результат которого необходим для вычисления следующих A и E. Справа сверху расположили новое значение A, а посередине — новое E.
Один раунд алгоритма вычисления блока выглядит следующим образом:
Источник.
После таких круговых вычислений мы получаем заветный набор цифр и букв, который и будет настоящим блоком. Эти примеры могут показаться сущим пустяком для компьютерного интеллекта, но в случае с майнингом такое решение вполне оправдано отказоустойчивостью и энергоэффективностью оборудования.
Далеко позади остались времена, когда можно было майнить биткоин видеокартой и мощным процессором. Сложность сети возросла так сильно, что на поиск одного блока в сети требуется огромная вычислительная мощность, а награда за него и вовсе уменьшилась с 25 до 12.5 биткоина. А в 2009 году за блок отдавали целых 50 монет! К 2020 году ожидается очередное двукратное снижение награды. Несмотря на автоматическую подстройку сети, алгоритмы математических расчетов остаются прежними как для биткоина, так и для любой PoW (Proof of Work) монеты.
Рассмотрим сеть биткоина в цифрах. В качестве эталонных значений возьмем характеристики ASIC Antminer S9j для майнинга биткоина, который умеет обрабатывать около 15 терахэшей, то есть ровно 15,000,000,000,000 хэшей, в секунду. Получается, что такая небольшая «машинка» сможет посчитать пример из видео 15 триллионов раз в секунду! Это невероятно для человеческого мозга, но крайне мало для майнинга и сети биткоина.
Сегодня хэшрейт сети биткоина перешагнул отметку в 50,000,000,000 GH/s. А это уже цифра космических масштабов — 50,000,000,000,000,000,000 хэшей в секунду. Пятьдесят квинтиллионов! Для сравнения, диаметр Млечного Пути составляет почти квинтиллион километров. А до ближайшей галактики нам лететь 25 квинтиллионов километров.
Между прочим, в Китае уже начали тестирование новейшего суперкомпьютера Sunway, который сможет выполнять квинтиллион операций в секунду.
Алгоритмы криптовалют: Equihash, Scrypt, CryptoNight, X11, Ethash, SHA-256. Обзор 2020
Алгоритмы криптовалют
Каждая криптовалюта использует свой алгоритм шифрования. Однако количество монет значительно превышает количество алгоритмов криптовалют, поэтому некоторые криптовалюты используют один и тот же алгоритм хеширования данных.
Ниже мы подробно рассмотрим самые популярные алгоритмы шифрования криптовалют, а также монеты, которые работают на них.
Алгоритмы шифрования криптовалют
Алгоритмы криптовалют — это набор специфических криптографических механизмов и правил, которые шифруют цифровую валюту. Майнеры при помощи специального оборудования расшифровывают алгоритм конкретной криптовалюты — этот процесс заключается в поиске хеша.
Как только будет найден правильный хеш, то в блокчейне генерируется новый блок, в котором хранится информация о транзакциях, хеше предыдущего блока, сумме полученного майнером вознаграждения и т.д.
☝️
Процесс дешифрования (добычи монет) превращает набор случайных данных в упорядоченную систематизированную информацию, которая впоследствии записывается в блокчейн.
Сегодня насчитывается несколько десятков алгоритмов криптовалют, однако пользуются популярностью лишь несколько из них.
Среди востребованных можно назвать следующие: SHA-256, EtHash, Scrypt, X11, CryptoNight, EquiHash (Эквихеш), X13, Quark, NeoScrypt.
Ниже представлена сводная таблица алгоритмов криптовалют самых популярных монет:
Алгоритмы шифрования и криптовалютыАлгоритм шифрования биткоина 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 был известен лишь очень ограниченному кругу людей, для майнинга использовали обычные компьютеры, которые производили вычисления при помощи центрального процессора. Позже начали применять более мощные графические процессоры.
Однако сейчас, когда популярность биткоина просто огромная, экономически выгодным стало использование лишь ASIC-майнеров — специальных устройств, обладающих большой вычислительной мощностью.
Рекомендуем посмотреть познавательное видео, которое простыми словами расскажет, что такое алгоритм SHA-256 и как он работает:
Алгоритм SHA-256
SHA-256 криптовалюты
На алгоритме SHA-256 работает Bitcoin, а также ряд других криптовалют, которые в основном являются форками биткоина.
Криптовалюты алгоритма SHA-256:
Анонимный алгоритм криптовалют Equihash
Equihash — это анонимный алгоритм криптовалют, увидивший свет в 2016 году.
Первой криптовалютой, которая использовала Equihash в качестве базы, была Zcash. Создание блоков занимает 150 секунд, а хешрейт измеряется в Megahash в секунду (MH/s). В основе данного алгоритма лежит хеш-функция, которая построена на принципе «Парадокса дней рождений» — это математическая закономерность, которая используется для расчета вероятности. Правило гласит:
Если в комнате находится 23 человека, то вероятность того, что день рождения как минимум двух из них приходится на один и тот же день, составляет 50%. Исходя из этой закономерности, вероятность нахождения числа nonce в процессе майнинга равняется 2, вознесенное в степень N и разделенное на 2.
Этот алгоритм криптовалют был разработан Александром Бирюковым и Дмитрием Ховратовичом — учеными Университета Люксембурга, которые входят в исследовательскую группу CryptoLUX. В 2016 году разработка была представлена широкому круга.
☝️
Equihash требователен к объему оперативной памяти, а не к скорости обработки математических вычислений.
Это делает майнинг «айсикоустойчивым», а сеть более децентрализованной. Для майнинга криптовалют, работающих на Equihash, используются видеокарты, обладающие минимальным объемом памяти в 2 Гб. Самые лучшие результаты показало применение графических процессоров бренда NVidia.
Однако для майнинга Equihash также были разработаны устройства ASIC. Сегодня самыми популярными являются две модели: Antminer Z9 mini от Bitmain и A9 ZMaster от менее известной компании Innosilicon. В отличие от команды Monero, разработчики Zcash не предприняли никаких действий для защиты своей криптовалюты от централизации майнинга, а лишь высказали свое огорчение.
Рекомендуем интересное видео о майнинге на алгоритме Equihash:
Майнинг на алгоритме Equihash
Криптовалюты алгоритма Equihash
Самые популярные криптовалюты, работающие на алгоритме Equihash:
Виталик Бутерин, создатель алгоритма Dagger
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-й серии приносят неплохой профит майнерам.
☝️
Основное требование — это высокий показатель оперативной памяти, который постоянно увеличивается из-за роста сложности сети.
Как мы говорили выше, устройства ASIC не подходили для добычи монет, работающих на основе Ethash, однако все изменилось летом 2018 года, когда крупнейший китайский производитель майнеров Bitmain выпустил в продажу модель Innosilicon A10 ETHMaster, т.е. ASIC для Ethereum.
Смотрите интересное видео об особенностях алгоритма шифрования Ethash:
Алгоритма Ethash
Криптовалюты работающие на Ethash
Изначально Ethash был создан для Ethereum, однако этот алгоритм также используют и другие монеты. Криптовалюты, в которых используется алгоритм Ethash:
Ethereum Classic (ETC).
Использование Scrypt в блокчейне криптовалют
Scrypt — это алгоритм майнинга криптовалют, который раньше был интересен многим одиночным майнерам в виду его устойчивости к так называемой «аппаратной атаке». Скорость создания блоков в блокчейне, работающем на базе Scrypt, составляет около 30 секунд. Хешрейт как и у Ethash измеряется в Megahash в секунду (MH/s). Scrypt, прежде всего, стал популярным благодаря его применению в криптовалюте Litecoin.
История создания этого алгоритма началась с того, что вскоре стало ясно, что майнинг биткоина очень легко монополизировать, из-за того что простота функции SHA-256 позволяет автоматизировать процесс майнинга.
Поэтому основной задачей при создании Scrypt было усложнение механизма генерации блоков за счет повышенных требований к ресурсам, используемым для вычислительных операций. В частности, решающее значение имеет объем оперативной памяти (как и в Ethash), при этом требования к энергопотреблению и вычислительной мощности намного ниже чем в случае SHA-256.
Изначально для добычи криптовалют на основе Scrypt применялись центральные и графические процессоры, однако алгоритм не мог противостоять майнинг-корпорациям и в 2014 году был создан первый ASIC для Scrypt-монет.
В ответ на это криптоэнтузиасты создали усовершенствованный алгоритм под названием Scrypt-N, который впервые был применен в монете Vertcoin. Отличается он тем, что требования к оперативной памяти постоянно растут.
Из видео ниже вы узнаете, как возник алгоритм Scrypt:
Алгоритм Scrypt
Алгоритм майнинга Scrypt положен в основу работы следующих криптовалют:
Алгоритм майнинга X11
X11 — это алгоритм шифрования, в котором вместо одной функции используются одинадцать. Это означает, что данная технология может обеспечить высокую степень безопасности, ведь чтобы нанести вред системе, злоумышленнику придется взломать все 11 функций, а это очень маловероятно, потому что внесенные изменения будут видны уже после взлома первой функции, и у разработчиков будет масса времени защитить систему, прежде чем хакер дойдет до одиннадцатой функции. Алгоритм криптовалют X11 был создан специально для майнинга Dash.
Данный алгоритм шифрования был разработан создателем одной из топовых криптовалют (Dash, в прошлом Darkcoin) — Эваном Даффилдом. Все началось с того, что он хотел улучшить анонимность и взаимозаменяемость биткоина, однако сообщество не одобрило его идею. Тогда Эвану не оставалось ничего, кроме как создать свою собственную криптовалюту. По словам Даффилда на разработку ушли всего лишь одни выходные.
Создатель Dash Эван Даффилд
Еще одним достоинством X11 является то, что майнинг криптовалют, созданных на его основе, является очень экономным в плане потребления энергоресурсов. Следует сказать, что энергоэффективность — это всего лишь приятный «бонус», так как Эван не ставил за цель создать алгоритм, который бы не требовал больших энергозатрат. Данное свойство заметили майнеры.
Проведенные эксперименты показали, что добыча Dash на видеокартах потребляет на 30-50% меньше электроэнергии, чем майнинг Bitcoin на ASIC-устройствах.
Для добычи монет, которые работают на основе алгоритма X11, можно использовать не только GPU, но и CPU. Это один из немногих сегодня алгоритмов, который допускает майнинг на процессорах, что делает его привлекательным для одиночных майнеров и небольших компаний. Конечно, ASIC для добычи криптовалют на основе алгоритма X11 также существуют.
Как признался сам создатель X11, он не старался создать «айсикоустойчивый» алгоритм, однако он сделал все возможное, чтобы производителям пришлось «хорошенько потрудиться».
На данный момент X11 — не единственный в своем роде, который использует больше одной хеш-функции.
☝️
По его примеру были созданы другие алгоритмы, которые также построены на интеграции нескольких хеш-функций: X12, X13, X14, X14, X15, X16 и даже X17.
Однако X11 до сих пор является самым популярным и самым используемым.
Криптовалюта Dash
На алгоритме криптовалют X11 созданы следующие монеты:
Майнинг на CryptoNight
CryptoNight — это алгоритм для анонимных криптовалют, в основе которого лежат такие технологии как кольцевые подписи и одноразовые адреса. Он стал, прежде всего, известен благодаря криптовалюте Monero (XMR). Генерация блока занимает около 60 секунд.
Применение CryptoNight позволяет создать конфиденциальную, защищенную и взаимозаменяемую цифровую валюту. Эти свойства достигаются благодаря применению протокола CryptoNote, который был создан в 2012 году блокчейн-разработчиком (или группой разработчиков) под псевдонимом Николас ван Саберхаген. До сих пор неизвестно, кто скрывается за этим именем.
Высокая степень анонимности алгоритма CryptoNight достигается благодаря использованию двух технологий:
Из-за того, что транзакции являются абсолютно анонимными, все монеты, построенной на алгоритме криптовалют CryptoNight, являются взаимозаменяемыми.
Это означает, что они не имеют «темного прошлого», как, например, Bitcoin, блокчейн которого позволяет отследить движение определенного коина и его участие в «грязных делах».
Обозреватель блокчейна
Еще одна очень важная особенность данного алгоритма состоит в том, что для майнинга наиболее эффективными является использование CPU в паре с GPU, хотя добыча только на центральном процессоре тоже дает положительные результаты. И, напротив, применение устройств ASIC является экономически невыгодным.
Секрет в том, что CryptoNight требовательный к оперативной памяти (для правильной работы нужно минимум 2 Гб), а не к скорости проведения математических вычислений, в чем сильны ASIC-майнеры.
Процесс поиска правильного nonce для генерации блока состоит в том, что CryptoNight создает рандомные блоки, которые хранит в памяти вычислительного устройства, а не отправляет непрерывные частые обращения к майнеру с целью проведения математических операций, как это происходит в случае использования алгоритма 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.
Более подробно узнать о принципе работы анонимных монет вы сможете, посмотрев видео ниже:
Анонимные криптовалюты
Криптовалюта Monero
На анонимном алгоритме CryptoNight созданы следующие криптовалюты:
SHA-256 был первым алгоритмом шифрования, который нашел свое применение в криптовалютах. Однако он является далеко несовершенным, в виду низкой степени анонимности, конфиденциальности и взаимозаменяемости. Это послужило стимулом для создания более продвинутых криптографических алгоритмов.
Монополизация сферы майнинга из-за использования огромных ASIC-ферм — это еще одна проблема криптомира. Поэтому современные алгоритмы майнинга стремятся ограничить применение ASIC устройств для добычи новых монет.
Добиться этого удается путем установления высоких требований к оперативной памяти, а не к скорости вычислений, что актуально для SHA-256. Несмотря на то что для добычи большинства монет уже созданы ASIC, их использование не всегда является экономически выгодным и оправданным.
Читайте также:
Программы для майнинга: как выбрать лучший софт
Пул для майнинга — самые прибыльные пулы
Калькулятор майнинга: как рассчитать доходность криптовалют
В Bitcoin Core 0.10 улучшат алгоритм расчёта комиссионных сборов — «Хакер»
Гэвин Андресен (Gavin Andresen), ведущий специалист Bitcoin Foundation и один из основных разработчиков биткоин-протокола, анонсировал изменения в обработке комиссионных сборов в сети Bitcoin.
Новый алгоритм более гибко подстраивается к текущей нагрузке на инфраструктуру Bitcoin. Вместо жёстко зафиксированного размера комиссионного сбора программа будет проверять время подтверждения последних транзакций — и на основании этой информации определять сумму сбора, чтобы транзакция прошла быстро. Теоретически, в случае низкой нагрузки на сеть клиент предложит провести транзакцию за минимальную комиссию 0,00001 BTC, то есть почти бесплатно.
Предпочтительная скорость транзакций устанавливается через новую опцию txconfirmtarget. По умолчанию её значение минимальное “1”, что означает размер комиссионных, необходимый для вероятного включения транзакции в следующий блок. Увеличение этого числа означает увеличение вероятного количества блоков, которые придётся подождать до получения первого подтверждения.
В целом, такой алгоритм расстановки приоритетов выглядит более логично, чем прямое указание размера комиссионных с непредсказуемым результатом. Для демонстрации непредсказуемости Гэвин Андресен приводит график с оценкой среднего размера комиссионных, необходимых для включения транзакции в следующий блок (синяя линия), в следующие 2 блока (красная) и т.д.
Как видим, синий график изменяется в диапазоне от 0,0005 до 0,0019 BTC за 1 КБ. Кто-то платит существенно больше, чем необходимо, для проведения быстрых транзакций, меняя опцию paytxfee в клиенте или используя другие способы проведения платежей.
Нынешние правила соответствуют значению ожидания 2-6 блоков и обычно устанавливают оплату в районе 0,0001 BTC, независимо от количества операций. Так что при увеличении файла до 1 КБ приходится ждать до 15 блоков (более 2 часов) до первого подтверждения. Новый алгоритм действует более предсказуемо.
Изменения реализуют в следующей версии официального клиента и серверного программного обеспечения Bitcoin Core 0.10 (бывшее название Bitcoin-Qt).
ОНЛАЙН КАЛЬКУЛЯТОР ПРИБЫЛЬНОСТИ ОБОРУДОВАНИЯ ДЛЯ МАЙНИНГА
Майнинг как мейнстримное направление бизнеса
Цифровые активы привлекают все больше инвесторов. Принцип децентрализации, положенный в основу выпуска и учета криптомонет, гарантирует им высокую степень защищенности.
Неудивительно, что майнинг виртуальных валют выходит на передовые бизнес-рубежи. Современная электронная индустрия наполнила рынок различными видами криптодобывающего оборудования. По способу организации выделяют:
“асики” — вычислительные устройства, по мощности многократно превосходящие обычные PC; в разработках ASIC-майнеров используются сложнейшие интегральные схемы, приспособленные к расшифровке замысловатых криптографических алгоритмов;
GPU-фермы, работа которых базируется на процессорах или видеокартах.
Если поначалу эти устройства добывали только Биткоины, то с развитием майнинг-отрасли им стали доступны самые разные альткоины. В последнее время появились дуал-майнеры, приносящие владельцам сразу две валюты.
Проблема выбора криптодобывающего устройства
На современном рынке майнинг-оборудования существует жесткая конкуренция. Высокопроизводительные ASIC-майнеры теснят фермы на видеокартах. Однако те не сдаются, имея несколько преимуществ:
адаптивность к добыче любой валюты;
возможность приобретения видеокарт в обычном магазине;
упрощенность ремонта.
Несмотря на эти “плюсы”, внимание потребителей к сверхмощным и суперумным ASIC-майнерам неуклонно растет. Специфичность “асиков” и связанные с этим риски останавливают все меньше ценителей электронного капитала. В таких условиях вопрос правильного выбора криптодобывающего устройства становится все более актуальным.
Незаменимым помощником в этом деле станет калькулятор прибыльности майнинг-добычи. Поскольку любой “копатель” в процессе работы претерпевает постоянные нагрузки, необходимо, чтобы до истечения гарантийного срока он окупил себя и принес прибыль. В противном случае пользователь останется в “минусе”. Поэтому так важно все точно предварительно рассчитать.
Что может майнинг-калькулятор?
Приобретателю криптодобывающей машины важно заранее рассчитать ее рентабельность, исходя из главных технических параметров — мощности и энергоэффективности. Не каждый человек может справиться с подобными расчетами. Они требуют определенной квалификации и могут отнять уйму времени. Неоценимую помощь в этом деле окажет всезнающий и всеумеющий автоэксперт — онлайн-калькулятор доходности майнинга.
Его программа снабжена всеми необходимыми параметрами, что позволяет ему легко справляться с трудоемкими математическими подсчетами. При этом он учитывает множество переменных, влияющих на доходность майнинга и определяющих ее прогноз:
возрастающую сложность добычи;
непредсказуемую стоимость цифровых активов;
незапланированные накладные расходы, включающие в себя не только траты на электроэнергию, но и сервисное обслуживание электронного оборудования.
Довольно сложно, даже для специалиста, правильно произвести расчеты с учетом этой меняющейся (иногда за считанные часы) информации. А ведь игнорирование любой из приведенных переменных может стать ключевым фактором бизнес-краха.
Майнинг-калькулятор — программа, важнейшая информация которой постоянно обновляется. Сложность добычи для всех монет актуализируется ежедневно. Стоимость активов уточняется каждые 10 минут. Для удобного ориентирования пользователей в сводную таблицу занесены все ведущие модели добывающего оборудования с параметрами производительности и энергопотребления для каждого алгоритма.
Такой функционал поможет быстро и безошибочно определить выгодность конкретного устройства. Более того, уникальный инструмент позволит сопоставить несколько разновидностей востребованного оборудования и сделать обоснованный выбор между ними.
Точные и мгновенные расчеты калькулятора прибыльности не позволят потерпеть убытки ни стартапу, ни серьезному предприятию с многолетним опытом. Круглосуточный интерактивный онлайн-помощник вооружит каждого пользователя разумным планом действий, что критически важно для развития бизнеса по добыче электронных активов.
Как пользоваться калькулятором?
Продуманный опытными программистами функционал онлайн-калькулятора достаточно прост в обращении. Воспользоваться им с первого раза сможет даже начинающий майнер. Ход действий рекомендуется следующий:
Выберите из представленного списка топовых майнинг-устройств интересующий вас девайс.
Оцените главные технические характеристики выбранного оборудования: хэшрейт (скорость вычисления в секунду) и энергопотребление (расходы электричества в течение часа работы).
Обратите внимание на коэффициент чистой дневной прибыли (в долларах), полученной путем вычитания энергозатрат из общего дохода.
По цвету поля, где указана дневная выручка, вы сможете мигом установить место майнера или ГПУ-фермы в рейтинге аналогичных товаров:
зеленый — от 15$ и более в день;
салатовый — от 10$ до 15$ в день;
желтый — от 5$ до 10$ в день;
темно-оранжевый — от 0$ до 5$ в день;
темно-красный — работает в минус при платной розетке.
Чтобы сопоставить по выгодности несколько девайсов, достаточно нажать кнопку “Сравнить”. Те, кого интересует вид добываемой валюты, могут воспользоваться опцией “Выберите алгоритм” (в самом верху страницы “Калькулятор”).
На сайте представлены самые “ходовые” алгоритмы:
SHA-256 — разработанный в 2002 году алгоритм-первопроходец, “заточенный” на добычу Bitcoin; на нем можно также “копать” более ста других монет, в частности BitcoinDark, BetaCoin, Bitcoin Cash, Peercoin, Syscoin, Namecoin, Universel, DGB-SHA;
Scrypt — алгоритм, появившийся после SHA-256 и усложненный увеличенным объемом памяти; помимо “цифрового серебра”, то есть Litecoin, на Scrypt майнят Dogecoin, Gulden Bitdeal, DNotes, B3Coin, Florin, Aur-Scrypt, DGB-Scrypt;
Equihash — популярный алгоритм нового поколения, еще более усложненный и защищенный, чем Scrypt; позволяет хэшировать BitcoinGold, Zencash, Zclassic, Komodo, Zcash, Hush;
X11 — продвинутый алгоритм, разработанный с цепочкой в 11 хэш-функций и впервые апробированный в 2014 году с криптомонетой Darkcoin, впоследствии переименованной в Dash; кроме нее, на нем добывают Quark, Onix, Pura, Cannabiscoin, Monoeci, Prime-XI;
CryptoNight — хорошо проработанный алгоритм, создатели которого каждые полгода вносят в него изменения; главная монета — Monero, кроме нее добывают Karbo, Bytecoin, Dynastycoin, Sumokoin, Electroneum.
Под каждый алгоритм выбраны 10 популярных валют, и по самой профитной выдается результат.
Помимо общих данных, наш калькулятор предоставит майнеру графические изображения, по которым можно судить о прибыли за 24 часа, 7 дней, месяц (с учетом расхода и региональной стоимости электроэнергии).
Чтобы получить указанную информацию, нужно кликнуть на заинтересовавший продукт и перейти таким образом на его карточку. В графе “Стоимости электричества” следует выбрать (или ввести) свой местный тариф и нажать кнопку “Применить”.
Преимущества нашего онлайн-калькулятора
Интуитивный интерфейс калькулятора криптовалют максимально упростит и облегчит выбор нужного товара. С помощью электронного помощника длительный и трудоемкий процесс подсчета пользователю не грозит. Со всеми его проблемами вмиг управится компетентная и автоматически действующая программа.
А самый приятный бонус заключается в том, что все майнинговые машины, указанные в списке онлайн-калькулятора, входят в ассортимент нашего интернет-магазина. Это позволит перейти от быстрого расчета к немедленной покупке товара.
Концепция нашего калькулятора позволит вам найти как самое выгодное на данный момент оборудование, так и любое другое. У вас есть шанс узнать, сколько сейчас монет приносит девайс и сколько он добывал, к примеру, пару дней назад. Все это позволит вам сделать беспроигрышный выбор и в скором времени приступить к продуктивному майнингу.
(PDF) Проблемы алгоритмов регуляции сложности криптовалют
У Litecoin в начале цепочки было
несколько существенных всплесков до окон-
чания 1-го квартала 2012 года, затем,
за исключением нескольких непродолжи-
тельных всплесков и провалов (до начала
2014 года), 𝑏𝑙𝑜𝑐𝑘_𝑡𝑖𝑚𝑒 менялся аналогич-
но BTC — равномерные колебания около
𝑡𝑎𝑟𝑔𝑒𝑡 = 150 секунд с заметной амплитудой.
Сравнив поведение 𝑏𝑙𝑜𝑐𝑘_𝑡𝑖𝑚𝑒 Litecoin
c аналогичным графиком Bitcoin (рис. 4),
можно сделать очевидный вывод об однооб-
разности работы АРС у данных валют. То
есть алгоритм работает стабильно, но име-
ет заметные колебания около целевого зна-
чения 𝑏𝑙𝑜𝑐𝑘_𝑡𝑖𝑚𝑒, что отчасти может быть
обусловлено значительным периодом пере-
смотра сложности (2016 блоков) у обоих
криптовалют.
Результат работы действующего в насто-
ящее время АРС Bitcoin Cash (рис. 5) вы-
глядит более эффективным, так как откло-
нения имеют меньшие значения ввиду то-
го, что сложность регулируется на каж-
дом блоке. Соответственно, реакция АРС
на отклонения более быстрая. В связи с чем
отклонения значений 𝑏𝑙𝑜𝑐𝑘_𝑡𝑖𝑚𝑒 более ча-
стые, но меньшие по значению.
4. Выводы
Эмпирический анализ данных из блок-
чейнов трёх криптовалют показывает, что
наиболее эффективны и надёжны АРС с
пересчётом сложности каждый блок. Крип-
товалюты же с большим сроком пересчёта
сложности, вроде Bitcoin и Litecoin, больше
подвержены манипуляциям, атакам хеш-
рейтом и т.д. Это означает, что в случае
появления более выгодного майнерам кон-
курента Bitcoin’у с аналогичным алгорит-
мом хеширования в proof of work, снижения
выгодности майнинга, и прочих событий,
которые могут повлечь продолжительное
падение хешрейта, реальные пользователи
криптовалюты будут испытывать неудоб-
ства из-за долгого ожидания подтвержде-
ния транзакций. Поэтому ежеблочный пе-
ресчёт сложности, исходящий из значений
𝑏𝑙𝑜𝑐𝑘_𝑡𝑖𝑚𝑒 предыдущих нескольких бло-
ков, имеет большее количество плюсов для
конечного пользователя и нет причин отка-
зываться от его использования.
Сравнение результатов работы алгорит-
мов регулирования сложности нескольких
криптовалют на графиках является очень
наглядным вариантом. Но, к сожалению,
точность и объективность такого сравне-
ния оставляет желать лучшего. Из этого
следует очевидный вывод — необходимость
создания метрики или нескольких метрик,
для количественной оценки АРС на задан-
ном интервале времени. Что даст возмож-
ность более объективно сравнивать алго-
ритмы между собой.
5. Послесловие
Выше упоминалось, что среднее значение
(𝑚𝑒𝑎𝑛) и медиана (𝑚𝑒𝑑𝑖𝑎𝑛) хоть и являют-
ся мерами центральной тенденции выбор-
ки (𝑠𝑎𝑚𝑝𝑙𝑒), но ведут себя по-разному при
наличии в выборке аномальных значений.
Среднее значение меняется значительно
быстрее, чем медиана. Вернемся к графи-
кам на рисунках: 4,5,8и посмотрим внима-
тельно на кривую «𝑚𝑒𝑎𝑛 𝑠𝑢𝑏𝑡𝑟𝑎𝑐𝑡 𝑚𝑒𝑑𝑖𝑎𝑛».
Это разность между 𝑚𝑒𝑎𝑛 и𝑚𝑒𝑑𝑖𝑎𝑛. Дан-
ная кривая следует вверх, когда разность
между кривыми 𝑚𝑒𝑎𝑛 и𝑚𝑒𝑑𝑖𝑎𝑛 увеличива-
ется. А разность между этими показателя-
ми тем больше, чем более аномальное зна-
чение (большое или маленькое) присутству-
ет в выборке. Таким образом, мы получаем
элементарный индикатор наличия аномаль-
ного значения 𝑏𝑙𝑜𝑐𝑘_𝑡𝑖𝑚𝑒 в некотором ряде
последовательно идущих блоков.
Возникает идея сравнить кривые разно-
стей двух валют: Bitcoin и Bitcoin Cash,
из-за одинакового алгоритма хеширования,
используемого в proof of work. Майне-
ры переключают вычислительные мощно-
сти с одной цепочки на другую, следова-
тельно, периоды времени, где у одной из
9
Объяснение алгоритма
Биткойн — Mycryptopedia
Разъяснение алгоритма Биткойн
Биткойн, основанный псевдонимом физического лица или группы, представляет собой одноранговую цифровую валюту, которая предназначена для использования в качестве средства обмена для покупки товаров и услуг. С помощью биткойнов люди могут выполнять трансграничные цифровые платежи практически бесплатно, и все это без привлечения каких-либо финансовых посредников. Биткойн опирается на технологию, известную как блокчейн, которую можно рассматривать как бухгалтерскую книгу, которая хранит прозрачную и неизменяемую запись экономических транзакций, совершаемых с использованием биткойнов.Важным элементом Биткойна, который облегчает его работу, является алгоритм Биткойна для майнинга доказательства работы, известный как алгоритм безопасного хеширования 256 (SHA-256).
Proof-of-work Майнинг является важным компонентом системы Биткойн, который обеспечивает правильную обработку транзакций в цепочке блоков. Элемент майнинга в доказательстве рабочего процесса касается людей (которые известны как майнеры), которые генерируют правильные доказательства, которые необходимы перед добавлением блока в цепочку блоков.Майнеры будут использовать данные из заголовка блока в качестве входных данных и передавать их через криптографическую хеш-функцию. В случае Биткойна эта функция хеширования — SHA-256.
Майнеры также будут включать одноразовый номер во входные данные, чтобы они могли хешировать небольшие вариации входных данных. Цель майнинга доказательства работы — получить значение хэша, которое ниже целевого хэша, установленного сетью. Если майнер найдет правильное выходное хеш-значение, он сможет обрабатывать транзакции и добавлять новый блок в цепочку блоков.Майнеры также получают вознаграждение в биткойнах за успешный поиск действительного хеша. Также важно отметить, что создание правильного значения хеш-значения в системе доказательства работы Биткойна является вероятностно низким, поэтому майнеру обычно необходимо сгенерировать большое количество неправильных хеш-кодов, прежде чем будет найден действительный хеш-код.
Биткойн Алгоритм: SHA-256
Лица, которые хотят майнить в сети Биткойн, должны использовать так называемый майнинговый узел, который является узлом, специально настроенным для майнинга в сети.Как только майнинговый узел заработает, майнеры могут приступить к созданию так называемых блоков-кандидатов. Эти блоки должны быть правильно построены майнером, и для этого необходимо, чтобы 6 параметров, которые находятся в каждом блоке-кандидате, были правильно заполнены. К этим параметрам относятся:
- Версия — Номер версии программного обеспечения Биткойн.
- Хэш предыдущего блока — Ссылка на хэш предыдущего блока, который был включен в цепочку блоков.
- Merkle Root — репрезентативный хэш всех транзакций, включенных в блок-кандидат.
- Отметка времени — часть информации, которая ссылается на время создания блока.
- Целевой — Целевой порог хеширования, хэш заголовка этого блока должен быть меньше или равен целевому хешу, установленному сетью.
- Nonce — Переменная, которая используется в процессе интеллектуального анализа доказательства работы.
Затем блок-кандидат ретранслируется в остальную сеть, чтобы его можно было проверить на его достоверность. Если остальная часть сети считает блок действительным, он будет добавлен в цепочку блоков.
Сложность сети
Алгоритм Биткойн также включает в себя так называемую сложность сети. Эту концепцию можно рассматривать как меру, с помощью которой можно определить сложность нахождения правильного значения хеш-функции в процессе доказательства выполнения работы.Эта сложность может измениться в зависимости от увеличения или уменьшения целевого значения хеш-функции. Например, если скорость, с которой в сети обнаруживаются действительные хэши, увеличивается, то целевое значение хеш-функции сети будет снижено. Это приводит к уменьшению количества действительных хэшей, которые могут быть обнаружены. И наоборот, если скорость обнаружения правильных хеш-кодов снижается, то целевое значение хеш-функции сети будет увеличиваться, чтобы увеличить количество действительных хеш-значений, которые могут быть найдены.
Блок
— Алгоритм добычи биткойнов с точки зрения программиста
Алгоритм майнинга следующий:
Шаг 0 — Получить хэш предыдущего блока из сети.
Шаг 1. Соберите список потенциальных транзакций, известный как «блок». Этот список транзакций поступает из одноранговой сети биткойнов.
- Шаг 2 — Рассчитайте хэш для блока потенциальных транзакций вместе со случайным числом.
- Шаг 3 — Если хэш больше, чем текущий установленный уровень сложности, значит, вы добыли этот блок.
Если нет, начните заново с шага 1. Любые дополнения к списку транзакций с шага 1 вместе с изменением случайного числа с шага 2 означают, что есть шанс, что критерий будет соблюден при следующем обходе.
С точки зрения программиста псевдокод может выглядеть примерно так:
P: = хэш ранее добытого блока B: = блок транзакций H: = хэш-функция D: = Уровень сложности 0 Получить P 1 Построить / Изменить B 2 ЕСЛИ H (P, B, некоторое случайное число)> D END 3 НАЙТИ 1
Я должен предупредить вас, что в этом описании есть несколько неточностей, но по большей части этого должно быть достаточно.И еще несколько полезных уточнений:
Что такое хеш?
Хэш — это функция, преобразующая данные в число в определенном диапазоне. Хэш обладает тем свойством, что знание его вывода по существу непредсказуемо (в пределах заданного диапазона). Специальная хеш-функция, используемая для майнинга биткойнов, — это SHA256, применяемый дважды.
Как работает уровень сложности?
Этот непредсказуемый характер хэш-функции означает, что ввод случайных данных (транзакция + случайное число) по существу дает случайное число в определенном диапазоне.Дальнейшее ограничение диапазона желаемого результата влияет на вероятность его обнаружения за один раунд. Это создает способ вероятностного определения того, как часто будет найдено решение, на основе того, сколько раз алгоритм может быть запущен в сети. В частности, когда вы слышите термин «гигахеши» или «терахеши», это относится к тому, сколько раз может быть выполнен шаг 3. По мере того, как количество хэшей в секунду во всей сети растет, сеть автоматически увеличивает сложность, так что решение будет найдено в течение примерно 10 минут.
Что происходит при добыче блока?
Когда блок добывается, майнер отправляет блок всем другим майнерам в сети в качестве доказательства того, что он его нашел. Этот блок содержит список транзакций, найденный хэш, конкретное случайное число и ссылку на предыдущий хеш. Когда каждый майнер получает недавно добытый блок, он удаляет все транзакции, которые он в настоящее время добывает и которые существуют в блоке (потому что они уже были подтверждены в цепочке блоков), и транслирует блок другим майнерам, которые делают то же самое.Распространение происходит довольно быстро.
Примечание: первоначальный майнер блока получает «комиссию майнеров», которая представляет собой вознаграждение, состоящее из любых неизрасходованных монет от транзакций в дополнение к вознаграждению «монетоприемником». Вознаграждение за монетную базу начиналось с 50 биткойнов и уменьшалось вдвое после каждых 210 000 блоков (примерно раз в 4 года). Вознаграждение за монетную базу в конечном итоге станет настолько маленьким, что будет ничтожно мизерным по сравнению с гонорарами майнеров.
пулов для майнинга — что на самом деле решают майнеры биткойнов?
Ниже приводится описание глобальной статистической игры, которая разыгрывается каждые 10 минут или около того.Интервал игры контролируется сложностью, которая говорит, сколько «хешей» необходимо на интервал.
Другими словами, сложность
и цель
определяют «шансы дома» против ваших шансов получить выигрышный хэш SHA. nonce
— это «зачеркнутая» область.
Каждый хэш потребляет электричество и выделяет тепло, что требует дополнительного охлаждения.
Вот что делается с каждым хешем:
Шаг 1
На высоком уровне программное обеспечение майнера берет список активных транзакций, а затем группирует их вместе в нечто, называемое «блоком».
Или, точнее говоря: Программное обеспечение майнера объединяет все транзакции в сводное представление, называемое «корнем Меркла», и хеширует его, который представляет транзакции.
Шаг 2
Затем программное обеспечение для майнинга преобразует это в двоичный формат, называемый заголовком блока, который также ссылается на предыдущие блоки (также называемые цепочкой).
Назначение поля обновляется, когда ... Размер (байты)
Версия блока Номер версии Вы обновляете программное обеспечение и 4
он указывает новую версию
hashPrevBlock 256-битный хэш предыдущего
заголовок блока
hashMerkleRoot 256-битный хэш на основе всего A транзакция принята 32
транзакции в блоке
Время Текущая отметка времени в секундах Каждые несколько секунд 4
с 1970-01-01T00: 00 UTC
Биты Текущая цель в компактном формате Сложность регулируется 4
Одноразовый 32-битный номер (начинается с 0) Хэш пробуется (увеличивается) 4
Шаг 3:
Аппаратное обеспечение майнера изменяет небольшую часть этого блока, называемую «nonce».
Шаг 4:
Заголовок блока хешируется и сравнивается с целевым значением, как если бы это было просто большое число, например 10 000 000> 7 000 000 (реальные числа намного больше и в шестнадцатеричном формате). Цель сжимается и сохраняется в каждом блоке в поле, называемом битами.
Расширенная цель выглядит так:
Цель 0000000000000083ef00000000000000000000000000000000000000000000000
И цель — убедиться, что хэш SHA256 блока на меньше, чем этого значения.В приведенном ниже примере « 83ee
» меньше, чем « 83ef
»
.
Чтобы упростить эту концепцию, вы можете приблизить цель, подсчитав ведущие нули (как объясняется в другом ответе здесь). Вот пример:
Вот образец блока с транзакциями, который вы можете просмотреть на BlockChain.info. Посмотрите в верхнем правом углу веб-страницы этот хэш:
.
Хэш 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
Этот предыдущий хеш был с сегодняшнего дня и имеет 14 ведущих нулей.Давайте сравним это с тем, что было нужно 3 года назад, с блоком 100 с 8 ведущими нулями.
Хэш 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
Сводка
Итак, в конце концов, все, что делает майнер, это:
- Использовать заголовок блока в качестве входных данных
- Изменить одноразовый номер
- Проверить, меньше ли хэш заголовка блока заданного значения. Если это так, вы выиграете.
- Перейдите к шагу 2 (или перейдите к шагу 1, если блок выиграл кто-то другой)
Хотите узнать, что делает Bitcoin-QT, когда находит блок ?… Я разместил это здесь .. Информация в этом посте поможет вам понять, что произошло.
Блокчейн
— Как со временем математическая проблема для майнинга биткойнов усложняется?
Самый простой способ объяснить это — дать вам кубик (кубик) и сказать: «Если вы выбросите меньше 6, я дам вам 100 долларов». Получить деньги будет довольно легко, правда? Единственный способ проиграть — это выбросить 6
.
Теперь, если я изменю игру на «брось меньше 2», сложнее (менее вероятно), что ты получишь это с первого раза, потому что тебе придется выбросить 1.
Итак, допустим, я стремлюсь к вам, чтобы выиграть 100 долларов в минуту, и вы достаточно быстры, чтобы кататься примерно 3 раза в минуту. Вы начинаете катиться, и я замечаю, что со сложностью, установленной на 5, вы выигрываете намного чаще, чем раз в минуту, поэтому я набираю номер сложности вниз (усложняю). Предположим, мы достигли точки, когда со сложностью, установленной на «ниже 3», вы в среднем выигрываете раз в минуту. Тогда у вас будет настоящая полоса неудач, и вам понадобится 4 минуты, чтобы выбросить меньше 3 — вы просто продолжали бросать 6 в течение первых 3 минут.Я полагаю, что буду проще с вами, и я снова подниму число сложности, потому что у вас плохая полоса, поэтому я облегчу вам победу. Тогда у вас все хорошо, так что я снова начинаю сокращать число.
Я регулярно буду оглядываться на среднее время, затрачиваемое вами на победу в последних играх, и решать, регулировать ли сложность или нет, и настраивать ее в большую или меньшую сторону, чтобы попытаться удержать вас в выигрыше раз в минуту. Если ты будешь быстрее кататься, я сделаю игру сложнее. Если ты заставишь своего приятеля кататься с тобой, я сделаю это еще сложнее.224 (около 27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)), но предпосылка остается той же самой — это игральные кости с 27000 виджинтиллионами сторон, и вам нужно выбросить менее 15 триллионов. И вы можете покупать устройства, которые накручивают до 16 триллионов раз в секунду. Получив большие награды, вы можете купить множество этих устройств и заполнить ими склад, что увеличивает ваши шансы на победу, если вы можете позволить себе счет за электроэнергию
.
Бросок кости — это генерация хэш-кода для транзакций, которые майнер решил упаковать в блок.
По сути, майнер упаковывает блок с транзакциями, вычисляет хэш, это больше, чем сложность, они меняют одно число в заголовке блока (вместо того, чтобы пытаться упаковать другой блок транзакций — это намного более затратно с точки зрения вычислений. но имел бы желаемый эффект изменения хэш-кода, что является общей целью), называемого одноразовым кодом. Итак, мы меняем одноразовый номер, повторно выполняем хеш, это меньше, чем сложность? Нет. Измените одноразовый номер, повторите хеш. Проверить сложность / изменить одноразовый номер / хэш / проверить / изменить / хеш / проверить / изменить..
В конце концов что-то происходит:
- находим хеш меньше текущей сложности — быстро! объявить об этом в сети и заставить мир проверить работу, принять ее и мы получим награду
- кто-то другой находит блок транзакций с хешем меньше сложности, он получает вознаграждение, все упакованные им транзакции завершены / оплачены — нам нужно начать заново с нового блока транзакций
- у нас заканчиваются одноразовые номера (их всего 4 миллиарда), потому что мы хэшируем так быстро (блоки транзакций имеют инкрементную метку времени, которая также изменяет хэш-код, но даже тогда в сочетании с 4 миллиардами одноразовых номеров означает, что если мы хэшируем быстрее, чем > 4ghash / second у нас закончатся одноразовые номера до того, как время истечет на секунду, поэтому мы пойдем и немного изменим одну из транзакций или заменим ее на другую) — все, что нужно для создания даже действительного сингла при изменении байта в блоке будет получен другой хэш-код, поэтому мы вносим это изменение и продолжаем (вероятно, с помощью метода изменения nonce)
Итак, кто знает, в чем должна заключаться сложность? Как и все остальное с биткойнами — все.Сеть определяет сложность, и поскольку все (или большая часть) сети являются хорошими участниками, вы не можете обмануть, вы не можете написать программу, которая заявляет о выигрыше с некоторым хешем, потому что все остальные проверяют работу и они не принимают его, если вы обманули хэш-код или солгали о том, что уровень сложности ниже. Это как если бы все в казино смотрели, как вы бросаете, и если вы выбросили 6, но кричали: «Я выбросил 1!». они игнорируют вас
Доказательство работы
биткойнов — единственная статья, которую вам когда-либо придется читать | Энрике Сентиейро
Как именно работает майнинг с доказательством работы? Что ж, на самом деле это довольно просто.Позвольте мне дать вам подсказку: майнерам не нужно решать «сложные» математические задачи. Эйнштейн решал сложные математические задачи. Майнеры просто пытаются угадать лотерею.
Если вы читали мои статьи, то знаете, что я люблю сразу переходить к делу. Это не роман, и я не хочу тратить зря время моих читателей. Тем не менее, эта статья довольно длинная, чтобы, пожалуйста, потерпите меня!
Майнинг — это метод, который используется в цепочке блоков для группировки транзакций в блок, добавления этого блока в цепочку блоков и трансляции нового блока в сеть.Майнинг обеспечивает поддержание механизма консенсуса и децентрализацию блокчейна.
В этой статье мы подробно рассмотрим, как работает майнинг. Это будет единственная статья о консенсусе в отношении доказательства работы, которую вам когда-либо придется читать. Действительно. Все здесь.
Доказательство работы. В блокчейнах есть алгоритмы майнинга или криптографические хеш-функции, которые принимают блок на входе и создают небольшой вывод. Хеш-функция разработана таким образом, что майнер должен хранить блоки хеширования до тех пор, пока он не обработает желаемый результат.Продолжайте читать, и я покажу вам, как это происходит. Чтобы выполнить эту задачу, майнеру необходимо повторить эту задачу миллион или миллиарды раз, что потребует оборудования, электроэнергии и времени.
Для Биткойна хеш-функция майнинга — SHA256, а Биткойн применяет процесс двойного SHA256 для повышения безопасности. Ethereum использует Ethash или Dagger-Hashimoto Keccak. В разных блокчейнах доказательства работы используются разные алгоритмы, но наиболее известны следующие:
- SHA256–256-битный «Алгоритм безопасного хеширования» может быть добыт процессорами общего назначения, и он используется такими криптовалютами, как Биткойн, Байткойн, Peercoin, Namecoin и еще несколько.SHA256 — очень простая функция, т.е. это простая логическая операция и 32-битное сложение. Подобные простые функции могут быть реализованы в цифровой логике в микросхемах ASIC, создавая очень эффективное оборудование для майнинга.
- Ethash — Ethash — это алгоритм майнинга, подтверждающий работу Ethereum. Поскольку они потребляют больше памяти, графические процессоры предлагают более эффективную скорость хеширования. Майнеры ASIC также были разработаны для майнинга Ethash. Некоторые из блокчейнов, использующих этот алгоритм, включая Etehreum и Ethereum Classic.
- X11 — Разработчики Dash создали алгоритм X11, и он считается одним из самых безопасных. Также были разработаны ASIC-майнеры для майнинга X11. Некоторые из криптовалют, использующих его, — это Dash, Karmacoin и MonetaryUnit.
- Scrypt — Scrypt также является одним из широко используемых алгоритмов майнинга. Он быстрее, чем SHA256, и ведущими блокчейнами, использующими его, являются Dogecoin 🐶, Litecoin, Potcoin, MidasCoin и Gulden. Говоря о Scrypt, я сделал первый курс Dogecoin. Проверьте это!
- Cryptonight — это еще один алгоритм proof of work с крутым названием.Он был разработан, чтобы быть более эффективным при майнинге на ЦП. Криптовалюты, использующие его, — это Monero, Dashcoin, DigitalNote, Bytecoin и другие.
Майнинг CPU, Майнинг GPU и ASIC
Майнинг CPU, GPU и ASIC по-разному реагируют на разные алгоритмы цепочки блоков. Некоторые алгоритмы легче добывать (т.е.имеют лучшую скорость хеширования) с помощью ЦП — более общего назначения — графического процессора — более ресурсоемких для простых вычислений и лучше для алгоритмов с интенсивным использованием памяти — или ASIC — разработанных для конкретных целей.ASIC-майнеры хоть и очень эффективны, но имеют и недостатки. Некоторые разработчики блокчейнов пытались обновить протоколы, чтобы сделать их устойчивыми к ASIC, то есть невозможность майнинга с использованием устройств ASIC. Когда это происходит, майнеры ASIC становятся бесполезными, потому что они были разработаны с учетом определенного алгоритма и не могут выполнять никаких других задач. Некоторые разработчики блокчейнов считают, что устройства ASIC могут повысить централизацию.
Обратите внимание, что это относится только к блокчейнам с подтверждением работы, а не с блокчейнами с подтверждением доли или разрешения.
Давайте начнем с доказательства работы, механизма консенсуса Биткойна и большинства блокчейнов первого поколения. Доказательство работы — это механизм консенсуса на основе лидера. Кстати, если вы хотите расшифровать транзакцию базы монет генезис-блока Биткойн, ознакомьтесь с этой статьей.
Майнерам необходимо вычислить сложную лотерею или математическую задачу в блокчейне Биткойн и других блокчейнах, используя механизм консенсуса доказательства работы. Это немного похоже на попытку угадать номер лотерейного билета 🎲.Как только узел разрешает лотерею, он транслирует результат другим узлам, и новый блок добавляется в цепочку блоков.
Сложность лотереи регулируется таким образом, чтобы вся вычислительная мощность майнера генерировала один биткойн-блок в среднем каждые 10 минут. Предположим, что количество майнеров или вычислительная мощность в сети увеличивается, сложность вычисления математической задачи возрастает, чтобы обеспечить предсказуемость распределения / предложения монет и производства блоков.В этом случае сложность подтверждения работы корректируется, когда больше людей присоединяются к сети или покидают ее.
В других блокчейнах, таких как Ethereum, блоки могут добавляться с другой частотой. В Ethereum, например, новый блок добавляется каждые 15 секунд.
Вы можете увидеть доказательство работы как строку данных, которые сложно произвести (это требует много времени и ресурсов), но однажды обнаруженных, и их легко проверить другим.
Одна из причин, по которой для добавления нового блока в цепочку блоков требуется некоторая работа, — это сделать его более безопасным.Каждому майнеру необходимо решить сложную лотерею, чтобы добавить новый блок, но если это было слишком просто, то любой хакер мог легко попытаться добавить новые блоки или изменить цепочку блоков в свою пользу. Доказательство работы — это то, что делает Биткойн самой безопасной общедоступной сетью, когда-либо созданной в истории человечества.
Математическая задача — это не что иное, как угадать nonce , длинную строку чисел с миллионами или миллиардами проб и ошибок. Другими словами, перебор результата.Майнер должен угадать одноразовый номер, добавить его к хешу текущего заголовка, повторно хешировать значение и сравнить результат с целевым хешем.
Я уверен, что вы тоже слышали о сложности майнинга. Сложность майнинга в основном является мерой того, насколько сложно найти новый блок в цепочке блоков или, другими словами, насколько редко майнерам требуется грубая сила, чтобы найти хеш, меньший, чем целевой хэш.
Мне всегда казалось довольно забавным, когда люди говорят, что майнеры «решают очень сложную математическую задачу», тогда как на самом деле они пытаются угадать «лотерейный» номер.Майнеры не Эйнштейн! Они не пытаются найти математические чудеса Вселенной. 🌌
В большинстве публичных / запрещенных блокчейнов майнеры будут получать вознаграждение за свою работу. Это вознаграждение, скорее всего, покроет их расходы, связанные с оборудованием и электричеством, и является стимулом для продолжения работы сети. В 2021 году вознаграждение за блок биткойнов составит 6,25 BTC, и оно будет оставаться на уровне 6,25 до 2024 года, когда оно снова уменьшится вдвое (оно уменьшается вдвое примерно каждые 4 года или, если быть более точным, каждые 210 000 блоков).Таким образом, в 2024 году вознаграждение за блок биткойнов составит 3,125 BTC. В 2028 году это будет 1,5625 BTC и так далее. Из-за уменьшения вдвое вознаграждения за блок максимальное количество биткойнов ограничено 21 миллионом биткойнов, и оно будет достигнуто в 2140 году.
Доказательство работы используется в основном блокчейнами без разрешения, где любой человек может добавить узел в блокчейн, а личности узлов в блокчейне неизвестны. Таким образом, необходим механизм консенсуса, который позволяет узлам взаимодействовать без доверия.
Доказательство работы составляет 90% от общей рыночной капитализации существующих криптовалют. Это требует работы от узлов, которые участвуют в проверке блоков, ну, ну, чтобы выполнить некоторую сложную работу. Для выполнения этой работы майнерам нужен определенный стимул. Мы также увидим, что для добычи одного блока в сети Биткойн требуется много квадриллионов вычислений. Вот почему во всех блокчейнах с доказательством работы майнеры получают вознаграждение за блок, комиссию за транзакцию или и то, и другое.
Экономический стимул, стоящий за доказательством работы, является прекрасным примером того, как сохранить консенсус в полностью децентрализованной сети.Чтобы быть узлом / майнером в блокчейне доказательства работы, требуются аппаратные ресурсы, электричество и время, но если узлы играют по правилам, то есть в соответствии с механизмом консенсуса, они получают вознаграждение. Если узлы попытаются атаковать блокчейн, подделать данные или выполнить двойную трату, они не получат вознаграждение и будут просто тратить ресурсы.
В 2020 году майнеры получили биткойн на сумму около 7 миллиардов долларов на сумму в качестве вознаграждения за блок и около 800 миллионов долларов в виде комиссионных, уплаченных пользователями.Неплохо, а? Быть шахтером — тяжелая работа.
Плюсы доказательства работы:
- Масштабируемость сети (с точки зрения количества узлов)
- Безопасность повышается с увеличением количества узлов, т.е. чем больше сообщество майнеров, тем безопаснее оно
- Майнеры получают вознаграждение в обмен на их вычислительная мощность, вклад в сеть
- Очень безопасен в большинстве случаев
Минусы доказательства работы:
- Уязвимы к атакам 51% (в небольших цепочках подтверждения работы)
- Сложность майнинга обычно становится выше, а оборудование для майнинга быстро устаревают (рентабельность может упасть до нуля всего за 3 года)
- Майнинг стоит дорого и обычно требует специализированного оборудования для получения прибыли
- Он требует огромного количества электроэнергии
- Доказательство работы Блокчейны обычно имеют низкую пропускную способность (исследования показывают, что доказательство рабочих блокчейнов может достигать 60 транзакций в секунду без ущерба для безопасности)
- Требуется время, чтобы транзакция проверяется в цепочке блоков в зависимости от используемого протокола цепочки блоков — вот почему рекомендуется подождать от 10 до 20 минут, пока транзакция не будет проверена / зафиксирована в сети Биткойн (1 или 2 блока) или 5 минут в цепочке блоков Ethereum ( около 20 кварталов).С другой стороны, блоки Dogecoin добываются каждую минуту.
Скорость хеширования
Скорость хеширования — это количество вычислительных хешей, которые может выполнять оборудование. Разное оборудование имеет разные хешрейты. От процессоров до графических процессоров или микросхем ASIC — интегральных схем для конкретных приложений — майнеры стараются иметь наиболее эффективное оборудование, чтобы иметь наилучшую возможную скорость хеширования, что увеличит их вероятность добычи блока в цепочке блоков и получения за это вознаграждения. .
Сложность
Сложность показывает, насколько сложно найти хэш, необходимый для майнинга нового блока в цепочке блоков в блокчейне доказательства работы. Сложность представляет собой количество возможностей / комбинаций, по которым майнеры могут угадать хеш. Чем сложнее, тем больше работы нужно выполнить майнерам, чтобы угадать хеш и создать новый блок. Сложность регулируется в цепочке блоков биткойнов, так что новые блоки создаются в среднем каждые 10 минут. Если больше майнеров присоединятся к сети Биткойн, тем самым увеличив мощность хеширования, сложность возрастет и изменится так, чтобы майнеры обнаруживали хеш в среднем каждые 10 минут.
Сложность майнинга корректируется каждые 2016 блоков, что составляет примерно две недели, учитывая в среднем 10 минут на блок. Алгоритм Биткойн очень легко обеспечивает эту настройку. Если на поиск предыдущих блоков 2016 года потребовалось больше или меньше двух недель, сложность увеличивается или уменьшается пропорционально разнице во времени к двум неделям.
Как работает процесс майнинга Proof-of-Work
Майнинг Биткойн сложнее, чем добыча золота.Представьте, что вам нужно повторять хэши квадриллионы раз, пока вы не найдете правильный!
Различные цепочки блоков могут иметь разные механизмы, но давайте посмотрим на нашу цепочку блоков генезиса, Биткойн, в качестве примера.
При майнинге биткойнов майнеры должны придумать хэш блока, который соответствует определенным требованиям. Чтобы придумать этот хеш, им нужно изменить часть данных внутри блока, называемую nonce, и им нужно сделать это МНОГО раз. Это процесс угадывания лотереи. Звучит сложно? Не беспокойтесь, давайте сделаем это просто.
Сколько хэшей в среднем выполняют майнеры биткойнов по всему миру для добычи одного блока? Как я уже сказал, много раз:
хэшей на биткойн
= (скорость хеширования сети) / (6,25 BTC за 10 минут)
= (140 * Th / s) / (6,25 * BTC / (600 * s ))
= 140 * 600 / 6,25 * Th / s / BTC * s
= 13,440 Th / BTC
= 13,440,000,000,000,000 ч / BTC
Мы делим текущий хешрейт сети в секунду на 6,25 (вознаграждение за блок BTC за 10 минут ), и мы получаем ОЧЕНЬ большое число.
Майнерам необходимо вычислить в среднем 13,44 квадриллиона хэшей для генерации одного биткойна по состоянию на январь 2021 года. Если мы умножим это на 6,25, для добычи одного блока потребуется 84 квадриллиона хэшей! Майнерам необходимо повторять расчет на рисунке выше буквально квадриллионы раз, пока блок не будет добыт. Вот почему майнинг биткойнов тратит так много электроэнергии, но, с другой стороны, дает нам самый безопасный блокчейн из когда-либо существовавших.
Представьте себе гипотетически, что вы пытаетесь самостоятельно добыть этот биткойн-блок и что у вас есть только лучший процессор на рынке, 12-ядерный процессор AMD Ryzen 9 3900X.Вам понадобится 225 730 лет , чтобы добыть один биткойн-блок при текущей сложности.
К сожалению, майнить Биткойн на обычном компьютере довольно бесполезно. Это было возможно еще в 2009 и 2010 годах, когда хэш-мощность в сети была еще низкой, но в настоящее время только очень мощное оборудование, такое как специализированные майнеры ASIC, может выполнять эту работу. В то время не многие люди интересовались майнингом биткойнов, а цена BTC составляла всего несколько центов.
Ранние верующие в Биткойн, которые добывали его в первые дни, смогли купить Ламбо 🚗.
Но… почему майнить биткойн так сложно ?? А как происходит процесс майнинга?
Как мы видели ранее, сложность доказательства работы возрастает, когда в сеть добавляется больше мощности хеширования. Поле сложности и битов блока представляет количество нулей, которое имеет целевой хэш. Это количество нулей в начале хеша является условием, которому должны соответствовать майнеры. Чтобы сгенерировать хэш, соответствующий этому условию, майнеры должны будут следовать приведенному ниже процессу, пробуя разные одноразовые номера, пока они не создадут необходимый хеш.
Для создания хэша блока (т.е. для майнинга блока) вам необходимо выполнить определенные условия в доказательстве работы. Некоторые небольшие вариации могут применяться в зависимости от используемого алгоритма, но обычно требуется найти хэш, значение которого соответствует определенным требованиям. Другими словами, хеш должен начинаться с нескольких нулей.
Процесс довольно простой, но очень повторяющийся (майнеры повторяют его миллиарды или квадриллионы раз, как мы видели).
Схема, которую я сделал, очень четкая.Согласно схеме, чтобы выполнить необходимую работу по майнингу блока и получить хеш блока, майнер выполнит задачу. Здесь в игру вступает одноразовый номер, одно из полей в заголовке блока. Одноразовый номер — это 32-битное число, и майнеру нужно будет угадать, чтобы он создал хэш в соответствии с целью.
- Майнер создаст заголовок блока, преобразует его в строку данных
- Майнер добавляет одноразовый номер к данным и передает его в алгоритм хеширования (одноразовый номер — единственная часть блока, которую майнер может свободно изменить)
- Получить результирующий хэш
- Запустить тест, чтобы проверить, выполняется ли условие, т.е.е. целевой хэш выполняется
- Если условие выполнено, это означает, что майнер нашел одноразовый номер, который генерирует хеш в соответствии с целевым
- Если условие не было выполнено (скорее всего), майнер попробует другой одноразовый номер , то есть он возвращается к пункту 2, пробуя новый одноразовый номер, пока не будет получен хэш, который соответствует цели
Майнерам, скорее всего, придется выполнять эти вычисления квадриллионы раз, пока они не получат правильное значение.
Как только майнер находит правильный хеш, он транслирует блок в сеть, и другие майнеры могут легко проверить, что этот одноразовый номер создает хеш в соответствии с целью.Майнер, добывший блок, также включит в блок транзакцию coinbase. Эта транзакция соответствует награде за блок, которую он получит.
При майнинге майнеры пытаются найти значения хеша ниже целевого значения (это поле в каждом блоке цепочки блоков). Значение хеш-функции должно быть меньше значения, представленного полем битов в заголовке блока. Это также будет означать, что целевой хэш должен начинаться с нескольких нулей. Это количество нулей будет увеличиваться с трудом.Чем выше сложность, тем сложнее добыть блок, потому что труднее найти хэш, соответствующий требуемой цели.
Почему эти «нули» в хеш-коде так сильно влияют на сложность? Если вы думаете, что вероятность хеширования блока, скажем, с 20 прямыми нулями, чрезвычайно мала. Это похоже на попытку найти среди квадриллионов лотерейных билетов чащу лотереи, которая начинается с 20 нулей. Или то же самое, что бросить кубик и получить одно и то же число 15 раз подряд. Это очень-очень низкая вероятность, и поэтому это так сложно.
Чтобы проиллюстрировать вероятности и то, насколько сложно получить хэш с большим количеством нулей, который будет меньше целевого хеша, давайте представим, что мы играем в кости. Какова вероятность подбросить 15 кубиков и получить все одинаковые по стоимости?
P = pⁿ = (1 / s) ⁿ
Предполагая, что наши кости являются шестигранными:
1 кубик: (1/6) ¹ = 0,16 или 16% вероятность
2 кубика: (1/6) ² = 0,02 (7) или 2,77% вероятность
4 кубика: (1/6) ⁴ = 0,00077160493827 или 0.077160493827% вероятность
6 кубиков: (1/6) ⁶ = 0,00002143347050 или 0,002143347050% вероятность
15 кубиков: (1/6) ¹⁵ = 0,00000000000212682249 или 0,000000000212682249%
. играет в кости в среднем 470 184 984 737 раз, чтобы все они оказались равными одному и тому же значению. Это 470 миллиардов раз!
Теперь вы видите, насколько сложнее, чем кажется, получить все кубики с одинаковым значением или хэш с таким количеством « нулей».
Теперь, когда мы понимаем концепцию, давайте посмотрим на нее с реальными формулами и посмотрим, как майнеры находят хеш в зависимости от сложности.
Сложность = MAX_TARGET / current_target
Итак, MAX_TARGET — это сложность, которая была установлена для первого блока, и в основном сложность = 1, и она записывается как шестнадцатеричное значение 1d00ffff.
Если мы преобразуем битовое значение нашего блока 386 867 735 в шестнадцатеричное, мы получим значение 0x170f2217.Это значение разделено на четыре байта. Первый — это индекс, за которым следуют 3 байта. В этом случае биты — это индекс 0x17 и коэффициент 0x0f2217. Здесь 0x означает, что мы говорим о шестнадцатеричном числе, также известном как шестнадцатеричный, числовой системе, используемой в вычислениях.
Целевой порог — это 256-битное целое число, хэш которого должен быть равен или меньше, чтобы соответствовать целевому хешу. Это целевой хэш, о котором мы говорили в процессе майнинга. (8 x (23–3)) = 1449469094350757594478113895488529861555105250349678592
Что в шестнадцатеричном формате
0000000000000000
00000000 000000 сравнивая с хешем блока, мы видим, что наш хэш блока ниже:
0x 0000 0000 0000 0000 000 92f5f21cd6db1d374252d6e343bd7a0fcac448ef01a5
Легко, правда?
Мы также могли бы использовать калькулятор Python, чтобы сразу перейти к делу и проверить, не ниже ли хэш целевого значения.(8 * (индекс -3))
Как видите, мы получаем точно такой же результат, который является целевым значением. Если вы хотите попробовать это самостоятельно, вы можете загрузить python через командную строку.
Мы также можем проверить, что хэш блока ниже целевого:
Эта последняя функция показывает, что целое число хэша блока меньше целевого целого, что означает, что хеш соответствует цели, т.е. условие истинно. УРА! 🤯🤠🦄🚀
🚀 Следуйте за мной, а также проверьте мои 🧱 курсы по блокчейну:
🐶 Первый курс Dogecoin
👨🎓 Fintech, Cloud and Cybersecurity Course
📖 Полный курс NFT
👨🎓 Курс Unblockchain — Удобный для мозга курс Blockchain
Пересмотренный алгоритм хеширования блоков биткойнов и рассматривается как a…
Контекст 1
… цель — это большое целое число, которое является глобальной переменной для всей биткойн-системы во всем мире и с которой, как ожидается, согласятся все участники во всем мире. Значение цели медленно меняется со временем и корректируется примерно каждые 2 недели. Более подробная информация представлена ниже в разделе 7.1. Задача майнеров биткойнов — найти эти решения и опубликовать их. Они награждаются биткойнами за свою работу. В 2013 году вознаграждение составляет 25 BTC (25 биткойнов) за действительное решение.Как именно работает эта награда и как она меняется со временем, будет объяснено позже. Принято считать, что нет другого метода достижения успеха, кроме проб и ошибок; хеширование случайным образом, как показано на рис. 2, до тех пор, пока не будет найден результат с достаточным количеством начальных нулей. Однако это маловероятно, всегда есть лучший способ, хотя бы немного, см. Раздел 12. Ряд полей данных присутствует в качестве входных данных для задачи CISO, ср. Рис. 2. Некоторые данные фиксируются или изменяются очень медленно, они обозначены зеленым цветом на рис.2. Другие данные должны быть скорректированы майнером, чтобы получить решение, однако они все равно меняются очень медленно. Такие данные обозначены желтым цветом на основной картинке. Данные, которые изменяются наиболее часто, обозначены красным цветом: это «горячие» данные, которые необходимо пересчитывать каждый раз, когда изменяется одноразовый номер. Биткойн — это живая распределенная система, и точные условия, необходимые для того, чтобы данные считались действительными, по существу фиксированы и известны, однако они, вероятно, будут эволюционировать со временем тонкими способами.Правила уже были и могут быть изменены во время работы системы. Они также зависят от консенсуса участников системы. В сообществе биткойнов обычно признается, что может быть и должно быть много разных версий программного обеспечения, которые сосуществуют. Это связано с тем, что, если бы все программное обеспечение было из одного источника, биткойн перестал бы быть системой, независимой от какого-либо центрального органа, и у него развился бы серьезный синдром единой точки отказа. Поэтому программное обеспечение биткойнов должно быть разнообразным.Мы могли бы даже постулировать, что никому нельзя исключать возможность создания собственного программного обеспечения, даже если мы можем беспокоиться о атаках типа «отказ в обслуживании». На практике все обстоит иначе: исходное программное обеспечение Satoshi [6] сохраняет видное место. Далее мы собираемся описать, что такое разные входные данные. Нам нужно обратить внимание на разрешенную степень свободы: насколько майнер может выбирать различные значения для достижения желаемого результата. У нас есть: 1.Номер версии на 32 бита. Это целое число, которое представляет номер версии программного обеспечения биткойнов. Он определяет правила, которые управляют блоками, какие блоки могут быть приняты как действительные. По сути, это константа, поскольку с момента создания системы в 2009 году она всегда была равна 1, затем она стала 2. На момент написания новых блоков обычно является версия 2, и было объявлено, что очень скоро сообщество перестанет принимать сгенерированные блоки соответствуют правилам более старой версии 1.2. Предыдущий блок на 256 бит. Или, точнее, хеш на 256 бит всех данных предыдущего блока CISO, закодированных определенным образом. Каждый новый блок добавляется в конец цепочки блоков. В идеале существует только одна официальная цепочка блоков. У майнера практически нет выбора, новый блок CISO создается примерно каждые 10 минут и транслируется в одноранговой сети (и публикуется в Интернете) как можно скорее. Текущий блок очень быстро устаревает. Либо майнеры теперь будут использовать его как предыдущий блок, либо они будут использовать другое свеже сгенерированное решение.Решение НЕ уникально, но есть только один победитель (в долгосрочной перспективе). Каждый майнер, который производит решение, хочет, чтобы это решение было известно как можно большему количеству других майнеров и опередило любое конкурирующее решение. Это гонка, в которой каждая микросекунда на счету. Процесс генерации новых блоков — это своего рода лотерея, и вероятность того, что за очень короткий промежуток времени будут два победителя, мала. Майнер обязан очень часто проверять, не найдено ли решение.Если это так, то поиск другого позже не в его интересах, его шансы на успех быстро уменьшаются со временем. Однако с точки зрения людей и технических / программных средств распространение в сети приводит к тому, что не все участники имеют одинаковое представление о том, какое решение было первым, и существует реальная возможность возникновения споров. Потенциально биткойн может разделиться на две системы, которые не распознают друг друга и которые управляют двумя независимыми постоянно растущими блокчейнами. Теоретически существует так называемое правило самой длинной цепи, которое позволяет решить эту проблему [41].На практике все немного иначе. Правило самой длинной цепи может быть трудным для соблюдения. Люди могут больше доверять хорошо зарекомендовавшим себя веб-сайтам, чем некоторым голосам, исходящим из (более непонятной) одноранговой сети. Они могли подозревать нападение могущественного существа или сопротивляться ему. Они могут просто согласиться не согласиться, потому что они потратили значительные деньги на электроэнергию в одной из версий цепочки. 3. Корень Меркла на 256 бит. Это своего рода агрегированный хэш многих недавних событий в сети биткойнов, который подтверждает, что система распознает все из них одновременно как действительные.Кроме того, он также имеет свойство самосертификации. Он также хеширует и сертифицирует открытый ключ будущего владельца этой недавно созданной части биткойн-валюты, которую этот блок предназначен для воплощения, как только это, в свою очередь, подтверждается несколькими другими блоками CISO. Текущий блок CISO, который майнер пытается создать, решая текущую проблему CISO, и все последующие блоки CISO будут обеспечивать накопление доказательств обо всех этих событиях, которые со временем будут становиться все более безопасными, и их будет все труднее фальсифицировать.Эта гарантия безопасности увеличивается со временем. Это достигается за счет того, что майнеры расходуют много вычислительной мощности, количество майнеров увеличивается, а в последнее время они используют специализированные устройства с увеличивающимися фиксированными затратами (на оборудование). Все это становится все труднее подражать. Интересно, что значение корня Меркла может (и должно быть) зависеть от майнера, как описано ниже. Прежде всего, очевидно, что майнеры обладают некоторыми дискреционными полномочиями и должны иметь возможность вступать в сговор и / или выбирать, какие транзакции будут распознаваться системой.Однако комиссии за транзакции, которые определяются в момент перевода с одного биткойн-адреса на другой, являются стимулом для включения каждой отдельной транзакции. Таким образом, майнер может собирать сотни транзакционных сборов за каждый сгенерированный блок. Значение корня Меркла всегда создается хеш-функцией, которая, как ожидается, будет вести себя как случайный оракул. Это означает, что майнер может повлиять на это значение корня Меркла, но очень незначительно, в основном методом проб и ошибок. 4. Отметка времени на 32 бита.Это текущее время в секундах. Майнер вряд ли сможет это изменить. Это было бы крайне рискованно, поскольку в любой момент могло быть представлено другое решение. В 10 минутах всего 600 секунд. 5. Таргетинг на 32 бита. Точнее, целевая глобальная переменная имеет 256 бит, и здесь хранится сжатая версия цели, которую часто называют сложностью. У нас сложность ≈ 267, 731, 249 ≈ 2 28. 0 по состоянию на 22 октября 2013 года. Эта сложность представляет собой реальное (плавающее) число, равное как минимум 1 и хранящееся в 32-битном формате.У нас сложность · 2 32 = 1 / вероятность = 2 256 / цель. 6. Одноразовый номер на 32 бита. Этот одноразовый номер свободно выбирается майнером. Интересно, что одноразовый номер имеет только 32 бита, в то время как текущее значение target делает вероятность случайного получения подходящего H 2 всего 2-60. 00. Это означает, что майнер должен иметь возможность генерировать разные версии головоломки с другим корнем Меркла (или с другими отличиями) 7. Padding + Len имеет 384 бит для h2 и 256 бит для h3. Это две константы из-за спецификации хэш-функции SHA-256, которая используется здесь дважды с данными разного размера: входной хеш имеет 640 и 256 бит соответственно в каждом приложении SHA-256.Эти два значения никогда не меняются. Что касается требований и ограничений входных данных, указанных выше, а также выходного ограничения H 2 Контекст 2 … цель — это большое целое число, которое является глобальной переменной для всей биткойн-системы во всем мире и с которым, как ожидается, согласятся все участники во всем мире. Значение цели медленно меняется со временем и корректируется примерно каждые 2 недели.Более подробная информация представлена ниже в разделе 7.1. Задача майнеров биткойнов — найти эти решения и опубликовать их. Они награждаются биткойнами за свою работу. В 2013 году вознаграждение составляет 25 BTC (25 биткойнов) за действительное решение. Как именно работает эта награда и как она меняется со временем, будет объяснено позже. Принято считать, что нет другого метода достижения успеха, кроме проб и ошибок; хеширование случайным образом, как показано на рис. 2, до тех пор, пока не будет найден результат с достаточным количеством начальных нулей.Однако это маловероятно, всегда есть лучший способ, хотя бы немного, см. Раздел 12. Ряд полей данных присутствует в качестве входных данных для задачи CISO, ср. Рис. 2. Некоторые данные фиксированы или изменяются очень медленно, и они обозначены зеленым на рис. 2. Другие данные должны быть скорректированы майнером, чтобы получить решение, однако они по-прежнему изменяются очень медленно. Такие данные обозначены желтым цветом на основной картинке. Данные, которые изменяются наиболее часто, обозначены красным цветом: это «горячие» данные, которые необходимо пересчитывать каждый раз, когда изменяется одноразовый номер.Биткойн — это живая распределенная система, и точные условия, необходимые для того, чтобы данные считались действительными, по существу фиксированы и известны, однако они, вероятно, будут эволюционировать со временем тонкими способами. Правила уже были и могут быть изменены во время работы системы. Они также зависят от консенсуса участников системы. В сообществе биткойнов обычно признается, что может быть и должно быть много разных версий программного обеспечения, которые сосуществуют. Это связано с тем, что, если бы все программное обеспечение было из одного источника, биткойн перестал бы быть системой, независимой от какого-либо центрального органа, и у него развился бы серьезный синдром единой точки отказа.Поэтому программное обеспечение биткойнов должно быть разнообразным. Мы могли бы даже постулировать, что никому нельзя исключать возможность создания собственного программного обеспечения, даже если мы можем беспокоиться о атаках типа «отказ в обслуживании». На практике все обстоит иначе: исходное программное обеспечение Satoshi [6] сохраняет видное место. Далее мы собираемся описать, что такое разные входные данные. Нам нужно обратить внимание на разрешенную степень свободы: насколько майнер может выбирать различные значения для достижения желаемого результата.Имеем: 1. Номер версии на 32 бита. Это целое число, которое представляет номер версии программного обеспечения биткойнов. Он определяет правила, которые управляют блоками, какие блоки могут быть приняты как действительные. По сути, это константа, поскольку с момента создания системы в 2009 году она всегда была равна 1, затем она стала 2. На момент написания новых блоков обычно является версия 2, и было объявлено, что очень скоро сообщество перестанет принимать сгенерированные блоки соответствуют правилам более старой версии 1.2. Предыдущий блок на 256 бит. Или, точнее, хеш на 256 бит всех данных предыдущего блока CISO, закодированных определенным образом. Каждый новый блок добавляется в конец цепочки блоков. В идеале существует только одна официальная цепочка блоков. У майнера практически нет выбора, новый блок CISO создается примерно каждые 10 минут и транслируется в одноранговой сети (и публикуется в Интернете) как можно скорее. Текущий блок очень быстро устаревает. Либо майнеры теперь будут использовать его как предыдущий блок, либо они будут использовать другое свеже сгенерированное решение.Решение НЕ уникально, но есть только один победитель (в долгосрочной перспективе). Каждый майнер, который производит решение, хочет, чтобы это решение было известно как можно большему количеству других майнеров и опередило любое конкурирующее решение. Это гонка, в которой каждая микросекунда на счету. Процесс генерации новых блоков — это своего рода лотерея, и вероятность того, что за очень короткий промежуток времени будут два победителя, мала. Майнер обязан очень часто проверять, не найдено ли решение.Если это так, то поиск другого позже не в его интересах, его шансы на успех быстро уменьшаются со временем. Однако с точки зрения людей и технических / программных средств распространение в сети приводит к тому, что не все участники имеют одинаковое представление о том, какое решение было первым, и существует реальная возможность возникновения споров. Потенциально биткойн может разделиться на две системы, которые не распознают друг друга и которые управляют двумя независимыми постоянно растущими блокчейнами. Теоретически существует так называемое правило самой длинной цепи, которое позволяет решить эту проблему [41].На практике все немного иначе. Правило самой длинной цепи может быть трудным для соблюдения. Люди могут больше доверять хорошо зарекомендовавшим себя веб-сайтам, чем некоторым голосам, исходящим из (более непонятной) одноранговой сети. Они могли подозревать нападение могущественного существа или сопротивляться ему. Они могут просто согласиться не согласиться, потому что они потратили значительные деньги на электроэнергию в одной из версий цепочки. 3. Корень Меркла на 256 бит. Это своего рода агрегированный хэш многих недавних событий в сети биткойнов, который подтверждает, что система распознает все из них одновременно как действительные.Кроме того, он также имеет свойство самосертификации. Он также хеширует и сертифицирует открытый ключ будущего владельца этой недавно созданной части биткойн-валюты, которую этот блок предназначен для воплощения, как только это, в свою очередь, подтверждается несколькими другими блоками CISO. Текущий блок CISO, который майнер пытается создать, решая текущую проблему CISO, и все последующие блоки CISO будут обеспечивать накопление доказательств обо всех этих событиях, которые со временем будут становиться все более безопасными, и их будет все труднее фальсифицировать.Эта гарантия безопасности увеличивается со временем. Это достигается за счет того, что майнеры расходуют много вычислительной мощности, количество майнеров увеличивается, а в последнее время они используют специализированные устройства с увеличивающимися фиксированными затратами (на оборудование). Все это становится все труднее подражать. Интересно, что значение корня Меркла может (и должно быть) зависеть от майнера, как описано ниже. Прежде всего, очевидно, что майнеры обладают некоторыми дискреционными полномочиями и должны иметь возможность вступать в сговор и / или выбирать, какие транзакции будут распознаваться системой.Однако комиссии за транзакции, которые определяются в момент перевода с одного биткойн-адреса на другой, являются стимулом для включения каждой отдельной транзакции. Таким образом, майнер может собирать сотни транзакционных сборов за каждый сгенерированный блок. Значение корня Меркла всегда создается хеш-функцией, которая, как ожидается, будет вести себя как случайный оракул. Это означает, что майнер может повлиять на это значение корня Меркла, но очень незначительно, в основном методом проб и ошибок. 4. Отметка времени на 32 бита.Это текущее время в секундах. Майнер вряд ли сможет это изменить. Это было бы крайне рискованно, поскольку в любой момент могло быть представлено другое решение. В 10 минутах всего 600 секунд. 5. Таргетинг на 32 бита. Точнее, целевая глобальная переменная имеет 256 бит, и здесь хранится сжатая версия цели, которую часто называют сложностью. У нас сложность ≈ 267, 731, 249 ≈ 2 28. 0 по состоянию на 22 октября 2013 года. Эта сложность представляет собой реальное (плавающее) число, равное как минимум 1 и хранящееся в 32-битном формате.У нас сложность · 2 32 = 1 / вероятность = 2 256 / цель. 6. Одноразовый номер на 32 бита. Этот одноразовый номер свободно выбирается майнером. Интересно, что одноразовый номер имеет только 32 бита, в то время как текущее значение target делает вероятность случайного получения подходящего H 2 всего 2-60. 00. Это означает, что майнер должен иметь возможность генерировать разные версии головоломки с другим корнем Меркла (или с другими отличиями) 7. Padding + Len имеет 384 бит для h2 и 256 бит для h3. Это две константы из-за спецификации хэш-функции SHA-256, которая используется здесь дважды с данными разного размера: входной хеш имеет 640 и 256 бит соответственно в каждом приложении SHA-256.Эти два значения никогда не меняются. Что касается требований и ограничений входных данных, указанных выше, а также выходного ограничения H 2 Контекст 3 … цель — это большое целое число, которое является глобальной переменной для всей биткойн-системы во всем мире и с которым, как ожидается, согласятся все участники во всем мире. Значение цели медленно меняется со временем и корректируется примерно каждые 2 недели.Более подробная информация представлена ниже в разделе 7.1. Задача майнеров биткойнов — найти эти решения и опубликовать их. Они награждаются биткойнами за свою работу. В 2013 году вознаграждение составляет 25 BTC (25 биткойнов) за действительное решение. Как именно работает эта награда и как она меняется со временем, будет объяснено позже. Принято считать, что нет другого метода достижения успеха, кроме проб и ошибок; хеширование случайным образом, как показано на рис. 2, до тех пор, пока не будет найден результат с достаточным количеством начальных нулей.Однако это маловероятно, всегда есть лучший способ, хотя бы немного, см. Раздел 12. Ряд полей данных присутствует в качестве входных данных для задачи CISO, ср. Рис. 2. Некоторые данные фиксированы или изменяются очень медленно, и они обозначены зеленым на рис. 2. Другие данные должны быть скорректированы майнером, чтобы получить решение, однако они по-прежнему изменяются очень медленно. Такие данные обозначены желтым цветом на основной картинке. Данные, которые изменяются наиболее часто, обозначены красным цветом: это «горячие» данные, которые необходимо пересчитывать каждый раз, когда изменяется одноразовый номер.Биткойн — это живая распределенная система, и точные условия, необходимые для того, чтобы данные считались действительными, по существу фиксированы и известны, однако они, вероятно, будут эволюционировать со временем тонкими способами. Правила уже были и могут быть изменены во время работы системы. Они также зависят от консенсуса участников системы. В сообществе биткойнов обычно признается, что может быть и должно быть много разных версий программного обеспечения, которые сосуществуют. Это связано с тем, что, если бы все программное обеспечение было из одного источника, биткойн перестал бы быть системой, независимой от какого-либо центрального органа, и у него развился бы серьезный синдром единой точки отказа.Поэтому программное обеспечение биткойнов должно быть разнообразным. Мы могли бы даже постулировать, что никому нельзя исключать возможность создания собственного программного обеспечения, даже если мы можем беспокоиться о атаках типа «отказ в обслуживании». На практике все обстоит иначе: исходное программное обеспечение Satoshi [6] сохраняет видное место. Далее мы собираемся описать, что такое разные входные данные. Нам нужно обратить внимание на разрешенную степень свободы: насколько майнер может выбирать различные значения для достижения желаемого результата.Имеем: 1. Номер версии на 32 бита. Это целое число, которое представляет номер версии программного обеспечения биткойнов. Он определяет правила, которые управляют блоками, какие блоки могут быть приняты как действительные. По сути, это константа, поскольку с момента создания системы в 2009 году она всегда была равна 1, затем она стала 2. На момент написания новых блоков обычно является версия 2, и было объявлено, что очень скоро сообщество перестанет принимать сгенерированные блоки соответствуют правилам более старой версии 1.2. Предыдущий блок на 256 бит. Или, точнее, хеш на 256 бит всех данных предыдущего блока CISO, закодированных определенным образом. Каждый новый блок добавляется в конец цепочки блоков. В идеале существует только одна официальная цепочка блоков. У майнера практически нет выбора, новый блок CISO создается примерно каждые 10 минут и транслируется в одноранговой сети (и публикуется в Интернете) как можно скорее. Текущий блок очень быстро устаревает. Либо майнеры теперь будут использовать его как предыдущий блок, либо они будут использовать другое свеже сгенерированное решение.Решение НЕ уникально, но есть только один победитель (в долгосрочной перспективе). Каждый майнер, который производит решение, хочет, чтобы это решение было известно как можно большему количеству других майнеров и опередило любое конкурирующее решение. Это гонка, в которой каждая микросекунда на счету. Процесс генерации новых блоков — это своего рода лотерея, и вероятность того, что за очень короткий промежуток времени будут два победителя, мала. Майнер обязан очень часто проверять, не найдено ли решение.Если это так, то поиск другого позже не в его интересах, его шансы на успех быстро уменьшаются со временем. Однако с точки зрения людей и технических / программных средств распространение в сети приводит к тому, что не все участники имеют одинаковое представление о том, какое решение было первым, и существует реальная возможность возникновения споров. Потенциально биткойн может разделиться на две системы, которые не распознают друг друга и которые управляют двумя независимыми постоянно растущими блокчейнами. Теоретически существует так называемое правило самой длинной цепи, которое позволяет решить эту проблему [41].На практике все немного иначе. Правило самой длинной цепи может быть трудным для соблюдения. Люди могут больше доверять хорошо зарекомендовавшим себя веб-сайтам, чем некоторым голосам, исходящим из (более непонятной) одноранговой сети. Они могли подозревать нападение могущественного существа или сопротивляться ему. Они могут просто согласиться не согласиться, потому что они потратили значительные деньги на электроэнергию в одной из версий цепочки. 3. Корень Меркла на 256 бит. Это своего рода агрегированный хэш многих недавних событий в сети биткойнов, который подтверждает, что система распознает все из них одновременно как действительные.Кроме того, он также имеет свойство самосертификации. Он также хеширует и сертифицирует открытый ключ будущего владельца этой недавно созданной части биткойн-валюты, которую этот блок предназначен для воплощения, как только это, в свою очередь, подтверждается несколькими другими блоками CISO. Текущий блок CISO, который майнер пытается создать, решая текущую проблему CISO, и все последующие блоки CISO будут обеспечивать накопление доказательств обо всех этих событиях, которые со временем будут становиться все более безопасными, и их будет все труднее фальсифицировать.Эта гарантия безопасности увеличивается со временем. Это достигается за счет того, что майнеры расходуют много вычислительной мощности, количество майнеров увеличивается, а в последнее время они используют специализированные устройства с увеличивающимися фиксированными затратами (на оборудование). Все это становится все труднее подражать. Интересно, что значение корня Меркла может (и должно быть) зависеть от майнера, как описано ниже. Прежде всего, очевидно, что майнеры обладают некоторыми дискреционными полномочиями и должны иметь возможность вступать в сговор и / или выбирать, какие транзакции будут распознаваться системой.Однако комиссии за транзакции, которые определяются в момент перевода с одного биткойн-адреса на другой, являются стимулом для включения каждой отдельной транзакции. Таким образом, майнер может собирать сотни транзакционных сборов за каждый сгенерированный блок. Значение корня Меркла всегда создается хеш-функцией, которая, как ожидается, будет вести себя как случайный оракул. Это означает, что майнер может повлиять на это значение корня Меркла, но очень незначительно, в основном методом проб и ошибок. 4. Отметка времени на 32 бита.Это текущее время в секундах. Майнер вряд ли сможет это изменить. Это было бы крайне рискованно, поскольку в любой момент могло быть представлено другое решение. В 10 минутах всего 600 секунд. 5. Таргетинг на 32 бита. Точнее, целевая глобальная переменная имеет 256 бит, и здесь хранится сжатая версия цели, которую часто называют сложностью. У нас сложность ≈ 267, 731, 249 ≈ 2 28. 0 по состоянию на 22 октября 2013 года. Эта сложность представляет собой реальное (плавающее) число, равное как минимум 1 и хранящееся в 32-битном формате.У нас сложность · 2 32 = 1 / вероятность = 2 256 / цель. 6. Одноразовый номер на 32 бита. Этот одноразовый номер свободно выбирается майнером. Интересно, что одноразовый номер имеет только 32 бита, в то время как текущее значение target делает вероятность случайного получения подходящего H 2 всего 2-60. 00. Это означает, что майнер должен иметь возможность генерировать разные версии головоломки с другим корнем Меркла (или с другими отличиями) 7. Padding + Len имеет 384 бит для h2 и 256 бит для h3. Это две константы из-за спецификации хэш-функции SHA-256, которая используется здесь дважды с данными разного размера: входной хеш имеет 640 и 256 бит соответственно в каждом приложении SHA-256.Эти два значения никогда не меняются. Что касается требований и ограничений входных данных, указанных выше, а также выходного ограничения H 2 Контекст 4 … цель — это большое целое число, которое является глобальной переменной для всей биткойн-системы во всем мире и с которым, как ожидается, согласятся все участники во всем мире. Значение цели медленно меняется со временем и корректируется примерно каждые 2 недели.Более подробная информация представлена ниже в разделе 7.1. Задача майнеров биткойнов — найти эти решения и опубликовать их. Они награждаются биткойнами за свою работу. В 2013 году вознаграждение составляет 25 BTC (25 биткойнов) за действительное решение. Как именно работает эта награда и как она меняется со временем, будет объяснено позже. Принято считать, что нет другого метода достижения успеха, кроме проб и ошибок; хеширование случайным образом, как показано на рис. 2, до тех пор, пока не будет найден результат с достаточным количеством начальных нулей.Однако это маловероятно, всегда есть лучший способ, хотя бы немного, см. Раздел 12. Ряд полей данных присутствует в качестве входных данных для задачи CISO, ср. Рис. 2. Некоторые данные фиксированы или изменяются очень медленно, и они обозначены зеленым на рис. 2. Другие данные должны быть скорректированы майнером, чтобы получить решение, однако они по-прежнему изменяются очень медленно. Такие данные обозначены желтым цветом на основной картинке. Данные, которые изменяются наиболее часто, обозначены красным цветом: это «горячие» данные, которые необходимо пересчитывать каждый раз, когда изменяется одноразовый номер.Биткойн — это живая распределенная система, и точные условия, необходимые для того, чтобы данные считались действительными, по существу фиксированы и известны, однако они, вероятно, будут эволюционировать со временем тонкими способами. Правила уже были и могут быть изменены во время работы системы. Они также зависят от консенсуса участников системы. В сообществе биткойнов обычно признается, что может быть и должно быть много разных версий программного обеспечения, которые сосуществуют. Это связано с тем, что, если бы все программное обеспечение было из одного источника, биткойн перестал бы быть системой, независимой от какого-либо центрального органа, и у него развился бы серьезный синдром единой точки отказа.Поэтому программное обеспечение биткойнов должно быть разнообразным. Мы могли бы даже постулировать, что никому нельзя исключать возможность создания собственного программного обеспечения, даже если мы можем беспокоиться о атаках типа «отказ в обслуживании». На практике все обстоит иначе: исходное программное обеспечение Satoshi [6] сохраняет видное место. Далее мы собираемся описать, что такое разные входные данные. Нам нужно обратить внимание на разрешенную степень свободы: насколько майнер может выбирать различные значения для достижения желаемого результата.Имеем: 1. Номер версии на 32 бита. Это целое число, которое представляет номер версии программного обеспечения биткойнов. Он определяет правила, которые управляют блоками, какие блоки могут быть приняты как действительные. По сути, это константа, поскольку с момента создания системы в 2009 году она всегда была равна 1, затем она стала 2. На момент написания новых блоков обычно является версия 2, и было объявлено, что очень скоро сообщество перестанет принимать сгенерированные блоки соответствуют правилам более старой версии 1.2. Предыдущий блок на 256 бит. Или, точнее, хеш на 256 бит всех данных предыдущего блока CISO, закодированных определенным образом. Каждый новый блок добавляется в конец цепочки блоков. В идеале существует только одна официальная цепочка блоков. У майнера практически нет выбора, новый блок CISO создается примерно каждые 10 минут и транслируется в одноранговой сети (и публикуется в Интернете) как можно скорее. Текущий блок очень быстро устаревает. Либо майнеры теперь будут использовать его как предыдущий блок, либо они будут использовать другое свеже сгенерированное решение.Решение НЕ уникально, но есть только один победитель (в долгосрочной перспективе). Каждый майнер, который производит решение, хочет, чтобы это решение было известно как можно большему количеству других майнеров и опередило любое конкурирующее решение. Это гонка, в которой каждая микросекунда на счету. Процесс генерации новых блоков — это своего рода лотерея, и вероятность того, что за очень короткий промежуток времени будут два победителя, мала. Майнер обязан очень часто проверять, не найдено ли решение.Если это так, то поиск другого позже не в его интересах, его шансы на успех быстро уменьшаются со временем. Однако с точки зрения людей и технических / программных средств распространение в сети приводит к тому, что не все участники имеют одинаковое представление о том, какое решение было первым, и существует реальная возможность возникновения споров. Потенциально биткойн может разделиться на две системы, которые не распознают друг друга и которые управляют двумя независимыми постоянно растущими блокчейнами. Теоретически существует так называемое правило самой длинной цепи, которое позволяет решить эту проблему [41].На практике все немного иначе. Правило самой длинной цепи может быть трудным для соблюдения. Люди могут больше доверять хорошо зарекомендовавшим себя веб-сайтам, чем некоторым голосам, исходящим из (более непонятной) одноранговой сети. Они могли подозревать нападение могущественного существа или сопротивляться ему. Они могут просто согласиться не согласиться, потому что они потратили значительные деньги на электроэнергию в одной из версий цепочки. 3. Корень Меркла на 256 бит. Это своего рода агрегированный хэш многих недавних событий в сети биткойнов, который подтверждает, что система распознает все из них одновременно как действительные.Кроме того, он также имеет свойство самосертификации. Он также хеширует и сертифицирует открытый ключ будущего владельца этой недавно созданной части биткойн-валюты, которую этот блок предназначен для воплощения, как только это, в свою очередь, подтверждается несколькими другими блоками CISO. Текущий блок CISO, который майнер пытается создать, решая текущую проблему CISO, и все последующие блоки CISO будут обеспечивать накопление доказательств обо всех этих событиях, которые со временем будут становиться все более безопасными, и их будет все труднее фальсифицировать.Эта гарантия безопасности увеличивается со временем. Это достигается за счет того, что майнеры расходуют много вычислительной мощности, количество майнеров увеличивается, а в последнее время они используют специализированные устройства с увеличивающимися фиксированными затратами (на оборудование). Все это становится все труднее подражать. Интересно, что значение корня Меркла может (и должно быть) зависеть от майнера, как описано ниже. Прежде всего, очевидно, что майнеры обладают некоторыми дискреционными полномочиями и должны иметь возможность вступать в сговор и / или выбирать, какие транзакции будут распознаваться системой.Однако комиссии за транзакции, которые определяются в момент перевода с одного биткойн-адреса на другой, являются стимулом для включения каждой отдельной транзакции. Таким образом, майнер может собирать сотни транзакционных сборов за каждый сгенерированный блок. Значение корня Меркла всегда создается хеш-функцией, которая, как ожидается, будет вести себя как случайный оракул. Это означает, что майнер может повлиять на это значение корня Меркла, но очень незначительно, в основном методом проб и ошибок. 4. Отметка времени на 32 бита.Это текущее время в секундах. Майнер вряд ли сможет это изменить. Это было бы крайне рискованно, поскольку в любой момент могло быть представлено другое решение. В 10 минутах всего 600 секунд. 5. Таргетинг на 32 бита. Точнее, целевая глобальная переменная имеет 256 бит, и здесь хранится сжатая версия цели, которую часто называют сложностью. У нас сложность ≈ 267, 731, 249 ≈ 2 28. 0 по состоянию на 22 октября 2013 года. Эта сложность представляет собой реальное (плавающее) число, равное как минимум 1 и хранящееся в 32-битном формате.У нас сложность · 2 32 = 1 / вероятность = 2 256 / цель. 6. Одноразовый номер на 32 бита. Этот одноразовый номер свободно выбирается майнером. Интересно, что одноразовый номер имеет только 32 бита, в то время как текущее значение target делает вероятность случайного получения подходящего H 2 всего 2-60. 00. Это означает, что майнер должен иметь возможность генерировать разные версии головоломки с другим корнем Меркла (или с другими отличиями) 7. Padding + Len имеет 384 бит для h2 и 256 бит для h3. Это две константы из-за спецификации хэш-функции SHA-256, которая используется здесь дважды с данными разного размера: входной хеш имеет 640 и 256 бит соответственно в каждом приложении SHA-256.Эти два значения никогда не меняются. Что касается требований и ограничений входных данных, указанных выше, а также выходного ограничения H 2 Контекст 5 … текущая вероятность 2 соответствует требованию наличия 60 ведущих нулей, а на самом деле чуть более или менее немного меньше 60, точное правило таково: просто необходимо, чтобы уравнение H 2 Контекст 6 … потребляли около 982 мегаватт-часов каждый день, что достаточно для питания около 30 000 домов в США или эквивалент 150 000 долларов США в день по счетам за электроэнергию. Тем не менее, они смогут получать около 0,7 миллиона долларов ежедневной прибыли [34]. В то время хешрейт составлял около 60 тера хешей в секунду. На момент написания (22 октября 2013 года) хешрейт достиг 3000 Тера Хэшей / с из-за массового перехода с майнинга GPU и FPGA на майнинг ASIC. Однако энергопотребление, вероятно, снизилось из-за того, что последние устройства для майнинга более эффективны, см. Раздел 12.Майнинг биткойнов известен как высокодоходный бизнес. Доступны некоторые онлайн-инструменты для расчета прибыльности биткойнов на основе цены на электроэнергию, ср. [1]. Мы утверждаем, что будут дальнейшие улучшения в базовой технологии. В науке не все можно улучшить. Что интересно, в бизнесе мы привыкли видеть, что более или менее каждая технология, имеющая определенное экономическое влияние, может систематически улучшаться каждый год. Это, например, отражено в знаменитом законе Мура.Мы не видим причин, по которым могло бы быть иначе с базовой алгоритмической технологией, лежащей в основе майнинга биткойнов, независимо от вопроса об эффективной аппаратной реализации этой технологии. Такие улучшения неизбежны. В долгосрочной перспективе мы считаем, что рано или поздно появятся значительно более совершенные технологии для добычи биткойнов, будь то квантовые компьютеры или методология, принципиально отличная от известной в настоящее время. Чтобы закрепить идеи, мы называем это утверждение сверхоптимистическим предположением.Интересный аспект заключается в том, что исследователи, способные создавать такие улучшения, смогут заработать много денег, добывая биткойны и продавая их по рыночной цене, или лицензируя свои алгоритмические улучшения для майнеров. Более того, даже крошечное повышение энергоэффективности на 1% может быть прибыльным, поскольку оно уже принесет ощутимую экономию на счетах за электроэнергию в тысячи долларов. В этой статье мы показываем, что такие улучшения возможны, см. Раздел 12. Однако мы не утверждаем, что приближаемся к пятому поколению майнеров биткойнов.Мы достигли лишь умеренных успехов в этой задаче, поэтому наш результат похож на поколение 4.1. майнеров биткойнов, небольшое улучшение. Мы предлагаем наши улучшения бесплатно и не планируем их патентовать. В этом разделе мы повторно посетим и расширим наше техническое объяснение внутреннего устройства майнинга биткойнов из раздела 6.3. Напомним, что мы можем рассматривать проблему майнинга биткойнов как специфическую проблему симметричной криптографии, которую мы назвали «хеш-головоломкой CISO». Он включает три применения блочного шифра.Мы уже обрисовали этот подход на рис. 2, а теперь объясним его во всех подробностях. Наш анализ следует спецификации NIST для SHA-256 [30] и проверке исходного кода Биткойна [6]. Мы используем очень похожие обозначения и графические соглашения, что и ведущие специалисты по SHA-256 в криптографической литературе, см., Например, [35, 40]. Мы начнем с напоминания о том, как устроена функция SHA-256, а затем покажем, как именно он используется в майнинге биткойнов. SHA-256 — это хеш-функция, построенная на основе блочного шифра по известной конструкции Дэвиса-Мейера, в которой входные данные в конце добавляются к выходным.Эта конструкция является одним из известных методов преобразования блочного шифра в функцию сжатия. Функция сжатия — это строительный блок хеш-функции с фиксированным размером входных данных. Обычно он в два раза больше выходного размера. В нашем случае у нас есть функция сжатия от 512 до 256 бит, ср. Рис. 3. Размер блока в этом блочном шифре составляет 256 бит, размер ключа — 512 бит, который расширяется до 64 подключей по 32 бита каждый для каждого из 64 раундов шифра. Первые 16 подключей для первых 16 раундов идентичны сообщению и копируются в том же порядке cf.[30] и позже, рис. 10. В дополнение к хешированию полного сообщения SHA-256 применяет заполнение Меркла-Дамгарда и расширение длины, что делает его безопасной хеш-функцией для сообщений переменной длины. На этапе предварительной обработки мы должны добавить к сообщению одну двоичную единицу и множество нулей таким образом, чтобы результирующая длина была равна 448 по модулю 512, см. [30]. Затем мы добавляем длину сообщения в битах как 64-битное целое число с прямым порядком байтов. Интересной особенностью спецификации и исходного кода Биткойна является то, что хеширование с полным SHA-256 применяется дважды.Это может показаться чрезмерным: одной «безопасной» хеш-функции должно быть достаточно. Это также существенно усложняет нашу работу по оптимизации добычи биткойнов. В первом применении SHA-256 при добыче биткойнов сообщение имеет фиксированную длину 640 бит, что требует двух приложений функции сжатия, как показано на рис. 4. Во втором приложении SHA-256 применяется к 256 битам. В целом «теоретически» нам нужны три приложения функции сжатия, как уже показано на рис. 2, которые мы также показываем на рис.5 ниже для удобства. Поэтому может показаться, что майнеру биткойнов необходимо вычислить функцию сжатия 3,0 раза для каждого одноразового номера и для каждого хэша Меркла. В следующих разделах мы будем работать над снижением этого показателя в среднем до 1,86. Более подробная информация о внутренних механизмах SHA-256 будет предоставлена позже, когда они нам понадобятся. например Раздел 11.4. Мы напоминаем из Раздела 6.2, что новые биткойны могут быть созданы, когда майнер успешно хэширует некоторые данные из сети биткойнов вместе с 32-битным случайным значением nonce и может получить число из 256 бит, которое начинается с определенного числа 60 или больше нулей.Мы называем это проблемой ограниченного ввода-вывода или, вкратце, проблемой CISO. На рис. 5 мы напоминаем ключевые этапы этого процесса. Процесс необходимо повторить с разными значениями MerkleRoot и разными 32-битными одноразовыми номерами до тех пор, пока не будет найдена подходящая «конфигурация CISO», в которой выходные данные удовлетворяют целевому значению H 2 <, как описано в разделе 6.4. Мы можем снизить коэффициент стоимости с 3,0 до 2,0 почти мгновенно, сделав следующее наблюдение. В процессе майнинга биткойнов первая функция сжатия не зависит от случайного одноразового номера на 32 бита.Следовательно, мы можем вычислять его раз в 2 32 одноразовых номера. В среднем нам нужно 1 2. 0 + 2 32 функции сжатия. Добавленный коэффициент - это амортизированная стоимость первого хеша, им можно пренебречь. Важное замечание. В более продвинутых алгоритмах майнинга биткойнов майнеру не нужно вычислять результат для каждого одноразового номера. Он может сделать это только с некоторыми хорошо подобранными одноразовыми номерами. Они могут быть выбраны таким образом, чтобы получить конкретные значения, облегчающие вычисление. Более того, некоторые хорошо выбранные одноразовые номера могут быть сгенерированы в некотором определенном порядке, чтобы обеспечить возможность дополнительных вычислений.В инкрементных вычислениях некоторые вычисления можно было бы упростить, повторно используя все (известные) внутренние значения в одном или нескольких предыдущих вычислениях. Можно разработать множество весьма нетривиальных оптимизаций. Один простой пример инкрементальных вычислений будет дан в Разделе 11.4, другой - в Разделе 11.9. Мы посмотрим на вычисление h3 на рис. 5, (второе вычисление хэш-функции и третья функция сжатия). Внимательное изучение показывает, что в последних раундах базового блочного шифра два слова по 32 бита, в которых мы хотим иметь не менее 60 нулей, после добавления подходящей константы, создаются в раундах 60 и 61, если мы нумеруем от 0. .В основном мы хотим принудительно преобразовать значения, созданные на этапах t = 60 и 61, в две фиксированные константы, которые происходят из констант SHA-256 IV и которые будут давать нули на выходе. Для этого в большинстве случаев нам просто нужно вычислить первые 61 раунд из 64, и мы можем заблаговременно отклонить большинство случаев. Только в 1/2 32 случаев нам нужно вычислить 62 раунда в третьей функции сжатия. Тогда только в некоторых 1/2 60 случаев, когда мы фактически получили не менее 60 нулей, нам потребуется вычислить полные 64 раунда.Таким образом, в целом нужно только вычислить полную функцию сжатия, эквивалентную примерно 1 + 61/64 ≈ 1. В среднем 95 раз. В большинстве случаев достаточно вычислить только H 1 и 61 раунд H 2, чтобы преждевременно отклонить полученное 32-битное значение, которое должно быть равно константе IV. Замечание 1. Эта цифра неточная и на самом деле несколько меньше. Это потому, что мы фактически можем сэкономить большую часть, примерно 3/48 процесса раскрытия сообщения, когда мы останавливаем наши вычисления на 61 раунде.Это связано с тем, что расширение сообщения вычисляется только в последних 48 раундах, в первых 16 раундах сообщение копируется cf. [30] и более поздний рис. 10. Для простоты мы игнорируем расширение сообщения в наших расчетах. Замечание 2. Мы тщательно проверили порядок слов, изучив исходный код биткойна [6] и проведя компьютерные эксперименты. Интересный вопрос: что бы произошло, если бы разработчики биткойнов отформатировали выходные данные хеш-функции в обратном порядке.Если они потребовали, чтобы 60 бит были равны 0 на противоположном конце по сравнению с текущим форматированием, то можно увидеть, что майнеру потребуется больше работы: 63 раунда из 64 в последнем применении функции сжатия. Это сделало бы майнинг более дорогим и свело бы на нет большую часть наших сбережений. Теперь мы посмотрим на второе вычисление хэш-функции во второй функции сжатия, вычисление h2 на рис. 5. Здесь мы используем наблюдение, что в SHA-256 ключ для первых 16 раундов - это ровно 16 блоков сообщений в тот же порядок, ср.[30] и рис. 10. Возможно, что во второй функции сжатия на рис. 5 одноразовый номер входит в раунд 3 (пронумерованный от 0), и поэтому в большинстве случаев нам просто нужно вычислить последний 61 раунд из 64 блочный шифр. Первые три раунда одинаковы для каждого одноразового номера, и их (амортизированная) стоимость почти равна нулю. Объединение Улучшения 2 ... Контекст 7 … в этой части мы рассмотрим чисто специальный вопрос, который относится к симметричной криптографии, о том, существует ли криптографическая атака «сокращенным путем»: просто метод добычи биткойнов быстрее, чем грубая сила, или быстрее, чем тривиальный метод, в котором хеш-функция SHA-256 представляет собой черный ящик.Ответ очевиден: да, такой метод тривиально существует, и большинство разработчиков современного оборудования для майнинга биткойнов уже применили различные приемы, которые увеличивают скорость или / и снижают стоимость. Однако до сих пор эти вопросы не обсуждались публично и не представлялось возможным увидеть, как далеко можно продвинуться в этом направлении. В этой статье мы описываем серию более или менее нетривиальных оптимизаций процесса добычи биткойнов. Эти оптимизации очень важны, поскольку значительная вычислительная мощность на нашей планете уже израсходована на добычу биткойнов [34].Вопрос в том, какой из возможных методов добычи биткойнов является наиболее быстрым, учитывая конкретную структуру, показанную на рис. 2, и можем ли мы сохранить некоторые из шлюзов, необходимых для этой задачи. Ответ — да, мы можем. В этой статье мы первые, кто открыто разрабатывает такие методы и публикует их. Мы изобрели эти методы независимо с нуля, и, насколько нам известно, они свободны от каких-либо прав интеллектуальной собственности. Однако мы ожидаем, что разработчики ASIC уже выполнили аналогичные оптимизации, и некоторые из этих методов можно было бы запатентовать.С 2009 года майнинг биткойнов прошел четыре основных этапа. Скорость операций с биткойнами измеряется в гигахешах в секунду или мегахэшах в секунду, поскольку эти операции, по сути, связаны с многократным вычислением стандартной хеш-функции SHA-256. Ни один источник не дает четкого определения H / s, поскольку скорость SHA-256 является переменной и зависит от длины данных. Мы вернемся к этому вопросу позже. 1. Первое поколение — программный майнинг с использованием процессоров. Первоначально любители выполняли эти вычисления дома с помощью программного обеспечения с открытым исходным кодом.Различные современные процессоры позволяют достичь примерно от 1 до 5 MH / s на ядро процессора. С помощью этой технологии майнер увеличивал количество энергии для производства одного гига-хэша в секунду. Например, мы подсчитали, что с процессорами Intel i5 нам потребуется около 50 4-ядерных процессоров, потребляющих 4000 Вт. Таким образом, потребляемая мощность составляет 4000 Вт на ГХ / с. 2. Второе поколение — программный майнинг с использованием графических процессоров. Графические процессоры произвели революцию в добыче биткойнов, однако они НЕ всегда обеспечивали очень важную экономию по сравнению с процессорами.В некоторых случаях их потребление электроэнергии ненамного ниже, чем у процессоров. Другие решения более эффективны и позволяют майнить с энергопотреблением минимум в 10 раз ниже, чем при майнинге на CPU (см. [29]). Например, с Radeon 7790 мы получаем около 0,33 GH / s при потребляемой мощности 70 Вт. Это примерно 210 Вт на ГХ / с. 3. Третье поколение — аппаратный майнинг на ПЛИС. Затем майнеры использовали FPGA, не всегда достигая гораздо более высоких скоростей на устройствах с сопоставимой стоимостью и размером, но значительно снижая энергопотребление, до 100 раз по сравнению с майнингом на CPU.Например, ModMiner Quad на базе 45-нм FPGA требует около 50 Вт на Гх / с. 4. Четвертое поколение — аппаратный майнинг с помощью ASIC. Наконец, с середины 2013 года майнеры переходят к использованию специализированных микросхем для хэширования ASIC. Это еще больше снижает стоимость майнинга и, в частности, потребление энергии во много раз. Эти устройства могут достигать всего 0,35 Вт на Гх / с (объявление о предварительном заказе от Bitmine.ch ожидается в ноябре 2013 года). Как мы видим, с 2009 года энергоэффективность майнеров биткойнов улучшилась почти в 10 000 раз.Недавние разработки вытеснили любителей из бизнеса и требуют от них вкладывать тысячи долларов и покупать специализированное оборудование. В то же время новые инновационные бизнес-предприятия зарабатывают деньги на продаже все более сложных устройств для добычи биткойнов. На момент написания ключевыми игроками в этом бизнесе являются американская компания Butterfly Labs, шведский майнер KNC, швейцарская компания Bitmine.ch, их российский конкурент BitFury и некоторые другие. Существует множество общедоступных данных о майнинге биткойнов.В апреле 2013 года было подсчитано, что биткойн-майнеры уже использовали около 982 мегаватт-часов каждый день, что достаточно для питания около 30 000 домов в США или эквивалента 150 000 долларов США в день по счетам за электроэнергию. Тем не менее, они смогут получать около 0,7 миллиона долларов ежедневной прибыли [34]. В то время хешрейт составлял около 60 тера хешей в секунду. На момент написания (22 октября 2013 года) хешрейт достиг 3000 Тера Хэшей / с из-за массового перехода с майнинга GPU и FPGA на майнинг ASIC. Однако энергопотребление, вероятно, снизилось из-за того, что последние устройства для майнинга более эффективны, см. Раздел 12.Майнинг биткойнов известен как высокодоходный бизнес. Доступны некоторые онлайн-инструменты для расчета прибыльности биткойнов на основе цены на электроэнергию, ср. [1]. Мы утверждаем, что будут дальнейшие улучшения в базовой технологии. В науке не все можно улучшить. Что интересно, в бизнесе мы привыкли видеть, что более или менее каждая технология, имеющая определенное экономическое влияние, может систематически улучшаться каждый год. Это, например, отражено в знаменитом законе Мура.Мы не видим причин, по которым могло бы быть иначе с базовой алгоритмической технологией, лежащей в основе майнинга биткойнов, независимо от вопроса об эффективной аппаратной реализации этой технологии. Такие улучшения неизбежны. В долгосрочной перспективе мы считаем, что рано или поздно появятся значительно более совершенные технологии для добычи биткойнов, будь то квантовые компьютеры или методология, принципиально отличная от известной в настоящее время. Чтобы закрепить идеи, мы называем это утверждение сверхоптимистическим предположением.Интересный аспект заключается в том, что исследователи, способные создавать такие улучшения, смогут заработать много денег, добывая биткойны и … Контекст 8 … примерно от 1 до 5 MH / s на процессор основной. С помощью этой технологии майнер увеличивал количество энергии для производства одного гига-хэша в секунду. Например, мы подсчитали, что с процессорами Intel i5 нам потребуется около 50 4-ядерных процессоров, потребляющих 4000 Вт. Таким образом, потребляемая мощность составляет 4000 Вт на ГХ / с.2. Второе поколение — программный майнинг с использованием графических процессоров. Графические процессоры произвели революцию в добыче биткойнов, однако они НЕ всегда обеспечивали очень важную экономию по сравнению с процессорами. В некоторых случаях их потребление электроэнергии ненамного ниже, чем у процессоров. Другие решения более эффективны и позволяют майнить с энергопотреблением минимум в 10 раз ниже, чем при майнинге на CPU (см. [29]). Например, с Radeon 7790 мы получаем около 0,33 GH / s при потребляемой мощности 70 Вт. Это примерно 210 Вт на ГХ / с.3. Третье поколение — аппаратный майнинг на ПЛИС. Затем майнеры использовали FPGA, не всегда достигая гораздо более высоких скоростей на устройствах с сопоставимой стоимостью и размером, но значительно снижая энергопотребление, до 100 раз по сравнению с майнингом на CPU. Например, ModMiner Quad на базе 45-нм FPGA требует около 50 Вт на Гх / с. 4. Четвертое поколение — аппаратный майнинг с помощью ASIC. Наконец, с середины 2013 года майнеры переходят к использованию специализированных микросхем для хэширования ASIC. Это еще больше снижает стоимость майнинга и, в частности, потребление энергии во много раз.Эти устройства могут достигать всего 0,35 Вт на Гх / с (объявление о предварительном заказе от Bitmine.ch ожидается в ноябре 2013 года). Как мы видим, с 2009 года энергоэффективность биткойн-майнеров повысилась почти в 10 000 раз. Последние события вытеснили любителей из бизнеса и требуют от них инвестировать тысячи долларов и покупать специализированное оборудование. В то же время новые инновационные бизнес-предприятия зарабатывают деньги на продаже все более сложных устройств для добычи биткойнов.На момент написания ключевыми игроками в этом бизнесе являются американская компания Butterfly Labs, шведский майнер KNC, швейцарская компания Bitmine.ch, их российский конкурент BitFury и некоторые другие. Существует множество общедоступных данных о майнинге биткойнов. В апреле 2013 года было подсчитано, что биткойн-майнеры уже использовали около 982 мегаватт-часов каждый день, что достаточно для питания около 30 000 домов в США или эквивалента 150 000 долларов США в день по счетам за электроэнергию. Тем не менее, они смогут получать около 0,7 миллиона долларов ежедневной прибыли [34].В то время хешрейт составлял около 60 тера хешей в секунду. На момент написания (22 октября 2013 года) хешрейт достиг 3000 Тера Хэшей / с из-за массового перехода с майнинга GPU и FPGA на майнинг ASIC. Однако потребление энергии, вероятно, снизилось из-за того, что последние устройства для майнинга более эффективны, см. Раздел 12. Майнинг биткойнов, как известно, является высокодоходным бизнесом. Доступны некоторые онлайн-инструменты для расчета прибыльности биткойнов на основе цены на электроэнергию, ср.[1]. Мы утверждаем, что будут дальнейшие улучшения в базовой технологии. В науке не все можно улучшить. Что интересно, в бизнесе мы привыкли видеть, что более или менее каждая технология, имеющая определенное экономическое влияние, может систематически улучшаться каждый год. Это, например, отражено в знаменитом законе Мура. Мы не видим причин, по которым могло бы быть иначе с базовой алгоритмической технологией, лежащей в основе майнинга биткойнов, независимо от вопроса об эффективной аппаратной реализации этой технологии.Такие улучшения неизбежны. В долгосрочной перспективе мы считаем, что рано или поздно появятся значительно более совершенные технологии для добычи биткойнов, будь то квантовые компьютеры или методология, принципиально отличная от известной в настоящее время. Чтобы закрепить идеи, мы называем это утверждение сверхоптимистическим предположением. Интересный аспект заключается в том, что исследователи, способные создавать такие улучшения, смогут заработать много денег, добывая биткойны и продавая их по рыночной цене, или лицензируя свои алгоритмические улучшения для майнеров.Более того, даже крошечное повышение энергоэффективности на 1% может быть прибыльным, поскольку оно уже принесет ощутимую экономию на счетах за электроэнергию в тысячи долларов. В этой статье мы показываем, что такие улучшения возможны, см. Раздел 12. Однако мы не утверждаем, что приближаемся к пятому поколению майнеров биткойнов. Мы достигли лишь умеренных успехов в этой задаче, поэтому наш результат похож на поколение 4.1. майнеров биткойнов, небольшое улучшение. Мы предлагаем наши улучшения бесплатно и не планируем их патентовать.В этом разделе мы повторно посетим и расширим наше техническое объяснение внутреннего устройства майнинга биткойнов из раздела 6.3. Напомним, что мы можем рассматривать проблему майнинга биткойнов как специфическую проблему симметричной криптографии, которую мы назвали «хеш-головоломкой CISO». Он включает три применения блочного шифра. Мы уже обрисовали этот подход на рис. 2, а теперь объясним его во всех подробностях. Наш анализ следует спецификации NIST для SHA-256 [30] и проверке исходного кода Биткойна [6].Мы используем очень похожие обозначения и графические соглашения, что и ведущие специалисты по SHA-256 в криптографической литературе, см., Например, [35, 40]. Мы начнем с напоминания о том, как устроена функция SHA-256, а затем покажем, как именно он используется в майнинге биткойнов. SHA-256 — это хеш-функция, построенная на основе блочного шифра по известной конструкции Дэвиса-Мейера, в которой входные данные в конце добавляются к выходным. Эта конструкция является одним из известных методов преобразования блочного шифра в функцию сжатия.Функция сжатия — это строительный блок хеш-функции с фиксированным размером входных данных. Обычно он в два раза больше выходного размера. В нашем случае у нас есть функция сжатия от 512 до 256 бит, ср. Рис. 3. Размер блока в этом блочном шифре составляет 256 бит, размер ключа — 512 бит, который расширяется до 64 подключей по 32 бита каждый для каждого из 64 раундов шифра. Первые 16 подключей для первых 16 раундов идентичны сообщению и копируются в том же порядке cf. [30] и позже рис.10. Кроме того, для хеширования полного сообщения SHA-256 применяет заполнение Меркла-Дамгарда и расширение длины, что делает его безопасной хеш-функцией для сообщений переменной длины. На этапе предварительной обработки мы должны добавить к сообщению одну двоичную единицу и множество нулей таким образом, чтобы результирующая длина была равна 448 по модулю 512, см. [30]. Затем мы добавляем длину сообщения в битах как 64-битное целое число с прямым порядком байтов. Интересной особенностью спецификации и исходного кода Биткойна является то, что хеширование с полным SHA-256 применяется дважды.Это может показаться чрезмерным: одной «безопасной» хеш-функции должно быть достаточно. Это также существенно усложняет нашу работу по оптимизации добычи биткойнов. В первом применении SHA-256 при добыче биткойнов сообщение имеет фиксированную длину 640 бит, что требует двух приложений функции сжатия, как показано на рис. 4. Во втором приложении SHA-256 применяется к 256 битам. В целом «теоретически» нам нужны три приложения функции сжатия, как уже показано на рис. 2, которые мы также показываем на рис.5 ниже для удобства. Поэтому может показаться, что майнеру биткойнов необходимо вычислить функцию сжатия 3,0 раза для каждого одноразового номера и для каждого хэша Меркла. В следующих разделах мы будем работать над снижением этого показателя в среднем до 1,86. Более подробная информация о внутренних механизмах SHA-256 будет предоставлена позже, когда они нам понадобятся. например Раздел 11.4. Мы напоминаем из Раздела 6.2, что новые биткойны могут быть созданы, когда майнер успешно хэширует некоторые данные из сети биткойнов вместе с 32-битным случайным значением nonce и может получить число из 256 бит, которое начинается с определенного числа 60 или больше нулей.Мы называем это проблемой ограниченного ввода-вывода или, вкратце, проблемой CISO. На рис. 5 мы напоминаем ключевые этапы этого процесса. Процесс необходимо повторить с разными значениями MerkleRoot и разными 32-битными одноразовыми номерами до тех пор, пока не будет найдена подходящая «конфигурация CISO», в которой выходные данные удовлетворяют целевому значению H 2 <, как описано в разделе 6.4. Мы можем снизить коэффициент стоимости с 3,0 до 2,0 почти мгновенно, сделав следующее наблюдение. В процессе майнинга биткойнов первая функция сжатия не зависит от случайного одноразового номера на 32 бита.Следовательно, мы можем вычислять его раз в 2 32 одноразовых номера. В среднем нам нужно 1 2. 0 + 2 32 функции сжатия. Добавленный коэффициент - это амортизированная стоимость первого хеша, им можно пренебречь. Важное замечание. В более продвинутых алгоритмах майнинга биткойнов майнеру не нужно вычислять результат для каждого одноразового номера. Он может сделать это только с некоторыми хорошо подобранными одноразовыми номерами. Они могут быть выбраны таким образом, чтобы получить конкретные значения, облегчающие вычисление. Более того, некоторые хорошо выбранные одноразовые номера могут быть сгенерированы в некотором определенном порядке, чтобы обеспечить возможность дополнительных вычислений.В инкрементных вычислениях некоторые вычисления можно было бы упростить, повторно используя все (известные) внутренние значения в одном или нескольких предыдущих вычислениях. Можно разработать множество весьма нетривиальных оптимизаций. Один простой пример инкрементальных вычислений будет дан в Разделе 11.4, другой - в Разделе 11.9. Мы посмотрим на вычисление h3 на рис. 5, (второе вычисление хэш-функции и третья функция сжатия). Внимательное изучение показывает, что в последних раундах базового блочного шифра два слова по 32 бита, в которых мы хотим иметь не менее 60 нулей, после добавления подходящей константы, создаются в раундах 60 и 61, если мы нумеруем от 0. .В основном мы хотим принудительно преобразовать значения, созданные на этапах t = 60 и 61, в две фиксированные константы, которые происходят из констант SHA-256 IV и которые будут давать нули на выходе. Для этого в большинстве случаев нам просто нужно ... Контекст 9 … Насколько мы видим, ни один серьезный академический криптолог публично не выразил свою веру в биткойны и их безопасность. Напротив, криптографическое сообщество, а также сообщество разработчиков программного обеспечения полны высокопроизводительных взломщиков кода, способных ежедневно обнаруживать новые атаки и эксплойты в защищенных системах, таких как биткойн.Основным источником информации в этой области является статья, опубликованная на Financial Cryptography 2012 [4]. В этом документе четко объясняется, что были опубликованы сотни научных работ, направленных на повышение эффективности и безопасности создания электронных денег. В то же время авторы объясняют, что биткойн — это довольно простая система, не использующая замысловатой криптографии и отнюдь не идеальная. Затем они анализируют безопасность системы биткойнов с разных сторон и рассматривают множество интересных атак, см. [4]. В этой статье мы в основном рассматриваем вопросы о том, как работает биткойн и как именно работает майнинг биткойнов.Мы пытаемся понять, можно ли улучшить этот процесс, чтобы сделать его более эффективным. Позже мы посмотрим, каковы последствия того, что мы узнали. Цель майнера — решить некую криптографическую задачу, которую мы позже назовем проблемой хеширования CISO. Решение будет называться блоком CISO. Подавляющее большинство майнеров игнорируют, что именно они делают, они используют либо программное обеспечение с открытым исходным кодом, либо приобрели какое-то оборудование для очень эффективного майнинга. Однако майнеры должны знать, что операция выполняется очень своевременно и что они должны быть постоянно подключены к сети.Решения этих головоломок связаны друг с другом и образуют уникальную цепочку решений. Обычно это называется цепочкой блоков. Вся цепочка блоков опубликована в Интернете. Со всем этим можно, например, проконсультироваться по адресу. Все обнаруженные новые блоки нужно как можно быстрее транслировать всем участникам сети. Майнеры должны быть очень активными, и они делают это, потому что это в их интересах (примечание: совсем недавно в одной статье предлагается другая стратегия [28]). Им необходимо прослушивать радиопередачи, чтобы получать данные о последних транзакциях, которые они должны одобрить.Затем им необходимо транслировать любое решение (блок CISO), которое они нашли, как только они его нашли, потому что их решение, вероятно, будет частью «основной цепочки блоков», только если оно широко известно. Как только решение известно, оно «отговаривает» других майнеров от поиска того же блока. Вместо этого они могут сосредоточиться на поиске следующего блока, который подтвердит текущий блок и позволит майнеру требовать вознаграждение за создание этого блока CISO. Наша цель — прояснить, как работает эта система.В этом разделе мы рассматриваем статическую вычислительную задачу, которую необходимо решить. В разделе 7 мы более подробно объясним динамику производства биткойнов в долгосрочной перспективе: как эта проблема изменяется со временем предопределенным образом. Проблема майнинга биткойнов очень тесно связана с хорошо известными проблемами криптографии. Один из важных вопросов заключается в следующем: чем майнинг биткойнов отличается от традиционных вопросов криптоанализа блочных шифров и хэш-функций и есть ли более эффективный способ добычи биткойнов.Сначала мы собираемся кратко описать проблему как задачу статических вычислений для определенного блочного шифра. Затем мы рассмотрим, как проблема развивается во времени и как решения проблемы CISO конвертируются в акции в валюте биткойнов. Наконец, мы собираемся изучить возможные решения и оптимизации. Новые биткойны могут быть созданы, если майнер может хешировать некоторые данные из сети биткойнов вместе с 32-битным случайным значением nonce и получить 256-битное число, которое начинается с определенного количества нулей.Мы называем эту проблему CISO: C onstrained I nput S mall O utput. Это можно рассматривать как частный случай проблемы, которую иногда называют CICO, что означает проблему напряженных входов C и выходов. Эта терминология была недавно введена при исследовании последней стандартизированной правительственной хеш-функции SHA-3, известной как Keccak. SHA-3 является последней функцией в семействе SHA и преемником SHA-256, используемого в биткойнах [2]. Можно утверждать, что это означает, что SHA-256 биткойнов рассматривается NIST Соединенных Штатов и более широким сообществом инженеров криптографии как НЕ достаточно безопасный для долгосрочной безопасности.Такого рода проблемы CISO / CICO не новы, они с тех пор очень часто изучаются в криптоанализе хэш-функций, и существуют бесконечные варианты этих проблем для конкретных хеш-функций, некоторые примеры можно найти в [2, 24, 40]. Точные детали конкретной проблемы с ограниченным вводом и малым выводом (CISO), которая существует в биткойнах, описаны ниже. Его можно получить, изучив исходный код биткойна, см. [6, 7]. И код для майнинга биткода, и для всей сети биткойнов открыт, поэтому процесс относительно прозрачен.На рис. 2 мы показываем криптографические вычисления, которые много раз выполняются майнерами биткойнов. Этот рисунок подчеркивает внутреннюю структуру хэш-функции SHA-256. Входные данные и ограничения на эти входные данные подробно описаны в Разделе 6.5 ниже. SHA-256 — это хеш-функция, построенная из блочного шифра по так называемой конструкции Дэвиса-Мейера. Принцип конструкции Дэвиса-Мейера заключается в том, что входное значение в конце добавляется к выходному и что оно преобразует алгоритм шифрования в алгоритм «хеширования», строительный элемент стандартной хеш-функции.Базовый блочный шифр имеет 64 раунда и, следовательно, 2048-битный расширенный внутренний ключ (64×32 бит). Этот ключ получается из подлежащего сжатию блока сообщения, который имеет 512 бит на входе и расширяется четыре раза, чтобы сформировать этот 2048-битный внутренний ключ для нашего блочного шифра. В каком-то смысле на рис. 2 мы преобразуем проблему добычи биткойнов или решения хеш-головоломок CISO в конкретную проблему с тремя различными приложениями блочного шифра, который лежит в основе SHA-256, соединенных вместе, чтобы сформировать определенную схему.Более подробная информация об этой внутренней работе SHA-256, используемой в майнинге биткойнов, будет приведена в разделе 10. Целью хеширования CISO является создание решений, которые правильно сформированы в том смысле, что они удовлетворяют всем необходимым условиям и ограничениям. которые мы собираемся подробно объяснить в Разделе 6.5. Майнер пытается найти решение проблемы CISO, например … Контекст 10 … как работает биткойн и как именно работает майнинг биткойнов. Мы пытаемся понять, можно ли улучшить этот процесс, чтобы сделать его более эффективным.Позже мы посмотрим, каковы последствия того, что мы узнали. Цель майнера — решить некую криптографическую задачу, которую мы позже назовем проблемой хеширования CISO. Решение будет называться блоком CISO. Подавляющее большинство майнеров игнорируют, что именно они делают, они используют либо программное обеспечение с открытым исходным кодом, либо приобрели какое-то оборудование для очень эффективного майнинга. Однако майнеры должны знать, что операция выполняется очень своевременно и что они должны быть постоянно подключены к сети.Решения этих головоломок связаны друг с другом и образуют уникальную цепочку решений. Обычно это называется цепочкой блоков. Вся цепочка блоков опубликована в Интернете. Со всем этим можно, например, проконсультироваться по адресу. Все обнаруженные новые блоки нужно как можно быстрее транслировать всем участникам сети. Майнеры должны быть очень активными, и они делают это, потому что это в их интересах (примечание: совсем недавно в одной статье предлагается другая стратегия [28]). Им необходимо прослушивать радиопередачи, чтобы получать данные о последних транзакциях, которые они должны одобрить.Затем им необходимо транслировать любое решение (блок CISO), которое они нашли, как только они его нашли, потому что их решение, вероятно, будет частью «основной цепочки блоков», только если оно широко известно. Как только решение известно, оно «отговаривает» других майнеров от поиска того же блока. Вместо этого они могут сосредоточиться на поиске следующего блока, который подтвердит текущий блок и позволит майнеру требовать вознаграждение за создание этого блока CISO. Наша цель — прояснить, как работает эта система.В этом разделе мы рассматриваем статическую вычислительную задачу, которую необходимо решить. В разделе 7 мы более подробно объясним динамику производства биткойнов в долгосрочной перспективе: как эта проблема изменяется со временем предопределенным образом. Проблема майнинга биткойнов очень тесно связана с хорошо известными проблемами криптографии. Один из важных вопросов заключается в следующем: чем майнинг биткойнов отличается от традиционных вопросов криптоанализа блочных шифров и хэш-функций и есть ли более эффективный способ добычи биткойнов.Сначала мы собираемся кратко описать проблему как задачу статических вычислений для определенного блочного шифра. Затем мы рассмотрим, как проблема развивается во времени и как решения проблемы CISO конвертируются в акции в валюте биткойнов. Наконец, мы собираемся изучить возможные решения и оптимизации. Новые биткойны могут быть созданы, если майнер может хешировать некоторые данные из сети биткойнов вместе с 32-битным случайным значением nonce и получить 256-битное число, которое начинается с определенного количества нулей.Мы называем эту проблему CISO: C onstrained I nput S mall O utput. Это можно рассматривать как частный случай проблемы, которую иногда называют CICO, что означает проблему напряженных входов C и выходов. Эта терминология была недавно введена при исследовании последней стандартизированной правительственной хеш-функции SHA-3, известной как Keccak. SHA-3 является последней функцией в семействе SHA и преемником SHA-256, используемого в биткойнах [2]. Можно утверждать, что это означает, что SHA-256 биткойнов рассматривается NIST Соединенных Штатов и более широким сообществом инженеров криптографии как НЕ достаточно безопасный для долгосрочной безопасности.Такого рода проблемы CISO / CICO не новы, они с тех пор очень часто изучаются в криптоанализе хэш-функций, и существуют бесконечные варианты этих проблем для конкретных хеш-функций, некоторые примеры можно найти в [2, 24, 40]. Точные детали конкретной проблемы с ограниченным вводом и малым выводом (CISO), которая существует в биткойнах, описаны ниже. Его можно получить, изучив исходный код биткойна, см. [6, 7]. И код для майнинга биткода, и для всей сети биткойнов открыт, поэтому процесс относительно прозрачен.На рис. 2 мы показываем криптографические вычисления, которые много раз выполняются майнерами биткойнов. Этот рисунок подчеркивает внутреннюю структуру хэш-функции SHA-256. Входные данные и ограничения на эти входные данные подробно описаны в Разделе 6.5 ниже. SHA-256 — это хеш-функция, построенная из блочного шифра по так называемой конструкции Дэвиса-Мейера. Принцип конструкции Дэвиса-Мейера заключается в том, что входное значение в конце добавляется к выходному и что оно преобразует алгоритм шифрования в алгоритм «хеширования», строительный элемент стандартной хеш-функции.Базовый блочный шифр имеет 64 раунда и, следовательно, 2048-битный расширенный внутренний ключ (64×32 бит). Этот ключ получается из подлежащего сжатию блока сообщения, который имеет 512 бит на входе и расширяется четыре раза, чтобы сформировать этот 2048-битный внутренний ключ для нашего блочного шифра. В каком-то смысле на рис. 2 мы преобразуем проблему добычи биткойнов или решения хеш-головоломок CISO в конкретную проблему с тремя различными приложениями блочного шифра, который лежит в основе SHA-256, соединенных вместе, чтобы сформировать определенную схему.Более подробная информация об этой внутренней работе SHA-256, используемой в майнинге биткойнов, будет приведена в разделе 10. Целью хеширования CISO является создание решений, которые правильно сформированы в том смысле, что они удовлетворяют всем необходимым условиям и ограничениям. которые мы собираемся подробно объяснить в Разделе 6.5. Майнер пытается найти решение проблемы CISO, например … В этой статье мы рассмотрим часто задаваемый вопрос «Как рассчитывается сложность добычи биткойнов?» Сложность майнинга зависит от цели сложности , что означает сложность, при которой вычислительная мощность сети биткойнов может решить алгоритм доказательства работы в среднем за 10 минут.Он автоматически корректируется каждые 2016 блоков в зависимости от времени, затраченного на майнинг предыдущих 2016 блоков . Майнинг-узлы необходимы для защиты сети биткойнов. Они защищают сеть биткойнов, предоставляя вычислительную мощность сети в обмен на шанс выиграть вознаграждение за базу монет и комиссию за транзакцию блока при решении алгоритма доказательства работы. С момента появления биткойна вычислительная мощность сети биткойнов росла в геометрической прогрессии.Тем не менее, средняя скорость добычи новых блоков биткойн-транзакций (, т.е. добавленных в цепочку биткойнов) остается стабильной с 10-минутным интервалом. Это связано с тем, что сложность добычи биткойнов автоматически регулируется (увеличивается или уменьшается) узлами сети биткойнов в соответствии с увеличением или уменьшением совокупной вычислительной мощности сети. Чтобы лучше понять приведенный выше ответ, мы начнем с краткого объяснения того, как работает майнинг биткойнов.Тогда мы дадим более развернутый ответ на поставленный выше вопрос. Наконец, мы рассмотрим возможные причины, по которым целевой уровень сложности установлен на обеспечение среднего 10-минутного интервала между блоками. Майнинг-узлы записывают действительные транзакции, которые они группируют в контейнер, называемый «блоком», в цепочке блоков биткойнов. Майнеры соревнуются друг с другом за то, чтобы первыми решить криптографический алгоритм хеширования (, т.е. .SHA256), также известный как «доказательство работы», для блока транзакций. Каждый майнер создает свои собственные блоки транзакций, независимо друг от друга, для которых майнер пытается решить алгоритм доказательства работы. Решение алгоритма доказательства работы для блока транзакций требует, чтобы узел майнинга нашел криптографический хэш заголовка блока, который численно ниже целевого уровня сложности , — регулируемое 256-битное число (бит равен 0 или 1) (см. ниже , раздел Какова цель сложности?). Криптографический хэш — это результат криптографической хеш-функции, математического алгоритма, который принимает данные произвольного размера (входные данные) и выдает результат фиксированного размера (выходные данные). Криптографический алгоритм SHA256, используемый в биткойнах, выдает детерминированный результат в 256 бит. Криптографические хэш-функции — это односторонние функции, что означает, что невозможно вычислить входные данные хеш-функции только на основе заданного выхода. Единственный жизнеспособный метод для поиска входа, который соответствует известному выходу, — это случайным образом пробовать все возможные входные данные для криптографической хеш-функции, пока не будет найден желаемый результат. Для майнинга биткойнов каждый узел майнинга начинает с построения блока транзакций, а затем переходит к хешированию заголовка блока своего собранного блока (входного), используя алгоритм SHA256. Если результирующий хэш (вывод) превышает целевую сложность, узел майнинга внесет инкрементное изменение в часть заголовка блока (то есть одноразовый номер) и повторно применит алгоритм SHA256, в результате чего получится другой хэш (вывод). Этот процесс повторяется (, т.е. метод проб и ошибок ) до тех пор, пока майнер не найдет хэш (результат), численно меньший, чем целевая сложность. Майнер, который первым обнаружит хеш-код, численно меньший целевой сложности, имеет право записывать свой блок транзакций в блокчейн биткойнов и получает вознаграждение за базу монет и комиссию за транзакции, включенные в блок. Как только решение алгоритма доказательства выполнения работы найдено для блока транзакций, гонка сбрасывается, и между всеми узлами майнинга начинается новое соревнование за следующий блок транзакций. Целевой уровень сложности — регулируемое 256-битное число (бит равен 0 или 1). Это 256-битное число, которое представлено в конкретном шестнадцатеричном 32-битном формате, называемом « бит, », является частью данных, которые включаются в заголовок блока каждого блока транзакций. Целевой уровень сложности — это то, что определяет, насколько сложно майнерам найти действительный хэш заголовка блока, и, следовательно, насколько сложно майнерам получить право добавить блок в цепочку блоков и получить вознаграждение за базу монет и транзакцию. сборы. Как объяснялось выше, узлы майнинга соревнуются, чтобы найти хэш заголовка блока (выход), который численно ниже целевой сложности — грубо говоря, хеш, который начинается, по крайней мере, с таким же количеством нулей или более — путем применения алгоритма SHA256. в заголовок своего блока. Сложность майнинга (, т. Е. — сложность нахождения числа, которое ниже целевого значения сложности) периодически корректируется в сети биткойнов путем уменьшения или увеличения 256-битного целевого числа. При уменьшении 256-битного целевого числа уменьшается количество возможных хэшей заголовков блоков, которые могут быть найдены майнерами, численно меньшие целевого значения сложности. Это фактически затрудняет майнерам поиск действительного хэша заголовка блока, потому что это означает, что в среднем количество хэшей заголовка блока, которое майнеры должны будут выполнить, чтобы найти действительный хеш, увеличится. Чтобы проиллюстрировать это, вы можете подумать о следующей аналогии: если вы попросите кого-нибудь выбрать случайную карту из стандартной колоды из 52 карт, шансы того, что этот человек выберет карту ниже короля ( i.е . 44 возможных карты, причем туз — самая старшая карта в колоде) больше, чем шансы того, что тот же человек выберет карту ниже пяти (, то есть , только 12 возможных карт). В среднем этот человек будет выбирать случайную карту, которая меньше пяти только в 23% случаев, и поэтому ему нужно будет выбрать в среднем пять (с округлением) разных карт, прежде чем выбрать правильную карту. То же самое касается майнеров, пытающихся найти действительный хэш заголовка блока, то есть хэш заголовка блока, который ниже целевой сложности.Чем ниже целевая сложность, тем больше перестановок майнер должен будет выполнить в среднем (путем инкрементальных изменений одноразового номера в заголовке блока), прежде чем сможет найти действительный хэш заголовка блока. В этой связи стоит упомянуть, что явное увеличение вычислительной мощности сети биткойнов за последние годы было таким, что первоначальное количество возможных перестановок, предлагаемых 4-байтовым одноразовым номером в заголовке блока, оказалось недостаточным. Даже после того, как майнеры перепробовали все возможные значения nonce, они все равно не могут найти действительный хэш заголовка блока.Обновление метки времени, которая также является частью заголовка блока, для учета прошедшего времени предлагает некоторые дополнительные возможные перестановки, но этого также недостаточно. Чтобы решить эту проблему, майнеры также используют дополнительный одноразовый номер в транзакции coinbase. Изменение nonce в транзакции coinbase влияет на корень Меркла, который является частью заголовка блока, что, в свою очередь, влияет на результат хеширования заголовка блока. Следовательно, у майнинговых узлов теперь есть огромное количество дополнительных возможных перестановок для циклического прохождения. Изменение дополнительного одноразового номера в транзакции coinbase (нижний левый квадрат) изменяет корень Меркла, который является частью заголовка блока, что приводит к другому хешу заголовка блока. Вам может быть интересно, если узлы майнинга пытаются добывать блоки, содержащие одни и те же транзакции, все путем внесения инкрементных изменений в одноразовый номер заголовка блока, разве все они не соревнуются в поиске одних и тех же детерминированных хэшей заголовков блоков? И если бы это было так, не всегда ли выигрывал бы самый быстрый майнер? Ответ — нет.Узлы майнинга в принципе никогда не будут майнить идентичные блоки. Следовательно, каждый узел майнинга всегда будет находить другой детерминированный хэш заголовка блока. Причина, по которой майнинговые узлы в принципе никогда не будут майнить идентичные блоки, двоякая: (1) Во-первых, как упоминалось выше, каждый майнер создает свой собственный блок транзакций независимо от других конкурирующих майнеров. Это означает, что маловероятно, что майнеры построят одинаковые блоки. Скорее, более вероятно, что каждый майнер будет собирать немного другой набор транзакций и сортировать транзакции в немного другом порядке. (2) Во-вторых, первая транзакция, которую каждый майнер включает в блок, — это транзакция coinbase . Транзакции Coinbase содержат (1) вознаграждение за coinbase и (2) комиссию за транзакцию всех транзакций, включенных в блок. Вывод транзакции с базой монет оплачивается на собственный биткойн-адрес майнера, который, конечно, отличается для каждого майнера. Таким образом, транзакция coinbase будет отличаться для каждого майнера, что, в свою очередь, влияет на корень Меркла, который включен в заголовок блока.Отсюда следует, что хэш заголовка блока в принципе всегда будет отличаться от хеша заголовка другого блока. Целевой уровень сложности для сети биткойнов устанавливается таким образом, чтобы гарантировать добычу новых блоков транзакций биткойнов (, т.е. , добавленных в цепочку биткойнов) со средней скоростью 1 блок каждые 10 минут. Целевая сложность переоценивается и автоматически корректируется (в зависимости от обстоятельств) каждым полным узлом сети, каждые 2016 блоков. Корректировка целевой сложности выполняется путем сравнения, с одной стороны, количества времени, которое потребовалось для добычи 2016 блоков, и, с другой стороны, времени, необходимого для добычи 2016 блоков на основе желаемых 10 минут. интервал, , т.е. 20160 минут (10 минут x 2016 блоков). Время, затраченное на майнинг предыдущих 2016 блоков, определяется на основе временных меток, которые майнеры включают в заголовок блока каждого блока транзакций.Временная метка Unix Epoch, используемая в заголовке каждого блока, представляет собой приблизительное время создания добытого блока, выраженное в количестве секунд, прошедших с даты 01 января 1970 года, полуночи (UTC). Если количество времени, затраченное на добычу 2016 блоков, превышает желаемые 20160 минут, сложность добычи уменьшается, что означает, что цель сложности будет установлена выше. Если время, затраченное на добычу 2016 блоков, меньше желаемых 20160 минут, сложность добычи увеличивается, что означает, что цель сложности будет снижена.Из этого также следует, что настройка целевой сложности не зависит от объема или стоимости транзакции, обрабатываемой сетью биткойнов. Изменение сложности можно описать следующим образом: Новая сложность майнинга = Предыдущая сложность майнинга * (Время майнинга последних блоков 2016/20160 минут) Эволюция хешрейта (зеленый) и сложности майнинга (красный) в середине 2014 г. (, источник : bitcoinwisdom.com) Изменение сложности добычи в любой точке переназначения не может превышать 4 раза.В случае, если изменение хэш-мощности сети биткойнов таково, что требуется поправка, превышающая коэффициент 4 по сравнению с текущей сложностью майнинга, будет применяться максимальный коэффициент 4. Любые дальнейшие корректировки будут производиться в следующей точке (точках) повторного нацеливания, в зависимости от обстоятельств. Стоит упомянуть в этой связи, что в исходную реализацию клиента ядра биткойна была включена явная ошибка, в результате чего перекалибровка целевого уровня сложности должна производиться каждые 2016 блоков, а не время, потраченное на майнинг предыдущих 2016 блоков. , а скорее предыдущие 2,015 блоков. Перекалибровка целевой сложности происходит децентрализованно. Это означает, что каждый полный узел будет независимо оценивать и регулировать (в зависимости от обстоятельств) сложность майнинга в соответствии с вышеупомянутым методом расчета и будет принимать только блоки, соответствующие той сложности, которую он вычислил. Считается, что средний 10-минутный интервал между блоками был сознательно выбран Сатоши Накамото, изобретателем биткойна, как компромисс между (1) скоростью сети биткойнов и (2) стабильностью сети биткойнов. С одной стороны, средний 10-минутный интервал блока гарантирует, что транзакции, которые транслируются в сеть биткойнов, подтверждаются (, т.е. включены в добытый и действительный блок) относительно быстро. Относительно короткое время подтверждения способствует удобству использования биткойнов в качестве механизма транзакций. С другой стороны, средний 10-минутный интервал между блоками сводит к минимуму возможность добычи двух (или более) действительных блоков, содержащих повторяющиеся транзакции. Такая ситуация может возникнуть, когда два или более узла майнинга успешно добывают действительный блок в течение короткого периода времени, прежде чем любой из них узнает о новом добытом блоке друг друга. Размер сети биткойнов таков, что может пройти короткий период времени, прежде чем трансляция вновь добытого блока распространится по всей сети биткойнов. Следовательно, вполне возможно, что будет добыт новый блок, даже если другой добытый блок, содержащий те же транзакции, уже транслировался в сеть биткойнов, но еще не был получен майнером последнего блока. В таком случае две разные версии цепочки блоков биткойнов будут временно существовать среди узлов сети биткойнов (часто называемой «вилкой »), пока узлы в конечном итоге не сойдутся в единую цепочку, которая рассматривается как основной блокчейн биткойнов, содержащий наибольшее количество блоков и, следовательно, отображающий наибольшее количество доказательств работы. За счет обеспечения того, что в среднем между вновь добытыми блоками проходит достаточный промежуток времени (, т.е. , 10 минут), риск материализации форка снижается, хотя и не исключается полностью. Сложность майнинга зависит от цели сложности , что означает сложность, при которой вычислительная мощность сети биткойнов может решить алгоритм доказательства работы в среднем за 10 минут. Он автоматически корректируется каждые 2016 блоков в зависимости от времени, затраченного на майнинг предыдущих 2016 блоков. Считается, что средний интервал блокировки в 10 минут был выбран сознательно как компромисс между (1) скоростью сети биткойнов и (2) стабильностью сети биткойнов. Хотите рассказать о биткойнах? Купи себе классную биткойн-рубашку прямо сейчас! Щелкните по кнопке ниже. Доступно 180+ оригинальных дизайнов Как объяснялось в начале этой статьи, майнеры соревнуются друг с другом, чтобы первыми решить криптографический алгоритм хеширования (, то есть .SHA256), также известный как «доказательство работы», для блока транзакций. По сути, это требует от майнера выполнения множества вычислений в надежде быть первым, кто найдет хэш заголовка блока, численно меньший, чем целевая сложность. Поэтому скорость вычислений имеет существенное значение. В этом разделе мы рассмотрим тип оборудования, которое майнеры используют для выполнения такого огромного количества вычислений. Используемое оборудование для майнинга со временем эволюционировало из-за увеличения вычислительной мощности сети биткойнов (также известной как хэшрейт ), что привело к увеличению сложности добычи биткойнов. Эволюция совокупной скорости хеширования сети биткойнов с течением времени. Следующие 3 типа оборудования для майнинга обычно использовались на протяжении многих лет для майнинга биткойнов: Из этих трех типов ASIC сегодня доминируют в индустрии добычи биткойнов. Вначале люди сделали нас из ЦП общего назначения (центрального процессора) своих ПК для майнинга биткойнов. Через некоторое время люди начали использовать графические процессоры (графические процессоры) для добычи биткойнов.Одна из основных причин заключается в том, что графические процессоры могут выполнять несколько вычислений одновременно. Кроме того, вы можете управлять множеством графических процессоров с одной материнской платы и процессора, что позволило организовать мощную операцию по добыче полезных ископаемых из дома. Буровая установка для майнинга биткойнов, состоящая из нескольких графических процессоров. Однако у графических процессоров есть 3 основных недостатка, делающих их неоптимальными для майнинга биткойнов: Сегодня майнинг биткойнов в основном осуществляется с помощью специализированных интегральных схем (ASIC). ASIC — это микросхемы, специально разработанные и изготовленные для майнинга биткойнов. Они были оптимизированы с точки зрения (1) увеличенной мощности хеширования, (2) меньшего тепловыделения и (3) меньшего энергопотребления. В настоящее время хешрейт сети биткойнов таков, что майнинг ASIC является единственным жизнеспособным способом прибыльного майнинга биткойнов. Возможно, частному лицу стало невыгодно добывать биткойны самостоятельно.Совокупная скорость хеширования биткойн-сети просто стала слишком большой (47 миллионов TH / s на момент написания). В этом отношении майнинг биткойнов превратился из хобби для заинтересованных лиц на заре биткойнов в профессиональное капиталоемкое и чрезвычайно конкурентное предприятие. В настоящее время майнинг биткойнов осуществляется гигантскими майнинговыми центрами, которые собирают тысячи ASIC на больших складах. Эти майнинговые центры в основном построены в стратегически важных местах с учетом множества факторов, таких как местный климат (холодный климат снижает затраты на охлаждение) и наличие обильного и дешевого электричества, а также высокие скорости сети. Распределение хешрейта биткойнов dd. 15 марта 2019 г. Индивидуальные майнеры теперь могут совместно добывать биткойны. Тысячи участников объединяют свои индивидуальные, относительно небольшие объемы хеш-мощности, чтобы сформировать один гигантский и мощный пул для майнинга. Отдельные майнеры разделяют вознаграждение за майнинг, полученное майнинговым пулом (за вычетом комиссионных для оператора пула), пропорционально мощности хэширования, которую они внесли в общую хешрейт майнинг-пула. У пулов есть несколько преимуществ перед соло-майнингом: Если вы хотите добывать биткойны с прибылью, единственный жизнеспособный вариант — присоединиться к майнинговому пулу. Приведенный ниже калькулятор прибыли от майнинга позволяет оценить потенциальную прибыль от майнинга с учетом множества факторов: При использовании калькулятора майнинга биткойнов необходимо учитывать ряд факторов: Внимание! Вы храните свои криптовалюты на онлайн-платформе? Обратите внимание: в этом случае вы не являетесь фактическим владельцем своей криптовалюты! В частности, вы рискуете потерять все свои криптовалюты без каких-либо средств правовой защиты в случае, если онлайн-платформа или ваша личная учетная запись станет жертвой взлома или в случае неожиданного закрытия (например,грамм. Как рассчитывается сложность майнинга биткойнов?
Как работает майнинг биткойнов
Какая цель сложности?
Пытаются ли узлы майнинга решить одну и ту же головоломку?
Как рассчитывается изменение целевой сложности?
Кто регулирует цель сложности?
Почему целевая сложность установлена так, чтобы обеспечить средний интервал между блоками 10 минут?
(1) Скорость биткойн-сети
(2) Стабильность сети биткойнов
Заключение
Другие вопросы, связанные с майнингом биткойнов
Какое оборудование для майнинга используют майнеры биткойнов?
Майнинг биткойнов по-прежнему прибыльный?
Физические лица
Пулы для майнинга
Калькулятор прибыли от майнинга биткойнов
Добавить комментарий