Майнинг - что это и как начать






Криптовалюта не обладает абсолютно никакой физической или иной сущностью, но имеет все характеристики присущие деньгам. Она не подконтрольна чьему-то влиянию. Банки для неё не нужны, так как ничего и нигде хранить не нужно (впрочем банки тоже не хранят ничего кроме воздуха). Эмиссия происходит строго следуя заданному алгоритму (регулируя сама-себя). Любые суммы переводятся в любое место за пару минут, и при этом никто не сможет отрицать совершения какой-либо сделки (так-как она подтверждена сетью) или воспрепятствовать ей.

Говорить про факторы риска бессмысленно, они присутствуют везде, и в банковской системе их больше.


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

Применяться может, наверное, в любых отраслях. Например, если записать в блокчеин все экспонаты находящиеся в Эрмитаже, то ни один вороватый хранитель музея никогда не сможет сказать что такой-то картины у него не было. То есть, бумажные документы то он может съесть, а вот «блоком подавится»


И что характерно, даже если вся криптовалютная авантюра система низвергнется в ад, то технология блокчейна останется.

Это было типо предисловие.





Речь пойдёт не только о биткоинах, но и о любой другой криптовалюте. Однако в объяснениях буду опираться в основном на биткоин.


Вначале я постараюсь рассказать, что такое майнинг и майнер, какая бывает криптовалюта, что такое алгоритмы шифрования, транзакция, подверждение и сложность, что такое майнинг на пуле и соло майнинг, что такое кошелёк и биржа, и почему одну валюту хорошо добывать (майнить), а другую плохо и т.д.
В конце же опишу, пошагово, процесс майнинга (для  и  ) на примере криптовалюты Zcash.

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

Итак начнём…


Майнинг — происходит от английского слова mining, и означает разработку месторождений в горной промышленности. Отсюда следует, что майнер — это просто шахтёр, ну или рудокоп.

Майнерами называются — и люди занимающиеся майнингом, и программы, которые работая на вашем компьютере, «копают» денежку.
Этих программ существует не так уж и много (в отличии от количества имеющихся криптовалют), так как зачастую разные криптовалюты используют один и тот же алгоритм. Подробнее об этом сказано ниже.

В нашем случае, майнинг – это когда Вы подключаетесь (с помощью специальной программы — майнера) к сети какой-то криптовалюты и начинаете выполнять задания (математические вычисления), которые сеть раздаёт всем участникам через определённые промежутки времени.

Задания — формируются из транзакций (так же см. ниже) созданных участниками сети.

Конечной целью всего этого, является создание очередного подтверждённого (валидного) блока в цепочке таких же блоков называемой блокчейн и получения за это вознаграждения.

Другими словами — все участники, с определённым интервалом, получают из сети пакет с задачей (который тоже называется — блок), каждый участник придумывает своё решение данной задачи, создаёт из этого блок и отправляет его в сеть. Если решение оказывается верным, тогда другие участники сети подтверждают это и приделывают этот блок к общей цепи — блокчейну. Создатель получает вознаграждение.
Если решение ошибочное, оно просто выкидывается.

Это очень краткое определение майнинга, далее следуют подробности.


Что такое блок?

Структура его такова:



Заголовок блока (80 байт)


Выглядит блок примерно так…

1824B9ADF09908222CF65069FDE226D32F165B3CF71B7AA0039FDFEF75EAA61610909EBFFBAC023480FC87FCF640C4A
009B82C4A6D25A0F4B8A732AE54EF733E792681137BA378577DFDC2732D192DAF323966EAD4ADC9635D7A12EDD50E34
9F660622D186AF3C03BF7D265F2AA7EB125056F4BF45BE519E8B22B845B28065110000006400000142E5D667CB01CEE
EDD0AC15EC4C491819A99030BD5FEF7CD2B469F2B90BA13D7981EDCD0708353D13390B8564F496C44FAC2777B0AF79D
C94CBF36D0CC0F047E807889F34C4DC5FEB724699C257391F84F3DDD70B84F841D115F4EFEAF4E58779042F35257E5C
035046037DE740718D199A8F06AD7A58E37CCCD4CC5E95295DCC2C5F3C70847BD59FA57BCC5FF4B208F93948FCFD763
EC1E5C85B61C43EB64B77A9F53B28785D7DE2335333003260A0839D53927976751A8D8967B2BB325909D86E82BC4125
2A28ECF6F0E7476BB99B29585EB0E7541




… а вот так его хеш-сумма (так же см. ниже):

00000000000001c21dbf4715d5da1a288061faa21e950dd8df6ae25c8b55d868

blockexplorer.com



То есть блок включает в себя, — хэш-сумму предыдущего блока, всякие служебные данные, список транзакций, информацию обо всех предыдущих блоках, номер кошелька майнера и случайное число (nonce). (так же см. ниже)

Исходя из того, что каждый следующий блок включает в себя хэш-сумму предыдущего блока, получается, что если кто-то решит создать невалидный блок, тогда остальные участники сети не станут его подтверждать (см. ниже), т.к. он не содержит хэш-суммы предыдущего блока. Если же злоумышленник решит изменить хэш и предыдущего блока, то придётся делать это для всех блоков, включая самый первый, а это потребует гигантских мощностей и не будет иметь смысла.
Вот тут почитать про уязвимости.


