Вы здесь

Управление Биткоином: что такое BIP и как они работают?

Мы не признаем: королей, президентов и голосование.
Мы верим в: грубый консенсус и работающий код.

- Дэвид Кларк

Приведенная выше цитата Дэвида Кларка выглядит, как кредо борца за свободу Биткоина. Недоверие к централизованным властям и таким же централизованным решениям впечатано в протокол Биткоина.

Управление Биткоином: что такое BIP и как они работают?

Как писал Сатоши Накамото в Криптографическом списке почтовой рассылки, «Правительства хорошо умеют отсекать головы сетям с централизованным управлением вроде Napster. Однако p2p-сети, такие как Gnutella и Tor, кажется, пока держатся».

Но Кларк говорил совсем не о Биткоине: эту фразу он сказал аж за 16 лет до презентации роуд-мэпа о Биткоине на конференции, организованной целевой группой по разработке Интернета (IETF), организацией, посвященной разработке и поддержанию стандартов с открытым исходным кодом, на которых построен Интернет.

Биткоин децентрализован и имеет открытый исходный код, что означает, что нет централизованного органа, который определяет обновления протокола, и что каждый может свободно использовать, модифицировать и изменять код. Это не означает, что Биткоин управляется анархически. Напротив, Биткоин руководствуется моделью управления, основанной на сотрудничестве, следуя традиции программного обеспечения с открытым исходным кодом, и процесс, который Биткоин использует для обновления своего программного обеспечения, во многом позаимствован из формата «Запрос на комментарии», который был создан в 1969 году в рамках ARPANET.

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

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

В этой статье мы разберем процесс BIP в части обновления протокола Биткоина и покажем, как управление протоколом работает в действии.

Необходимость в BIP

Изначально код Биткоина был написал Сатоши Накамото исключительно в качестве эксперимента, чтобы проверить, что децентрализованная одноранговая валюта, такая как BTC, действительно возможна. К удивлению многих, это сработало.

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


Оригинальное объявление Сатоши Накамото о Биткоине, отправленное по электронной почте другим криптографам

Но в конечном итоге контроль над протоколом оказался в руках Сатоши. Когда кто-то сообщил Сатоши, что ошибка в кодовой базе Биткоина дает возможность злоумышленникам тратить чужие монеты, Сатоши обновил Биткоин-протокол и сказал всем в сети обновить свой клиент, не объясняя почему.

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

В первые годы Сатоши Накамото заручился помощью Гэвина Андресена, разработчика, активно работавшего в сообществе. Когда Накамото объявил, что покидает проект в 2011 году, он передал бразды правления Андресену. Андресен не хотел брать ответственность за код полностью на себя, поэтому он заручился помощью четырех других разработчиков: Питера Вуйля, Владимира ван дер Лана, Грегори Максвелла и Джеффа Гарзика. Эти разработчики стали известны как «разработчики Bitcoin Core», поскольку они управляли разработкой основной реализации клиента Bitcoin Core.

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

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

Разработчики-мейнтейнеры, которые имеют фиксированный доступ к хранилищу GitHub Bitcoin Core, будут принимать во внимание, соответствует ли патч (пакет изменений определенных данных с целью добавления дополнительных функций, исправления каких-либо ошибок в программе и т.д):

  • общим принципам проекта;
  • минимальным стандартам для включения;
  • общему консенсусу участников.

Как отмечает Джеймсон Лопп, участник Bitcoin Core:

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

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

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

Анатомия BIP

Предложение по улучшению Биткоина, стандарт для предложения улучшений протокола Биткоина, было предложен Амиром Тааки в 2011 году в BIP 0001 и расширено в BIP 0002 Люком Дэшем-младшим.

Процесс BIP многое позаимствовал у Предложения по улучшению Python (PEP 0001), даже напрямую скопировав часть текста. Он также ссылается на документ под названием «О консенсусе и активности в IETF», сборник принципов для открытого сотрудничества со стороны Целевой группы инженерной поддержки интернета.

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

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

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

Предоставление сообществу возможности предлагать идеи, идеи коллегиального обзора, и достигать консенсуса в отношении таких идей имеет решающее значение в разработке децентрализованного протокола, такого как Биткоин — который не имеет лидеров. С момента создания процесса BIP в репозиторий BIP Github внесено 191 предложение.

Существует три разных типа BIP:

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

Каждый BIP должен пройти несколько различных этапов, прежде чем его можно будет реализовать. Ниже приведен скрин-шот из BIP 001, который описывает этот рабочий процесс:

Чтобы быть реализованным, BIP должно пройти три этапа: этап проекта, предложения, окончательного предложения.

  • Этап проекта: проект BIP высылается разработчикам Bitcoin и выкладывается в репозиторий BIP Github.
  • Этап предложения: BIP включает в себя рабочую схему реализации с планом развертывания BIP.
  • Этап окончательного предложения: BIP отвечает критериям, чтобы быть принятым в реале. Оно должно быть объективно проверено.

В ходе рассмотрения сообществом BIP может быть отложено, снято, отклонено или заменено:

  • Отложено: автор BIP может изменить статус своего предложения на «отложено», если не было достигнуто никакого прогресса по нему.
  • Снято: автор BIP может также принять решение о снятии BIP с рассмотрения в целом.
  • Отклонено: любой может запросить перевод BIP в статус «отклонено», если за три года не было достигнуто никакого прогресса.
  • Заменено: если ранее согласованное BIP становится неуместным, оно помечается как замененное. Это может произойти, если, например, софт-форк в BIP через три месяца меняется на хард-форк.

Ниже мы рассмотрим более подробно, как работают два основных этапа этого процесса.

Проект

Цель этапа проекта заключается в том, чтобы отформатировать новые идеи для Биткоина в стандартизированный BIP и как можно быстрее начать запрашивать обратную связь от сообщества.

  1. Автор BIP несет ответственность за контрольный просмотр идеи сообществом, чтобы оценить ее осуществимость и получить одобрение идеи со стороны сообщества. Авторы должны делиться своим идеями с разработчиками через список рассылки, а также на технических форумах, посвященных Биткоину. Это позволяет выяснить, является ли идея оригинальной, осуществимой и гарантирует независимый BIP.
  2. Автор создает проект BIP и отправляет его для рассмотрения разработчикам. Это позволяет автору представить идею в стандартном формате BIP и рассмотреть любые дополнительные проблемы со стороны сообщества.
  3. После обсуждения автор загружает предложение в репозиторий BIP git в качестве пулл-реквеста. Редактор репозитория BIP присваивает предложению номер, помечает его по типу и добавляет в репозиторий. Редакторы BIP могут отклонить BIP только в том случае, если оно не соответствует определенным критериям, например, если предлагаемое обновление неясно или технически нецелесообразно.
  4. Чтобы перевести проект в статус предложения, BIP, после того как автор учел какие-либо возражения от сообщества, считает, что проект завершен, и включает рабочую реализацию предложения в проект.

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

Предложение

Когда статус BIP изменяется на «предложение», оно готово перейти от обсуждения к развертыванию в фактическом протоколе Биткоина. Для этого каждое BIP должно включать в себя конкретные критерии, определяющие, как можно объективно осуществить его реальное внедрение.

Как правило, это означает, что BIP должно быть реализовано в коде через софт-форк или хард-форк.

Софт-форк вносит обратно совместимое изменение в протокол, что означает, что узлы, использующие последнюю версию программного обеспечения, остаются совместимыми с узлами, которые используют более старые версии ПО.

В отличие от софт-форков, хард-форки вносят изменения в протокол, которые не являются обратно совместимыми. Это означает, что если достаточное количество узлов не обновит свой клиент, чтобы включить новое программное обеспечение, цепочка разделится на две части, как это было в случае с хард-форком Bitcoin Cash. По этой причине хард-форки являются гораздо более рискованным способом реализации BIP.

В BIP 002 даны рекомендации, позволяющие выяснить, как BIP может быть финализировано с помощью софт-форка или хард-форка:

  • Софт-форк BIP-ы требуют активации со стороны «явного большинства майнеров». Рекомендуемое большинство согласно инструкции – это 95% узлов, согласных на обновление своего программного обеспечения для реализации BIP. BIP, активированное софт-форком, должно содержать время, в течение которого оно будет активно в сети.
  • С другой стороны, хард-форк BIP-ы требуют одобрения от всего сообщества целиком. Узлам в сети необходимо выполнить обновление клиентского программного обеспечения до версии BIP. BIP 002 утверждает, что хард-форк BIP-ы «требуют одобрения со стороны всей экономики Биткоина», включая держателей монет и тех, кто предоставляет услуги с биткоином. Автор BIP 002 признается, что это может оказаться невозможным.

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


Графика, на которой показана активация BIP 91 с поддержкой более 93% узлов.

Только когда BIP было успешно осуществлено через хард-форк или софт-форк и реализовано в протоколе Биткоина, оно считается «окончательным предложением».

Достижение консенсуса в децентрализованной сети

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

Категория: 
Биткоин для "чайников"
Монета: 
2
Ваша оценка: Нет Средняя: 2 (1 оценка)
28264 / 0
Аватар пользователя Daritas
Публикацию добавил: Daritas
Дата публикации: чт, 04/25/2019 - 17:37

Что еще почитать: