The Russian wiki is no longer maintained and is in read-only mode. Information contained within may be inaccurate or outdated. Please go to the English wiki for more up to date information.

Автоматический перевод с английского: Русская вики больше не поддерживается и находится в режиме только для чтения. Информация, содержащаяся в ней, может быть неточной или устаревшей. Пожалуйста, перейдите на английскую вики для получения более актуальной информации.

Доказательство работы

Материал из Bitcoin Wiki
Версия от 19:18, 24 сентября 2013; Semaster (обсуждение | вклад) (Новая страница: «'''Доказательство работы''' (proof of work) в терминологии биткоин подразумевает некие данные, к…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

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

Одна из идей использования "доказательства работы" состоит в методе предотвращения емейл спама, требуя "доказательства работы" на контент каждого сообщения. Хорошие письма в таком случае будут отправляться без особых проблем так как требуется относительно небольшие затраты ресурсов для генерации единичного доказательства работы на контент. В случае же с массовым спамом, спамеры столкнуться с трудностью генерации для каждого письма таких данных.

Нас интересует proofs of work используемое в системе генерации биткоинов - это часть данных которая необходима для того чтобы генерируемый блок был признан ликвидным. Сложность этой работы подстраивается таким образом чтобы соответственно текущей вычислительной мощности сети, каждый блок находился примерно раз в 10 минут.

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

Пример

Предположим что исходной строкой, над которой будут производиться манипуляции является "Hello, world!". Наша цель - найти варианты SHA-256 хэшей, значение которых начинается на '000'. Мы изменяем строку добавляя цифровое значение вконце строки. Это называется nonce и увеличиваем его каждый раз. Нахождение соответствия для "Hello, world!" требует 4251 повторений:

"Hello, world!0" => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
"Hello, world!1" => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
"Hello, world!2" => ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7
...
"Hello, world!4248" => 6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965
"Hello, world!4249" => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6
"Hello, world!4250" => 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9

4251 хэшей на современном компьютере не очень сложно вычислить. Биткоин автоматически изменяет сложность, для того чтобы количество находимых блоков в заданный период времени оставалось постоянным. В действительности в сети биткоин все немного сложнее данного примера. В частности кроме Nonce каждый блок содержит информацию о транзакциях и о адресах майнеров которые генерируют блок.