Введение в управление блокчейном с точки зрения пользователя

Politeia Digest и криптоэнтузиаста Ричарда Реда об управлении блокчейнами и криптовалютами. По его словам, он особо не интересовался пространством блокчейна до лета 2017 года, до того, как его внимание привлёк форк Bitcoin Cash и его причины. Давайте узнаем, какие выводы он сделал после детального погружения в аспекты криптопространства.

Я стал исследовать и обнаружил интерес к тому, как подобные децентрализованные сети/проекты/валюты принимают решения о путях своего развития. С одной стороны, это (преимущественно) программные проекты с открытым кодом, но, с другой стороны, программное обеспечение используется для управления сетями, в которых заключены сотни миллионов долларов стоимости. Кто решает, когда менять это ПО и правила, соблюдение которых оно обеспечивает, и как работает этот процесс? Если ожидание существенного влияния блокчейнов на мир верно, то будет важно понять ответы на эти вопросы.

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

Как я это вижу, есть два аспекта управления:

  • Как криптовалюта гарантирует, что пользователи будут следовать правилам?
  • Как эти правила определяются?

Меня больше интересует второй аспект, но его подробное рассмотрение невозможно без понимания первого.

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

1. Биткойн

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

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

2. Обеспечение соблюдения консенсусных правил Биткойна

Соблюдение правил Биткойна обеспечивают майнеры в модели доказательства выполнения работы (PoW). Майнеры – это люди (использующие компьютеры), которые соревнуются в поиске ответа на сложную и произвольную задачу. Майнеры подготавливают блок, который они хотят транслировать, заполняя его транзакциями, ожидающими обработки (в пуле памяти). Чтобы этот новый блок был принят, он должен пройти специфический тест. Майнеры пропускают через хеш-функцию комбинацию входов: заголовок предыдущего блока, текущую метку времени, дерево Меркла, представляющее транзакции, которые они хотят включить в новый блок, и произвольное значение. Чтобы новый блок был принят сетью, выданный этой функцией хеш должен начинаться с определённого количества нулей (определяемого текущим уровнем сложности). Невозможно узнать, будет ли хеш приемлемым, если не попробовать проделать эту операцию, затем изменить произвольное значение и попробовать ещё раз. Это и есть «работа» в доказательстве выполнения работы. Этот процесс часто называют хешированием. Частота предложения компьютером вариантов зависит от того, насколько быстро он может вычислить хеш-функцию, – его вычислительной мощности.

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

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

Полные узлы проверяют новые блоки на соответствие правилам, в частности:

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

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

Каждый новый блок позволяет претендовать на определённое количество новых биткойнов – вознаграждение за блок. Чтобы получить вознаграждение, майнеры включают в блок транзакцию, отправляющую его на контролируемый ими кошелёк. Майнеры также получают комиссию с транзакций, включаемых ими в блок (и поэтому они мотивированы включать транзакции, предлагающие самые высокие комиссии).

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

Введение в управление блокчейном с точки зрения пользователяСейчас в майнинге Биткойна участвуют исключительно ASIC-майнеры. Это специализированные компьютерные микросхемы, чьё единственное предназначение – предлагать варианты решения, выполняя хеш-функцию Биткойна. Они спроектированы так, чтобы делать это максимально эффективно. В принципе майнить биткойны можно с помощью любого компьютера, и в прошлом так и делали. Более быстрые процессоры лучше, потому что они могут выдавать больше вариантов в секунду или на ватт электричества; видеокарты ещё лучше. Сейчас эффективно соревноваться с помощью ASIC. Хотя я могу намайнить блок с помощью моего CPU, очень низка вероятность, что я найду решение быстрее одного из множества ASIC, с которыми я соревнуюсь, – и мне всё равно нужно платить за электричество, потребляемое CPU, поэтому есть вероятность, что я понесу убытки.

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

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

Понимание работы криптовалют не сводится к знанию правил. Ещё один ключ к пониманию поведения сети – это стимулы. Не существует правила, которое бы говорило, как майнер должен выбирать транзакции для включения в новый блок, или что майнер вообще должен включать какие бы то ни было транзакции. Майнеры иногда майнят пустые блоки. Майнер (или, что более реалистично, пул майнеров) может решить не включать определённые транзакции. При желании он может занести определённый адрес в чёрный список.

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

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

