tg-me.com/CryptoBotan/991
Last Update:
✅✅✅
Stratum - объединенный протокол майнинга
Для стека биткоина
⬇️⬇️⬇️
До конца 2012 года для майнинга использовался протокол "getwork". После, в середине 2012 года, разработан новый децентрализованный протокол майнинга BTC "getblocktemplate".
Оригинальный протокол getwork был заменен, так как просто выдавал заголовки блоков для решения. Майнер понятия не имел, что находится в блоке и никак не влиял на него. Майнер мог решать какие транзакции принимаются и передавать их оператору пула, а тот в свою очередь, мог использовать мощности всех майнеров для атак с двойной тратой и др.
Протокол "getblocktemplate" позволил перемещать создание блоков в майнер, предоставляя пулам возможность устанавливать правила участия. Это повысило безопасность сети за счет повторной децентрализации блоков.
"Getwork" предоставлял только один заголовок блока, которого достаточно для общей сложности около 4 GH. Майнер отправлял пулу запросы getwork уже начиная от 4GH, что не позволяло подключать к пулу большие мощности. "Getblocktemplate" снизил нагрузку, необходимую для одного запроса на новый блок в сети.
С помощью "getwork", заголовок блока передавался с сервера на клиент без каких-либо транзакций. Единственный способ изменить блок можно было через значение nonce. Максимум, что мог сделать клиент, - это попробовать все значения nonce, требующие дополнительной работы от сервера. Плюс ко всему "getwork" был несовместим с расширениями.
Протокол Stratum был представлен основателем SlushPool Марек Палатинусом. Stratum на тот момент, был более стабилен, меньше нагружал сеть и решал проблемы безопасности и роста сети. Он явился заменой сетевых серверов пула и позволил клиентам генерировать работу.
Сегодня, Stratum используется при майнинге криптовалют на алгоритме PoW. Изначально же он разрабатывался для light биткоин-клиента Electrum. Как оказалось, требования протокола схожи и для майнинга BTC и его начали использовать как сеть.
Stratum-это линейный протокол, использующий TCP socket, с полезной нагрузкой, закодированной в виде сообщений JSON-RPC. Такое решение, позволяет клиенту и серверу общаться в удобно-читаемом формате. Этот протокол легко расширяется и не нарушает обратной совместимости.
Stratum решал ситуацию с HTTP, где клиенты запрашивали у сервера определенный контент. Т.е. в майнинге HTTP управляется майнерами, запрашивающими новые задания для майнинга, доступные для серверов пула. Майнеры тратили время на эти запросы. Stratum позволил более эффективно управлять коммуникацией майнеров и пула.
Для каждого задания майнер может изменять поля ntime и nonce. Крупные майнеры перебирают все возможные значения двух полей в поисках решения. Если у майнера заканчиваются уникальные возможности перебора, он отправляет новый запрос. Новым и более быстрым майнерам сделать это проще. Stratum позволяет майнерам изменять еще несколько полей, что увеличивает общее число возможных решений для блока.
nonce-это 32-битное значение, которое корректируется постепенно и используется для повторного хэширования хэшированного блока до тех пор, пока хэш-выход не будет соответствовать текущим ограничениям уровня сложности сети, сигнализируя о том, что было найдено допустимое решение, и майнер может затем предложить свой блок остальной части сети.
nTime - это целочисленная временная метка (в секундах), включенная в заголовок блока. Rolling NTime-это способ для майнеров увеличить отметку времени локально в своем оборудовании, а не требовать каждый раз новый заголовок блока из своего пула, уменьшая объем передачи данных, которые должны происходить между пулами и майнерами.
Уже все наслышаны о v.2 протокола Stratum. Новая модификация протокола предназначена для улучшения совместной работы майнеров и пулов. И самое важно, версия 2.0. сделает добычу более децентрализованной.
Более подробно затрону Stratum при разборе v.2.0.
#Mining
BY CryptoBotan

Share with your friend now:
tg-me.com/CryptoBotan/991