Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 12893|Відповідь: 1

Принцип протоколу stratum для зв'язку між гірничими машинами та майнінговими пулами

[Копіювати посилання]
Опубліковано 22.01.2018 10:23:14 | | | |
Протокол stratum наразі є найпоширенішим TCP-комунікаційним протоколом між майнерами та майнінговими пулами. Давайте коротко пояснимо архітектуру мережі майнінгу.


1. Архітектура мережі майнінгу


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

Майнерська мережа поділена на кілька основних частин, таких як майнінгові машини, майнінгові пули, гаманці тощо, і іноді програмне забезпечення майнінг-пулу встановлюється разом із гаманцем, який разом можна назвати майнінг-пулом.

Протокол зв'язку між майнінг-машиною та програмним забезпеченням для майнінгу є stratum, а комунікація між майнінг-пулом і гаманцем — це інтерфейс bitcoinrpc.

stratum — це формат даних JSON, а конкретний протокол виглядає так:



2. Угода про страт


1. Підписка на завдання

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

Пул повертає номер підписки, ExtraNonce1 та ExtraNonce2_size in 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:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000";

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

Coinbase Частина 2:

"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed98ac000000000";

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

["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