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

Рис. 4: Распределение биткойнов по времени
Глава восьмая. Децентрализация
Давайте ненадолго возьмем паузу на предыдущем направлении мысли, и обратимся к децентрализации. Децентрализация – относительно недавняя концепция в компьютерном знании, которая находит все больше применений за последнее десятилетие. Одним из первых примеров децентрализации стал пиринговый (P2P) файлообмен. За прошедшие годы существовало много его реализаций, наиболее распространенной из которых сейчас является сеть торрентов. Если вы незнакомы с торрентами, позвольте дать краткое введение. Традиционный метод загрузки файлов из интернета довольно прост. Один компьютер (сервер) хранит файл, который вам нужен, а другой компьютер (клиент) запрашивает этот файл с сервера, и сервер передает файл клиенту. Эта модель до сих пор преобладает сегодня, и большую часть времени, которое вы проводите в интернете, работает так, как описано. Кстати, эта модель называется клиент-серверной. Однако, у нее есть некоторые ограничения. Одно из этих ограничений состоит в том, что файл нельзя загрузить быстрее, чем позволит сервер. Обычно это не проблема, но что если есть миллион человек, которые хотят загрузить с сервера один и тот же файл? Пропускная способность сервера ограничена, вследствие чего этот ограниченный канал должен быть поделен между всеми людьми, загружающими файл. Кстати, отдельный сервер не может поддерживать миллион соединений, так что понадобится ферма из серверов, содержащих файл, что приведет к большим затратам для владельца серверов, или маленькой скорости для клиентов, загружающих файл.
Здесь может помочь распределенная пиринговая сеть. Она работает следующим образом: скажем, у меня есть файл, который я хочу сделать доступным для других людей. Используя P2P-программу, этот файл делится на сотни частей (точный размер и количество частей зависит от многих факторов). Теперь люди могут загружать файл с моего компьютера по одной части за раз в любом порядке. Пропускная способность с моей стороны невелика, так что изначально это будет довольно медленно для тех нескольких человек, которые попытаются загрузить этот файл с моего компьютера. Если кто-либо другой получил от меня одну из частей файла, остальные люди могут теперь загрузить эту часть либо с меня, либо с другого участника сети. Со временем все больше и больше народу загружает одни части файла с моего компьютера, а другие – с компьютеров других людей, до тех пор, пока первоначальный файл не окажется распределен между компьютерами множества людей. Если приходит кто-то новый и хочет загрузить этот файл, программа будет одновременно загружать файл со множества разных компьютеров, возможно, никогда больше не соединяясь с моим компьютером, на котором файл находился изначально – в сущности, в этот момент я могу вообще выключить свой компьютер, и, при условии, что в интернете находится полная копия файла, люди будут продолжать его загрузку беспрепятственно. Эта система показала себя очень успешной для файлов, пользующихся большим спросом. В последнее время мы можем видеть, что децентрализованный подход применяется в программных продуктах, для которых он изначально не задумывался, и наиболее свежим примером является блокчейн.
Читать дальше