понедельник, 17 апреля 2017 г.

To mine or not to mine. Криптовалюты сегодня.

Очередной пост под конец выходных, в котором я постараюсь затронуть очень интересную на мой взгляд тему, которую прежде я почему-то обходил стороной, а именно - криптовалюты. Сразу скажу, что область эта для меня достаточно новая, т.к. мой уровень знаний, опыта и т.п. в ней весьма поверхностный, поэтому разговор пойдет с "позиции новичка". В интернете можно найти достаточно много руководств, видеороликов на YouTube и т.п., которые обещают нам некий доход от использования мощностей собственных ПК, но так ли это на самом деле? Давайте попробуем разобраться вместе.

Начну я пожалуй с того, что каждый в своей жизни хотя бы раз, слышал про такую вещь как Bitcoin. Но далеко не все в полной мере представляют что это такое, как его добывают и вообще есть ли смысл этим заниматься (забегая вперед скажу, что времена когда добывать или "майнить" Bitcoin [BTC] на домашних мощностях уже далеко в прошлом, но помимо него есть также и множество других криптовалют, которые по-прежнему могут представлять интерес). Для начала несколько статей про сам Bitcoin, которые прочитал я:


При чтении будет не лишним обратить внимание на время публикации статьи, все что касается сложности, скорости сети, hashrate'ов, времени добычи, оборудования и т.п., т.е. все цифры приведенные в них, к сожалению уже устарели. На данный момент примерный курс Bitcoin: 1 BTC = ~ 1200 USD, а "скорость сети" - 3,779,873,330 GH/s . Как вы понимаете, при текущей сложности сети, а также скорости вычислений (hashrate) майнить (добывать) BTC в домашних условиях уже давно не представляется возможным. Для этого давно есть специализированные устройства - ASIC-майнеры (всю информациюОбщая стоимость подобной конфигурации сейчас составляет порядка ~70-80 тыс. руб.  по ним, а также, калькуляторы расчета доходности можно без труда найти в интернете). Однако, далеко не всем по карману построить небольшую ферму из ASIC-майнеров (для сравнения стоимость актуальных устройств на данный момент составляет 80000-100000 руб. и выше), поэтому заинтересовавшись, как и вы, криптовалютами я решил прежде всего понять - что же сейчас актуально для обычного домашнего пользователя и есть ли какие-то монеты, которые до сих пор можно добывать на CPU или GPU. 

Одной из такой валют является Monero:


Официальный сайт проекта Monero находится здесь - https://getmonero.org/home . Там же можно почитать про плюсы, минусы, а также ознакомиться с руководством "How do i get started?" (Как начать?). Однако мое знакомство с Monero началось с совсем другой статьи: Solo Mining: How to strengthen Monero's network and become part of its story, в которой автор рассказывал как за три дня с помощью домашних ПК, объединенных в пул (общий hashrate этих ПК равнялся 1500 H/s) ему удалось успешно добыть 1 блок и получить вознаграждение в 8 XMR.


Что по текущему курсу составляет 8 XMR * 20.76 USD = 166,08 USD (~9348 руб.) Согласитесь, звучит интересно. Но так ли это на самом деле? Т.е. повторяем ли данный результат сегодня, учитывая то что исходный пост был написан автором 3 месяца назад. Это я и решил проверить. Для проведения эксперимента был взят ПК со следующими характеристиками:

  • Процессор: Intel® Core™ i7-6700K CPU @ 4.00GHz × 8 
  • GPU: GeForce GTX 1060 3GB/PCIe/SSE2
  • RAM: 32 Gb (2 x DDR-IV DIMM 16Gb <PC-19200> Crucial <CT16G4DFD824A>)
  • SSD Kingston 200 Gb

На ПК была установлена Ubuntu 16.04 (x64), после чего на него был установлен Monero v0.10.3.1 демон, т.е. запущена Full Node, а также GUI кошелек - Monero GUI Beta 2 для удобства (как он выглядит можно посмотреть на самом первом скриншоте). Полная синхронизация blockchain'а заняла несколько (3, 5 или 7, точно не помню, т.к. происходило это ночью, когда я уже спал) часов, суммарный объем получившего блокчейна (data.mdb) составляет примерно ~14.3 Gb. После этого я решил запустить майнинг средствами monerod на сутки и посмотреть повезет ли мне найти блок:


Как видно, средний hashrate (количество хешей обрабатываемых в секунду) у i7-6700K при 4-х потоках составляет ~250 H/s (при попытке установить 8 потоков, фактический хешрейт почему-то был меньше, поэтому я решил оставить 4 потока). Однако, ПК оставленный с такими настройками майнинга на сутки ничего не добыл. Т.е. заветного блока так и не было найдено. Поэтому я решил попробовать поучаствовать в совместной добыче монет, а именно присоединиться к одному из пулов. Два пула на которых я решил попробовать помайнить - это https://supportxmr.com/ и https://xmrpool.net/ ... но прежде чем майнить, естественно, нужны были майнеры, т.е. ПО для добычи монет.

Монета Monero построена на базе алгоритма CryptoNight. Здесь я не буду вдаваться в подробности, при желании всю информацию можно найти в интернете, однако, скажу, что алгоритм CryptoNight построен таким образом, что его практически невозможно адаптировать для ASIC майнеров, т.е. разработчиками алгоритма и Monero изначально было предусмотрено то, что добыча монеты может осуществляться обычными пользователями на обычных ПК с использованием CPU или GPU мощностей. Поэтому для начала работы следовало найти подходящий майнер с поддержкой cryptonight алгоритма. По ряду причин мой выбор пал на xmr-stak-cpu для CPU и xmr-stak-nvidia для GPU. И то и другое ПО доступно в исходных кодах (!) и является кросплатформенным, т.е. собрать рабочий релиз майнера можно как под Linux, так и под Windows-based системы.

Естественно, что в интернете есть множество готовых сборок xmr-stak'а, но я решил собрать его сам из последних исходников, чтобы обезопасить себя от ряда возможных проблем. Как минимум, чужая сборка майнера может включать в себя какие-либо "закладки", т.е. совсем не факт, что майнер собранный кем-то другим будет работать на 100% мощности именно на указанный вами pool. Другими словами, запустив на своем ПК майнер неизвестного происхождения вы будете помогать добывать монеты тому, кто его собрал / скомпилировал - это как минимум, а как максимум - бинарник скачанный с неизвестного сайта вполне может нести в себе и другие угрозы (объяснять что интернет полон различных угроз - думаю никому не нужно). Поэтому лучшим вариантом здесь, как мне кажется, является сборка из исходников, с предварительным (хотя бы беглым) их изучением. Надо отметить что процесс сборки под Linux хорошо документирован разработчиком и не должен вызвать проблем. Со сборкой под Windows же могут возникнуть некоторые сложности (если тема будет интересна, могу описать процесс компиляции xmr-stak-cpu для Windows в одном из следующих постов).

Итак, после того как майнеры были собраны и сконфигурированы на pool осталось только дождаться результатов. Но сначала я расскажу что получилось в плане хешрейтов и скорости:

  • i7-6700K с xmr-stak-cpu в 4 потока показал результат в ~250-270 H/s.
  • GTX 1060 3GB с xmr-stak-nvidia - ~430-440 H/s.

Итого суммарно ПК с приведенной конфигурацией выдавал около 680-710 H/s. Для того чтобы чуть поднять вычислительные мощности я попросил нескольких знакомых с Core i3 и ноутбуком на Core i7 также запустить майнер у себя. Получилось примерно следующее, Core i3 в зависимости от количества потоков и платформы выдавал ~40 H/s, а ноутбук с Core i7 в 2 потока - ~100-120 H/s. В общей сумме общий хешрейт майнеров подобрался к 1 kH/s (1000 H/s). 

Среднее время нахождения блока на пуле при суммарной мощности пула в 237.7 KH/s составляло 7-8 часов. Т.е. когда-то блок находился за 3 часа, когда-то за 8, когда-то чуть больше 10, а один раз до нахождения блока прошло более 24-х часов. Существует несколько схем начисления вознаграждений на подобных пулах, это PPS, PPLNS (Pay Per Last N Share) и т.п. О них вы также можете прочитать в интернете, пул с которым работал я поддерживал только PPLNS. Т.к. многих интересует непосредственно результат (количество добытых монет XMR) приведу два скриншота:


Первый был сделан где-то в середине эксперимента, второй - на момент написания этих строк. Итого за 2 с небольшим суток мне удалось добыть что-то около 0.0516150741 XMR, что в пересчете на реальные деньги составляет - 1,07 USD или 60 руб. Однако и тут есть "подводные камни". Т.е. забрать эти деньги и пойти купить на них что-нибудь в реальной жизни просто так не удастся ;) Почему?

  • Добытые вами монеты находятся не в вашем Monero (XMR) кошельке, а в кошельке пула, чтобы вывести их оттуда нужна некая минимальная сумма, при которой возможно провести выплату. В моем случае пул выплачивал вознаграждения от 0.3 XMR. Т.е. вывести 0.05 XMR нельзя, нужно дождаться пока наберется необходимый минимум для вывода. С учетом того что эти 0.05 XMR я добывал два дня, то для того чтобы добыть 0.3 XMR понадобится в 6 раз больше времени. Т.е. 12 суток (!) беспрерывной работы не самого плохого железа.
  • Помимо этого пул берет свой процент комиссии (!) ... плюс может существовать комиссия за проведение транзакции ... таким образом даже эти 0.05 XMR могут превратиться в меньшую сумму.
  • Как вы понимаете - это только начало пути. После того как монеты окажутся у вас в кошельке, это будут всего лишь виртуальные XMR. Потом вам предстоит либо сразу найти покупателя на них (ваши знакомые слышали когда-нибудь о Monero и жаждут купить их? ;), либо обменять на одной из бирж на что-то более конвертируемое, например, тот же Bitcoin, продать который за USD и руб. существенно проще, чем XMR. Однако учитывайте, каждая операция это тоже различные fee, комиссии и потери на разнице курсов. Сколько реально денег может дойти до вашего рублевого кошелька или банковской карты из этих несчастных 60 руб., заработанных за двое суток - я даже боюсь предположить ;) 

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

Развернутый вывод писать уже нет сил, но думаю и так все понятно. Обладая не самым плохим ПК и майня одну из наиболее выгодных на данный момент монет (например, Monero) заработать что-либо существенное, к сожалению, не получится. Однако, если у вас не один такой ПК, а к примеру 10, 50, 100 и т.п. и бесплатное электричество, то попробовать на интерес конечно можно. Как это вижу лично я? Ну например, вы работаете в каком-нибудь крупном магазине электроники где постоянно включены в сеть 20-30 условно игровых ПК, запускаем на каждом из них майнер и смотрим на результат ;) Правда в этом случае возможен, как говорили раньше, "выговор с занесением" ... В любом случае ваш доход, как вы поняли, пропорционален общей вычислительной мощности имеющейся у вас сети ... Другой вариант наверное возможен, когда у вас в распоряжении находится что-то вроде такого: Forsite HPC-1028 NvLink или такого Forsite HPC-8000T решения ;) Интересно, какой hashrate при майнинге Monero выдаст последняя конфигурация? (так и хочется сказать что-то вроде "если у вас вдруг есть такой - пишите в комментариях" ;)

Ну и последний практический вариант больше подходит любителям лотерей ;) Заключается он в поднятии своего собственного пула по примеру автора из этой статьи и подключение туда всех доступных вам мощностей. При достаточном hasrate'е и очень-очень большом везении, возможно вам удастся найти блок собственными силами.

p.s. Как вы уже поняли, я вовсе не претендую на "эксперта" в этой области, а скорее наооборот. Поэтому если у вас есть положительный опыт майнинга криптовалют на ПК - будет интересно услышать ваше мнение в комментариях. Однако, пожалуй сразу предупрежу, комментарии содержащие реферальные ссылки, флуд не по теме и т.п. публиковаться не будут. При написании прежде всего руководствуйтесь здравым смыслом.

Обновлено 17.04.2017 07:30 MSK

Те, кто заинтересовался темой майнинга Monero (XMR) и уже попробовали себя в различных пулах - рано или поздно зададутся вопросом, а есть ли простой способ "суммировать" все домашние мощности и запустить нечто вроде собственного пула. Т.е. чтобы все CPU / GPU в доме трудились на благо нахождения общего блока, прибыль за который (~8 XMR) пойдет полностью вам. Такая возможность на самом деле есть, некоторые пулы предлагают майнинг в режиме Solo, например xmrpool.net. Что означает такой режим?

"Solo mining is the opposite of pool mining. You essentially submit your shares directly to the blockchain, which is the most profitable method if you run your own farm." (c) xmrpool

Другими словами, соло майнинг на пуле является противоположностью майнинга в пуле с PPS / PPLNS методиками вознаграждения. Если вам (совокупности ваших майнеров) удастся найти блок, то вся награда за него, за исключением небольшой комиссии пула пойдет вам. Этот режим подходит для тех пользователей, которые рассчитывают на удачу и не хотят делить вознаграждение с остальными майнерами. Но с другой стороны - никто не мешает нам поднять свой собственный (!) пул так, как описано в этой статье, в частности там автор использует cryptonote-xmr-pool от Gingeropolous. Но настройка пула на node.js может показаться непростой на первый взгляд, поэтому в поисках решения проще я наткнулся на этот пост - Solo GPU mining, а уже потом нашел замечательный пул от sammy007 - monero-stratum, написанный на Golang. Если внимательно следовать инструкции в README.md запустить его на Ubuntu 16.04 довольно просто. Как все это работает?