Про хэширование
Хэш-функция — это хэширующий алгоритм (md5, sha1 64base и т.д).

Хэширование — это процесс, при котором вы подаёте на вход хэширующего алгоритма достаточно большие по объёму данные (допустим миллион байт), а на выходе получаете короткую (допустим 32 байта), уникальную строку, которая позволяет отличить ваши данные от каких-то других данных. Эта строка называется хэш-сумма (или просто хеш) и выглядит примерно так — f7c9f52d1ebf8c6aef8986fb127ba1bdeec58521f7eb46f026b708df26a40912.

Сжатие данных происходит с помощью математического «колдунства» и если Вам интересен этот процесс, то можете почитать про него на примере алгоритма MD5 или SHA-1.

Приблизительно это выглядит так: берём число 23458746 и складываем все числа несколько раз…

2+3+4+5+8+7+4+6=39 ⇨ 3+9=12 ⇨ 1+2=3
Хеш-сумма числа 23458746 будет 3. На деле всё, конечно, гораздо сложнее.

Так же, очень отдалённо, можно представить себе хеш-сумму как содержание (указатель заголовков) словаря, то есть сам словарь это данные, а его содержание это хеш-сумма.


Хэш используется для того, чтобы быстрее отличать одни данные от других без необходимости сравнивать каждый бит этих данных. Достаточно обработать эти данные тем же хешерующим алгоритмом (вычислить хэш) и можно сравнивать только эти хеши.
Если хэши различаются, значит, это разные данные. Если хэши одинаковы, значит, с вероятностью в 99,99999..., это одинаковые данные. Хотя всегда существует ничтожный шанс, что данные всё-таки разные несмотря на одинаковые хэши. Такая ситуация называется коллизией.

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


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

бла-бла.zip
MD5 f7c9f52d1ebf8c6aef8986fb127ba1bdeec58521f7eb46f026b708df26a40912

То есть скачав этот файл, можно прогнать его через хеш-алгоритм MD5 и если у вас получится то же самое, что написано, то значит скаченный файл не повреждён.



Хотя хэширование и не является шифрованием, некоторые хэш-функции для этого очень хорошо подходят. Благодаря хаотичному соответствию хэшей исходным данным, практически невозможно подобрать ключ, изучая закономерности в этих данных.
Иными словами, из A всегда можно получить B, но зная B нельзя вычислить A.



Создание нового блока

Чтобы участнику создать новый блок, нужно получить от сети хэш-сумму предыдущего блока, некоторое количество неподтверждённых транзакций (захешированных методом «дерева Меркла»), текущее время, сложность и случайное число, произвести над ними вычисления, захешировать всё это и отправить обратно в сеть.

Пример создания нового блока

<?php
  function SwapOrder($in)  //This reverses and then swaps every other char
   {
      $Split = str_split(strrev($in));
      $x='';
      for($i = 0; $i < count($Split); $i+=2) 
       {
         $x .= $Split[$i+1].$Split[$i];
       } 
      return $x;
   }
  
  
  function littleEndian($value) //makes the littleEndian
   {
     return implode (unpack('H*',pack("V*",$value)));
   }
 
  $version = littleEndian(1);
  $prevBlockHash = SwapOrder('00000000000008a3a41b85b8b29ad444def299fee21793cd8b9e567eab02cd81');
  $hashMerkleRoot = SwapOrder('2b12fcf1b09288fcaff797d71e950e71ae42b91e8bdb2304758dfcffc2b620e3'); 
  $time = littleEndian(1305998791);
  $bits = littleEndian(440711666); 
  $nonce = littleEndian(2504433986); 
 
  $header_hex = $version . $prevBlockHash . $hashMerkleRoot . $time . $bits . $nonce; //concat it all
  $header_bin  = hex2bin($header_hex); //convert from hex to binary
  $pass1 = hex2bin(hash('sha256', $header_bin )); //hash it then convert from hex to binary
  $pass2 = hash('sha256', $pass1); //Hash it for the seconded time

  $FinalHash = SwapOrder($pass2); //fix the order

  echo   "\n";
  echo   "FinalHash: ";
  echo   $FinalHash;
  echo   "\n";
?>

Результатом будет:



Алгоритм хеширования блока — Block_hashing_algorithm

Пртокол общения между майнером и сетью — Stratum_mining_protocol


Если значение хэш-суммы оказывается меньше (в десятичном виде хеш-сумма это обычное число, только очень-очень большое), чем цель заданная сетью (с учетом текущей сложности), тогда формируется новый блок, сеть его подтверждает и майнер получает какое-то количество только что созданных монет. Новый блок «прицепляется» к предыдущему блоку и тем самым образуется цепочка блоков — blockchain.
Если же хэш-сумма больше текущей цели, тогда случайное число изменяется (увеличивается на единицу) и рассчитывается новая хэш-сумма. Это делается миллиарды раз каждым майнером.

