Получи случайную криптовалюту за регистрацию!

Всем привет и продолжим. Итак, какую же задачу должен решить С | Как криптан криптану

Всем привет и продолжим. Итак, какую же задачу должен решить Стас? Для того чтобы объяснить это, мы будем использовать фиксированную хэш-функцию, которую знают все пользователи в сети. В случае с биткоином, он использует хэш-функцию SHA-256, которую считают криптографически безопасной. Мы также предположим, что у Стаса есть некоторые незавершенные сделки, которым мы дадим метку L. Стас добавляет к L некоторое число х (называемое одноразовым номером) и вычисляет хэш-сумму от этой комбинации. Например, если мы используем L = "Hello, world!" и одноразовый номер х = 0, то мы можем вычислить хэш-сумму с помощью функции h: h("Hello, world!0") = 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64.

Задача Стаса заключается в доказательстве правильности выполнения задачи путем нахождения простого числа х, которое позволит получить хэш-сумму комбинации с рядом нулей в начале. Количество нулей, необходимых для решения задачи, может быть изменено, чтобы сделать ее более или менее сложной. Например, задача может потребовать только несколько нулей для относительно простого доказательства правильности работы, в то время как для более трудной задачи может потребоваться значительно больше нулей, например 15 последовательных нулей. Однако попытка найти подходящий одноразовый номер, начиная с х = 0, не удалась, так как результат не начинается с нуля. После этого Стас попытался использовать х = 1, но и это не дало желаемый результат: h("Hello, world!1") = e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8.

Мы можем пробовать разные значения для х, начиная с 2, 3, 4 и т.д., и продолжать искать до тех пор, пока не найдем такое значение х, при котором хэш-сумма комбинации L и х начинается с нужного количества нулей. В данном случае, мы получили значение х = 4250, при котором хэш-сумма начинается с четырех нулей. Это значит, что мы можем решить простую задачу «доказательство работы», но для решения более сложной задачи этого недостаточно.

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

Возможность сделать задачу более или менее сложной заключается в изменении количества нулей в выходе из хэш-функции. В протоколе Биткоин это используется для контроля трудности доказательства работы (proof-of-work) путем требования, чтобы хэш заголовка блока транзакций был меньше или равен целевому числу. Это число автоматически регулируется так, чтобы блоки авторизовывались в среднем за десять минут.

На практике время, которое требуется для утверждения блока, может значительно отличаться, и может занимать от нескольких минут до нескольких десятков минут. Однако в протоколе Биткойн время проверки блока автоматически регулируется, чтобы в среднем занимало около 10 минут.

На сегодня это все, в след раз рассмотрим что же происходит, когда Стас находит таки заветное число х.