Блокчейн - Доказательство работы
Поскольку все транзакции имеют отметки времени, нам необходимо реализовать распределенный сервер отметок времени в одноранговой сети. Это требует некоторой дополнительной реализации, и это Proof-of-Work, которую я сейчас опишу. Теперь к каждому блоку мы добавляем еще один элемент под названиемNonce как показано на рисунке ниже -
Nonce - это такое число, при котором хэш блока соответствует определенному критерию. Этим критерием может быть то, что сгенерированный хэш должен иметь нулевые первые четыре цифры.
Таким образом, сгенерированный хеш будет иметь вид 000010101010xxx. Как правило, майнер начинает со значением Nonce, равным 0, и продолжает его увеличивать, пока сгенерированный хэш не будет соответствовать указанному критерию.
Обратите внимание, что генерация хэша работает случайным образом и находится вне вашего контроля - то есть вы не можете заставить хеш-функцию генерировать определенный хеш. Таким образом, может потребоваться несколько итераций, пока не будет сгенерирован желаемый хэш с четырьмя ведущими нулями. Ожидаемое время генерации блока в биткойн-системе - 10 минут. Как только майнер успешно добывает блок, он освобождает его в системе, делая его последним блоком в цепочке.
Обратите внимание, что за создание легитимного блока соревнуются несколько майнеров. Система Биткойн награждает первого успешного майнера, давая ему определенные биткойны. В общем, майнер с большей вычислительной мощностью может оказаться первым победителем. Это может вызвать атаки на всю систему со стороны тех, кто обладает огромной вычислительной мощностью. Я опишу атаки и способы их смягчения в конце этого руководства.