Для наглядного понимания
Хэш-сумма это обычное (только очень большое) число:

f7c9f52d1ebf8c6aef8986fb127ba1bdeec58521f7eb46f026b708df26a40912

В привычном для человека виде (десятичном) выглядит вот так:

112078102004378042284884826242280406284022042488488848628408208468422468268028 — квинтиллион квинтиллионов квинтиллионов и т.д.

То есть говоря об уменьшении хеша, он рассматривается как другая сущность — число.


Складываеется впечатление о некой несвязности, вроде значение нужно получить меньшее, а случайное число увеличивается…
Не важно что делается со случайным числом (можно просто менять местами цифры, но удобнее всего увеличивать на единицу), важно что изменится хеш всего блока.

То есть, если захешировать какие-то данные и перевести хеш в десятичный вид, а потом в исходных данных сделать изменение (например поменять тройку на четвёрку), снова захешировать их, и тоже перевести полученый хеш в десятичный вид, то не известно какое из двух этих чисел будет меньше. Может первое, а может второе.

Пример на PHP
Хешируем алгоритмом SHA1 число — 1234567:

<?php
$result = sha1(1234567);
echo $result;
echo "\n";
echo hexdec($result);
?>

Результат:

Хеш-сумма — 20eabe5d64b0e216796e834f52d61fd0b70332fc
Десятично число — 1.8792266215725E+47


Увеличиваем хешируемое число на единицу:

<?php
$result = sha1(1234568);
echo $result;
echo "\n";
echo hexdec($result);
?>

Результат:

Хеш-сумма — c7b6b845668130956f8768d3f1ce3d391ca881d6
Десятично число — 1.1401639512964E+48

Вроде бы исходное число увеличили, но хеш в десятичном представлении уменьшился.


В то же время, если хешируемое число будет например — 1234, то хеш в десятичном представлении увеличится:

<?php
$result = sha1(1234);
echo $result;
echo "\n";
echo hexdec($result);
?>


Хеш-сумма — 7110eda4d09e062aa5e4a390b0a572ac0d2c0220
Десятично число — 6.4549347072164E+47

В общем результат непредсказуем.




Если нескольким людям удаётся одновременно получить хэш-сумму отвечающую условиям, тогда по логике вещей цепочка блоков разветвится, что противоречит принципам работы сети. Чтобы ветвлений не происходило, вводится условие, что побеждает цепочка с максимальной суммарной сложностью. (см. bitcoinwiki, раздел «Форк»)



Транзакция

Если майнеру удаётся получить хэш-сумму отвечающую условиям (то есть решить задачу в свою пользу), тогда он рассылает всем новый блок с включённой в него транзакцией на свой кошелёк (так сказать транзакция-вознаграждение) и после её подтверждения получает монеты.
Другой вариант: если владелец кошелька хочет сделать перевод или купить/продать что-либо, то он создаёт транзакцию, подписывает её закрытым ключом, и публикует в сеть.



Подтверждение транзакций

Транзакция попадает на некий «склад» неподтверждённых транзакций. Майнер берёт несколько транзакций с этого «склада», формирует блок, начинает майнить, т.е. искать блок удовлетворяющий требованиям.
Как только блок, куда включена транзакция, намайнен, транзакция считается подтверждённой. Когда будет намайнен следующий блок после этого блока, транзакция считается подтверждённой дважды, и т.д.

То есть, награду за найденный блок вы получаете не сразу, а после нескольких подтверждений.



Что такое сложность?

Эмиссия (печатание новых денег) обычных валют регулируется Центробанками государств, которым принадлежит эта валюта.
У криптовалюты нет никаких «центробанков» ибо она децентрализована, однако и здесь, как и в любой экономике, эмиссию необходимо регулировать, в противном случае будут генерироваться горы денег, начнётся инфляция, снижение курса и всё покатится к чертям собачьим.
Для того, чтобы избежать сего печального финала, в алгоритм добычи криптовалют встроен сдерживающий механизм, который заключается в ограничении времени создания нового блока, за счёт сложности вычисления хэш-суммы решаемого значения.

Для простого понимания, сложность можно рассматривать как количество нулей, с которого начинается хеш.

Например для биткоина сложность меняется каждые 2016 блоков, основываясь на времени, которое потребовалось для нахождения предыдущих 2016 блоков. Если блок будет находиться каждые 10 минут (как это задумывалось изначально для равномерной эмиссии), нахождение 2016 блоков займет ровно 2 недели. Если предыдущие 2016 блоков были найдены за срок более 2х недель – сложность будет уменьшена, если меньше – сложность будет увеличена.

Более внятно почитать про сложность, с цифрами и примерами, можно на bitcoinwiki.


При майнинге на пуле, существует ещё локальная сложность, которая никак не связана со сложностью, действующей в сети.
Подробно об этом написано ниже, в разделе «Майнинг на пуле».




Какое максимальное количество биткоинов будет намайнено и что будет потом?

