Креатив 39262
Аватар Новый никК Новый никК

Фарм Сhia, как это работает — свой опыт

29
0
Поделиться
Телеграфировать
В этой статье я поделюсь своим опытом фарминга chia coin aka XCH и расскажу про проблемы, с которыми я столкнулся и про то, как я их решал.
Фарм Сhia, как это работает — свой опыт

Прежде, чем начать, небольшой дисклеймер.

  • Данный гайд не является призывом к действию - даже наоборот. Я по ходу статьи расскажу, почему не стоит этим заниматься*(сегодня). Если коротко, то "не лезь, она тебя сожрет".
  • Этот текст не является полноценным гайдом, это скорее кулстори для тех, кому интересна техническая сторона вопроса и что из себя представляет процесс майнинга XCH. Однако, после прочтения этого недогайда вы вполне себе могли бы запустить свою ферму.
  • Я не профессиональный фермер и едва ли им захочу стать, поэтому я допускаю, что мог где-то ошибиться. Велком в каменты.
  • С вероятностью в 99.99% я больше не буду ничего писать про майнинг.

На этом вступление окончено, и покаместь Айлон Маск отправляет псов to the moon, я расскажу вам, как же запустить свою ферму чия закупиться железом для своей файлопомойки. Поехали.

КОРОТКО ПРО МАЙНИНГ XCH

Это банальная инфа для тех, кто совсем не в курсе. Я рассматриваю соло майнинг, про пулы будет совсем чуть-чуть в конце. Майнинг чиа условно происходит в 2 этапа. Первый этап - это создание "плотов". На этом этапе важна скорость диска. Поэтому для первой стадии и используют ссд. В момент создания K-32 плота перезаписывается 1,6тб данных, а готовый результат занимает 101gb. Когда "плот" готов, он перемещается на hdd, и как только первый плот там - "фарминг" пошел. Сеть ищет по вашим хэшам решение - попалось, создаётся блок, и вот ваши 2 монетки награды! Проще некуда...?

ЖЕЛЕЗО

Релевантное железо, которое было на руках:

  • MSI MPG B550 GAMING EDGE
  • ryzen 5 3600
  • 32gb mushkin @3466

Железо, которое было докуплено:

  • два энтерпрайс хдд шника toshiba на 7200 оборотов и 12tb каждый
  • один m2 samsung 980 pro на 1tb
  • один m2 samsung 980 на 1tb

HDD диски я покупал для того, чтобы по окончанию майнинга сделать из них NAS в raid1 для хранения бэкапов, игорей и фильмов. До покупки всё это добро ютилось на 3х раздельных терабайтный дисках и не пополнялось, ибо место - всё. Теперь будет 12tb, а учитывая, что годнота появляется редко - хватит с лихвой. Именно поэтому я и взял два по 12 а не, скажем, четыре. Для личного использования больше нафиг не нужно.

С ссдшками всё проще: 980 pro придёт на замену моему старичку 840 pro. Обычный 980 я просто продам на ebay.

Вернёмся к майнингу. ПРЕЖДЕ, чем покупать ssd/hdd, посмотрите, какие у вашей материнки выходы. Если у вас старый ноут, то воткнуть м.2 даже gen3 может быть от очень сложно до невозможно. Ещё один момент - ссдшник ссдэшнику рознь. Есть колосальная разница между ссдшником, подключённым через сата, и ссдшником, подключённым через m.2 слот gen4. Если коротко и крайне грубо, то через сату скорость упирается в потолок 560мб/с, у слота м.2 ген3 - это 3700мб/с, а у ген4 - 7400мб/с. Скорость хдд - 130мб/с.

Искушенный читатель уже, наверное, заметил косяк в железе, которое я докупил. Для остальных поясню. У простого 980 нет кэша, а без кэша при записи большого количества данных диск просаживается в скорости. Изначально я планировал взять на его место 970 evo plus, но подкупило то, что у 980 цена ниже.. ну вы понели. Проверяйте, есть ли у выбранного вами ссд кэш.

Хддшники я закинул в raid0 - вот тут не могу советовать, имеет ли смысл так делать или нет. Нагрузка на них идёт никакая, а скорость, с которой готовые плоты будут записываться на них, возрастает в 2 раза. Я решил пренебречь "безопасностью" в пользу "скорости". Все диски выше 2тб, надо перевести в GPT. В противном случае винда отобразит их как 2тб, и остальное пространство будет недоступно.

