И так, вы решили заняться майнингом.

Но прежде, чем начать что-то делать, нужно понять как это работает.

Так как все функции криптовалют работают на принципе шифрования, то необходимы компьютерные мощности, которые будут все эти операции просчитывать. Всех кто берется за эти расчеты, называют майнерами. Зачем же майнерам майнить? Система выплачивает майнерам вознаграждение, майнеры не берут проценты, не отнимают ни у кого из участников системы монеты, им платит сама система, эмитируя новые монеты. Причем платит довольно щедро, что позволяет майнерам прилично зарабатывать, используя вычислительные мощности своего компьютера, пока он простаивает. Ну, или можно создать специально целую сеть компьютеров или компьютер с несколькими видеокартами, это называется "фермой".

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

Ограничение скорости


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

В криптовалютах используется способ ограничения сложности, который заключается в проблеме вычисления хэша заданного значения. Если быть точнее, то меньше определенного значения.
Если кто не в курсе, хэш, например f7c9f52d1ebf8c6aef8986fb127ba1bdeec58521f7eb46f026b708df26a40912 — это какое никакое, а число. В десятичной системе оно выглядит как 112078102004378042284884826242280406284022042488488848628408208468422468268028. То есть, хэши можно сравнивать, складывать вычитать и всё такое.
Так вот. Чтобы все признали блок валидным, его хэш должен быть меньше максимально возможного минус определеного всеми значения, называемого сложностью.
Например, хэш у нас 4 байта, максимально возможное значение его FFFFFFFF16. А сложность, допустим, 10010. Вычитаем одно из другого, получается, наш хэш должен быть меньше чем FFFFFF9B16

Как этого добиться?

Если помните, все блоки состоят из нескольких полей. Мы берем эти поля, конкатенируем, получаем из них массив байт. Это массив байт отдаем хэш функции, получаем результат и смотрим: меньше то, что получилось с учетом текущей сложности, или нет?
Если нет, то изменяем этот массив байт до тех пор, пока не получим нужное значение. А именно:

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

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

Block1->Block2->Block3A
Block1->Block2->Block3B

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

Часть информации взята с http://habrahabr.ru/post/204008/

Пулы
Контакты






ressetok@mail.ru