Выбрать главу

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

Давайте предположим, что процесс проб и ошибок занимает двадцать четыре часа чтобы найти совпадение (современный домашний компьютер сделает миллион итераций меньше, чем за секунду, но давайте оставим двадцать четыре часа для нашего примера). Помня, что в нашем примере мы сказали, что все значения хеша – это числа между нулем и миллионом, давайте предположим, что вместо нахождения входных данных, которые дадут определенное значение хеша, мы хотели бы найти входные данные, хеширование которых даст число, меньшее или равное 10. То есть, мы хотим найти любой вход, который даст в результате значение хеша 1, 2, 3, 4, 5, 6, 7, 8, 9 или 10. В этом случае в десять раз более вероятно, что полученное нами значение хеша подойдет, поэтому наш компьютер найдет совпадение в среднем в десять раз быстрее – теперь потребуется примерно 2,4 часа вместо 24 часов.

Если бы я хотел создать задачу, которая будет решаться быстрее, скажем, решаться за 10 минут, я бы поднял ограничение до любого хеша между 1 и 150. Задача теперь в 150 раз проще, чем в первом примере, и быстрый подсчет покажет, что такая задача должна решаться нашим (медленным) компьютером примерно за 10 минут. Что случится, если второй, настолько же мощный компьютер подключится к попыткам найти решение задачи? Теперь ее можно будет решить в два раза быстрее. Если я хочу, чтобы решение все равно занимало 10 минут, я должен буду сделать задачу в два раза труднее, задав условие, что значение хеша должно быть теперь меньше 75, а не 150. По мере того, как все больше компьютеров подключаются к решению задачи, и они все эффективнее начинают решать задачу, мы делаем ее более сложной, задавая меньший диапазон приемлемых значений хеша.

И, если вы до сих пор не догадались, это и есть задача, которую биткойн-сеть предлагает биткойн-майнерам. Разница, конечно, в том, что существует гораздо больше миллиона комбинаций, числа так велики, что их так просто и не назовешь. Все биткойн-майнеры мира в то время, пока я пишу этот текст, коллективно обрабатывают примерно 350 000 000 000 000 000 входных значений в секунду в попытке найти то самое значение, хеш которого попадет в определенный диапазон значений хеша.

Биткойн-сеть регулярно оценивает сложность задачи, и, если задача решается быстрее или медленнее, чем за установленный интервал 10 минут, тогда задача соответствующим образом подстраивается посредством расширения или сокращения диапазона приемлемых значений хеша. Из всех компьютеров мира, пытающихся решить задачу, только первый решивший получает биткойны «в награду», и процесс начинается заново. Следующий вопрос тогда: как остальная биткойн-сеть подтверждает, что задача была решена, и каким образом в этом процессе генерируются биткойны? Первый вопрос простой. Компьютер, который решил задачу, объявляет об этом решении биткойн-сети, и другие компьютеры проверяют решение. Хотя обратная разработка входного значения для данного диапазона значений хеша – это медленный процесс проб и ошибок, но как только решение найдено, его легко проверить, просто пропустив предложенное решение через алгоритм хеширования и убедившись, что результирующее значение хеша попадает в заданный диапазон. Затем добытые биткойны выдаются на определенный майнером адрес, вводя новые биткойны в экономику. Так же, как монархи в старину выпускали тэлли под налоги, которые никогда не будут собраны, и банки выпускали банкноты под средства, которых у них не было, биткойн-сеть медленно генерирует новые биткойны. Ключевая разница между биткойном и другими системами, однако, состоит в том, что во всех предыдущих системах частота генерации валюты устанавливалась по прихоти монарха, правительства, банка или, в последние времена, контролируемого правительством центрального банка. Частота генерации биткойна устанавливается алгоритмически и не может быть предметом манипуляций участников рынка – она предопределена. Частота генерации определяется протоколом Биткойн и со временем понижается, пока в конце концов биткойны не перестанут генерироваться вообще. Для любой даты в прошлом или будущем можно подсчитать примерное количество биткойнов в обращении.