Обьём 1тб у ссд дисков выбран не случайно - на этом обьёме помещается по 3 плота параллельно (на самом деле, по слухам, 4, но я и так много времени убил на тесты, было решено делать 3). Тут мы подходим к раму и процессору. В идеале, на момент создания плота на этот процесс надо отдать 4 ядра и 4гб рама. Учитывайте, что рам/процессор ещё нужен системе и процессу майнинга - если они будут "висеть", ничего хорошего из этого не выйдет. Более подробно о распредлении ресурсов я расскажу дальше, а пока могу сказать, что в моём риге для этой конкретной задачи именно процессор был узким местом. Он буквально тютелька в тютельку позволяет эффективно делать 6 плотов паралельно, поэтому 2 диска по 1тб были самым рациональным выбором под мою ферму(я не был уверен, что на 2тб gen4 диске 6 плотов будут делаться эффективно). Покупку более производительного камня я не рассматривал, потому что для остальных задач моего процессора более чем достаточно. В процессе плоттинга я разогнал его с дефолтных 3,6GHz до 4,4GHz, что весьма благоприятно сказалось на скорости процесса.

Про рам: видел, что "блохеры" кукарекали что-то про то, что рам нужен есс, то есть серверный. Типа с простым у вас будет много ошибок и плоттинг вообще может встать из-за этого. У меня за время засеивания 24тб подобной проблемы не наблюдалось, поэтому я бы к этому отнёсся скептически. Возможно, на той памяти процесс был бы чуть быстрее, но я сомневаюсь.

Последним пунктом разрушим или подтвердим легенду про УБИЙСТВО ссдшника. Уверен, что есть куча читателей, которые, уже потирая свои лапки, предвкушали, как напишут мне, что я убил свои ссдшники и вообще. Уверен, найдется кто-то, кто, не дочитав до сюда, уже напишет об этом :D

Давайте подсчитаем, насколько я изнасиловал свои ссдшники. Математика простая: 1 плот пишет 1,6тб. Всего у меня влезет 220 плотов. 220*1,6тб/2=176тб. Штош, 176тб от гарантированного цикла жизни в 600тб на каждом диске, как по мне, - пустяк. Ну, и на минуточку, вспомним, что диски ходят далеко за эту черту - по достижению её они не со 100% вероятностью возьмут и сломаются. Справедливости ради, они могут сломаться и раньше, но шанс небольшой.

Короче говоря, если вы "мамкин майнер", как и я, и решили наплотить небольшое количество террабайт, ваш выбор - это обычные м.2 ссдшники. Если вы сурьёзный businassman и взяли кредитов на пару мильёнов шекелей, чтобы заплотить 1 эксаба́йт... во-первых, земля тебе пухом, братишка. Во-вторых, ваш выбор, несмотря на цену,  -  это ентерпрайс ссдшники для серверов, так как цикл их жизни в разы больше. А если у вас гиганские обьёмы, мёртвые сдшники в середине процесса очень сильно замедлят прогресс, я гарантирую это.

НАСТРОЙКА ПЛОТТИНГА

Вот мы и добрались до настройки. Настройка - это просто, важно лишь иметь правильное железо. Плотить лучше всего на линуксе, но у меня на пк под плоттинг стояла богоподобная 7рка, а установка линукса - это время, которого у меня было мало, так как начинал я уже с позиции упустившего поезд.

Плотить можно двумя способами(на самом деле больше, но я бы рассматривал только эти два один).

Способ первый: через красивый, удобный и дружелюбный к пользователю юзеринтерфейс. Способ второй: через чёрную, бездушную и неинтуитивную командную строку. Как вы уже могли догадаться, настройку мы будем делать через cli. Я в принципе не советую даже пытаться делать плоты в интерфейсе, даже для тестов. Даже из любопытства. Даже если вы и не собирались плотить, а просто решили посмотреть, как chia работает, а теперь из вредности решили установить себе чиа и заплотить через интерфейс.

Дело в том, что юзеринтерфейс был написан не индусами-программистами, а теми, кого сами индусы-программисты считают бастардами и сыновьями порочных женщин. Он баговый и запорет вам весь плоттинг, ко всему прочему еще и майнить не будет из-за этого. Самая большая проблема - это утечка памяти. Она будет, и весь ваш террабайт рама утечёт в daemon.exe, а не в хром, в кои-то веки. Возможно, они что-то исправили, но я не верю, что это возможно. Вот просто есть такие вещи, которые нельзя пофиксить - киберпанк, например.

