Я знаю, что блок основан на случайном числе, называемом одноразовым номером, но если это число является случайным и неизвестным майнеру, как это число на самом деле проверяется как правильный одноразовый номер, а не какое-то произвольное число?
По сути, не существует такого понятия, как «правильный» одноразовый номер, есть только набор возможных «правильных» блоков, которые могут использовать любой одноразовый номер для получения приемлемого хэша. Таким образом, одноразовый номер - это просто "какое-то произвольное число". Но чтобы понять, как работают одноразовые номера, сначала нужно понять процесс хеширования, с помощью которого создаются блоки.
Криптографические хэши — это математический способ преобразования любого набора данных в случайное число, называемое хэшем. Процесс хеширования разработан таким образом, что легко вычислить хэш некоторых данных, но почти невозможно найти данные, которые будут соответствовать определенному хэшу , имея даже немного отличающийся набор данных, будет получен совершенно другой хэш, и поэтому единственный способ чтобы найти хэш с определенным свойством (скажем, меньше определенного числа), нужно вычислить их множество, пока вам не повезет.
В сети Биткойн принимаются и включаются в официальный список только блоки с определенными хэшами. Критерий, по которому блоки «учитываются», заключается в том, что их хэш должен быть ниже определенного числа, называемого целевым. Сеть корректирует это число вверх и вниз в зависимости от того, как часто блоки проходят тест — таким образом она может поддерживать скорость производства блоков в среднем на уровне 10 минут на блок. Итак, если цель
00000692856290566183958127638592383846392938562929689273923968
затем блок с хешем
00000739485762992939239823472938472569106923385616929838472389
приниматься не будут, а блоки с хэшами
00000683060299472046094517810601040976920106812102601296720934
00000000000000000000000000000000000000000000000000000000453737
или же
00000692856290566183958127638592383846392938562929689273923967
все пройдет с честью. Это не настоящие хэши — это просто примеры.
Майнер берет список проверенных и действительных транзакций, объединяет их в правильном формате, а затем вычисляет их криптографический хэш. Но предположим, что полученный ими хэш не соответствует критериям (как и большинство из них). Что они должны делать? Единственный способ получить другой хэш — использовать хотя бы немного другие данные. Таким образом, вместо того, чтобы испортить список допустимых транзакций или что-то в этом роде, в блоках есть что-то, называемое одноразовым номером. Nonce — это просто бессмысленное число, которое можно менять сколько угодно раз, чтобы можно было проверить кучу разных хэшей и посмотреть, проходят ли они проверку сложности сети.Таким образом, когда майнер проверяет миллиарды хэшей в секунду (как и многие из них), он просто меняет одноразовый номер на что-то другое, проверяя хэш всего блока; изменение одноразового номера на что-то другое, проверка хэша (теперь немного другого) блока; изменение одноразового номера еще раз и т. д.
В этом смысле «правильный» одноразовый номер — это просто тот, который позволяет блоку хэшироваться до приемлемого числа. Точно так же, как существует множество допустимых хэшей, существует множество различных одноразовых номеров, которые будут работать для одного и того же блока. Но шахтеру нужно найти только одну из них. Тот, кого они найдут первым, просто прекрасен.
Вас также может заинтересовать, как рассчитывается цель.
Наюки