В алгоритм биткоина заложено такое условие, что намайнено может быть не больше 21-го миллиона монет и по расчетам, это произойдёт в 2140 году.
Изначально награда за найденный валидный блок составляла 50 BTC, но, согласно алгоритму, после нахождения каждых последующих 210000 блоков эта сумма уменьшается в два раза (сейчас она составляет 12,5 BTC). Помимо основной суммы, майнер получает небольшую комиссию за подтверждение транзакций. Так вот когда весь 21 миллион будет намайнен, тогда майнеры будут зарабатывать только на комиссионных (ведь транзакции купли-продажи будут продолжаться). Правда это случится очень не скоро и выражаясь словами Н.А. Некрасова — "… жить в эту пору прекрасную. Уж не придется — ни мне, ни тебе"




В этой статье я конечно же не претендую на «истину в последней инстанции», и наверняка упустил где-то и что-то или не совсем точно выразил мысль, однако в целом механизм выглядит именно так.
Опять же этот механизм хоть и справедлив для большого количества криптовалют, но есть и другие механизмы.

Например при майнинге Zcash выполняется решение так называемого "Парадокса дней рождения". Поэтому производительность майнера zcash`а правильней мерять не в хешах в секунду, а кол-вом решений в секунду (Solutions per Second).



Тем не менее, в сущности, происходит всё то же самое — решается задача, решение пишется в блок, блок хешируется. Если полученный хеш меньше, то блок готов, если нет, то ищем следующее решение.


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




Как я уже говорил, криптовалют существует великое множество, а алгоритмов шифрования не так уж и много. Часть из них Вы можете посмотреть на сайте suprnova.cc в колонке Algorithm.

Алгоритмы — это не только шифрование данных, шифрование это составляющая часть. Алгоритмы содержат и другие компоненты — условия работы сети, регулирование сложности, выбор того, кто будет подписывать транзакции (Proof-of-stake или Proof-of-work), ещё какие-то условия…

Одни алгоритмы работают быстрее, но при этом валюта использующая этот алгоритм может быть очень дешёвая, и наоборот, алгоритм сложный, но валюта дорогая. В то же время стоимости валют работающих на одном и том же алгоритме могут иметь большую разницу в цене (но это уже рыночные заморочки). Подавляющие число алгоритмов эффективнее всего работают на видеокартах, но так же есть алгоритмы одинаково хорошо работающие и на (GPU) и на (CPU) используя ещё и оперативную память. Причём не обязательно чтоб эти CPU были суппер-современными. Например, есть валюта (AEON) использующая алгоритм «CryptoNight» майнящаяся исключительно процессором.

В то же время пишутся новые алгоритмы, способные более-менее уровнять возможности участников майнинга. Что в общем-то было одной из идей биткоина — относительно равные шансы у всех. Это даёт сети устойчивость и безопасность, нежели если большая мощность этой сети окажется в «одних руках».


При всём этом многообразии можно найти «золотую средину» для Ваших аппаратных мощностей. Однако понимание всего этого придёт только с опытом, так как никто не сможет сказать Вам что лучше.
Если есть интерес, то можно заняться изучением валют и в особенности алгоритмов (в процессе изучения сами поймёте почему), следить за тенденциями на бирже, перескакивать с валюты на валюту и с пула на пул, а можно и не заморачиваться, выбрать популярную валюту и просто получать какой-то средний доход соответствующий имеющимся мощностям.


К слову о мощностях, например не пытайтесь майнить Биткоин, все Ваши усилия будут тщетны так как кучи ASIC`ов, на огромных фермах будут всегда Вас обгонять в поисках нужных блоков. Впрочем мизерный шанс найти блок есть всегда, но это не выгодно, больше денег уйдёт на электроэнергию.



Вот один из губителей идеи равенства среди майнеров


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

Говоря очень упрощённым языком, производимые расчёты относительно простые (но их огромное количество) и c ними легко справляются микроядра видеокарты (GPU), которых у современных карт тысячи (но они узкоспециализированы), а частоты выше гигагерца. Плюс технология CUDA, которая даёт разработчику возможность по своему усмотрению организовывать доступ к набору инструкций графического ускорителя и управлять его памятью.


На том же принципе (узкая специализация) основаны специальные устройства для майнинга, например так называемые «Асики» (ASIC)

Центральный же процессор (CPU) хоть и работает на большей частоте, но основан на другой архитектуре и обладает несоизмеримо меньшем количестве ядер «заточенных» под очень широкий спектр действий. Плюс, он ещё должен заниматься своими «прямыми обязанностями». Но опять же, как писалось выше, в некоторых алгоритмах процессор не уступает видеокарте.
Так что, если у вас нет топовых видеокарт, но есть гора компьютеров на каком-нибудь стареньком core2Duo, то можно что-то заработать. Главное не забыть вычесть стоимость электричества.


Калькулятор whattomine.com, поможет прикинуть сколько будет зарабатывать ваше оборудование.

Здесь всё довольно просто. Допустим у Вас одна видеокарта Nvidia 1060, тогда справа-снизу в колонке с картами пишем 1 и нажимаем на «1060» (кнопочка станет зелёной), а следом жмём синюю кнопку «Calculate»…



В верхней строке, в синих прямоугольниках написаны алгоритмы, а под ними количество «гига-мега-кило-хешей» (Hash rate), которое может выдать Ваша карта на данном алгоритме. И потребляемую при этом электроэнергию (Power).

