📝 Независимый обзор алгоритма Ouroboros проекта Cardano (Daniel Larimer)

in #cardamon6 years ago

Недавно мне выпала возможность ознакомиться с консенсус-алгоритмом проекта Cardano – Ouroboros, представленным в youtube-презентации. Оригинальную документацию можно найти здесь. Маркетинг Cardano и Ouroboros заключается в заверениях нас в том, что перед нами первый “оцененный экспертами”, “доказуемо безопасный” алгоритм консенсуса доказательства доли. При чтении сопутствующей ему документации знакомым с BitShares 1.0, Graphene, Steem и EOS людям становится понятно, что Ouroboros являет собой копию Делегированного доказательства доли (DPoS), дополненную рядом контр-продуктивных изменений. Фактически их документация ссылается на термин “πDPoS” целых 17 раз и ни разу не упоминает и не признает какой-либо из моих предыдущих работ.

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

Блок-интервал

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

EOS: 0.5 секунды
Steem/BitShares: 3 секунды
Ouroboros: 20 секунд

Необратимость

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

EOS: <= 2 секунды
Steem/BitShares: <= 45 секунд
Ouroboros: > 5 часов

Ouroboros непригоден для децентрализованных приложений

Если мы предположим, что Ouroboros действительно “доказуемо более безопасен” согласно некоему определению безопасности, то данное предположение будет иметь малую практическую ценность, поскольку опытным путем доказан факт того, что безопасность может быть полностью скомпрометирована непрактичностью. Это равнозначно утверждению, что бронежилет “доказуемо безопасен”, однако весит порядка 200 кг. В какой-то момент приоритет будет отдан другим факторам проектирования системы.

К сожалению, мы не можем просто принять то, что его безопасность была доказана. Я продемонстрирую, что несмотря на утверждения об обратном, Ouroboros гораздо менее безопасен из-за ошибочных предположений в основе его архитектуры. Другими словами, Ouroboros – это 400-килограммовый бронежилет, неспособный остановить настоящие пули.

Компоненты Делегированного Доказательства Доли (он же Ouroboros)

Алгоритм Делегированного Доказательства Доли делится на две части:

  • Выбор производителей блоков
  • Распределение производителей по временным интервалам

Обычно процесс выбора производителей блоков берется из протокола доказательства долей, которые могут быть делегированы. Набор производителей блоков периодически обновляется. В BitShares это происходит при каждом новом рабочем интервале (1 час), в Steem и EOS – каждый раунд (N блоков, где N определяется как количество производителей в наборе). В Ouroboros это случается каждые 5 дней, согласно интервью Чарльза Хоскинсона, в котором он описывает протокол.

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

Выбор производителей блоков

В Ouroboros любой желающий стать производителем может быть определен в интервал, пропорциональный количеству долей, которыми он владеет/ему делегированы. Это похоже на то, как Steem выбирает 1 производителя в каждом наборе (т.е. каждую минуту). И тогда как Steem подобным образом выделяет только 1 из каждого 21 временного интервала, Ouroboros планирует все временные интервалы при помощи этого математического распределения. В случае Ouroboros только обладающие не менее 1% делегированной доли имеют право быть в наборе производителей, Steem же не устанавливает нижний предел.

Распределение производителей по временным интервалам

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

Проблемы безопасности, решаемые Случайностью

Суть безопасности блокчейна заключается в уверенности, что в каждом окне подтверждения присутствует набор различных производящих блоки лиц, вероятность сговора которых крайне мала. Время до необратимости зависит от количества времени, требуемого для получения входных данных от 2/3+ потенциальных производителей.

Если порядок планирования может контролироваться производителями, то это приводит к возникновению циклической зависимости. Отсюда имя Ouroboros (змея, пожирающая собственный хвост). Дизайн Ouroboros сфокусирован на обеспечении гарантированной возможности составления расписания с участием 2/3+ честных производителей и без нежелательного вмешательства. Поэтому они фиксируют набор производителей на несколько дней и проводят планирование при помощи доказуемой случайности, чтобы ни одна из сторон не имела возможности для манипуляции.

Steem / BitShares / EOS

Существующие DPOS-чейны формируют набор лиц, сговор которых маловероятен, путем одобрительного голосования, а затем составляют расписание в псевдослучайном порядке. В действительности подобного перемешивания не требуется, поскольку консенсус 2/3+ может быть установлен после того, как каждый из них примет участие в одном блоке. Именно поэтому в EOS не будет использоваться случайное перемешивание.

