Какие концепции необходимы для программирования криптовалютного майнера (например, майнер XMR, такой как XMRig XMR-Stak MinerGate, et c)? - PullRequest
1 голос
/ 06 апреля 2020

Как программировать майнер криптовалюты? Как XMRig XMR-Stak MinerGate et c.

1 Ответ

2 голосов
/ 06 апреля 2020

Сначала вам нужно понять концепцию PoW. Проще говоря, PoW hashca sh - майнер хеширует созданный ими блок, увеличивая случайный "nonce" (число, использованное один раз), пока результирующий ha sh не выполнит требования к сложности. Сложность - это число, которое рассчитывается на основе промежутка времени между блоками за последние 2 недели, оно меняется, чтобы блоки делались каждые 10 минут (i sh). Для того чтобы блок был принят, его ха sh должно быть ниже значения сложности (и, конечно, блок должен быть действительным). Программное обеспечение Solo mining работает, опрашивая демон монет для шаблона блока (в некоторых случаях он содержит все транзакции с самой высокой комиссией, в других вы должны добавить их самостоятельно), создавая транзакцию "coinbase" (транзакцию, которая однажды выплатит вам вознаграждение). вы находите действительный блок, он добавляется в верхнюю часть списка транзакций) обновляя merkle root транзакций, чтобы включить новую транзакцию coinbase и добавляя одноразовый номер, вы затем получаете sh этот блок - проверьте, выполняет ли ha sh сложность, и если нет, то увеличивает значение nonce. Майнер продолжает делать это до тех пор, пока: 1) майнер не найдет блок - в этом случае он отправит блок демону 2) блок будет найден кем-то другим, и в этом случае майнер начнет снова (получение нового шаблона блока). bla).

Однако большинство майнеров являются майнерами пула - в этом случае майнер подключается к пулу по протоколу stratum + tcp и запрашивает «задание», задание - это просто строка пул хочет, чтобы у вас было sh - пул выполняет создание хэшируемого блока, а затем разделяет задачу хеширования на всех подключенных майнеров. Например, пул может указать алисе ha sh блок с одноразовыми номерами от 0 до одноразовых 15 000 и боб с ha sh с одноразовыми номерами от 15 001 до 30 000 и так далее. Затем майнер пула представляет результат работы. Когда майнер находит решение, которое он сообщает пулу, и пул отправляет блок демону пулов, он говорит другим майнерам остановиться и начать работу над новым блоком. Затем он распределяет вознаграждение майнерам в зависимости от того, сколько заданий они выполнили - хотя способ, которым это делается, выходит за рамки этого ответа).

TLDR; У вас должно быть понимание того, как работает PoW, понимание того, какой метод вы хотите использовать (соло или пул), (если пул), вам нужно понимать протокол tcp + stratum и (если соло) вам понадобится чтобы понять rp c монеты, для которой вы хотите сделать майнера. Я бы начал с чтения базовых c и простых solominers, а затем построил свой собственный. Тогда вы можете подумать о переходе на майнеров, которые значительно сложнее. Если вы хотите, чтобы ваш майнер работал с графическими процессорами (как и большинство майнеров), вам нужно будет понять общие интерфейсы графических процессоров как для NVIDIA (например, CUDA), так и для AMD.

Надеюсь, это поможет, и удачи вам пожелания относительно вашего приключения в криптовалюте! Лев Корнелиус

...