Кстати, именно поэтому децентрализация – такая важная тема среди энтузиастов блокчейна. Система основана на предположении, что, поскольку я могу предложить комиссию за включение моей транзакции в блокчейн, я могу быть уверен, что я смогу провести эту транзакцию. Я могу провести любую транзакцию, разрешённую правилами, если я предложу достаточную комиссию. Если все новые блоки будут майнить восемь пулов, то это введёт определённую степень централизации. Если все эти пулы решат (или кто-то их в этом убедит) не включать транзакции с моего адреса, то мои биткойны станут бесполезными.

3. Установление правил Биткойна

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

Введение в управление блокчейном с точки зрения пользователяBitcoin Core – это ПО, используемое большинством полных узлов сети Биткойна: оно сейчас установлено у 93,6% из 10 923 полных узлов Биткойна. Bitcoin Core – это оригинальный полный узел Биткойна, и почти два года после запуска Биткойна это была единственная реализация полного узла. Сейчас существуют альтернативные реализации полного узла Биткойна, которые следуют тем же консенсусным правилам, а значит, совместимы и могут работать в той же сети/блокчейне.

Введение в управление блокчейном с точки зрения пользователя
Источник: Coin.dance

Открытый код делает возможным широкое участие в разработке ПО. Любой может скопировать (клонировать) ПО, исправить баги или добавить новые опции. Если я клонирую Bitcoin Core и исправлю баг или что-то улучшу, я могу сделать запрос на включение, предложив включить сделанные мною изменения в основную версию Bitcoin Core. Это может сделать любой. На данный момент в репозитории Bitcoin Core на GitHub перечислено 637 контрибьюторов, которые сделали какой-то вклад в ПО. Я могу также клонировать Bitcoin Core (или любое ПО полного узла) и внести изменения без намерения включения этих изменений в изначальную версию. Это называется форк.

Введение в управление блокчейном с точки зрения пользователя
Источник: GitHub

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

Право одобрять изменения в репозитории Bitcoin Core имеют лишь определённые люди. Я не нашёл особенно хорошего источника, но в этом комментарии на Reddit говорится, что только два человека имеют доступ к коммитам, а в этом посте на Bitcointalk двухлетней давности говорится о четырёх людях/аккаунтах, причём за всю историю Bitcoin Core доступ к коммитам имело двенадцать аккаунтов. То, что лишь ограниченное число людей имеет техническое право принимать изменения в основной ветви, справедливо в случае всех программных проектов. Объём полномочий этих людей по принятию решений зависит от социального метода управления проектом. Я не нашёл документов о процессе принятия решений по Bitcoin Core, но в этом комментарии (потенциально предвзятом) на Reddit описывается голосование контрибьюторов Bitcoin Core за или против, после чего мейнтейнеры интерпретируют дальнейшие действия на этом основании, что кажется удовлетворительным.

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

4. Софт-форки, хард-форки, расколы блокчейна и бесплатные монеты!

Введение в управление блокчейном с точки зрения пользователя

И софт-форки, и хард-форки подразумевают изменения консенсусных правил Биткойна.

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

Хард-форк устраняет или послабляет консенсусные правила. Как только хард-форк будет активирован и майнеры начнут производить блоки согласно этим послабленным правилам, не обновившиеся до новых правил узлы будут отклонять эти новые блоки. Это может вызвать раскол блокчейна, если некоторые майнеры и узлы продолжат использовать старое ПО, а другие перейдут на новое.

Примеры форков: В Биткойне изначально не было лимита размера блока. Лимит 1 МБ был добавлен в сентябре 2010 г. Это был софт-форк, потому что он добавил новое правило. Не обновившиеся узлы продолжали следовать правильному блокчейну, потому что размер блоков не имел для них значения. Находящиеся в меньшинстве майнеры, не желавшие этого лимита, были вынуждены обновиться до ПО, следовавшего новым правилам, так как намайненные ими блоки размером больше 1 МБ отклонялись узлами и майнерами, придерживавшимися новых правил. Это изменение было внесено посредством софт-форка, но оно не может быть отменено без хард-форка – это справедливо для всех реализованных софт-форков.