Поскольку мы собираемся майнить Zcash (популярная среди майнеров валюта), то нас интересует алгоритм Equihash (пятая колонка). Zcash работает на нём.
Получается что наша карта выдаст 270 хешей в секунду и потреблять будет 90 ватт.

Тут у нас вылезает логическая несостыковка, ведь например на алгоритме NeoScrypt наша карта выдаст 500 килохешей в секунду, то есть почти в две тысячи раз больше. Спрашивается, почему бы нам не майнить эту валюту? Секрет прост — рыночная стоимость и надёжность этой валюты.
То есть, решений то Вы сделаете гораздо больше, но заработаете ли на этом, вот в чём вопрос. Может это новая валюта и она никогда не «взлетит», а может и вовсе оказаться афёрой.
Но опять же, это не факт и требуется детальное изучение (алгоритма и валют).



Теперь надо покрутить вниз и найти строку Zcash




Помимо различной полезной, но непонятной информации, в предпоследней колонке Вы увидите свой ежедневный заработок. Сверху $1.28 (это без учёта потребляемых ватт), ниже $1.06 с ваттами.
Можете в окошке Power вместо 90.0, написать 0 и выполнить калькуляцию заново, тогда цифры заработка сровняются.

Здесь опять мы видим противоречие. Казалось бы, что логичнее майнить Ethereum (эфир), ведь он дороже на 19 центов, но и тут есть нюансы. Во-первых Ethereum майнят очень много народу на очень больших мощностях (включая «асики»), во-вторых важную роль играет курс данной валюты в данное время и т.д. И ещё нужно учитывать реальную сложность (так как whattomine может не успевать обновляться) на пуле, но это уже более детальный анализ и для новичков не сильно актуален.

Впрочем, если вкратце, то нужно клацнуть по Zcash(ZEC), в открывшемся окне нажать кнопочку «Enable» напротив Difficulty (поле станет редактируемым), сходить на пул, через который Вы будете майнить, взять там цифру Current Difficulty, вернутся на whattomine, вставить эту цифру в поле и нажать «Calculate». Покрутить вниз и посмотреть Profit.

При этом нужно понимать, что эти цифры (курс, сложность) постоянно меняются. В общем царит суета сует



На сайте представлены только популярные карточки, но это не мешает производить расчёты для других GPU или CPU, нужно просто поискать в сети (на форумах или ещё где-то) приблизительную информацию о хешрейте для Вашего устройства, вписать это в окошке Hash rate (под нужным алгоритмом) и произвести калькуляцию.

Например мой старый ноут с процессором Core i3 выдаёт 3-4 хеша в секунду, Core 2 Duo 3Ггц — 1-2 хеша, современные «восьмиядерники» с 4-мя Ггц на борту выдадут около 25 хешей, а карточка Nvidia GTX 460 — 20 хешей (это на алгоритме Equihash).

То есть выглядеть будет так:


Калькулируем и смотрим результат.





Теперь ещё немного теории и можно будет переходить к практике.


Кошелёк — если он заводится на криптовалютной бирже, то это случайно сгенерированная пара ключей и выглядит он примерно так — SdmbAL7mdmhzYFVo13YWBMGj5MMdLpEvVq. Если устанавливается на комп, то это будет файл с данными.

Для каждой вылюты заводится свой кошелёк.

В случае работы через пул (см.ниже), удобнее заводить кошелёк на бирже криптовалюты, например Poloniex (в виде выше показанного ключа), пул, через который Вы майните переводит вашу валюту на этот кошелёк, а там вы делаете со своими монетами что хотите (продаёте, меняете). Другой вариант — устанавливаете кошелёк на компьютер (см. ниже).

Если вы майните соло (см.ниже), тогда скачиваете кошелёк с сайта той валюты, которую будете майнить, устанавливаете его и ждёте пока он синхронизируется с сетью. После этого он хранится на вашем компьютере в виде файла. Файл может находится в любом месте, на винчестере, на флешке или в «облаке», главное чтоб он был доступен во время работы программы-майнера. Если компьютеров много, то все они могут майнить на один этот кошелёк.
Выводятся монеты с этого кошелька на биржу криптовалюты.

Так же существуют различные интернет-ресурсы на которых можно хранить свой кошелёк.

Читать про Bitcoin кошелёк.



Майнинг на пуле и майниг в одиночку (соло)

Майнинг на пуле — это когда Вы подключаетесь к некоему сайту, к которому так же подключены другие майнеры, сайт даёт задание и все участники начинают его решать и присылать на пул возможные решения. Как только чьё-то решение оказывается верным, пул сообщает всем о том, что блок найден и после подтверждения распределяет вознаграждение. Но не поровну, а в соответствии с количеством присланых шар (share). То есть участник может никогда и не найти блок, но он всё равно получит долю за то, что работал и присылал «шары».



Что такое «шара» читайте ниже.