Как известно monerod поддерживает JSON-RPC интерфейс (по-умолчанию на http://127.0.0.1:18081/json_rpc), но большинство майнеров не умеют работать с демоном monero через JSON-RPC напрямую, т.к. они заточены на поддержку протокола stratum. Здесь-то нам как раз и поможет monero-stratum (Monero Proxy). Он будет общаться с monerod через JSON-RPC, а вот с майнерами уже через Stratum. В результате все найденные вами блоки будут попадать напрямую в блокчейн.

monero-stratum (MoneroProxy) имеет приятный web-интерфейс, который выглядит следующим образом:


Как видно, у меня подключено 4 различных майнера, которые в сумме дают чуть меньше ~1000 H/s (H/s на картинке периодически меняется). Сам же запущенный пул выглядит следующим образом:


Повезет мне или нет - не знаю, но по-крайней мере теперь у вас есть ответ на вопрос: как майнить на GPU в Solo.

Обновлено 17.04.2017 20:58 MSK

Solo Mining Monero for Fun and for The Greater Good - небольшая статья о Solo майнинге Monero (XMR) от sammy007, автора monero-stratum пула.

Обновлено 22.04.2017 18:37 MSK

Для интересующихся несколько скриншотов / фото в стиле "весь смысл майнинга на GPU в одном флаконе":


В системе две видеокарты - GeForce GTX 1060 3GB/PCIe/SSE2 и Sapphire Nitro Radeon RX 480 4G без каких-либо модификаций (т.е. BIOS не перешивался, частоты и вольтаж не менялись и т.п.) ... как видно RX 480 дает ~620 H/s, GTX 1060 - ~440 H/s и CPU порядка ~170 H/s. Суммарная вычислительная мощность такой конфигурации ~1230 H/s. Нетрудно посчитать что при текущей сложности сети, потреблении энергии ~300 Вт·ч и стоимости электричества в районе 0.07 USD за 1 кВт·ч и курсе Monero (XMR) в 20.11 USD за 1 XMR получаем около 2 USD в день, 13.60 USD в неделю и ~58.29 USD в месяц. Т.е. что-то около 3264,24 руб. Не так много, но эти показатели можно увеличить за счет "экстенсивного пути", а именно, наращивания мощностей. Актуальный расчет для этих параметров при текущей сложности сети и курсе XMR всегда можно посмотреть здесь.

Рабочая температура видеоадаптеров при этом (при 100% загрузке) держится на уровне ~70 градусов.

Обновлено 23.04.2017 01:07 MSK

Какие-то вещи понимаешь только экспериментально, т.е. пройдя через них. Как вы можете видеть на фото выше рабочая температура обоих адаптеров в районе 70 градусов, при этом кулеры пытаясь создать необходимый теплоотвод начинают вращаться сильнее, чем создают довольно ощутимый уровень шума. Однако стоило только открыть стенку системного блока + поставить ПК поближе к открытому окну и ворвавшаяся в комнату ночная прохлада полностью изменила картину:


При той же производительности, т.е. при GPU Load под 100% на обеих видеокартах температура упала со средних 70 до 60 градусов, а Fan Speed (%) упал до 15% у RX 480 и до 34% у GTX 1060. При этом чисто по восприятию гул от вращения вентиляторов пропал совсем. Т.е. ПК который еще недавно наполнял всю комнату заметным шумом стал абсолютно тихим. Вывод простой: можно много читать про грамотное охлаждение, можно теоретизировать на эту тему, например, думая что любое дополнительное охлаждение или еще один вентилятор или внешний обдув лишь усилят шум, однако, как показала практика - при использовании "естественного" охлаждения / теплоотвода уровень шума сводится на нет.

1 комментарий :

  1. Брось, это гиблое дело! Битки генерить оборудование нужно от 20к баксов и оно устаревает с космической скоростью, пулы с оплатой тоже фуфел, если повезет в ноль выйдешь. Всякие форки "копать" неблагодарное дело, как игра в рулетку или покер, повезет сорвешь куш, не повезет выкинешь весь этот электронный мусор (кому сейчас нужен LTC (латкойн), альтернатива BTC ?!, а когда то асики для него пачками продавали за большие бабки. В итоге потратишь времени много, но толку будет не очень. Чисто развлекуха :)

    ОтветитьУдалить