94 / 736SV2

Stratum V2

Як майнер спілкується з пулом — і хто вибирає транзакції

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

Це відкритий набір протоколів, тобто правил обміну повідомленнями. Основний Mining Protocol передає завдання й результати; необов’язкові Template Distribution та Job Declaration дозволяють використовувати власний шаблон блоку. Саме підключення через V2 цієї можливості не гарантує.

Єва має ASIC — пристрій, спеціалізований на майнінгу Bitcoin. Вона підключила його до пулу, який координує кількох майнерів і розподіляє винагороди. Пристрої шукають результат обчислень, який дозволить додати до історії Bitcoin новий блок — пакет транзакцій. Їй потрібно, щоб пристрій отримував правильні завдання, а результати надходили саме до вибраного пулу. Згодом вона також хоче вирішувати, які транзакції намагатиметься включити до блоку. Stratum V2 організовує зв’язок між цими учасниками. Mining Protocol є основою; Template Distribution та Job Declaration — необов’язкові частини для передавання даних блоку й узгодження власного завдання. Тому два пули з позначкою V2 можуть пропонувати різні можливості. [1] [3]

Stratum V1 спростив співпрацю майнерів, але у звичайному незашифрованому з’єднанні повідомлення залишалися доступними для читання дорогою. Транзакції також зазвичай вибирав пул. У 2019 році Jan Čapek і Pavel Moravec із Braiins разом із Matt Corallo та іншими розробниками представили Stratum V2. Метою були захищений, ефективніший зв’язок і більша самостійність майнерів. Специфікація публічна, розробка триває у відкритому проєкті. Це не нові правила перевірки блоків Bitcoin і не автоматична обіцянка вищого доходу. [8] [6]

Сторонній учасник на інтернет-шляху між Євою та пулом не повинен непомітно читати чи змінювати повідомлення майнінгу. Тому V2 використовує шифрування з перевіркою цілісності повідомлень, відомою як AEAD. Початкове криптографічне узгодження Noise за специфікацією обов’язкове для віддалених з’єднань; у локальній мережі його використання може бути необов’язковим. Клієнт перевіряє сервер за відкритим ключем уповноваженого центру пулу, отриманим надійним шляхом. Цим ключем перевіряють цифровий підпис, за допомогою якого сервер підтверджує свою особу. Це захищає передавання, а не все довкола: пул бачить отримані дані. Шифрування не доводить безпечності прошивки, правильності обліку чи здатності пулу виплатити винагороди. [2] [10]

Єві не завжди потрібно замінювати обладнання. Translation Proxy — посередник, який може приймати Stratum V1 від старого пристрою та використовувати V2 у напрямку пулу. Захист другої ділянки не змінює початкового зв’язку між ASIC і проксі: там залишається V1, і ця ділянка потребує власного захисту. Проксі також може спільно обслуговувати кілька пристроїв, зменшуючи повторне надсилання однакових даних. Саме перетворення протоколів ще не означає, що Єва вибирає транзакції. Для цього потрібні додаткові функції та підтримка пулу. [7] [8]

Щоб вибирати транзакції, Єві спершу потрібно знати, які з них дійсні та на якому блоці будувати наступний. Дані може надати її власний повний вузол, який сам перевіряє правила Bitcoin. Template Provider — програма, що надає шаблон блоку: проєкт майбутнього блоку, а не готовий блок. Вона може використовувати Bitcoin Core або інший вузол із потрібною підтримкою. Template Distribution надсилає оновлення без повторних запитів getblocktemplate. NewTemplate і SetNewPrevHash повідомляють шаблон та його зв’язок із попереднім блоком; RequestTransactionData запитує дані транзакцій, а SubmitSolution повертає знайдене рішення. [5]

Єві допомагає Job Declarator Client — програма, що приймає її шаблони й узгоджує їх використання з пулом, який підтримує Job Declaration. У режимі Full-Template вона запитує ідентифікатор роботи через AllocateMiningJobToken, перелічує транзакції в DeclareMiningJob і за потреби відповідає на ProvideMissingTransactions. Потім надсилає SetCustomMiningJob серверу майнінгу. Режим Coinbase-only не розкриває список транзакцій заздалегідь і не використовує DeclareMiningJob; він працює з виділеним ідентифікатором та даними coinbase — особливої транзакції з винагородою за блок. Пул може відхилити пропозицію, тому важливі й резервні підключення. Власний вибір транзакцій може розподілити рішення між більшою кількістю майнерів, але не скасовує обов’язку пулу виплачувати винагороди. [4]

Попередній приклад можна зрозуміти без назв повідомлень. Але для налаштування чи розробки важливий точний формат. V2 передає дані двійково, в узгодженому машинному поданні. Заголовок повідомлення займає 6 байтів; extension_type, msg_type та msg_length визначають розширення, тип повідомлення й довжину його вмісту. Після встановлення криптографічного зв’язку першим повідомленням протоколу є SetupConnection: воно узгоджує протокол, версію та вимоги до функцій. Успіх підтверджує SetupConnection.Success. Позначка V2 у пропозиції сервісу не замінює реальної домовленості конкретних програм. [1]

Канал — окремий сеанс майнінгу всередині з’єднання, а не інший блокчейн чи платіжний канал. Standard Channel надає роботу над заголовком блоку, коротким підсумком його даних. Extended Channel дозволяє посереднику ділити більший простір спроб через extranonce — змінну частину транзакції coinbase. Group Channel спрощує спільне надсилання завдань кільком каналам. OpenStandardMiningChannel та OpenExtendedMiningChannel відкривають відповідні сеанси. Практична причина проста: якби два пристрої перевіряли однакові варіанти, вони витрачали б електроенергію на ту саму роботу. [3]

Пулу потрібно постійно вимірювати внесок Єви. Mining share — результат, що відповідає призначеному порогу складності. Більшість shares не досягає суворішого мережевого порогу для блоку, хоча деякі можуть його досягти. NewMiningJob або NewExtendedMiningJob передає завдання, SetNewPrevHash активує зв’язок із попереднім блоком, а SetTarget встановлює поріг каналу. SubmitSharesStandard або SubmitSharesExtended надсилає результати з ідентифікатором завдання, порядковим номером і змінними даними заголовка. Прийнятий результат ще не є виплатою на гаманець. Винагорода пулу та відповідність блоку правилам Bitcoin залишаються окремими питаннями. [3]

Спочатку вона перевіряє підтримку своїм пристроєм, програмою та вибраним пулом. Потім з’ясовує, яка ділянка захищена, звідки походить ключ перевірки й чи потрібне їй лише безпечніше передавання чи також можливість самостійно вибирати транзакції до блоку. Для другого варіанта мають працювати Template Provider, Job Declarator Client і відповідна підтримка пулу. Єва стежить за затримками, відхиленими й застарілими shares, журналами помилок та поведінкою під час збою. Інструкція повинна відповідати використаній версії. Stratum V2 може поліпшити організацію майнінгу; він не замінює безпечного керування пристроями й не змінює правил перевірки Bitcoin повними вузлами. [6] [7]

Для повної картини прочитайте також Bitcoin, Майнінг, Mining Pool, Braiins, Braiins Pool, ASIC Miner. На цю статтю також посилаються ASIC Miner, Mining Pool, Nonce, Марек «Slush» Палатінус.

DOC · 001Stratum V2 — Protocol OverviewПервинне джерело DOC · 002Stratum V2 — Protocol SecurityПервинне джерело DOC · 003Stratum V2 — Mining ProtocolПервинне джерело DOC · 004Stratum V2 — Job Declaration ProtocolПервинне джерело DOC · 005Stratum V2 — Template Distribution ProtocolПервинне джерело DOC · 006Stratum V2 specification repositoryПервинне джерело DOC · 007Stratum Reference Implementation librariesДокументація DOC · 008Braiins — Past and future of mining protocolsПервинне джерело DOC · 009Bitcoin Optech — Stratum V2 topicДокументація DOC · 010Noise Protocol FrameworkДокументація DOC · 011Galaxy Research — Future of Bitcoin mining protocolsДокументація
Переглянуто: Спочатку джерела · Не інвестиційна порада