Изображение
Протокол

Начальное пособие по управлению Биткоином, или почему разработчики не отвечают за протокол

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

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

Многие приписывают руководящую роль команде разработчиков Bitcoin Core. Однако это ошибочное мнение. Хотя разработчики Bitcoin Core и имеют некоторое влияние, на самом деле Биткоин управляется только двумя группами людей: пользователями и майнерами.

Разработки Биткоина

Биткоин сам по своей сути не что иное, как протокол; язык, используемый компьютерами. И что немаловажно, Биткоин – это «открытый» протокол: для того, чтобы стать частью сети Биткоина, не существует никаких привратников или требований, кроме следования этому протоколу.

Любой человек, обладающий необходимым набором навыков, может разработать программное обеспечение, соответствующее протоколу. Но проще всего, конечно, загрузить и запустить программное обеспечение, разработанное другими.

В настоящее время существует несколько программных разработок в области Биткоина на выбор, а также форки (почти копии) этих разработок. Наиболее часто используемой из них, вероятно, по-прежнему является Bitcoin Core, программный стек, который развился из оригинальной разработки Биткоина от изобретателя Биткоина Сатоши Накамото. Но Libbitcoin, Bitcoin XT*, Bitcoin Classic* и несколько других разработок также следуют одному и тому же протоколу и существуют в одной сети бок о бок.

(*Bitcoin XT и Bitcoin Classic запрограммированы на отклонение от текущего протокола Биткоина при соблюдении определенных условий, но до тех пор следуют текущему протоколу Биткоина).

Откровенно говоря, все эти разработки и форки «регулируются» соответствующими разработчиками так, как они хотят. В то время как разработчики Bitcoin Classic создали (не обязывающую) страницу consider.it для сбора идей о направлении разработки, бывший ведущий разработчик Bitcoin XT Майк Хирн был более склонен действовать как «доброжелательный диктатор».

Bitcoin Core управляется слегка меритократическим процессом рецензирования и приблизительным консенсусом между его наиболее активными участниками. Управление осуществляется процессом предложений по улучшению Биткоина, теоретически независимым от разработки, и модерируется ведущим разработчиком Bitcoin Core Владимиром ван дер Лааном, а также несколькими разработчиками с доступом к коммитам. Libbitcoin управляется аналогичным образом, но ведущий разработчик Эрик Воскуил является его модератором.

Однако важно то, что управление разработками в области Биткоина, включая Bitcoin Core, принципиально отличается от управления самим Биткоином. Какие бы изменения в коде ни принимали и не выпускали разработчики Биткоина, они на самом деле существуют только в виде набора нулей и единиц, размещенных на таких сайтах, как bitcoin.org или bitcoincore.org. Это не имеет никакого отношения к самой сети Биткоина.

Только в том случае, если реальные пользователи Биткоина загрузят и запустят новую версию на своих компьютерах, она может стать частью сети Биткоина. И, конечно же, разработчики не имеют никакого контроля над тем, какое программное обеспечение люди запускают на своих компьютерах. Любой, кто запускает Bitcoin Core или любую другую разработку Биткоина, делает это автономно и добровольно.

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

Управление протоколом

Само управление Биткоином в конечном итоге исходит от пользователей через программное обеспечение, которое они запускают на своих компьютерах.

Этот тип управления, пожалуй, лучше всего сравнить с человеческими языками. Хотя исторически ни один руководящий орган не отвечал за английский язык, многие люди добровольно применяют одни и те же правила грамматики для общения. Люди «управляют» английским языком, используя его.

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

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

Пользователи, которые принимают больше платежей (или платежи на большую сумму), имеют больший вес в сети. Если многие пользователи Биткоина захотят совершать транзакции с AlphaBay или BitPay, такие компании могут оказать большее влияние на правила протокола Биткоина и, следовательно, на процесс управления Биткоином.

А поскольку ко всем правилам протокола применяются только полностью проверенные узлы Биткоина, пользователи, которые управляют этими «полными узлами», также оказывают более сильное влияние на процесс управления Биткоином.

Разработчики Биткоина – Core или чего-либо другого – добавляют веса протоколу Биткоина в той мере, в какой они являются пользователями. Но их статус разработчиков не дает им особых привилегий, даже если бы они этого хотели.

Изменение протокола

Применять и обеспечивать соблюдение существующих правил протокола очень просто. Изменить правила протокола Биткоина зачастую намного сложнее.

Некоторые изменения протокола могут быть применены подмножеством участников сети Биткоина (подобно тому, как сленг может применяться подмножеством носителей английского языка). Но другие изменения протокола требуют общесетевого соглашения: консенсуса. Даже небольшие различия могут привести к тому, что разные разработки Биткоина станут полностью несовместимы друг с другом. Это может привести к «форку блокчейна», разделяющему сеть Биткоина на две или более отдельных сетей и, следовательно, на две или более отдельные валюты.

(Какие изменения требуют консенсуса, а какие нет, более подробно объясняется здесь).

Поэтому некоторые несовместимые изменения в протоколе Биткоина требуют, чтобы все пользователи применяли новые правила в какой-то согласованный момент времени. Все должны переключиться на совершенно новую сеть, несовместимую со старой сетью, иначе будут существовать две разные сети. Скажем по-другому; каждый должен начать использовать совершенно новую «монету» и должен согласиться с тем, что эта монета является новым биткоином.

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

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

(Следует отметить, что часть пользователей всегда может переключиться на новую сеть, даже если не все согласны с этим. Маловероятно, что все будут считать эту новую монету «настоящим» биткоином).

Софтфорки

Заставить всех гармонично перейти на новый протокол – непростая задача. Вот почему текущая команда разработчиков Bitcoin Core предпочитает изменять протокол таким образом, чтобы не всем приходилось переключаться одновременно или переключаться вообще.

С помощью «софтфорков» существующий протокол Биткоина может быть изменен в рамках текущего протокола. Они «ограничивают» существующие правила. Хотя с помощью хитрых приемов, подобных этим, софтфорки действительно могут быть использованы для расширения возможностей Биткоина.

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

В сегодняшнем относительно централизованном ландшафте майнинга, где только небольшая часть пользователей майнит (и еще меньшая часть пользователей контролирует пулы для майнинга), очень немногие пользователи могут применять софтфорки. Поэтому разработчики Bitcoin Core предлагают только софтфорки, которые, по их мнению, не вызывают споров. Эти софтфорки также требуют 95-процентной поддержки хэш-мощности, а не просто большинства. И они предлагают только софтфорки, которые четко сигнализируют об изменении протокола, чтобы все пользователи могли обновить свое программное обеспечение или принять альтернативные меры предосторожности, если они этого хотят.

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