СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Майнинг — что это и с чего начать в черновиках Recovery Mode

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

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

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

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

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

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

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

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

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

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

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

8ACF935A8E3E453AC538706F560155943C6B0A77E5F5FCA7939D5FFE589676A6B3CD7AC78845786C50449D1A6F
91003EDCA7B5D8B12AC36CCA36A00844A

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

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

Про хэширование

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

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

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

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

Транзакция

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему майнят видеокартами

Калькулятор 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 майнят очень много народу на очень больших мощностях (включая «асики») и этот фактор с лёгкостью нивелирует разницу в цене.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Майним

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

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

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

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