Перейти к содержимому

Stratum

Stratum — это протокол связи между майнинговым оборудованием и серверами майнинг-пулов. Он использует JSON-RPC поверх TCP-соединения и является де-факто стандартом в индустрии майнинга Bitcoin.

Протокол 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, и при нахождении хеша ниже порога сложности отправляет шару обратно на сервер.