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

Вид: 12893|Ответ: 1

Принцип протокола stratum для связи между майнинговыми машинами и майнинговыми пулами

[Скопировать ссылку]
Опубликовано 22.01.2018 10:23:14 | | | |
Протокол stratum в настоящее время является самым распространённым TCP-протоколом связи между майнерами и майнинговыми пулами. Давайте кратко объясним архитектуру сети майнинга.


1. Архитектура сети майнинга


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

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

Протокол связи между майнинговой машиной и программным обеспечением майнингового пула является stratum, а связь между майнинговым пулом и кошельком — интерфейсом bitcoinrpc.

stratum — это формат данных JSON, а конкретный протокол выглядит следующим образом:



2. Соглашение о страте


1. Подписка на задачи

Когда майнинг-машина запускается, она сначала подключается к пулу майнинга с помощью метода mining.subscribe, чтобы подписаться на работу.

Пул возвращает номер подписки, ExtraNonce1 и ExtraNonce2_size в mining.notify.

Client:{"id":1,"method":"mining.subscribe","params":[]}

Server:{"id":1,"result":[["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null}

Среди них:

ae6812eb4cd7735a302a8a9dd95cf71f — это номер подписки;

08000002 — ExtraNonce1, который используется для создания транзакций на coibase;

ExtraNonce2_size — 4, количество байт счётчика ExtraNonce2 майнера.

2. Распределение задач

Эта команда периодически отправляется майнеру пулом майнинга, и когда майнинг-машина регистрируется с методом mining.subscribe, пул майнинга должен немедленно вернуть задачу как mining.notify.

Server:{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", "010000000100000000000000000000000000000000000000000000000000000000000000 00ffffffff20020862062f503253482f04b8864e5008", "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"}

Среди них:

Номер задачи: «bf»;

Предыдущий блок HASH:

«4D16B6F85af6E2198F44ae2a6de67F78487ae5611B77C6C0440b921E000000000»;

Coinbase Часть I:
«010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008»;

Coinbase Часть 2:

"072f736c7573682f000000000100f2052a01000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed98ac0000000000";

Список идентификаторов транзакций:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856a7b41811ed961ee52ae75527df9e80043fd2f12"];

Номер версии блока: «00000002»;

nBit:”1c2ac4af”;

Текущее время: «504e86b9»;

Задачи по очистке: если это правда, майнер сразу же прекратит все задачи и начнёт новую задачу. Если ошибка, дождитесь окончания текущей задачи, прежде чем начинать новое.

3. Вход в горнодобывающую машину

Майнер использует метод mining.authorize для входа в пул майнинга с определённым аккаунтом и паролем, пароль может быть пустым, и пул возвратит true для успешного входа. Этот метод должен выполняться сразу после инициализации соединения, иначе майнер не получит задачу пула.

Client:{"params":["miner1","password"],"id":2,"method":"mining.authorize"}

Server:{"error":null,"id":2,"result":true}

4. Отправьте результаты

Когда майнер находит легитимную долю, он отправляет задачу в пул с помощью метода "mining.submit". Если пул возвращает true, коммит успешен, а если ошибка — есть конкретная причина ошибки.

Client:{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}

Server:{"error":null,"id":4,"result":true}

Среди них:

Имя пользователя: "miner1";

Номер задачи: «bf»;

ExtraNonce2:"00000001";

Текущее время: «504e86ed»;

nonce:”b2957c02″;

5. Корректировка сложности

Настройка сложности выдаётся пулом майнинга в майнинг-машине, чтобы mining.set_difficulty образом корректировать сложность, а значение сложности отображается в параметрах.

Server:{"id":null,"method":"mining.set_difficulty","params":[2]}

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



3. Общий процесс коммуникации


Общий процесс коммуникации между майнинговой машиной и пулом майнинга выглядит следующим образом:

Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com