В его оправдание могу сказать только то, что как майнер он работает ок. Пока ты его не трогаешь. Поэтому я не стал разбираться, как работает эта часть через командную строку.

Приступим. Винда у меня на английском и все пункты будут на нём же. Постараюсь компенсировать скриншотами, а пункты переведу, как умею.

  1. Нажимаете на кнопку винды и пишите 'PowerShell', откройте как администратор.
  2. В открытом окне нажимаете правой кнопкой мыши на верхнюю часть окна(там, где прописано имя окна и кнопки "закрыть", "свернуть", etc.) и открываете пункт "свойства" (Properties).
  3. В свежеоткрытом окне в первой вкладке убираем галочку "режим быстрого редактирования" (Quick Edit Mode).
  4. Во вкладке "разметка" (Layout) поменяйте высоту буффера(Screen Buffer Size) на 9999. Можете нажимать ОК, настройки закроются. (Из полезного там ещё есть размер шрифта - под себя настраивайте).
  5. Для того, чтобы выполнять скрипты, нужно выполнить команду(скопировать/вставить или переписать) и нажать энтер:

set-executionpolicy remotesigned

На этом настройка PowerShell завершена. Теперь напишем скрипт, который будет запускать процесс плоттинга. Скопируйте скрипт в блокнот.

#Begin Script

############Plotters for Temp Drive###############

invoke-expression 'cmd /c start powershell -NoExit -Command {cd "C:\Users\ВАШ_ПОЛЬЗОВАТЕЛЬ\AppData\Local\chia-blockchain\ВЕРСИЯ_ПРОГРАММЫ\resources\app.asar.unpacked\daemon\";$host.ui.RawUI.WindowTitle = "pq1"; start-sleep 0 ; .\chia.exe plots create -k 32 -b 5000 -u 128 -r 3 -t X:\q1 -d Y:\ -n 4 ;Read-Host -Prompt "press enter to exit"}'

Сохраните, назовите, как вам хочется. Я называл pq1(типа plotting queue 1), pq2... pq6. В целом, название просто вам для удобства, важно расширение(окончание файла) - то, что стоит за точкой. Расширение должно быть .ps1. Сохранили файлик - теперь поясню за важные моменты. Дотошный разбор ищите в полезных ссылках в самом конце.

Тут прописан путь к эксешнику. Их у чии 2 штуки. Один - это богомерзкий юзеринтерфейс, второй - командная строка. Вместо ВАШ_ПОЛЬЗОВАТЕЛЬ пишите, как зовут юзера в винде, например, "мамкин майнер" или "businassman". В версии проги - то, что у вас стоит сейчас, например, app-1.1.5

C:\Users\businassman\AppData\Local\chia-blockchain\app-1.1.5\resources\app.asar.unpacked\daemon\

В кавычках - название окна. Пишите, что удобно

$host.ui.RawUI.WindowTitle = "pq1";

Вот это очень полезно - здесь указывается задержка в секундах, через какое время запустится плоттинг. "0" значит - сразу

start-sleep 0 ;

Это сколько рама вы даёте на этот процес

-b 5000

Количество ядер на этот процес

-r 3

Ссд, где происходит плоттинг. Для удобства создайте для каждого процесса свою папку, ( \q1, \q2... \q6)

-t X:\q1

Hdd для хранения результатов

-d Y:\

Количество плотов, которое будет выполненно по очереди с этим процессом

-n 100

На этом всё. Остальные пункты менять не надо, разве только если вы businassman. Но в таком случае лучше вообще прочитать полный faq по чиа - он фантастически задокументирован, вопросов не останется. В противном случае по двойному нажатию запустится плоттинг сотни плотов по очереди. Для паралельного плоттинга копируете файлики, подправляете циферки и запускаете их...

Теперь о том, какие там циферки ставить. Как вы уже могли понять из пункта про железо, всё весьма индивидуально. Но я расскажу закономерности и то, от чего отталкиваться.

Плоттинг проходит в 4 этапа и на разных этапах требует разные ресурсы:

  1. Насколько я понял, в самом начале идёт проверка на наличие места, необходимого для создания плота. Это не относится к первой фазе, но делать отдельный пункт для неё я не хотел. Далее вычисляются таблицы с хэшами, 7 штук, - это самый долгий этап. Количество выделенных ядер работает только на этот этап, дальше нужно всего 1 ядро для процесса.
  2. Получившиеся таблицы сортируются, сканируются и, вообще, с ними происходят разного рода непотребства. В итоге генеряться .tmp файлы. По скорости эта фаза занимает второе место.
  3. Идёт компрессия .tmp файлов - по скорости эта фаза занимает третье место.
  4. В сжатый файлик прописываются финальные таблицы - это занимает меньше всего времени. Потом готовый файлик пишется на хддшники.