В Ouroboros длина временного промежутка до того момента, как 2/3+ долей будут “случайно выбраны”, неизвестна. Вполне возможно, что в некоторых окнах все интервалы производителя блоков будут случайным образом назначены одному и тому же производителю. Хотя это и маловероятно с точки зрения статистики, все же нельзя назвать неразумным предположение, что длинная последовательность блоков может быть приписана сговору участников.

Вы можете представить себе процесс подтверждения в Ouroboros как движущийся случайным шагом прогресс-бар установки. Иногда он движется вперед быстро, а иногда издевается над вами, не делая никакого реального прогресса, несмотря на то, что новые блоки производятся.

Это дает Ouroboros непредсказуемую задержку – прямо как у Биткоина. В лучшем случае 2/3+ долей могут быть запланированы в полдюжине блоков, но в среднем это будет занимать гораздо больше времени, особенно если существует множество производителей с весом в 1%, или же производитель с весом в 50% случайным образом был запланирован много раз подряд.

Проблемы безопасности распределения

Выше я отметил, что BitShares, Steem и EOS обладают наибольшей децентрализацией, поскольку у них наибольшее количество подтверждений на одно окно подтверждения. На 6-блоковое окно подтверждения Биткоина в среднем приходится только 5 уникальных человек, подтверждающих блок (обычно как минимум один майнинг-пул дважды присутствует в случайном 6-блоковом окне). В каждом раунде в Steem блок подтверждают 14 человек.

Поскольку доли и голоса распределяются по принципу Парето, мы знаем, что Ouroboros будет назначать производителей блоков так же, как майнинг назначает майнинговые пулы. Крайне маловероятно, что 100 производителей будут иметь по 1% делегированных долей. Гораздо более вероятным выглядит наличие менее 20 человек с более чем 1% долей, необходимых для участия. Кроме того, существуют парадоксы голосования, где голос за кого-либо, у кого еще нет 1% и более долей, является потраченным впустую.

В прошлых статьях о доказательстве долей я также показал, что даже если бы Ouroboros удалил требование наличия 1% для участия, покрытие стоимости эксплуатации ноды с доходностью менее 1% от вознаграждения блока было бы экономически нежизнеспособным. Также ранее я настаивал на том, что поскольку доля распределяется по принципу Парето и выбор кандидатов также происходит по принципу Парето, итоговое распределение доли среди производителей будет Парето². Другими словами, основанное на весе долей голосование создает очень высокую централизацию, которой можно противостоять только одобрительным голосованием с последующим предоставлением топ-N производителям равного веса (как это делает BitShares, Steem и EOS).

Даже если владельцы долей разделят свои доли и голоса в попытке сравнять вес производителей, контроль в системе все еще будет распределен по принципу Парето: 1% лиц контролирует 51% долей. Коррупция имеет место быть на индивидуальном уровне, а не на уровне долей. Кроме того, неверно предполагать, будто крупные держатели будут вести себя так же, как группа небольших держателей аналогичного размера. У них есть только одно мнение и один интерес, поэтому вносимая ими в систему информация (хорошая или плохая) не зависит от размера их доли.

Заключение

Предлагаемый Cardano алгоритм Ouroboros не является математически безопасным по причине ошибочных предположений относительно взаимосвязи долей и индивидуальных суждений, распределяемых по принципу Парето. Кроме того, данный алгоритм является не “новым”, но медленным и менее безопасным изменением алгоритма DPoS, который я первоначально представил в апреле 2014 года. Авторы документации не удосужились указать на соответствующие предыдущие работы или обосновать, почему изменения, внесенные ими в существующие работы, нужно считать улучшением.

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

Однако я пойду дальше и заявлю, что большая часть академических исследований и доказательств, выполненных командой Cardano, только укрепляет поддержку и обоснование многих основных концепций DPOS, даже если их подход не является оптимальным по сравнению с проектами EOS, BitShares и Steem.


Переведено @blockchained

Оригинал поста: ЗДЕСЬ


Если вам нравится то, что мы делаем - поддержите witness blockchained на Steem!


Sort:  

your post is very interesting, I really like it and I will menuggu your next post more interesting

Verry good post

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.033
BTC 64275.05
ETH 3147.49
USDT 1.00
SBD 4.29