У Биткойна было три раскола блокчейна. Первый произошёл в 2010 г., когда в блок была включена транзакция, расходовавшая 184,5 млрд биткойнов – в правилах ПО был баг, допускавший принятие огромных транзакций. Баг был исправлен с помощью софт-форка, который добавил чёткое правило о том, что транзакция не может расходовать больше 21 млн биткойнов (максимальное предложение). На релиз патча понадобилось 5 часов, и в «плохом блокчейне» успели намайнить 51 блок, прежде чем хороший блокчейн (с исправленным багом) обошёл его по PoW. Отсюда следует интересный момент. В случае раскола блокчейна Биткойна принятый метод определения, какой блокчейн «есть настоящий Биткойн», сводится к рассмотрению длины цепочки PoW – блокчейн с наибольшей накопленной работой «есть настоящий Биткойн».

Периодически встречаются осиротевшие блоки, потому что для распространения новости о новом блоке по сети нужно время, а хеш последнего блока определяет решение следующего блока. Если Майнер А и Майнер Б транслируют новый блок одновременно и половина узлов сначала видит блок А, а другая половина – блок Б, то до нахождения следующего блока будет два конкурирующих блокчейна (ветви). Если следующий блок найдёт майнер, использующий блок Б, то блок Б будет хорошим блокчейном, а блок А – осиротевшим, так как узлы станут считать «настоящим Биткойном» ветвь Б, так как у неё более длинная цепочка PoW.

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

Некоторые хард-форки задумываются как обновления. Если существует консенсус относительно того, что изменение правил будет благоприятным, пользователи координируются, чтобы реализовать это изменение при определённой высоте блока. Поскольку важно, чтобы все одновременно перешли на новые правила, обычно выпускается версия ПО, содержащая оба набора правил, с логикой, говорящей: «До блока X использовать одни правила, а после блока X – другие». В Monero хард-форки, не предназначенные для раскола блокчейна, происходят примерно каждые полгода. Они анонсируются заблаговременно, чтобы операторы узлов успели скачать ПО, следующее новым правилам. Хард-форк Биткойна Segwit2X задумывался как обновление (увеличение максимального размера блока до 2 МБ). Он не состоялся из-за воспринимаемого отсутствия поддержки стейкхолдеров. Больше об этом – далее.

Некоторые хард-форки задумываются для раскола блокчейна. Хорошо известный пример – Bitcoin Cash (BCH), и после него произошло ещё несколько похожих хард-форков Биткойна. В Monero тоже был хард-форк, задуманный для раскола блокчейна (MoneroV). Подобные хард-форки случаются, когда часть пользователей криптовалюты решает изменить правила, понимая, что не все перейдут на новые правила. Они тоже обычно анонсируются заранее. Люди, использующие новое ПО, знают, что после определённого блока они перейдут в другой блокчейн с собственными консенсусными правилами.

Введение в управление блокчейном с точки зрения пользователя
Источник: https://monero.org/forks/

Некоторые рассматривают раскол блокчейна как предложение бесплатных монет. Bitcoin Cash намайнил свой первый блок как блок 478559 после блока Биткойна 478558. Если у вас при блоке 478558 был 1 BTC, то при блоке 478559 он у вас по-прежнему был, но ваш приватный ключ также работал в блокчейне BCH и поэтому у вас также был 1 BCH, потому что до этого момента оба блокчейна идентичны. Это можно рассматривать как получение 1 BCH бесплатно, но также можно утверждать, что ваш 1 BTC раскололся, как и блокчейн, потому что большинство ресурсов, дававших BTC его стоимость (покупатели, майнеры, те, кто принимает ими платежи), теперь разделились между BTC и BCH.

5. Как эволюционирует Биткойн?

Введение в управление блокчейном с точки зрения пользователя

Простого ответа на этот вопрос нет, но с августа 2011 г. существует чёткая процедура: предложения об улучшении Биткойна (BIP). У BIP есть собственный репозиторий на GitHub. Процедура обращения с BIP была изложена в оригинальном BIP-001, но его заменило BIP-002. Ниже я изложу своё понимание процедуры, описанной в BIP-002.

