Процесс майнинга биткойнов — ведущие нули перед хэшем — как именно решается головоломка майнинга?

Может кто-нибудь объяснить:

В биткойн-доказательстве работы майнинг выполняется для создания и проверки новых блоков. Тот, кто станет единственным производителем блоков, должен выиграть «головоломку майнинга».

Насколько я понимаю, сложность в том, что решение этой головоломки должно иметь определенное количество ведущих нулей в результирующем хэше.

Мои вопросы :

1) должен ли результат хеширования иметь X начальных нулей, или ограничение больше похоже на «меньше или равно X начальных нулей»?

2) Если решение головоломки майнинга имеет в результате хэш, то каковы тогда входные параметры для выполнения хеширования? Что именно хэшируют майнеры, какие все входные факторы? Насколько я понимаю, входными факторами являются, например, Nonce, хеш предыдущего блока и т. д.

3) Я понимаю, что хеш-функция - это только односторонняя функция. У вас есть вход, который создает уникальный хэш. Это означает, что если несколько разных сторон хешируют одни и те же входные данные , то их результаты хеширования должны быть идентичными, верно?

Учитывая это определение, я действительно не понимаю, как может случиться ситуация с потерянными блоками в биткойне? Потому что сироты случаются, например, когда 2 майнера одновременно решают головоломку майнинга. Но оба решают одну и ту же задачу по добыче полезных ископаемых, верно? Это означает, что они оба имели дело с одинаковым уровнем сложности головоломки и получили одинаковое количество ведущих нулей для своего хеша, верно?

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

Спасибо

Ответы (1)

Я понимаю, что хеш-функция - это только односторонняя функция. У вас есть вход, который создает уникальный хэш. Это означает, что если несколько разных сторон хешируют одни и те же входные данные, то их результаты хеширования должны быть идентичными, верно?

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

Учитывая это определение, я действительно не понимаю, как может случиться ситуация с потерянными блоками в биткойне? Потому что сироты случаются, например, когда 2 майнера одновременно решают головоломку майнинга. Но оба решают одну и ту же задачу по добыче полезных ископаемых, верно? Это означает, что они оба имели дело с одинаковым уровнем сложности головоломки и получили одинаковое количество ведущих нулей для своего хеша, верно?

Вероятно. Но они будут производить разные блоки, поскольку они либо пытаются майнить по разным адресам назначения, либо тщательно координируют свои действия, чтобы избежать дублирования работы.

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

Когда следующий блок будет найден, какой бы блок майнер, который нашел этот блок, построенный поверх него, будет в более длинной цепочке, чем другой, заставляя всех переключиться на более длинную цепочку. Чтобы сохранить вознаграждение за майнинг, найденный вами блок должен оставаться в самой длинной цепочке. Чтобы иметь самые высокие шансы на это, вы всегда пытаетесь расширить цепочку, которая уже является самой длинной. Таким образом, любые связи быстро разрываются — как только будет найден блок на вершине одной из самых длинных существующих в настоящее время цепочек, и примерно в это же время не будет найдено ни одного другого блока, почти все будут строить на основе этого блока.