Хоть плоттинг и называется "параллельным", стартуется он не параллельно, а с задержкой. То есть, вы запустили 1 плот и следущий запускаете тогда, когда первый только закончил первую фазу. Третий - когда второй закончил первую фазу. В идеале, плоты на одном диске не должны находиться на первой фазе параллельно, а если вы запустите 3 одновременно - места не хватит, и они все встанут. Как запускать 4 плота на 1тб, я не стал выяснять, но это возможно. Учтите, что когда вы запускаете ещё один плот, скорость падает. То есть, сделать 1 плот, посмотреть, сколько ему надо на первую фазу, и по задержке запустить следующий - не выйдет. Надо сидеть и запускать ручками, а когда все 3 выйдут в равновесие по скорости - можно забыть об этом диске и заниматься своими делами. Если у вас 2 ссд на одной системе - после того, как запустили на первом диске первый плот, можете минут через 10-15 запускать первый плот на втором диске. Эта задержка предотвратит вариант, в котором 2 плота будут записываться на hdd одновременно - маленькая, но оптимизация. Так как второй ссд у меня оказался не очень годным для плоттинга, на нём я запустил всего 2 плота параллельно. Вышло чуть быстрее, чем три параллельно.

Потребляемые ресурсы в разные отрезки времени

Я дал каждому процессу по 3 ядра - учитывая, что первая фаза пересекается максимум на двух разных процессах и иногда на короткий период на трёх... получалось, что в самый пик у меня было забито 9 ядер первыми фазами и ещё 2 ядра другими фазами. Всегда оставалось одно свободное ядро для системы и клиента чия. Сёрфинг и фильмы в 1080р при этом работали на ура, плоттингу тоже не мешали. В результате, каждый плот у меня делался 25000 секунд. Разделив на общее количество одновременно запущеных плотов, получается скорость одного плота. 25000/5=5000 секунд или полтора часа на 1 плот.

Рама было в избытке, и я давал по 5гб рама на процесс. Но, если верить разработчикам и их факу, на 2 ядра необходимо 900мб рама, на 3 ядра - 2640мб, а на 4 ядра - 3400. В моём случае, вместе с системой на пике больше 23гб не ело. Интересный нюанс: если рама у вас мало, учитывайте, что вы даёте рам только на сам плоттинг одного конкретного процесса. Кроме системы и чия клиента есть ещё куча других процессов, которые чуть-чуть хавают рам. Соответственно, смотрите, чтобы рама всегда было немного "свободно". В противном случае - тобi пiзда, господин плоттинг/майнинг.

-n 4 можно поставить какое угодно. Лучше большое, иначе потом придётся ловить момент, когда будет делаться последний плот у этого процесса, и ставить на таймер следущий процесс. Сразу считать, сколько вам нужно всего плотов, делить на количество параллельных процессов и ставить сюда - не нужно. Вам 100% придётся что-то когда-то перезапускать. Если нажать кнопки CTRL-C в выбранном окне после завершения текущего плоттинга, следущий не запустится.

На этом все. С этим вы и ноду запустите, и просто одну любительскую майнинг ферму.

ТАК ПОЧЕМУ НЕ МАЙНИТЬ?

Всё действительно просто - особенно после того, как я провёл изыскания и поделился ими тут. С уже заплоченными 24тб вы "гарантированно" получите награду уже через месяц! А с учётом того, что всё уже готово и комп не напрягается... Да-да, когда вы всё заплотили, дальше всё, что нужно - это оставаться в сети. Можно даже подключить ваши блинницы к малинке, и расход на электричество будет совсем смешным. Но есть один момент... вы, такой предприимчивый мамкин майнер, решили засеить 24тб прямо сейчас. В зависимости от того, какое у вас железо, плоттинг займет от "полутора недель" до "пары месяцев". Другими словами, когда вы закончите, обьём сети возрастёт, и там будет стоять 2 месяца(скорее даже больше). И оно будет увеличиваться, нет, УВЕЛИЧИВАТЬСЯ. Рост сети - просто слов цензурных нет. Можно, конечно, взять 50 или 100тб, но проблема останется той же, только возрастут затраты/время. В общем, мой вам совет - он прописан в дисклеймере. Всё ещё сомневаешься? Забыл сказать, что в скобочках у этого рассчётного времени стоит, что настоящее время может быть в 3-4 раза дольше :D А в соло майнинге вы либо получаете награду, либо не получаете ничего. Справедливости ради, если ты очень удачливый, тебе может повезти даже с 1 плотом, и ты получишь свою награду в виде двух монеток. Соответственно, если тебе, как и мне, в конечном счёте нужен сервак под фильмы и всё такое - вперёд, пробуй. Если руки не из попы растут, а голова чиста - придумаешь удачную тактику и таки догонишь поезд. Вот только, в лучшем случае, с этим обьёмом ты дай бог отобьёшь затраты на железо.  А если этот гайд показался тебе сложным - не лезь.

