Когда блок «обнаружен», как определяется неопределенность?

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

23 голоса | спросил Andrew 28 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 28 Sep 2011 19:38:24 +0400 2011, 19:38:24

1 ответ


35

В принципе, нет такой вещи, как «правильный» nonce, только набор возможных «правильных» блоков, которые могут использовать любое nonce, которое они хотят получить приемлемый хеш. Таким образом, nonce - это просто «какое-то произвольное число». Но для того, чтобы понять, как работают nonce, вам сначала нужно понять процесс хэширования, с помощью которого создаются блоки.

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

В сети Bitcoin только блоки с определенными хешами принимаются и включаются в официальный список. Критерии, для которых блокировать «счет», это то, что их хэш должен быть ниже определенного числа, называемого цель. Сеть корректирует это число вверх и вниз в соответствии с тем, как часто проходят тесты, - так он способен поддерживать скорость изготовления блока в среднем 10 минут на блок. Итак, если цель

00000692856290566183958127638592383846392938562929689273923968

, то блок с хешем

00000739485762992939239823472938472569106923385616929838472389

не будет принято, но блоки с хэшами

00000683060299472046094517810601040976920106812102601296720934

00000000000000000000000000000000000000000000000000000000453737

или

00000692856290566183958127638592383846392938562929689273923967

все пройдет с летающими цветами. Это не настоящие хеши - это просто примеры.

Минер берет список проверенных и действительных транзакций, складывая их в нужном формате, а затем вычисляя их криптографический хеш. Но предположим, что хэш, который они получают, не соответствует критериям (поскольку большинство из них этого не делают). Что они должны делать? Единственный способ получить другой хеш - использовать по крайней мере несколько разные данные. Поэтому вместо того, чтобы испортить свой список действительных транзакций или что-то в этом роде, у блоков есть что-то, называемое nonce. Nonce - это просто бессмысленное число, которое можно изменить столько раз, сколько вам нужно, чтобы вы могли проверить кучу разных хэшей и посмотреть, проходят ли они проверку сложности сети. Итак, когда шахтер проверяет миллиарды хэшей в секунду (как многие из них), они просто меняют nonce на что-то другое, проверяя хэш всего блока; изменение nonce на что-то другое, проверка хэша (теперь немного другого) блока; снова изменить nonce и т. д.

В этом смысле «правильный» nonce - это просто тот, который позволяет блоку хешировать до приемлемого числа. . Как и в случае с множеством приемлемых хэшей, существует много разных nonces, которые будут работать для тот же блок. Но шахтер должен найти только одного из них. Независимо от того, что они находят первым, все в порядке.

Вы также можете быть заинтересованы в том, как рассчитывается.

ответил eMansipater 28 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 28 Sep 2011 20:37:22 +0400 2011, 20:37:22

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132