Введение в управление блокчейном с точки зрения пользователя
Источник: GitHub

Каждое BIP должно иметь автора/защитника, который будет его курировать.

  1. Следует подать на обсуждение идею посредством списка рассылки для разработчиков Биткойна.
  2. Если подписчики списка рассылки дают понять, что готовы к рассмотрению, следует таким же способом отправить черновой вариант BIP.
  3. Если нет возражений, BIP следует загрузить в соответствующий репозиторий на GitHub как запрос на включение. BIP должно следовать определённому формату.
  4. Редактор BIP (некто Luke Dashjr) рассмотрит его, и, если оно соответствует определённым минимальным критериям, оно будет принято и получит номер и категорию.
  5. Редактор BIP решает, присвоить ли статус «предложено» или «окончательно/активно», тогда как автор BIP может сменить статус на «приостановлено» или «отозвано». Чтобы перейти из статуса «черновик» в статус «предложено», в BIP должны быть раскрыты все детали и предоставлена модель реализации. Это важно: автор/разработчик должен приложить усилия, чтобы реализовать свою идею в пригодном к использованию коде, прежде чем BIP сможет продвинуться дальше.
  6. BIP-002 также определяет метод получения комментариев по BIP посредством публичного вики-пространства, где может участвовать любой, но где «участникам следует добровольно воздерживаться от комментариев, выходящих за рамки их области знаний или квалификации. Однако комментарии не должны цензурироваться, а участие должно быть открытым для публики».

«BIP софт-форка строго требует явного большинства майнеров, выраженного путём голосования на блокчейне (например, с использованием BIP 9)».

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

Большинство майнеров Биткойна (т. е. майнеры, контролирующие большую часть вычислительной мощности) может принимать софт-форк (добавлять новые правила). Это так, потому что майнеры создают блоки. Если большинство майнеров решит, что новый лимит размера блока – 50 КБ, а другие узлы будут по-прежнему признавать большие блоки действительными, то большая часть вычислительной мощности, следующая одинаковому набору более ограничивающих правил, произведёт самую длинную цепочку PoW. Эти майнеры не будут признавать блоки, не следующие новым правилам.

В случае BIP по изменению консенсусных правил путём хард-форка всё сложнее, так как статус «окончательно/активно» присваивается только при принятии «всей экономикой Биткойна». В BIP-002 говорится следующее:

BIP хард-форка требует принятия всей экономикой Биткойна, включая тех, кто продаёт востребованные товары и услуги в обмен на платежи в биткойнах, а также держателей биткойнов, которые в случае хард-форка могут хотеть тратить свои биткойны (включая продажу за другие валюты) по-другому. Принятие должно быть выражено посредством фактического использования хард-форка на практике (а не простого выражения публичной поддержки, хотя это хороший шаг для достижения согласия перед принятием BIP)…
…Майнеры не входят в экономику, так как они всего лишь полагаются на то, что другие будут продавать/тратить их бесполезный в противном случае продукт майнинга. Таким образом, они должны принимать указания всех остальных при принятии решений по консенсусным правилам.
Биржи не входят в экономику, так как они всего лишь предоставляют услуги, связывая продавцов и пользователей, желающих торговать. Даже если все биржи откажутся от Биткойна, эти продавцы и пользователи всегда смогут торговать напрямую и/или создать собственные биржи.
Разработчики не входят в экономику, так как они всего лишь пишут код, а использовать этот код или нет – решают другие…
Настоящее BIP не стремится дать определение того, что «должно» служить основанием для решений. Подобное утверждение, как бы идеально оно ни было оправдано, будет бесполезным без способов заставить других его придерживаться. Процедура BIP не имеет своей целью служить принудительным «управлением» Биткойном, а лишь предоставляет коллективный репозиторий для предложения и предоставления информации о стандартах, которые люди могут добровольно принять или нет. Можно лишь надеяться на достижение точности в отношении поля «статус», стремясь отразить реальность, какой она является на самом деле, а не какой она *должна быть*.

Процедура
Источник: bitnovosti.com