Ну а как же быть господину businassmanу, который хочет много шекелей как с куста? Тут всё сложнее. Большой обьём плотить - вылезет куча технических проблем. Это долго и дорого, даже если умно распределить ресурсы и количество ссдшников. А чия может загнуться буквально в любую наносекунду. Ладно, если деньги не кредитные, тебе действительно лучше знать, что с ними делать. А если ещё и в сетях шаришь - может, у тебя и получится. В случае, если деньги кредитные... почитай хотя бы, что такое lanes у процессоров, а то лососнёшь ещё в процессе сборки своей фермы.

Это всё про соло майнинг.

Про пулы:

Прямо сейчас пулов нет. А те, что есть... Вы отдаёте левым людям полный доступ к своему кошельку. Можете в догонку прислать им скан кредитки с двух сторон. Почти уверен, он нужен для регистрации на таком пуле.

В обозримом будущем будет официальный пул и в принципе поддержка пулов этой системой. Минус пула и очередное "нет" в копилку "почему сейчас не надо плотить" - для пула придётся переделывать все ваши плоты. Будет ли это прибыльно, учитывая динамику роста сети? Я не знаю.

Любая другая информация про пулы чиа - спекуляция, заблуждения и обман. По крайней мере, на момент написания.

ИТОГ

Тот, кто вкатился в майн этой крипты до хайпа - прямо сейчас выбирает цвет своей ламбы или порше. В зависимости от того, на каком железе вкатились и насколько рано это было. А сейчас вкатываться поздно и факторов тому целая куча. Та же цена железа, например. Кстати, спасибо Evernews - именно их новость про чиа была последней каплей, когда я понял, что сейчас надо брать железо. Если не для профита, то по крайней мере для сервера. Куплено оно было за обычную цену. Прямо сейчас такие же хдд стоят на 90% дороже.

Раз уж мы про деньги: вывод денег и продажа монетки, если вам это в новинку, технически гораздо сложнее, чем "майнить". Что не удивительно, вы на каждом шагу платите комиссию или налог. Ошиблись? Не важно, платите комиссию. Зашли в тупик? Комиссия. А в конце, после вывода, с вас ещё спросит налоговая.

Жалею ли я о чем? Обидно, конечно, что выбор цвета ламбы откладывается, но нет, не жалею - было весьма интересно этим заниматься.


Редактировал мёдаед, скажите ему спасибо и получите +10% к удаче на фарм чиа.

На этом всё.

UPDATE: Через сутки после написания статьи, время ожидания "гарантированной" награды при уже заплоченых 24тб - возрасло до двух месяцев.


Вот полезные ссылки.

Более подробно про настройку cli

https://thechiafarmer.com/2021/04/19/plotting-with-powershell-on-windows/

Фак на гидхабе

https://github.com/Chia-Network/chia-blockchain/wiki/FAQ

Вот это я не проверял, так как настроился сам к моменту когда оно появилось. Но как я понял, это может помочь в распределении ресурсов

https://github.com/swar/Swar-Chia-Plot-Manager/blob/main/README.md

Вот тут про износ ссд

https://github.com/Chia-Network/chia-blockchain/wiki/SSD-Endurance

Тут можно подсчитать, как максимально эффективно забить свои хдд

https://plot-plan.chia.foxypool.io/

Судьба предыдущих монеток, которые можно было майнить на винтах

https://coinmarketcap.com/currencies/storj/

https://coinmarketcap.com/currencies/siacoin/

https://coinmarketcap.com/currencies/filecoin/



Теги: Креатив, Годнота, Технологии
Аватар Новый никК
Новый никК
8 подписчиков