Распределяют ли пулы «задания» майнерам на основе «неудачных» решений, которые уже были отправлены?

Мой вопрос таков: как именно протокол stratum распределяет «работу» между майнерами? Более конкретно, поскольку майнинг можно сравнить (во многих отношениях) с «грубым перебором» криптографического хэша (т. е. хэшированием случайных входных данных до тех пор, пока, по счастливой случайности, случайный ввод не совпадет с желаемым результатом), не имеет ли смысл отслеживать потенциальные решения, представленные и подтвержденные как недействительные для конкретного блока, и каким-то образом сообщить об этом майнерам, чтобы одна и та же работа не выполнялась снова и снова?

Я понимаю, что это потребует много накладных расходов, но это кажется стоящим. Существует ли какой-либо механизм, гарантирующий, что два независимых майнера не будут тратить время на работу с одними и теми же входными данными? Может ли подействовать отправка разных семян для генерации случайных чисел каждому майнеру в начале нового раунда майнинга? Я читал упрощенные описания майнинга как простого увеличения одноразового номера до тех пор, пока не будет найдено решение, но я также читал гораздо более подробные объяснения, которые подразумевают, что задействовано гораздо больше. Даже если во входных данных будет изменен только одноразовый номер, пулу все равно придется назначать каждому майнеру уникальный одноразовый номер для попытки после каждой отправки, не так ли?

И последний, частично не относящийся к делу вопрос о последствиях хранения решений: скажем, пул хранит все решения, которые он когда-либо получал, учитывая огромный размер сети биткойнов, не станет ли он в конечном итоге статистически значимой (с точки зрения удобства использования) базой данных. коллизий sha256? И, в конце концов, можно ли собрать достаточно данных, чтобы вывести SHA256? Как минимум, может ли пул со злым умыслом временно отвлечь вычислительную мощность ничего не подозревающих майнеров для взлома подписей TLS на основе SHA256 или открытых ключей PGP? Особенно пул, который также контролировал аппаратное и программное обеспечение на большинстве своих устройств (например, Antpool).

Одна и та же работа никогда не выдается дважды. Также нет необходимости следить за ним, так как есть бесконечное количество блоков-кандидатов на выбор.

Ответы (1)

Я читал упрощенные описания майнинга как простого увеличения одноразового номера до тех пор, пока не будет найдено решение, но я также читал гораздо более подробные объяснения, которые подразумевают, что задействовано гораздо больше. Даже если во входных данных будет изменен только одноразовый номер, пулу все равно придется назначать каждому майнеру уникальный одноразовый номер для попытки после каждой отправки, не так ли?

Майнеры меняют больше, чем просто одноразовый номер, и именно этот факт позволяет пулу майнинга гарантировать, что два майнера не будут выполнять одну и ту же работу дважды.

Поскольку майнинг всегда включает транзакции, используемые в блоке, изменение этих транзакций повлияет на корень меркла и, следовательно, на результат. Одной из таких транзакций является транзакция coinbase, которую майнеры контролируют. В частности, входной скрипт для ввода транзакции coinbase может содержать до 100 байт произвольных данных. Таким образом, майнеры будут использовать это пространство в качестве дополнительного одноразового номера (известного как дополнительный одноразовый номер). У них также будет одноразовый номер для создания новых транзакций coinbase, что позволит им создавать разные корни merkle и, следовательно, разные заголовки блоков. Extranonce позволяет майнерам иметь больше одноразовых номеров, чем только 32-битный одноразовый номер в заголовке блока.

Пулы для майнинга используют этот экстра-нонс для обеспечения уникальной работы. Они дадут майнеру часть экстранонса (например, первую половину). Затем майнер может использовать остаток экстранонса в качестве экстранонса для себя. Это позволяет майнерам по-прежнему иметь большое пространство для поиска, чтобы они не просили пул постоянно выполнять дополнительную работу. Предоставляя майнерам разные половины extranonce, пул может быть уверен, что два майнера не будут хэшировать одно и то же несколько раз.

Скажем, пул хранит все решения, которые он когда-либо получал, учитывая огромный размер сети биткойнов, не станет ли он в конечном итоге статистически значимой (с точки зрения удобства использования) базой данных коллизий sha256?

В конце концов, да. Но пройдет очень много времени, прежде чем это произойдет. Вся сеть Биткойн сделала всего ~ 2 ^ 90 хэшей. Однако, чтобы даже получить вероятность столкновения 50%, вам нужно ~ 2 ^ 128 хэшей. 2^90 — это 1/274877906944 от 2^128. Таким образом, количество времени, необходимое даже для достижения 2^128 хэшей, во много раз превышает количество лет существования Вселенной. Так что теоретически, да, может быть вычислено достаточно хэшей, чтобы обнаружить столкновение с помощью грубой силы. Но во всех смыслах и целях этого не произойдет.