Введение в технологию Блокчейн - стр. 27
Оказывается, все эти проблемы связаны, и все они имеют решение, которое называется доказательством работы.
Ключевая идея доказательства работы заключается в том, что вместо просто выбора случайного узла, мы увеличиваем вероятность выбора узла или приближаем выбор случайного узла, пропорционально ресурсу, который как мы надеемся, никто не сможет монополизировать.
Если, например, этот ресурс является вычислительной мощностью, то тогда это будет системой доказательства работы.
В качестве альтернативы это может быть пропорционально владению валютой, и это называется системой доказательства ставки.
Хотя эта система не используется в биткойне, доказательства ставки является альтернативной моделью, и такая система используется в других криптовалютах.
Мы рассмотрим доказательства ставки и другие варианты доказательства работы позже.
Вернемся к доказательству работы.
Давайте попробуем лучше понять, что значит выбирать узлы пропорционально их вычислительной мощности.
Другим способом понять это является то, что мы позволяем узлам конкурировать друг с другом, используя их вычислительную мощность, и это приводит к тому, что узлы автоматически выбираются в этой пропорции.
Еще один взгляд на доказательство работы заключается в том, что создание нового идентификатора узла будет умеренно тяжелым.
Это своего рода налог на создание идентичности и, следовательно, на атаку Сибиллы.
Это может показаться немного расплывчатым, поэтому давайте посмотрим на детали системы доказательства работы, которые используются в биткойне, чтобы прояснить эту систему.
Биткойн получает доказательства работы с использованием головоломок.
Чтобы создать новый блок, узел, который предлагает этот блок, должен найти номер или nonce.
Когда вы объединяете nonce, хеш предыдущего блока и список транзакций, которые составляют новый блок, и получаете хэш всей этой строки, то этот полученный хэш должен быть числом, которое попадает в диапазон, которое довольно мал по отношению к значительно большему выходному пространству этой хэш-функции.
Мы можем определить такое целевое пространство или диапазон, как любое значение, которое попадает ниже определенного целевого значения. В этом случае nonce должен будет удовлетворять неравенству.
Как мы видели ранее, обычно блок содержит ряд транзакций, которые предлагает узел.
Кроме того, блок также содержит указатель хеша на предыдущий блок.
И кроме того, теперь мы требуем, чтобы блок также содержал nonce.
Идея состоит в том, что мы хотим сделать сложной задачу нахождения nonce, которое удовлетворяет определенному свойству, состоящему в том, что хеширование всего блока вместе, в том числе и nonce, приведет к определенному типу результата.