Для того, чтобы понять, что какие-то участники действительно работают, а не просто подключились к пулу и отправляют много поддельной статистики (делая вид, что у них большие вычислительные мощности), пулы устанавливают свою, локальную сложность (не имеющую отношения к основной сложности сети).
Если участник присылает хеш, который не является решением для блока на текущей сложности сети, но удовлетворяет сложности пула, то этот хеш принимается пулом и называется шарой (share).
Чем больше «шар» прислал участник, тем больше он выполнил работы и тем больше его доля в награде за найденный в будущем блок.


Так же часть награды забирает себе пул в виде комиссии, обычно это совсем небольшие деньги.

Вот здесь можно и нужно ознакомиться подробнее с пулами, шарами и способами дележа награды (так как есть и другие способы, отличающиеся от описанного выше).


Майнить через пул очевидно выгоднее чем делать это в одиночку (если конечно у Вас нет пары ферм), так как, скажем у 5000 человек, вероятность найти блок несоизмеримо больше чем у одного. С другой стороны, если очень сильно повезёт и Вы найдёте блок, то получите сразу много денег .
Однако опять же, может Вы выберете вылюту, которую майнит мало народа, тогда вероятность успеха вырастёт. Правда и валюта эта будет стоить немного, иначе её бы «копали» много людей.
Одним словом, если дебютируете в майнинге, то однозначно делайте это через пул.


Майниг соло — это когда Вы пытаетесь найти решение блока в одиночку, чтобы заграбастать побольше монет. Для этого Вам понадобится десяток топовых видеокарт собраных в фермы и терпение. Если это присутствует, то никто не запрещает Вам попытать судьбу с какой-нибудь дорогой монетой. Другой вариант, это майнить дешёвые монетки.

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


Протокол «Stratum» для общения майнера с сетью/пулом — здесь или здесь.



На этом теория заканчивается и мы переходим к практике…




Майним

Практическую сторону вопроса я буду освещать на примере валюты Zcash

Майнить будем на CPU и GPU Nvidia и AMD, через пул suprnova.cc, кошелёк завёдем на криптовалютной бирже Poloniex.com.


Первым делом надо зарегистрироваться на бирже и завести там кошелёк. Переходим по ссылке poloniex.com и жмём большую кнопку «Create Your Account»:






После успешной регистрации жмём кнопки BALANCES ⇨ DEPOSITS & WITHDRAWALS






Откроется вот такое окно со списком валюты под ним:






Крутите в самый низ и там в строке ZEC (Zcash) нажмите на Deposit. Будет сгенерирован номер вашего кошелька:



В самом конце статьи, в FAQ по Zcash, объясняется различие между кошельками начинающимися на t и на z.

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

Так же этот номер нужно будет прописать на пуле, через который вы майните.


Для перевода монеток нужно нажать Withdraw, вписать кошелёк получателя (Address) и сумму (Amount):


Красные цифры — это комиссионные.


Писать что-то ещё про Poloniex нет нужды, там всё предельно просто и понятно, разберётесь за час. К примеру, если нажать кнопку  , а справа выбрать вкладку BTC и строку ZEC, то можно посмотреть график ZECа по отношению к Биткоину, курс и тренд:






Теперь займёмся пулом…




Заходим на сайт suprnova.cc




Крутим немного вниз и находим такую строку…




Нажимаем кнопку   и нас перекидывает на zec.suprnova.cc.


Пару слов об этом меню. Здесь нам интересны следующие пункты:

Pool Hash: 8,206.47 kSol/s — это говорит нам о том, какая сейчас мощность на пуле (чем эта цифра больше, тем лучше). К сожалению в данный момент она составляет всего около 9% от суммарной мощности сети, а месяц назад она была больше. Чем мощность на пуле больше (то есть больше народу майнят через этот пул), тем выше вероятность найти блок.

Сейчас на пуле физически нельзя найти больше 9% от всех блоков, поделите это ещё на мощности других майнеров относительно своих и получите вероятность неслыханно разбогатеть

Pool Workers: 7112 — что такое воркер я объясню чуть позже, когда мы будем его создавать. Говоря простым языком, это количество людей майнящах на этом пуле. Но так говорить не совсем правильно, потом-что у одного майнера может быть несколько воркеров, например у меня их три и все они работают в данный момент.

Net Hash: 219,718.53 kSol/s — суммарная мощность сети. То есть общая скорость, с которой работают все устройства в сети.

Bittrex: 0.08430040 BTC — курс Zcash к Биткоину на бирже bittrex.com. Надо отметить, что на Poloniex курс немного лучше.

Остальные пункты будут интересны после регистрации.



Регистрация

Форма регистрации в общем-то обычная за исключением поля PIN, сюда надо ввести четыре цифры и ни в коем случае не забыть их. Пароль должен быть сложным: большие и маленькие буквы, цифры в хаотичном порядке, и ещё пару-тройку каких-нибудь знаков не помешает (типа такого — Wer45Yui!134KkL?D). Запишите его на бумажку и съешьте сохраните в укромном месте, помните — это Ваши деньги.




Заполняем и жмем


Подтверждения на почту ждать не нужно, его не будет, поэтому можно сразу логиниться.



Вот так будет выглядеть Ваш аккаунт, пока он пустой, но это не надолго





