«Что такое майнинг?» в 1719 простых словах
Ждете вступительное слово? Ха, поверьте, вам и так будет что почитать. По моей просьбе написать «простой и легкий материал о майнинге» анонимный майнер Lone Wanderer и редактор Мирослав Бабицкий на двоих написали текст таких размеров, что стало даже как-то неловко перед читателями. Запасайтесь свободным временем, откидывайтесь на спинку кресла и читайте вводный материал о майнинге.
Чтобы все участники криптовалютной экосистемы были уверены в добросовестности своих контрагентов, в сети отсутствовали двойные траты одних и тех же монет, а сами транзакции исправно ходили от условного Васи к Пете применяются различные алгоритмы консенсуса. Консенсус — такое состояние, при котором не доверяющие друг другу узлы сети могут доверять единому реестру транзакций — блокчейну. Основных алгоритмов консенсуса всего два: Proof of Work (PoW), когда недобросовестный контрагент рискует потраченными впустую вычислительными мощностями (электроэнергией умноженной на амортизацию оборудования) и Proof of Stake (PoS), когда в случае подтверждения неверной транзакции узел рискует потерять свой залог в криптовалюте. Сегодня мы поговорим о достижении консенсуса с использованием вычислительных мощностей, то есть о майнинге.
Наиболее простой способ разобраться в майнинге — представить его не как добычу новых денег, а как работу юриста, подтверждающего сделки. В криптовалютных сетях постоянно совершается множество операций, каждая из которых требует подтверждений, майнеры же выступают «свидетелями» таких сделок. Один человек переводит другому 100 монеток, майнер генерирует уникальный ключ, который говорит системе: «да, такая сделка была, с кошелька A на кошелёк Б перешло 100 монет». Совершенные за определенный период времени транзакции складываются в блок, а задача майнера — вычислить хэш-функцию для этого блока, чтобы подтвердить, что он составлен корректно и несет в себе ключ от предыдущего блока цепочки. В случае успеха майнер получает награду за блок, чаще фиксированную (даже если в данном блоке не было транзакций), но иногда включающую и дополнительную награду за число обработанных транзакций.
Генерация ключа подтверждения (хэша) — математический процесс, сложность которого напрямую зависит от количества узлов сети, занимающихся подтверждениями (майнеров). В коде криптовалюты заложено некоторое среднее время, в течение которого должен появляться блок с записанными в нем транзакциями (обычно от 10 секунд до 10 минут), и чтобы по мере подключения новых майнеров к сети блоки не начинали появляться быстрее, чем положено, алгоритмом предусмотрено увеличение сложности задачи. Когда майнеров немного каждый из них в среднем успевает получить подходящий хэш за некоторое разумное время, что гарантирует ему стабильную награду. Но когда к сети подключаются тысячи и миллионы вычислительных устройств вероятность, что подходящий хэш будет найден каждой конкретной машиной становится настолько мала, что майнерам приходится объединяться в пулы.
Пул — это прослойка между криптовалютной сетью и вычислительными устройствами, которая предлагает каждому из них решить задачу с менее строгими требованиями к результату, чем необходимо сети в текущий момент за время, сопоставимое с целевым временем нахождения блока. Решая задачу с меньшей сложностью каждое устройство имеет небольшой шанс получить такой результат, который удовлетворит и исходным требованиям задачи. Такой результат пул транслирует в сеть, получает награду за блок и затем распределяет ее поровну между всеми майнерами, приславшим свои решения для этого блока. Чем больше майнеров в конкретном пуле, тем больше вероятность, что одно из «упрощенных» решений подойдет в качестве хэша блока.
Майнинг для пользователя выглядит довольно стандартно: пользователь скачивает специальную программу, указывает свой кошелёк, выбирает пул, от которого хочет получать задачи, раз в определённый промежуток времени получает перевод от пула за выполненную работу.
Основные различия — формулы расчёта ключей подтверждения в разных сетях. Во всех случаях используется обычная математика, но на разном оборудовании отдельные формулы могут просчитываться быстрей или медленней. Это приводит к высокой эффективности, например, видеокарт на одних типах монет, и ASIC’ов — на других. Но это уже тема для отдельной статьи.
Типы майнинга
Майнинг может быть домашним или промышленным. Какой-то абсолютной границы между этими типами не существует, но основная идея разделения — масштаб и требуемая инфраструктура.
Каждая ферма (или асик) как потребляет достаточно много электроэнергии, так и выделяет соответствующее количество тепла. В какой-то момент в домашних условиях становится невозможным увеличивать их количество, так как электросети не выдерживают нагрузку, а температура в помещении вырастает до слишком высокой.
Грубо можно себе представлять две фермы (или асика) как один мощный обогреватель. Пока можно добавлять обогреватели в обычное помещение, проводка не плавится, и температура в комфортных пределах — майнинг домашний.
Ну а если требуется отдельное большое помещение (от склада до датацентра), стабилизация линий электропередач, а то и вовсе своя подстанция, то майнинг становится промышленным.
В зависимости от используемого оборудования майнить можно на обычных компьютерах (вычисления обеспечиваются процессорами и видеокартами, в целях экономии в один компьютер устанавливают несколько видеокарт) и на специализированных устройствах – FPGA-платах и ASIC’ах.
Асик — цельное устройство, готовое к работе. Внутри у него специальный процессор(ы), заточенные под работу с криптовалютными алгоритмами. Асики за редким исключением рассчитаны на 1-2 алгоритма, и, обеспечивая более высокий доход в пересчете на стоимость подвержены большим рискам морального устаревания. Зато алгоритм работы с ними очень прост: подключаете к сети с интернетом, через веб-интерфейс вбиваете кошелёк и алгоритм, все, майнинг начинается. Надо заметить, что асики обычно невероятно громко гудят, в них стоят очень мощные вентиляторы, чтобы продувать и охлаждать. Так что для домашнего майнинга они не очень удобны, если не изменять охлаждение каким-либо образом. Например, дома можно использовать почти бесшумное погружное охлаждение в ионной жидкости.
Майнинг на видеокартах несколько сложней (ну или проще, смотря с какой стороны посмотреть). К самому обычному компьютеру подключается несколько видеокарт, устанавливается Windows или Linux, устанавливается, настраивается и запускается программа майнинга.
Промежуточное положение занимают FPGA-платы для компьютеров, они гораздо более гибкие, чем асики, но не настолько универсальны, как потребительские видеокарты. Для конечного пользователя требуются все навыки работы с компьютерами (сборка, обеспечение мощного питания и охлаждения) плюс умение работать в специфических средах разработки конкретного FPGA с целью замены прошивок (битстримов) устройств.
Создание своей фермы на основе видеокарт
Пример на 6 видеокартах RX 580 (какие именно видеокарты брать — решение полностью индивидуальное, обычно выбирают исходя из текущей доходности на whattomine.com, но всегда надо помнить, что долгосрочное планирование по этим показателям невозможно).
Нам понадобится:
- Шесть видеокарт
- Материнская плата с шестью разъёмами PCI-E (PCI-Express. x1 или x16. НЕ PCI)
- Шесть райзеров. Райзер — это переходник из PCI-E x1 в PCI-E x16 (видеокарты вставляются в x16). Кроме того, этот переходник обеспечивает дополнительное питание.
- Самый дешёвый и простой процессор для этой материнской платы
- От 4 гигабайт оперативной памяти
- Жёсткий диск или SSD от 60 гигабайт для Windows или флешка от 8 гигабайт для Linux
- Блок питания. Для разных видеокарт нужна разная мощность БП. Одна RX580 без настройки может потреблять около 200 ватт. То есть нам нужен БП: 200*6 = 1200 ватт, плюс остальная система (~40-100), итого 1300. Но блоки питания практически всегда необходимо брать с запасом, чтоб избежать их перегрева и сгорания. Запас желателен около 25-30%. Т.е. в данном случае нам понадобится БП на 1600 ватт.
Всё это собирается вместе на какой-нибудь платформе. Очень часто — самодельной. Например:
На этот, хоть и странно выглядящий, но всё же достаточно обычный компьютер, устанавливается операционная система. И дальше нужно выбрать валюту, которая будет майниться.
В нашем случае предположим, что майниться будет Ethereum. Наш первый шаг — найти в гугле пул. Пишем «ETH pool», рассматриваем варианты, читаем отзывы. Обычно самый первый результат — самый логичный и удобный. На момент написания статьи по запросу выводится сайт ethermine.org. У него, как и у абсолютного большинства современных пулов, есть инструкция по подключению. Прямо на главной странице. И там же находятся ссылки на подходящие майнеры. В данном случае нам нужно Windows-AMD — скачается майнер Сlaymore.
В папке с майнером обычно есть файл вида start.bat — это текстовый файл с параметрами запуска майнера. Этих параметров обычно достаточно много, но начинающему майнеру они не очень нужны. Нас интересует только сервер, порт и кошелёк. Сервер и порт указаны на странице пула.
На этом ферма готова. Можно запустить start.bat — вы теперь майнер.
Бонус: тонкая настройка видеокарт
Как упоминалось в начале — майнеры очень часто сталкиваются с проблемами охлаждения. И с проблемами потребления энергии. Современные видеокарты могут показывать полную производительность на вольтаже заметно ниже, чем заводской. Снижение напряжения уменьшает потребление, уменьшает температуру, увеличивает срок службы вентиляторов и системы питания.
Здесь не будет инструкций по использованию программ разгона, в интернете их достаточно, просто краткая информационная выжимка.
Для Equihash алгоритмов (например, валюты ZCash, ZenCash, ZCL) более важна частота ядра.
Для Ethash алгоритмов (Ethereum, ETC, Pirl) более важна частота памяти и её тайминги.
NVIDIA
Настройками вольтажа и частот ядра обычно получается снизить потребление карты на 15-25%, при этом остаётся стартовая производительность или чуть выше.
Разгон памяти напрямую зависит от типов чипов, стоящих на карте. Гарантированно на 700+ мгц разгоняется только Самсунг, на нём же получается самый высокий хэшрейт для Ethash алгоритмов. Разгон памяти даёт в среднем от 15 до 25% прирост Ethash хэшрейта. На Equihash не влияет
Для не-самсунг типов памяти частоты подбирается только экспериментально. Некоторые типы Hynix и Micron могут тоже пойти и на +700, и даже на +900. Но чаще стабильный разгон останавливается в районе от +400 до +550 мгц. Elpida редко идёт выше 400.
Абсолютное большинство карт работает в режимах, близких к оптимальным, после установок в MSI Afterburner:
- Power Limit 75-85%
- Ядро 90-140
- Память +400-900 (в зависимости от чипов)
Важный нюанс: во многие карты встроен контроль температуры, который начинает отключать рабочие блоки карты при достижении определённых градусов (например 65, 70, 75). Зачастую это не регулируется, поэтому нужно настраивать режимы работы вентиляторов. Частоты при отключении блоков не падают, поэтому определить это можно только по падающему хэшрейту.
Характерные признаки нестабильности:
- Падение драйвера чаще всего означает переразгон ядра или нехватку вольтажа.
- Синий экран чаще всего означает переразгон памяти.
- Оба эффекта проявляются из-за плохих райзеров и/или бп с нестабильным напряжением.
AMD
Настройками вольтажа и частот ядра обычно получается снизить потребление карты на 25-40%, при этом остаётся стартовая производительность или чуть выше.
Разгон памяти по частоте так же напрямую зависит от типов памяти. Но у AMD карт система иначе работает с частотами памяти, для каждого диапазона есть свой набор таймингов. Для более высоких частот из таблицы выбираются тайминги медленней. Поэтому разгон может как не дать прироста хэшрейта вообще, так и вовсе его понизить. Решается редактированием таблицы таймингов в биосе (под каждый вариант чипов подбирается свой набор таймингов, часто можно просто взять тайминги для частот ниже). Даёт прирост хэшрейта на Ethash — от 20 до 40%. На Equihash — 3-5%.
Характерные признаки нестабильности:
- Падение драйвера – нехватка вольтажа.
- GPU Memory Errors в HWInfo — плохие тайминги или переразгон памяти.
Обычно хватает около суток с запущенным HWInfo для проверки стабильности. Если ошибок памяти и падений драйвера не появилось, то можно считать карту стабильной.
Важный момент про прошивку и потерю гарантии:
Редактирование биоса лишает гарантии, но одновременно (если снижать вольтаж), заметно увеличивает срок службы системы питания карты. Если карта вышла из строя не полностью, то оригинальный биос можно зашить обратно, и гарантия восстанавливается. Учитывая снижение потребления на 30% и повышение хэшрейта на 30%, шить карты с минимальными рисками выгодно при количестве карт в ферме от 4. Даже если одна из карт сгорит таким образом, что восстановить биос не удастся, общий хэшрейт всё ещё будет выше, чем у 4 нешитых карт.
Автор текста: Lone Wanderer
Редактура и дополнения: Мирослав Бабицкий