Stratum
Stratum — это протокол связи между майнинговым оборудованием и серверами майнинг-пулов. Он использует JSON-RPC поверх TCP-соединения и является де-факто стандартом в индустрии майнинга Bitcoin.
Как работает Stratum
Заголовок раздела «Как работает Stratum»Протокол Stratum был разработан в 2012 году как замена более раннему методу взаимодействия с пулами через HTTP-запросы (getwork). Основная идея Stratum заключается в том, что пул отправляет майнеру минимально необходимый набор данных для формирования блока-кандидата, а майнер самостоятельно перебирает значения nonce и extranonce, отправляя обратно только результаты — найденные шары.
Представьте работу типографии. Вместо того чтобы каждый раз привозить на фабрику готовую страницу для печати (как в старом протоколе getwork), издательство (пул) отправляет шаблон и данные, а фабрика (майнер) сама формирует и проверяет варианты. Это значительно сокращает объём передаваемых данных и позволяет майнеру работать автономнее.
При подключении к пулу по Stratum происходит следующее: майнер отправляет запрос на подписку (mining.subscribe), получает в ответ значение ExtraNonce1 и размер ExtraNonce2. Затем проходит авторизацию (mining.authorize), указывая свой логин и воркер. После этого пул начинает отправлять задания (mining.notify), и майнер приступает к работе. Когда майнер находит шару, он отправляет результат через mining.submit.
Практический пример
Заголовок раздела «Практический пример»Майнер настраивает ASIC, указывая адрес пула в формате stratum+tcp://pool.example.com:3333. Устройство устанавливает TCP-соединение, подписывается, авторизуется и начинает получать задания. Каждое задание содержит данные для формирования заголовка блока. Майнер перебирает nonce и extranonce2, и при нахождении хеша ниже порога сложности отправляет шару обратно на сервер.