Теперь в левом меню нажимаем My Account и в выпадающем списке жмём Edit Account, но перед этим сходите на биржу Poloniex и скопируйте номер Вашего кошелька.




В поле Payment Address вставьте номер кошелька, Donation Percentage оставляем по нулям (никому и ничего мы донатить пока не собираемся), в поле Automatic Payout Threshold вставьте сумму, которая будет автоматически перечислятся на биржу после того как она будет намайнена (это число можно поменять в любой момент), вводим PIN и жмём кнопку



Нижний блок — Cash Out, служит для ручного вывода средств и пока не интересен.




С регистрацией всё.



Воркер — это логин и пароль для авторизации Вашей программы-майнера на пуле.

В меню My Account жмём My Workers.


В блоке Add New Worker в поле Worker Name создаём какой-нибудь простой логин (например — dima), в поле Worker Password какой-нибудь незатейливый пароль (например — dima2017). Здесь ничего мудрить не нужно, этот пароль никому не интересен так как, если кто-то им воспользуется, то он будет майнить на Ваш кошелёк




Заполните и нажмите


После этого в блоке Worker Configuration появится Ваш первый воркер:





Нажмите

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

Когда начнёте майнить, то через некоторое время DimDimov станет золотистым, а крестик в колонке Active превратится в галочку.


Количество воркеров не ограничено.

При наличии нескольких компьютеров, возникает вопрос о кол-ве воркеров. Можно один воркер запускать на всех компах, а можно для каждого компа создать отдельного воркера. Наверное удобней для каждого отдельный, можно следить за ними на сайте в меню Dashboard.




Программы-майнеры


В левом меню нажимаем Help ⇨ Getting Started и смотрим второй пункт — Download a miner.

В списке представлены различные майнеры, а ниже примеры их использования. Я попробовал разные майнеры (различий никаких не заметил) на двух ОС Win7_x64 и Linux_x64 (Ubuntu 14.04 desktop и серверная редакция), поэтому укажу то, на чём остановился сам. Карты AMD у меня нет, так-что буду опираться на совет товарища.

Для Windows желательно скачать Notepad++ и редактировать в нём.



Для GPU NVIDIA на ОС Win7_x64 и Linux_x64


Выбираем — EWBF's CUDA Zcash miner (NVIDIA): Download here и там по ссылкам качаем под нужную ОС.
Там же есть небольшой FAQ.


Прямые ссылки и инструкции:

Для Windows_x64Zec Miner 0.3.4b.zip

Распаковываем архив куда-нибудь, открываем в текстовом редакторе файл suprnova.bat и вписываем в него свои данные:

miner --server zec.suprnova.cc --user DimDimov.dima --pass dima2017 --port 2142

DimDimov.dima и dima2017 замените на данные своего воркера.


Клацаем «батник» два раза и начнётся майнинг:





Если карт несколько, а нужно чтобы работали только определённые, тогда дописываем в конец параметр --cuda_devices с номерами карт начинающимися с нуля (0 1 2 3 4 5). То есть, если например карт три, а нужно чтоб работала только первая и третья, команда выглядит так:

miner --server zec.suprnova.cc --user DimDimov.dima --pass dima2017 --port 2142 --cuda_devices 0 2



Если окно закрывается после старта, то значит что-то не так, чтоб прочесть ошибку ставим паузу:

miner --server zec.suprnova.cc --user DimDimov.dima --pass dima2017 --port 2142
pause



Чтоб посмотреть различные параметры, надо создать «батник» help.bat с таким содержимым:

miner --help
pause



Если хотите мониторить работу через браузер, то добавьте параметр --api 127.0.0.1:42000

miner --server zec.suprnova.cc --user DimDimov.dima --pass dima2017 --port 2142 --api 127.0.0.1:42000

Так доступ будет только локальный, а если прописать адрес компа, например, --api 192.168.5.197:42000, то можно заходить извне (не забудьте пробросить порт на роутере).






Для Linux_x64Zec Miner 0.3.4b Linux Bin.zip

Распаковываем архив в домашнюю папку и переходим в неё:

cd ./0.3.4b

Это если Вы скачали версию — 0.3.4b.


Делаем файл исполняемым:

chmod +x ./miner



Запускаем его:

./miner --server zec.suprnova.cc --user DimDimov.dima --pass dima2017 --port 2142

DimDimov.dima и dima2017 замените на данные своего воркера.

Майнер заработал:




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


Справка:

./miner --help



Для упрощения жизни создаём в домашней папке скрипт suprnova_gpu.sh

cd ~/


echo -e '#!/bin/sh\necho "Start GPU"\ncd ./0.3.4b\n./miner --server zec.suprnova.cc --user DimDimov.dima --pass dima2017 --port 2142\nexit 0' > ./suprnova_gpu.sh

DimDimov.dima и dima2017 замените на данные своего воркера.


Содержание скрипта получится таким:

#!/bin/sh
echo "Start GPU"
cd ./0.3.4b
./miner --server zec.suprnova.cc --user DimDimov.dima --pass dima2017 --port 2142
exit 0



Делаем исполняемым:

chmod +x ./suprnova_gpu.sh



Клацаем два раза мышкой и нажимаем «Запустить в терминале»…




Ну или просто запускаем его в терминале:

./suprnova_gpu.sh




Немного про драйвера. У меня у Ubuntu 14.04 стояли рекомендованные драйвера версии 340, и с ними майнер не завёлся. С тестовыми всё заработало.



Если с тестовыми «дровами» что-то не работает, то поищите промежуточные версии в ppa-репозиториях. Вот ссылка.




Для GPU AMD на ОС Win7_x64 и Linux_x64

Выбираем — Claymore Miner (Windows): Download here, там по ссылкам переходим в облако и качаем версию под нужную ОС.


Прямые ссылки и инструкции:

Для Windows_x64Claymore's ZCash AMD GPU Miner v12.5 — Catalyst 15.12-17.x.zip

Распаковываем архив куда-нибудь, открываем в текстовом редакторе файл start.bat и вписываем в него такую строку:

ZecMiner64.exe -zpool zec.suprnova.cc:2142 -zwal DimDimov.dima -zpsw dima2017 -allpools 1

DimDimov.dima и dima2017 замените на данные своего воркера.


Клацаем «батник» два раза и начинаем майнить.

Другие команды смотрите в описании к NVIDIA.



Для Linux_x64Claymore's ZCash AMD GPU Miner v12.5 — LINUX.tar.gz

Распаковываем архив в домашнюю папку и переходим в неё:

cd ./Claymore's ZCash AMD GPU Miner v12.5 - LINUX

Если будет версия новее, то и папка будет другая


Делаем файл исполняемым:

chmod +x ./zecminer64



И запускаем его:

./zecminer64 -zpool zec.suprnova.cc:2142 -zwal DimDimov.dima -zpsw dima2017 -allpools 1

DimDimov.dima и dima2017 замените на данные своего воркера.


Майнер заработал.

Как создать скрипт для запуска и про драйвера смотрите в описании к NVIDIA.




Для CPU на ОС Win7_x64 и Linux_x64


Для Windows_x64 выбираем — Windows Version of Nicehash CPU+GPU Miner with Suprnova support (use v0.3a): Download here, а от туда качаем архив — nheqminer_v0.4b_suprnova.zip

После распаковки будет две папки — _macos (которую можно смело удалить) и nheqminer_v0.4b_suprnova внутри которой, нужно создать файл start_cpu.bat со следующим содержимым:

nheqminer -l zec.suprnova.cc:2142 -u DimDimov.dima -p dima2017  -t 2

DimDimov.dima и dima2017 замените на данные своего воркера.

-t 2 — это кол-во ядер задействованных в работе. Не обязательно использовать все ядра, можно оставить какую-то часть для других дел.

Этот майнер вроде как умеет работать GPU если задать параметр -cd 0 (1 2 3 4 5), но у меня что-то не заработал. Поэтому только для CPU.



Для Linux_x64 — я не помню, есть ли в списке на suprnova бинарники для линукса, но точно знаю, что собирал его сам по ссылке — AVX/AVX2 optimized CPU Miner Sourcecode (thx kost!): Download here
Там же описания сборки майнеров для MacOS и Raspberry PI.

Поправка: вот прямая ссылка на готовые бинарники от автора — github.com/kost/nheqminer/releases

Скачать мой nheqminer можно здесь. Ну или собрать самостоятельно.

Кладём его в домашнюю папку и делаем испоняемым:

chmod +x ./nheqminer



Не уверен, но может понадобится библиотека libboost-all-dev

sudo apt install libboost-all-dev



Запускаем в терминале:

./nheqminer -l zec.suprnova.cc:2142 -u DimDimov.dima -p dima2017  -t 2

DimDimov.dima и dima2017 замените на данные своего воркера.

Про параметр -t смотрите выше.


Для удобства запуска можно сделать скрипт как написано в разделе для NVIDIA.


Запускалось на CPU семейства Intel, на AMD не пробовал.

Ради интереса собирал майнер для Orange PI, но там хешрейт был меньше единицы



Что же касается разгона карт или процессоров, то это решение остаётся за Вами, инфы по оверклокингу в сети полно.




Ещё полезная информация

Данные об активности воркера (на пуле) появятся спустя некоторое время.


Рекомендую ознакомится с майнерами поближе, там есть различные нюансы, например программа Claymor. Она работает 90 секуд из часа на кошелёк разработчика (devfee), если эту фичу отключить (параметр -nofee 1), то немного упадёт скорость. Такие дела


Сайт Zcash на русском языке.

Хороший FAQ по Zcash, рекомендую прочесть.

Explorer Zcash


Удобный ресурс для просмотра курса — coingecko.com.



На этом наверно всё. И удачной добычи.




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

Zcasht1XwmdEZkKKwtQVgF2jvxBTAWheYDVLrUMX

BTC1F7tctXBtjnSJEMwPEQc4P4GZGDqEZHVP1

Буду очень благодарен любым пожертвованиям!


Просьба. При копировании статьи указывайте активную ссылку на источник. Спасибо!


  • 0
  • 5236

Комментарии (0)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.