DPOS (Delegated Proof-of-Stake) был изобретен Дэниелом Ларимером в качестве замены консенсусного алгоритма Proof-of-Work, используемого в Биткоине и большинстве других криптовалют того времени. Все блокчейны, разработанные Дэном с тех пор (включая BitShares, Steem и EOS), используют DPOS для выбора производителей блоков.
В этом посте я собираюсь подробнее остановиться на истории, которая привела к изобретению DPOS. В то время я работал в тесном контакте с Дэном, и, насколько я помню, всё было именно так, как я здесь описываю.
Однако прежде чем мы углубимся в историю DPOS, я хотел бы ознакомить вас с дополнительной информацией о том, как именно происходит добавление блоков в блокчейн.
Порядок транзакций (например, денежных переводов) в сети блокчейн
Одной из наиболее важных функций блокчейна является создание хронологически упорядоченного списка транзакций, где группы этих транзакций хранятся в последовательно связанных блоках, называемых блокчейном. Этот хронологический порядок крайне важен, поскольку он никому не позволяет потратить свою криптовалюту более одного раза (атака, известная как “двойная трата”).
Чтобы обработать новые транзакции, одному из компьютеров в сети блокчейн необходимо определить действительный порядок новых полученных транзакций, поместить их в блок и затем транслировать этот блок всем остальным компьютерам в этом блокчейне.
Затем другие компьютеры данной сети могут проверить этот блок, и если он подходит под правила блокчейна, они добавляют его в свою локальную копию этого блокчейна. Далее, после некоторой задержки (часто называемой межблочным интервалом), уже другой компьютер повторит описанные выше действия, и в блокчейн будет добавлен ещё один блок.
Проблемы блокчейна, использующего один компьютер для генерации всех блоков
Теоретически, в правилах блокчейна можно задать всего один компьютер, который будет генерировать все блоки. Однако такая схема несёт в себе сразу несколько проблем.
Во-первых, это делает сеть очень хрупкой: если этот единственный компьютер выходит из строя или теряет подключение к интернету, ни одна транзакция не будет обработана, пока этот компьютер не сможет восстановить обмен данными с другими компьютерами сети (иными словами, в это время никто не сможет совершать денежные переводы).
Во-вторых, этот один компьютер, который генерирует все блоки, может блокировать любые транзакции, которые ему почему-то не нравятся, по факту “замораживая” деньги, хранящиеся на счете. Это возможно потому, что создающий блок компьютер может выбирать, какие транзакции он в этот блок поместит. Если он не захочет включать туда определённую транзакцию, он может просто притвориться, что её никогда не было. Тем не менее, даже этот компьютер может только заморозить средства, однако он не способен украсть их (поскольку он умеет только блокировать транзакции, но не может подделать транзакцию, которая переместит деньги с чужого счёта, так как это противоречит правилам блокчейна).
Чей компьютер создаёт следующий блок в блокчейне?
Несмотря на всё это, произвольное замораживание средств в сети требует много энергии, и к тому же, никто особенно не хочет, чтобы его финансовая сеть зависела от работоспособности одного компьютера, поэтому Биткоин, первая криптовалюта, была разработана с функцией под названием “майнинг”. Именно она позволяет компьютерам в сети конкурировать за право генерировать следующий блок в цепочке.
Как работает майнинг в Биткоине (он же доказательство работы, или POW)
В схеме с майнингом каждый компьютер, претендующий на право создать следующий блок (майнер), соревнуется с другими компьютерами, чтобы методом перебора найти решение для математической задачи. Поскольку компьютеры должны решить эту математическую задачу и доказать, что их решение правильное, криптовалюты на базе майнинга также известны как криптовалюты доказательства проделанной работы, Proof-Of-Work (POW).
Не секрет, что первыми найдут решение майнеры с самыми быстрыми компьютерами, которые затем транслируют в блокчейн блок, содержащий в себе их решение. Если другие компьютеры этой сети согласятся с тем, что решение является правильным, оно станет следующим блоком в блокчейне.
Сначала всем казалось, что майнинг – просто отличное решение проблемы выбора производителя следующего блока. У любого майнера в сети есть шанс создать следующий блок, поэтому даже если один майнер решит не включать в него транзакции пользователя, то эти транзакции, вероятно, будут включены в блок следующим майнером. Таким образом, в худшем случае транзакции пользователя могут быть отложены на несколько блоков.
Однако компьютеры, занимающиеся майнингом, потребляют для решения этих математических задач массу энергии, что стоит ощутимых денег. Чтобы майнеры могли покрывать свои расходы (и даже выходить в прибыль), они получают от сети вознаграждение за каждый успешно произведённый блок. Это привело к гонке вооружений, и в конечном итоге майнеры сети Биткоин прибегли к использованию очень специализированного и дорогостоящего оборудования для получения технического преимущества в процессе майнинга. К сожалению, добыча биткоинов стала слишком дорогим удовольствием для большинства людей, и со временем большинство блоков стало создаваться очень узким кругом людей с весьма дорогим оборудованием.
Шаги, приведшие к изобретению делегированного доказательства доли (DPOS)
В 2013 году я работал с Дэном Ларимером над созданием новой криптовалюты под названием BitShares. BitShares разрабатывалась как децентрализованная биржа на базе блокчейна (то есть место, где пользователи могли бы торговать между собой криптовалютами и другими активами). Моя команда в основном работала над кодом этой одноранговой сети и кошельком командной строки, а команда Дэна работала непосредственно над кодом блокчейна, включая метод определения того, какой компьютер сети получает право на создание следующего блока. Несмотря на разделение фронтов работ, что неудивительно, мы часто обсуждали реализацию тех или иных идей, и иногда люди из моей команды помогали другим на стороне блокчейна, когда возникала проблема.
Почему было не взять уже проверенное доказательство работы?
Доказательство работы потребляло очень много вычислительных ресурсов (поэтому блокчейну приходилось много платить майнерам) и было относительно медленным для нужд нашей торговой платформы. Межблочный интервал в сети Биткоин составлял 10 минут, а мы стремились подогнать это время ближе к 10 секундам (в конечном итоге мы смогли добиться времени блока в 3 секунды). Таким образом Дэн исключил использование доказательства работы для выбора производителя следующего блока.
Один производитель блоков? Единственная точка отказа и неоправданное доверие
Первая идея Дэна в плане достижения максимально возможной скорости состояла в назначении всего лишь одного производителя блоков. Это действительно даёт некоторые преимущества в производительности, потому что каждый может просто отправлять свои транзакции этому производителю, что позволяет быстрее включать эти транзакции в блок. Однако наличие единой точки отказа поставило на этой идее крест, и кроме того, так в руки одного человека попало бы слишком много власти.
А как насчёт группы доверенных лиц? Всё ещё требует слишком большого доверия
Следующая идея Дэна состояла в том, чтобы просто создать набор доверенных лиц: заслуживающих доверия людей из недавно появившегося сообщества BitShares, которым будет поручено производить блоки в циклическом порядке. Смысл идеи состоял в том, что даже если один из них не включит в блок транзакцию, это сделает следующий. Таким образом, оставался единственный способ блокировки транзакции – это если все доверенные лица решат заблокировать данную транзакцию. Привлекательность этой идеи во многом состояла в её абсолютной простоте, что сулило очень быстрое написание кода, а ведь мы в тот момент находились под серьёзным давлением в плане сроков: нужно было запустить функциональную сеть на блокчейне до того, как закончится финансирование.
И хотя идея с доверенными лицами была выполнима с технической точки зрения и очень привлекательна за счёт своей простой реализации, она также была несколько уязвима, поскольку опиралась на фиксированный набор компьютеров в сети и не имела никакого механизма изменения этого списка с течением времени, за исключением хардфорка, внедряющего новый набор доверенных лиц.
Это также требовало беспрецедентного уровня доверия к этим лицам, а криптоанархисты, как правило, не слишком охотно кому-либо доверяют. Поэтому и я, и другие члены команды утверждали, что это требует слишком большого доверия и, соответственно, будет неприемлемо для крипто-сообщества. Примерно спустя день раздумий Дэн согласился с этим мнением и начал поиск нового метода быстрого выбора производителя следующего блока.
Доказательство доли, или Proof-Of-Stake: альтернативный способ выбора производителя блоков на основе доли в монете
Затем Дэн начал изучать системы доказательства владения долей. Proof-of-stake (POS) в то время был новым перспективным методом выбора производителей блоков, и наиболее известными его реализациями были Peercoin и NXT. NXT представлял особый интерес, потому что он также был разработан для поддержки децентрализованной биржи, подобной BitShares.
Алгоритм консенсуса доказательства доли выбирает производителя следующего блока на основе комбинации из количества монет, которое имеет потенциальный производитель, времени, на протяжении которого он держал эти монеты (фактор, называемый “возрастом монет”), а также некоторой рандомизации.
Вероятно, наиболее интересным аспектом алгоритмов консенсуса POS было то, что они полагались на личную заинтересованность производителей блоков не вступать в сговор с целью блокирования транзакций. Суть проста: благодаря самой конструкции блокчейнов на основе POS производители блоков обладают значительной пропорциональной долей монет. Ценность этих монет поддерживается людьми, которые готовы принимать эти монеты за другие товары/активы. И если пользователи поймут, что производители блоков прекратили обработку каких-либо из их транзакций, монеты, скорее всего, потеряют ценность, поэтому в своей массе производители блоков будут заинтересованы в обработке транзакций других пользователей.
Честно говоря, я уже не помню, почему Дэн решил не реализовывать алгоритм POS. У него были свои хейтеры, в том числе заявлявшие, что он подвергнется атаке “nothing-at-stake”. Я смутно помню, как изучал алгоритм POS для NXT, и этот вопрос тогда казался мне довольно неоднозначным (например, использование рандомизации в процессе выбора производителя блоков выглядело несколько беспорядочно, а определение возраста монеты только добавляло вычислительную сложность), и я подозреваю, что это сильно повлияло на его решение отказаться от реализации алгоритма консенсуса на POS, особенно учитывая нехватку времени и ограниченное финансирование.
Изобретение делегированного доказательства доли (Delegated Proof-of-Stake)
Тем не менее, Дэн всегда был явным сторонником экономического анализа, особенно когда речь шла о проектировании блокчейнов, и я считаю, что в целом именно это и склонило его в сторону систем Proof-of-Stake.
Однако в то же время ему нравилась простота конструкции модели доверенных лиц, которая обсуждалась ранее (лёгкость реализации, предсказуемость производства блоков, отлично работает, пока доверенные лица оправдывают свои полномочия).
Так что DPOS по сути представляет собой синтез этих двух идей с некоторой изюминкой: вместо крупных держателей долей, непосредственно производящих блоки, держатели монеты коллективно выбирают производителей блоков для этой работы. Здесь производители блоков выполняют роль, подобную доверенным лицам в его первоначальном алгоритме консенсуса. Но, что важно, в рамках DPOS им не нужно так сильно доверять, и в системе есть определенный механизм выбора и замены доверенных лиц, не требующий проведения хардфорка.
Небольшое отступление о “замораживании средств” на блокчейне
Меня всегда удивляет, как бизнесмены, позиционирующие себя как “идейные лидеры” и “инфлюенсеры”, часто не понимают основ технологической революции, которую они якобы возглавляют.
Я, пожалуй, приведу здесь один занятный твит, который вдохновил меня на написание этого поста. Его автор Чангпенг Чжао, генеральный директор Binance, также известный в Твиттере как CZ Binance. CZ сказал: “блокчейны НЕ должны иметь функции замораживания”.
Что ж, CZ, по-видимому, был расстроен тем, что блокчейн Steem может заморозить средства конкретного аккаунта, и подумал, что это была какая-то особенность блокчейна на основе DPOS. Тем не менее, как, я надеюсь, вы усвоили из этого поста, каждый существующий блокчейн, включая сеть Биткоин, может заморозить средства на счёте, если все производители блоков этой сети согласятся это сделать. Всё, что им нужно сделать, это согласиться не включать определённые транзакции в свои блоки.
Обратите внимание, что это на самом деле не какая-то специальная “функция” технологии блокчейн, то есть, не то чтобы все разработчики блокчейнов сговорились проектировать свои блокчейны таким образом. Это технологическое ограничение, пока что присущее всем разработанным на сегодняшний день блокчейнам.
Чем меньше производителей блоков в блокчейне, тем легче добиться необходимой координации для замораживания средств на счёте. Это означает, например, что топовые майнинг-пулы Биткоина могут заморозить средства на очень долгое время, если они решат, что это имеет смысл. Но, как правило, предполагается, что этого не произойдет, поскольку им платят в биткоинах, и произвольное замораживание чьих-либо средств явно будет неблагоприятно воспринято людьми, которые поддерживают ценность этих биткоинов.
Таким образом, экономика блокчейна должна быть спроектирована так, чтобы отвадить производителей блоков сети от замораживания активов без уважительной на то причины. Я, вероятно, расскажу о некоторых способах это сделать в одном из следующих постов.
Дальше – больше
Как я уже говорил, этот пост написан в основном для того, чтобы поделиться с вами теперь уже историей и заложить основу для последующих постов, где будут рассмотрены экономика и философия DPOS, его преимущества и недостатки, а также идеи о его улучшении. Спасибо за внимание!
Оригинал поста: ЗДЕСЬ
@blockchained, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории: