Разработчики приложений для майнинга могут посмотреть на наши исходные коды на https://github.com/nicehash и включить патчи extranonce.subscription в свои приложения.
После успешного подключения к stratum с методом "mining.subscribe", клиент должен отправить метод "mining.extranonce.subscribe".
{"id": X, "method": "mining.extranonce.subscribe", "params": []}\n
Это передает серверу (пулу) данные о том, что клиент (майнер) поддерживает изменение extranonce1 "на лету" без необходимости повторной установки соединения. Серверы, поддерживающие этот метод, ответят так:
{"id": X, "result": true, "error": null}\n
Если сервер не поддерживает метод, он ответит так:
{"id": X, "result": false, "error": [20, "Not supported.", null]}\n
Сервер может также просто проигнорировать это подключение и никак не ответить или ответить, что метод недопустим. Некоторые пулы могут выдать неправильно сформированное сообщение об ошибке. Некоторые пулы могут разорвать соединение (в таких случаях самым лучшим решением будет дать пользователю возможность отключать подключения extranonce для некоторых пулов. К примеру, через config). В любом случае, клиент не выполняет логических операций, когда получает эти ответы. С подключением mining.extranonce.subscribe клиент должен корректно обрабатывать изменения extranonce1. Сервер должен будет отправить:
{"id": null, "method": "mining.set_extranonce", "params": ["08000002", 4]}\n
Первый параметр — это значение строки extranonce1, а второй параметр — это целое значение размера extranonce2. Майнер начнет использовать новый extranonce1, когда с mining.notify предоставлено новое задание. Задание должно быть изменено, даже если у нового задания тот же ID (потому что extranonce1 отличается). Если этого не сделать, будет возникать ошибка "shares above the target" до тех пор, пока не будет предоставлено новое задание с другим ID.