Как Биткоин достигает децентрализации
Централизация против Децентрализации
В конце первой лекции была рассмотрена простая криптовалюта - Скруджкойн. Было показано, как можно избежать двойного расходования с помощью ведения учета транзакций в виде блокчейна. Осталась одна проблема, связанная с централизованным управлением Скруджа Решением этой проблемы является децентрализация, которой будет посвящена эта лекция.
Децентрализация - это важное понятие не только для Биткоина. Противостояние централизации и децентрализации проявляется во многих цифровых технологиях. Необходимо отметить, что почти ни одна система не может быть полностью децентрализована или централизована. Хороший пример этому – электронная почта, которая является по существу децентрализованной системой. Она основана на децентрализованном Протоколе обмена почтовыми сообщениями. Но в последние несколько десятилетий наблюдается доминирование нескольких почтовых провайдеров, своего рода централизованных поставщиков услуг. Это может служить образцом того, что может произойти с Биткоином в будущем.
Рассмотрим некоторые технические аспекты децентрализации Биткоина. Для этого разберем 5 следующих вопросов:
- Кто ведет регистр сделок?
- Кто обладает полномочиями чтобы определять, какие операции являются действительными?
- Кто создает новые Биткоины?
- Кто определяет правила системы?
- Как Биткоины приобретают обменную стоимость?
Это практически все характеристики децентрализации протокола Биткоина. Существуют также аспекты децентрализации помимо протокола. Например, это биржи Биткоин, где можно конвертировать его в другие валюты. Также существует электронный кошелек и разнообразие других услуг. Несмотря на то, что сам протокол децентрализован, эти услуги на базе него могут быть в разной степени централизованы или децентрализованы.
Рассмотрим три разных аспекта Биткоина с точки зрения централизации и децентрализации.
Во-первых, существует одноранговая сеть, и этот компонент Биткоина наиболее близок к полной децентрализации. Любой может подключиться к сети самостоятельно. На данный момент существует несколько тысяч узлов Биткоин.
Существует также биткоин-майнинг, который будет рассмотрен позже в этой лекции. Биткоин-майнинг также технически открыт для всех. Но для него требуются большие капитальные вложения. Это следствие эволюции системы. Из-за высокой стоимости вхождения в экосистеме добычи биткоинов появилась высокая централизация или концентрация энергии, и сообщество участников сети Биткоин часто рассматривает это явление как нежелательное. Таким образом, этот аспект Биткоина не столь децентрализован, как хотелось бы.
Третий аспект касается обновлений программного обеспечения. Под этим подразумевается получение доступа к правилам, определяющим, как и когда изменяется работа системы. Можно концептуально представить, что для всех, кто работает с узлом Биткоин, открыта спецификация биткоина и предоставлена возможность создавать свое собственное программное обеспечение. То есть на первый взгляд система децентрализована. Но, конечно, на практике это не так. Есть ядро разработчиков, которым доверяет сообщество, и в большинстве случаев именно они определяют, какое именно программное обеспечение Биткоин будет запускаться на компьютерах каждого из узлов.
Терминологический словарь
Биткоин - новое поколение децентрализованной цифровой валюты, созданной и работающей только в сети интернет
Криптовалюта – это цифровая валюта, единица которой – цифровая монета. Цифровая монета защищена от подделки, так как представляет собой зашифрованную информацию, скопировать которую невозможно.
Майнинг - деятельность по поддержанию распределенной платформы и созданию новых блоков с возможностью получить вознаграждение в форме новых единиц и комиссионных сборов в различных криптовалютах, в частности в Биткоин.
Одноранговая сеть - децентрализованная компьютерная сеть, основанная на равноправии участников. Часто в такой сети отсутствуют выделенные серверы, а каждый узел является как клиентом, так и выполняет функции сервера.
Скруджкойн - централизованная криптовалюта, предшественник Биткоин
Узел Биткоина - концептуальная единица хранения данных, несущая в себе также ссылки на связанные с ней элементы.
Централизация сетевой работы — выделение сервера, выполняющего особые функции.
Децентрализация — создание таких условий, чтобы надобность в сервере отпала, и участники сети обладали одним рангом.
Распределенный консенсус
Ранее рассматривались централизация и децентрализация в общем. Теперь можно говорить на техническом уровне о Биткоине и децентрализации. Ключевое слово, которое будет упоминаться снова и снова, это консенсус, точнее, распределенный консенсус. Именно его нужно добиться, чтобы создать распределенную систему электронной валюты.
Десятилетия исследований в информатике были потрачены на протоколы консенсуса. Традиционно, цель таких исследований – обеспечение надежности распределенных систем. Что имеется в виду? Допустим, администратор отвечает за серверное приложение такой компании, как Google или Facebook. Эти компании, как правило, имеют тысячи или даже миллионы серверов, которые образуют массивную распределенную базу данных. Она записывает все действия, которые происходят в системе, комментарии пользователей, сообщения и так далее.
Таким образом, когда появляется новый комментарий, в этом массивном серверном пространстве может быть 10 или 15 различных узлов, которые содержат его копии.
Сервер должен убедиться, что этот комментарий либо записывается во все копии базы данных, либо ни в одну из них.
Если некоторые из этих узлов неисправны, то действие не записывается ни в одну из баз данных. Администратор может вернуться к пользователю и сказать, что возникла проблема сохранения поста и предложить попробовать еще раз. С другой стороны, если бы некоторые копии базы данных сохранили действие, а другие нет, база данных стала бы нецелостной. Эта ключевая проблема, которая мотивировала традиционные исследования по распределенному консенсусу.
Если представить, что протокол распределенного консенсуса достигнут, его можно было бы использовать для создания массового, глобального распределенного хранилища, которое сопоставляет произвольные ключи или имена с произвольными значениями. Это имеет множество практических применений. Например, распределенная система доменных значений, которая является простым сопоставлением понятных для человека доменных имен с IP-адресами. Или каталог открытых ключей, который представляет собой сопоставление адресов электронной почты пользователей с их открытыми ключами. Или даже такие вещи, как биржевые торги. В результате эта распределенная база данных, вместо того, чтобы отслеживать, кто, кому и сколько заплатил, будет отслеживать, кто кому передал какие единицы из какого хранилища.
И самое интересное заключается в том, что Биткоин решил проблему распределенного консенсуса. Но есть другие, сопутствующие, проблемы. И в самом деле, существует много Альткойнов (они будут рассмотрены в следующих лекциях). Альткойны построены на основных принципах Биткоинов, но с несколько иными целями. Иногда это валютные системы, иногда нет. Итак, распределенный консенсус можно обеспечить. И учитывая это, можно создать глобальное распределенное хранилище ключевых значений.
Рассмотрим техническое определение распределенного консенсуса. Представьте, что существует фиксированное число n узлов или процессов. И каждый из этих узлов имеет некоторое входное значение.
И тут действует протокол консенсуса. Два требования к этому протоколу заключаются в том, что он должен прекратить поиск консенсуса , когда все правильные узлы принимают решение о некотором согласованном значении. Именно все правильные узлы, поскольку некоторые узлы могут быть неисправны или даже вредоносны.
Второе требование состоит в том, что значение, которое они согласуют, не может быть произвольным значением. Это должно быть именно то значение, которое было предложено в качестве входных данных, по меньшей мере, одного из правильных узлов. Разберемся, что это может значить в контексте Биткоина.
Чтобы понять, как распределенный консенсус работает с Биткоин, необходимо вспомнить, что Биткоин - это одноранговая система. Когда Алиса хочет заплатить Бобу, она должна транслировать эту операцию для всех Биткоин-узлов, входящих в одноранговую сеть (оповестить эти узлы). Это похоже на операции с Гуфикойн из первой лекции. Транзакция состоится, если будет получена подпись Алисы. Другие узлы нужны для того, чтобы знать, что действие на самом деле идет от Алисы. В транзакции так же нужен открытый ключ Боба, обращающийся к адресу, по которому он хочет получить Биткоины ( рис. 2.1).
Хэш-указатель позволяет Алисе связать эту транзакцию со всеми предыдущими транзакциями этой монеты. И Алиса собирается разослать это всем одноранговым узлам Биткоин. Отметим, что компьютера Боба нет на рис. 2.1.
Теперь Боб, если он хочет быть уведомленным, что данная сделка действительно произошла, и что ему заплатили, может захотеть запустить Биткоин-узел. Это действие не является необходимым для того, чтобы он получил средства. Биткоины будут его, независимо от того, запустил он узел в сети или нет. В чем именно узлы могут захотеть достичь консенсуса? Различные пользователи транслируют транзакции в сеть. Все хотят достичь консенсуса по вопросу о том, какие именно сделки транслировались и в каком порядке эти сделки совершались.
Консенсус может работать в Биткоин, так как в любой момент времени все узлы одноранговой сети будут иметь последовательность блоков транзакций, по которым они достигли консенсуса. В Скруджкойн для оптимизации и для эффективности транзакции помещаются в блоки и затем соединяются в цепочку блоков. Здесь используется аналогичный принцип. Можно достичь консенсуса по транзакциям одна за другой, и это было бы правильно. Но неэффективно. Поэтому консенсус достигается по блоку за блоком. Таким образом, в любой момент все эти узлы в одноранговой сети будут иметь последовательность блоков, о которой они уже договорились. И каждый узел будет иметь набор незавершенных транзакций, о которых он получал информацию. По этим транзакциям консенсуса пока не произошло. Одноранговая сеть несовершенна, так что какой-то узел, возможно, слышал о сделке, а другие узлы нет. Может случиться, что есть последовательность блоков, с которой все согласились.
Допустим, в системе есть три узла, связанные каким-то протоколом конценсуса, каждый из которых имеет свой вход, набор незавершенных транзакций, о которых он получил информацию ( рис. 2.2).
Для успешного выполнения протокола консенсуса можно выбрать любой допустимый блок, даже если это блок, предложенный только одним узлом. Для того чтобы блок был действительным, все транзакции в нем должны иметь правильные криптографические подписи.
Если какая-то транзакция не вошла в блок, который выбирается в результате протокола консенсуса, то она может просто подождать и попасть в следующий блок.
Применение традиционной теории распределенного консенсуса в Биткоин выглядит похоже, но не совсем так. Причина несоответствия в том, что действовать согласно теории - это очень трудная техническая проблема, по целому ряду очевидных причин. Узлы могут рухнуть или могут оказаться вредоносными.
Сеть представляет собой одноранговую систему, которая не может быть совершенной. Не все пары узлов соединены друг с другом. Также в сети могут быть сбои из-за плохого подключения к Интернету. Наконец, в системе будет много задержек, потому что все сделки происходят через Интернет. Не существует даже единого центра обработки данных или чего-то подобного.
Одним из конкретных последствий такой высокой задержки является отсутствие представления о глобальном времени. Это означает, что не все узлы могут согласиться на общее упорядочение событий, основанное на соблюдении временных рамок. Нельзя создать свой протокол и определить, что первым шагом будет взять узел и послать первое сообщение и ждать, пока этот узел сделает что-нибудь вторым шагом. Это не сработает, потому что не все узлы согласовывают, какое сообщение было отправлено первым, на первом шаге протокола. Таким образом, представление о времени действительно накладывает серьезные ограничения на то, какие алгоритмы можно поместить в протоколы консенсуса.
Из-за этих ограничений, большая часть литературы по распределенному консенсусу несколько пессимистична. Было множество доказательств невозможности добиться результата. Одно из доказательств, которое хорошо известно и довольно просто в понимании, называется задачей византийских генералов. Существует также гораздо более тонкая, известная по именам авторов, Теорема Фишера, Линча и Патерсона о невозможности консенсуса в системе со сбоями. В некоторых условиях, которые включают узлы, действующие определенным образом, они доказали, что консенсус невозможен даже при одном неисправном процессе. Несмотря на эти доказательства, существует несколько известных протоколов. И Paxos (Паксос), вероятно, один из самых известных. Он создает определенные компромиссы. Никогда не производится непоследовательный результат,но допускается, что при определенных условиях, хотя и редких, протокол может застрять и не добиться какого-либо прогресса.
Невозможность достижения распределенного консенсуса была доказана и на других моделях, в том числе на модели распределенных баз данных. Несмотря на то, что эта модель была прототипом Биткоина, Биткоин на практике показывает, что консенсус работает. Другими словами, консенсус на практике работает лучше, чем в теории. Тем не менее работа над теорией крайне важна, так как она может помочь предсказать будущие атаки на Биткоин и дать гарантии безопасности.
Еще одна особенность Биткоин заключается в том, что понятия конкретной отправной точки и конечной точки для консенсуса не используются. Вместо этого консенсус происходит в течение длительного периода времени, примерно часа на практике. Но даже в конце этого времени, нельзя со 100% уверенностью сказать, что конкретная транзакция или блок был встроен в цепочку блока консенсуса. Чем больше времени проходит, тем больше вероятность того, что блок попадет в цепочку консенсуса. И вероятность ошибки в предположении о выполнении транзакции падает в геометрической прогрессии.
Это вероятностная гарантия, которую дает Биткоин. Именно она способна полностью обойти традиционные доказательства невозможности результатов по распределенным протоколам консенсуса.
Терминологический словарь
Альткойн-альтернативный вариант криптовалюты, появились после успеха Биткоина. Они позиционируют себя как лучшие заменители Биткоин. Создатели пытаются преодолеть минусы, которые имеет Биткоин и получить новые конкурентные преимущества.
Блоки - это файлы, в которых постоянно записываются данные, относящиеся к сети Биткоин. Блок записывает некоторые или все последние транзакции Биткоин, которые еще не введены в предыдущие блоки. Каждый раз, когда блок "завершен", он уступает место следующему блоку. Таким образом, блок является постоянным хранилищем данных, которые после написания не могут быть изменены или удалены.
Открытый ключ - ключ, используемый в асимметричном криптографическом алгоритме, который может быть сделан общедоступным.
Паксос - семейство протоколов для решения задачи консенсуса в сети ненадёжных вычислителей. Консенсус — процесс получения согласованного результата группой участников, основная проблема — наличие помех в среде передачи данных.
Протокол консенсуса- правила по обмену информацией между пользователями с целью достичь общего соглашения посредством распределенного принятия решений.
Распределенный консенсус означает, что разные компьютеры, создающие сеть узлов, пришли к соглашению, в которое каждый участник вложил свой вклад, и в целом получилось общее решение.
Транзакция - группа логически объединённых последовательных операций по работе с данными, обрабатываемая или отменяемая целиком.