Криптаны, ходлеры, инвесторы с нетерпением ждут халвинга биткоина, который ожидается 12 мая 2020г
https://www.bitcoinblockhalf.comВ сети происходит очень много важных событий, о которых очень мало пишут.
Добро пожаловать
https://stratumprotocol.org Stratum V2 планируют принять до халвинга 2020.Stratum V2 - это протокол следующего поколения для майнинга на пуле. Он направлен на повышение эффективности передачи данных, снижение требований к физической инфраструктуре для операций по майнингу и повышению безопасности. Кроме того, в Stratum V2 представлены три новых подпротокола, которые позволяют майнерам выбирать свои собственные наборы транзакций посредством процесса согласования с пулами, что улучшает децентрализацию.
ИСТОРИЯStratum v1 - это эволюция протокола getwork для майнинга биткоинов. Он был создан Marek "Slush" Palatinus в 2012 году для поддержки совместного майнинга.
В Stratum v1 данные кодируются как сообщения JSON-RPG. Преимущества этого подхода заключались в простоте реализации и отладки, поскольку JSON удобен для чтения, что облегчает его внедрение. Тем не менее, многое изменилось с тех пор, как в 2012 году был опубликован первоначальный протокол stratum. Сегодня один ASIC способен генерировать больший хэшрейт, чем тогда была вся сеть Биткоина (примерно 20 TH / с).
Как отметил Рубен Рекабаррен в своей статье Hardening Stratum, Протокол майнинга Stratum v1 также уязвим для возможных атак «man-in-the-middle attacks». Хотя о существенных случаях взлома не сообщалось, вполне возможно, что они могут произойти незамеченными, что еще более критично для того, чтобы индустрия майнинга биткойнов перешла на более безопасный протокол.
В конечном счете, Stratum v1 великолепно сыграл свою роль в качестве объединенного протокола майнинга, используемого во всем мире , в то время как общий хешрейт биткоин сети увеличился примерно на 500 000 000%.
https://stratumprotocol.org/v1Stratum V2Протокол майнингаЭто прямой преемник протокола stratum v1. Это основной протокол, используемый для майнинга, и единая часть полного стека протоколов, которая должна быть реализована во всех сценариях. Он используется для связи между майнинг-устройствами, прокси-серверами и пулами.
Протокол определяет три типа каналов связи:
Стандартные каналы не манипулирует Merkle path / coinbase transaction, значительно упрощая связь между ними и вышестоящими узлами.
Расширенные каналы получают обширный контроль над пространством поиска, чтобы они могли реализовывать расширенные варианты использования (например, перевод между v1 и v2, агрегация сложности, разделение пользовательского пространства поиска и т. д.).
Групповые каналы - это просто наборы стандартных каналов, которые открываются в конкретном соединении, так что они могут быть адресованы через общий канал связи.
Job Negotiation ProtocolИспользуется майнером для согласования шаблона блока (который включает в себя набор транзакций ) с пулом, что делает объединенный майнинг более похожим на индивидуальный майнинг и, таким образом, увеличивает децентрализацию. Результаты согласования могут быть повторно использованы для всех соединений интеллектуального анализа данных с пулом (которых могут быть сотни тысяч), что значительно снижает интенсивность вычислений.
Этот протокол является отдельным, необязательным компонентом инфраструктуры от протокола Mining и может быть предоставлен в качестве стороннего сервиса для ферм майнинга.
Template Distribution ProtocolИспользуется для получения информации о следующем блоке из Bitcoin Core . Этот протокол был разработан как гораздо более эффективный и простой в реализации API для замены getblocktemplate (BIP 22 и 23).
Более конкретно, протокол распространения шаблонов используется для связи с Bitcoin Core, называемой «bitcoind», которая реализует Bitcoin protocol для использования удаленного вызова процедур Remote Procedure Call (RPC). Другими словами, биткоин позволяет интегрировать Bitcoin protocol с другим программным обеспечением.
Job Distribution ProtocolИспользуется для передачи вновь согласованной работы заинтересованным узлам, которые могут быть либо прокси-серверами, либо фактическими устройствами майнинга. Этот протокол дополняет Job Negotiation protocol
В том случае, если майнеры не договариваются о своей работе (то есть выбирают собственные наборы транзакций), задания будут распределяться напрямую из пулов на прокси-серверы и конечные устройства, аналогично первоначальному протоколу Stratum V1. Кроме того, возможно, что роль согласования заданий будет частью более крупного прокси-сервера протокола Mining, который также распределяет задания, что делает этот протокол ненужным, даже когда майнеры выбирают свои собственные наборы транзакций.
ХарактеристикиBandwidth consumption(Потребление пропускной способности)
Stratum V2 оптимизирован двумя способами для уменьшения потребления пропускной способности. Во-первых, поскольку он полностью двоичный, а не на основе JSON, как V1, размер передаваемых данных сводится к минимуму. Во-вторых, это исключает многие случаи, когда данные передаются без необходимости (например, избыточные сообщения), что означает, что общий объем передачи данных также минимизируется.
Stratum V1 типовое сообщение - приблизительно 100 байтов
Stratum V2 типовое сообщение - составляет 32 байта без шифрования и 48 с ним.
Server CPU load (Загрузка ЦП сервера)
С введением стандартных и групповых каналов для конечных устройств Stratum V2 обеспечивает эффективное кэширование, поэтому процессорам сервера не нужно пересчитывать корень Merkle для каждой отправки.
Stratum V1 Эффективное кэширование невозможно. Корень Merkle пересчитывается для каждого отправления.
Stratum V2 Снижение нагрузки на ЦП на 70-80% по сравнению с V1
Job distribution latency (Задержка распределения работы)
Пулы могут отправлять рабочие задания заранее для будущих блоков, даже до того, как предыдущий блок был найден. Пулы могут отправлять последний предварительный хэш майнерам в гораздо меньшем (то есть более быстром) сообщении, указывающем, что они должны немедленно начать работу над следующим блоком.
Stratum V1 Предыдущих хеш и будущая работа являются частью одного сообщения, поэтому пулы отправляют пустые блоки.
Stratum V2 разделяет сообщения, позволяя майнерам быстрее начать работу над новым блоком после того, как был найден предыдущий блок.
Binary vs. non-binary (Двоичный и недвоичный)
Stratum V2 является двоичным, что означает, что сообщения кодируются так, чтобы машины могли эффективно читать и записывать их, но они не подходят для чтения и работы людьми напрямую. Как следствие, размер передачи данных между майнерами, прокси и операторами пула сводится к минимуму.
Stratum V1 отправляет данные, читаемые человеком (JSON), которые помогли с принятием стандарта и их легче анализировать/отлаживать, но гораздо менее эффективны.
Stratum V2 Передачи данных не читаются человеком, но значительно более эффективна.
Man-in-the-middle attack prevention Предотвращение атак "человек посередине"
Чтобы обеспечить конфиденциальность и целостность конфиденциальных данных, Stratum V2 использует надежную схему шифрования, которая предотвращает дешифрование данных потенциально злонамеренными третьими лицами. Это защищает майнеров от нескольких атак, которые возможны в V1, включая угон хэшрейта, при котором третье лицо перехватывает связь между майнером и пулом и получает награду (то есть крадет выплаты) за работу, проделанную майнером.
Имеется ли механизм(ы) для предотвращения кражи хеш-кода злоумышленниками и прослушивания при передаче данных?
Stratum V1 нет
Stratum V2 да
Empty block mining elimination (Ликвидация пустых блоков)
В Stratum V2 пулы одинаково эффективно отправляют полные блоки для майнеров, чтобы начать работать над ними, так же как и чтобы отправлять пустые блоки (т. е. Блоки, не содержащие транзакций). Поскольку при отправке полного блока дополнительная задержка отсутствует, стимул для отправки пустого блока исключается.
Stratum V1 Медленнее отправить полный блок, чем пустой блок.
Stratum V2 Никакой дополнительной задержки для отправки полного блока против пустого блока.
Job selection (Выбор работы)
Майнеры теперь могут выбирать свою собственную работу (т.е. выбирать собственный набор транзакций ), что делает майнинг более
децентрализованным. Это реализовано отдельно от основного протокола майнинга и является необязательным для пулов и майнеров.
Позволяет майнерам выбирать собственный набор транзакций?
Stratum V1 нет
Stratum V2 да
Header-only miningЭто облегченная версия протокола майнинга, которая позволяет прошивке устройства быть менее сложной и потреблять меньше пропускной способности / загрузки процессора. Это быстрее и дешевле, чем полная версия, но теряет некоторую гибкость, поэтому она предназначена только для конечных устройств майнинга.
Есть ли упрощенный способ майнинга, который быстрее и дешевле?
Stratum V1 нет
Stratum V2 да
Multiplexing (мультиплексирование)
Позволяет использовать одно соединение (например, TCP) для независимых каналов связи между любым количеством устройств. Это уменьшает общее количество соединений, необходимых для пулов и прокси, что приводит к некоторой экономии средств.
Имеет мультиплексирование?
Stratum V1 нет
Stratum V2 да
Implicit work subscription (Скрытая подписка на работу)
Stratum V2 устраняет некоторые ненужные сообщения от V1, неявно предполагая, что открытие канала майнинга является признаком того, что майнер готов к получению заданий.
Stratum V1 есть два сообщения: mining.subscribe и mining.authorize
Stratum V2 устраняет ненужные сообщения.
Native version rollingОбновление версии было добавлено в качестве расширения (BIP 310) для Stratum V1. Это стало неотъемлемой частью майнинга, V2 напрямую поддерживает обновление версий майнерами , не требуя каких-либо расширений.
Stratum V1 имеет расширение (BIP 310), позволяющее переключать версии
Stratum V2 изначально поддерживает эту возможность.
Zero-time backend switching (Бэкэнд-переключение с нулевым временем)
Бэкэнд-переключение с нулевым временем означает, что прокси-сервер может предоставлять задания из разных пулов без потери эффективности майнинга. Другими словами, оператор майнинг-фермы может использовать один прокси-сервер для всех своих устройств при майнинге с несколькими пулами, и при этом он не будет испытывать никаких задержек или других недостатков.
Stratum V1 имеет нестандартное расширение, которое позволяет майнерам изменять свой пул, но конечное устройство должно поддерживать его.
Stratum V2 изначально поддерживает получение заданий из нескольких вышестоящих источников.
Different type of jobs on the same connection (Различные типы заданий в одном соединении)
Позволяет майнерам "копать" разные задания (и, возможно, даже разные монеты) но одном соединении. Например, некоторые майнинговые устройства могут добывать Bitcoin , в то время как другие добывают Bitcoin Cash, и они могут использовать одно и то же соединение.
Stratum V1 Все устройства в соединении всегда используют одни и те же задания.
Stratum V2 Различные каналы в одном соединении могут иметь разные задания.
https://stratumprotocol.org