Я поговорил с Махнушем, который долгое время был частью команды DFINITY, чтобы обсудить различные инновации, которые выпустит DFINITY. В темах рассматриваются такие термины, как пороговые подписи, случайные маяки и генерация распределенных ключей. Мы не только обсуждаем эти концепции, но и почему они так важны.
Здравствуйте и добро пожаловать на очередной выпуск Inside DFINITY. Сегодня я собираюсь поговорить с Махнушем, который очень рано присоединился к нам в качестве исследователя. Она из Йельского университета, и сегодня мы собираемся взглянуть на то, чем она занимается в DFINITY, чем она занималась раньше, а затем она также расскажет нам о некоторых технологиях и инновациях, разработанных DFINITY.
Спасибо, вы очень рано присоединились к DFINITY. Вы были ключевой частью нашей исследовательской группы с самого начала. Может быть, для людей, которые еще о вас не слышали: «Что ты здесь делаешь?»
Итак, я исследователь, и я помогаю разрабатывать уровень консенсуса и доказывать безопасность уровня консенсуса и случайных маяков.
Моя повседневная работа — собирать идеи от команды, делать их более формальными, чтобы мы могли понимать их между собой, и официально записывать их, а затем мне нравится доказывать, что они безопасны, чтобы мы могли их использовать.
Я думаю, что вы хорошо описали меня вчера: «Я беру все, что мы предлагаем, и проверяю, что это безопасно». Я подтверждаю, что это безопасно для того, что мы пытаемся создать с помощью DFINITY. Я считаю, что это очень важный атрибут.
Что привело вас на эту должность? Что ты делал раньше? Откуда ты?
До прихода в DFINITY я работал постдоком в Йельском университете. До этого я был аспирантом. В своей докторской диссертации я работал над безопасностью, например многосторонними вычислениями.
Безопасные многосторонние вычисления
Безопасные многосторонние вычисления — это то, где вы должны гарантировать, что все стороны пришли к соглашению. Важной частью вычислений является результат, с которым все должны согласиться. Поэтому консенсус и византийское соглашение являются важными частями протокола MPC. Вот почему меня интересуют протоколы консенсуса.
Затем, находясь в Йельском университете, я попытался создать протокол консенсуса, который можно было бы масштабировать до миллионов сторон, используя протокол на основе комитетов. Затем я встретил Тимо и Доминика и узнал, что DFINITY пытается сделать то же самое, что мне было интересно.
Это здорово, что ты есть. Я знаю, что с тех пор, как вы присоединились, мы добились большого прогресса, включая официальный документ, который мы выпустили в начале этого года, и я знаю, что вы провели много бессонных ночей, работая над ним.
облачные вычисления
Какую загадку или какой-то интересный вопрос мы здесь пытаемся решить? Я думаю, что то, что мы пытаемся создать в DFINITY, — это новая версия облачных вычислений, которая, если задуматься, на самом деле является репликатором состояний.
Потому что вам нужно иметь много реплик, чтобы не потерять вычисления или данные, но все они должны иметь соглашение. Потому что, если некоторые из них думают, что что-то является окончательным, а некоторые другие копии думают, что что-то еще является окончательным, пользователи не будут знать, какая версия правильная.
Поэтому обеспечение согласованности всех этих копий является очень важной частью DFINITY. Вот почему протоколы консенсуса часто очень важны для DFINITY.
Вот если все реплики честные, то это намного проще, потому что мы можем убедиться, что, например, если в Google Cloud у вас есть несколько реплик и вы уверены, что все реплики контролируются Google, то... верно, Поскольку все они контролируются Google, вы можете быть уверены, что каждый компьютер может применять один и тот же алгоритм.
Это то, что вы говорите: «Они все честны!» Да, для них это намного проще, поскольку все они принадлежат центральной группе, но в то же время вы должны доверять Google, чтобы убедиться в правильности алгоритма, который они используют. бег честный.
копия
Однако в DFINITY мы хотим гарантировать, что каждый человек в мире сможет иметь копию, а не предполагать, что все копии принадлежат DFINITY. Так что это более открытый подход к облачным вычислениям.
Пользователям не обязательно доверять DFINITY, но они могут доверять протоколам, которые выполняет DFINITY. В какой-то момент исходный код тоже станет открытым, верно? Что это значит, что каждый может видеть код и каждый может иметь копию?
По сути, это означает, что майнером в нашей системе может стать каждый, а в DFINITY по-прежнему нужны майнеры. Хотя они не решат проблему доказательства работы, они составляют распределенную вычислительную мощность DFINITY.
Они помогают с расчетами, помогают с поддержанием данных и помогают с поддержанием расчетов на основе данных.
Практический византийский протокол отказоустойчивости
Если реплики разные, например, компьютеры в разных доменах, некоторые из них могут быть повреждены или враждебны. В информатике мы называем это византийским, потому что оно происходит от проблемы византийских генералов.
Что ж, решение этой проблемы — очень сложная задача, и она существует в информатике последние 40 лет. И каждый пытается улучшить решение, потому что это такая базовая проблема.
Если вы решите эту проблему эффективно, вы решите множество других проблем. Теперь разные попытки — это новые способы решения проблемы.
Поэтому, когда вы говорите, что проблема существует уже давно, я думаю, что одно из решений состоит в том, чтобы иметь три независимых копии, две из которых говорят одно, а третья говорит что-то другое. Я всегда верю большинству. Что на самом деле сейчас происходит в сети? Насколько это совершенно другое?
Это первый ответ, который придумали ученые-компьютерщики: если у вас есть несколько копий, скажем, три копии, вы не сможете получить большинство. Итак, после того, как вы получите большинство, каждый должен отправить свой вклад всем, и это похоже на цепь с высокой глубиной общения.
Тем не менее, если вы согласны хотя бы с одним подобным пунктом, большинство может сработать. Но если вы согласны, как струна, даже честные группы могут не согласиться. Поэтому одним из решений использования протокола PBFT является выбор лидера.
Протокол PBFT (византийская отказоустойчивость)
Что означает ПБФТ? Это похоже на византийскую отказоустойчивость (BFT), они называют ее «плохой стороной» или «византийской стороной», а буква P в PBFT означает практичность.
В этом протоколе серверы-реплики выбирают лидера, поэтому, как и в реальном мире, если вы хотите прийти к соглашению, лучший способ — выбрать лидера, а затем лидер говорит, что делать дальше. то же самое, и они приходят к соглашению.
Таким образом, подобно протоколу PBFT, они выбирают лидера, и если лидер честен, он предложит одинаковую ценность всем в сети, прежде чем они смогут прийти к соглашению.
Но проблема в том, что если лидер не честен, они не смогут достичь консенсуса, и лидера необходимо заменить. Убедитесь, что лидер честен и предлагает одинаковую ценность для всех, и это очень дорогая сделка без смены лидера (они называют это изменением точки зрения), поэтому требуется коммуникация по всем направлениям, что очень дорого.
Протокол блокчейна
Затем появляются протоколы блокчейна, такие как Биткойн, и они решают не менять лидера, пока он нечестен, и решают: ну нет, нам действительно нужно менять лидера, только если лидер нечестен. Мы предполагаем, что протокол синхронно, поэтому мы меняем лидера в каждой новой эпохе, каждом новом витке.
Затем им нужен способ выбрать лидера, потому что вам нужно выбрать лидера, а затем следующего лидера и следующего лидера.
Вам не нужно постоянно проверять, честен ли лидер, вы просто продолжаете строить на основе протокола, на основе журналов. Есть хороший шанс, что один из этих лидеров предложит честную и здоровую сделку. Теперь проблема сводится к выбору лидера, для которого требуются случайные числа.
Потому что, если у вас есть случайное число, например игральный кубик, вы можете использовать это случайное число, чтобы выбрать лидера, и именно здесь помогает доказательство работы (POW).
доказательство работы
По своей сути протоколы блокчейна являются византийскими протоколами, поскольку они по сути используют доказательство работы для выбора лидеров. Просто запустив доказательство работы, первым, кто предложит решение для доказательства работы, становится лидер, и это случайный процесс.
Поэтому, когда я разговариваю с родителями или другими людьми, которые интересуются блокчейном, я часто делаю это и спрашиваю их: как вы случайным образом выбираете одного из людей в этой комнате, скажем, в комнате 10 человек?
Во-первых, все думают, что это легко, как будто мы просто бросаем кости. Я думаю. Итак, кто бросает кости? Говорят, мы просто складываем все даты рождения, начиная с тебя, а потом кружим, пока не дойдем до этого числа. Но как тогда выбрать, с кого начать?
Это звучит как очень простой вопрос. Но если вы действительно хотите сделать это случайным, это сложно. Это было великим нововведением Биткойна: он нашел способ практически договариваться о случайном выборе среди участников.
По сути, использование доказательства работы для создания случайности — очень дорогой способ создания случайности, поскольку вам придется потреблять много электроэнергии.
Таким образом, для нынешних проектов, таких как Биткойн, это похоже на то, как мощная нация жаждет решить проблему доказательства работы, поэтому по своей сути это очень дорого.
На самом деле мы не так часто используем Биткойн, и если бы вы хотели масштабировать использование Биткойна для большого количества вычислений, вам пришлось бы сжечь весь его мир. Если мы сравним, где сейчас находится Биткойн, и куда ему придется пойти, чтобы достичь своей цели, вам все равно придется использовать Биткойн десять или сто раз.
Вы упомянули, что это потребляет много энергии. Поэтому мы ищем более эффективный метод выбора лидера, чтобы выбирать случайных людей среди сверстников.
Доказательство работы как протокол синхронизации
Еще одна причина, по которой мы пытаемся изменить способ, которым Биткойн создает случайность, заключается в том, что доказательство работы по своей сути является синхронным протоколом, поэтому по сути время, которое вам придется потратить на доказательство работы, на порядок превышает задержку сети.
В противном случае вы не знаете, предпочитают ли люди сжигать электричество, чтобы решить доказательство работы, или тратить время на решение доказательства работы, или их информация теряется в сети.
По сути, цепочки доказательства работы или консенсус доказательства работы имеют низкую пропускную способность, и вы не можете выполнять тики быстро, потому что, по сути, вам приходится ждать дольше, чем задержка сети, для создания следующего фрагмента случайности.
Вот почему вы не можете иметь протокол с высокой пропускной способностью поверх всего этого, и именно поэтому транзакции также становятся очень дорогими, потому что только ограниченное количество транзакций может поместиться в каждый блок. Мы не можем увеличить количество блоков в единицу времени, не нарушив протокол.
Как DFINITY создает случайные числа
DFINITY пытается решить эту проблему, поэтому первая мысль такова: теперь нам нужен новый способ создания случайности, но как нам создать случайность?
Как я уже сказал, это очень сложный вопрос. Итак, один из подходов состоит в том, чтобы один человек создал случайность, но если этот человек нечестен, он не сможет исказить случайность.
Теперь нам нужна группа для создания случайности, но если мы выберем группу, то если я первый человек, создающий случайность, а вы второй человек, то последний человек сможет посмотреть на наше случайное число и выбрать свое. случайность, результат - то, что он хочет, мы называем это предвзятостью последнего человека.
У нас не может быть группы, в которой последний человек выбирает случайность, поэтому мы используем пороговую криптографию.
пороговая криптография
Пороговая криптография означает, что вместо группы из n человек, где всем n людям необходимо создать случайность, существует группа из n человек, но только K из них должны участвовать.
Если вы ожидаете K людей, то если вы получаете входные данные от K минус 1 участник, вы ожидаете одного входа. Но последним может оказаться любая другая группа с n минус K. Таким образом, не существует предвзятого отношения к последнему лицу.
Если последний человек решит «не хочу участвовать», то есть еще одна партия, но этого недостаточно. Потому что теперь, если члены этой группы из K людей генерируют случайность, а поведение другой группы из K людей генерирует случайность, если эти две случайности различны, противник (определяя, хочу ли я участвовать в этой группе) может сместить протокол. Вот почему нам нужна уникальность.
уникальность
Уникальность случайности означает, что не имеет значения, какая К-сторона участвует в создании случайности, результат всегда уникален и результат всегда один и тот же. Прежде всего, это невероятная собственность. Как бы нелогично это ни звучало: «Как нам туда добраться?»
Если у вас есть сообщение и вы используете подписи BLS для пороговой подписи, вам нужны K участников. Если порог равен K, вам нужно, чтобы его подписали K участники, независимо от того, кого подпишут k участников, тогда вы получите уникальный идентификационный результат. Это ключевой атрибут подписей BLS.
Это технология парного шифрования. Так что это новое, но не слишком новое, потому что, если схема слишком нова, вы беспокоитесь о безопасности и о том, была ли она доказана правильно. Если достаточное количество людей просмотрит его, оставьте комментарии и протестируйте его.
В Стэнфорде на него посмотрело достаточно людей, и группа долго работала, чтобы убедиться, что он безопасен и похож на очень безопасный протокол с хорошей реализацией. Итак, у нас есть очень быстрая реализация BLS с открытым исходным кодом, и каждый может ее использовать.
Может быть, просто дайте некоторый обзор, и тогда мы сможем поговорить о случайных маяках и о том, что именно они собой представляют. Но вы упомянули об этом, и я думаю, что это хорошее объяснение того, с чего начать и где доказательство работы не выходит за рамки определенной точки с точки зрения пропускной способности и использования энергии.
Затем проблему использования предвзятости последнего человека для создания этого случайного числа мы решаем с помощью пороговых подписей k из n людей. И используемая нами подпись BLS уникальна для k людей из n и по-прежнему случайна. Это два свойства, которые мне до сих пор трудно понять, как они сочетаются друг с другом.
так что нам делать? Давайте вернемся к блокчейнам Сатоши Накамото и посмотрим, как они работают. Таким образом, блокчейн Накамото похож на полное создание случайности для каждого блока, а это означает, что для каждого блока вы решаете доказательство работы с самого начала и не используете повторно какую-либо случайность.
Это одна из причин, почему это так дорого. Поэтому мы не хотим делать это здесь, потому что знаем, что пороговое шифрование очень дорогое, как и в мире доказательства работы. Это не так уж и дорого, но все же это очень дорогая операция.
Мы хотим быть уверены, что большинство дорогостоящих операций можно выполнять в автономном режиме, а при подключении к сети мы выполняем очень мало из них. Если посмотреть на схему подписи, то есть разные методы, с которыми нужно разобраться и они должны работать. Итак, один из них — создание ключей, мы называем это распределенной генерацией ключей (DKG).
DKG (генерация распределенных ключей)
DKG (генерация распределенного ключа) — очень дорогостоящая операция, поскольку вам нужно, чтобы все согласовали открытый ключ, который они хотят подписать, и каждый выводит ключ для себя, который является частью более крупного ключа для группы, чтобы они могли использовать его для подписи. вход.
Весь этот процесс является дорогостоящим, вам необходимо использовать ключ для аутентификации, поэтому это дорогостоящий процесс. Просто для быстрого обсуждения. Я думаю, что это тоже интересная тема. По сути, это означает, что мы все снаружи, мы все разговариваем друг с другом, но мы все согласились на закрытый ключ.
Удивительно, что мы можем об этом говорить... но это также означает, что мы оба правильно создали закрытый ключ, который будет использоваться с этим открытым ключом, и хотя мы никому не упомянули наш закрытый ключ, все наши личные ключи клавиши также каким-то образом работают вместе.
Хорошо то, что вы можете запустить процесс DKG один раз, а затем подписать несколько раз одним и тем же ключом, а это означает, что вам придется несколько раз амортизировать стоимость дорогостоящего DKG. Вы можете провести раунд и запустить DKG для группы, а затем, когда у них появится собственный ключ, они смогут использовать его для подписи различных входных данных.
Каждый раз, когда они подписывают снова, они получают новое случайное число, это новое псевдослучайное число, на самом деле это уже не случайное число, потому что первое было случайным, но после этого это псевдослучайная функция. Для вас оно действует как псевдослучайное число.
Тогда, таким образом, мы сможем сделать схему подписи неинтерактивной, что означает: «Мне не нужно с вами разговаривать, чтобы подписать».
Я делаю все, что могу, я подписываю, вы выполняете свою часть работы, вы подписываете, но мы можем собрать эти подписи вместе, объединить их и получить объединенную подпись, не разговаривая друг с другом.
Это то, что они называют неинтерактивным. Это хорошее свойство, поскольку оно делает схему подписи намного быстрее, чем неинтерактивная версия.
Принцип работы DFINITY таков: мы создаем группу, затем выполняем DKG, теперь подписываем первую рандомизацию, затем получаем рандом для этого раунда, затем в следующем раунде подписываем предыдущую рандомность для следующего раунда. Создаем новый раунд. случайности, а затем приступаем к подписанию.
Как долго мы хотим повторно использовать одну и ту же исходную случайность? Вы можете использовать его повторно в течение длительного времени, можете использовать повторно в течение нескольких месяцев, а может быть, около месяца или двух месяцев. Следовательно, ту же случайность можно использовать повторно, пока в группе достаточно активных и честных участников. Вы также упомянули группы.
Существуют ли разные группы по работе DFINITY? У нас есть эта пороговая криптография, у нас есть процесс DKG, но если вы хотите запустить этот процесс для большого количества участников, например 5 миллионов биткойнов, это очень дорогой процесс, потому что вам нужно отправить сообщение всем, каждый должен подписать .
Это все еще очень дорогой процесс. Мы посмотрели на систему и обнаружили, что не нужна подпись каждого, не нужно участие каждого в рандоме. Вы можете заниматься случайностью, случайным образом выбирая партии, точно так же, как при проведении выборов в стране.
Итак, если вы хотите принять что-то, что не требует от всех принятия закона или принятия решения, вы можете создать комитет, вы можете иметь представителей вместо всех, мы должны выбрать группу, но как нам выбрать группу? группа?
Тем не менее, мы можем повторно использовать нашу собственную случайность, поэтому, поскольку группа выбирается случайным образом, эта группа имеет свойства, аналогичные фактическому общему числу квадратов. Вместо того, чтобы запускать весь протокол среди 5 миллионов человек, вы можете запустить протокол среди 500 человек, и это будет в десять раз быстрее.
Независимо от того, участвует ли во всей сети 100 000 человек или 100 миллионов человек, процесс, который проходит группа, всегда одинаков, поскольку размер группы постоянен. Еще одним преимуществом выбора групп является то, что вы получаете не только масштабируемость, но и параллелизм, поскольку теперь мы можем иметь несколько цепочек вместо одной.
Фрагментация
Каждая группа отвечает за одну цепочку, тогда вы можете создавать несколько цепочек параллельно, которые мы обычно называем шардами в блокчейне. Это естественный способ шардирования.
Вот почему я думаю, что в DFINITY есть отличный способ сегментирования, присущий DFINITY, потому что у нас есть группы, и каждая группа может иметь свой собственный сегмент. Итак, с какими более серьезными проблемами мы сталкиваемся сейчас?
На данный момент у нас есть полные доказательства в настройках синхронизации. В модели синхронных вычислений или синхронной связи, когда честная сторона отправляет сообщение, оно будет получено всеми честными сторонами в диапазоне Дельта.
Например, в Биткойне, когда честная сторона отправляет сообщение, оно будет получено примерно через минуту, что для всех в мире меньше минуты. Протокол знает это и использует.
Таким образом, в Биткойне продолжительность доказательства работы зависит от задержки сети, и для Биткойна она должна быть намного дольше, примерно 10 минут, потому что они думают, что Биткойн в 10 раз дольше.
Предположение о синхронизации верно, но проблема в том, что если предположение о синхронизации неверно в реальной сети, протокол перестает быть безопасным.
Полные доказательства в асинхронных сетях
Что мы сделали в DFINITY, так это то, что у нас есть доказательства безопасности в полностью синхронной модели, и мы обновляем наши доказательства, чтобы их можно было использовать и в асинхронных сетях.
Это одна из областей, над которой я сейчас работаю, а другая область, над которой я работаю, — это интерактивный процесс DKG, который мы сейчас осуществляем в процессе DKG, а это означает, что каждый участник, который хочет участвовать в деятельность ведет DKG. При заключении договора должна быть возможность использовать DKG.
Неинтерактивный DKG (генерация распределенных ключей)
Мы хотим сделать его неинтерактивным, то есть стороны смогут участвовать, возвращаться и возвращаться, когда соглашение будет завершено. Так что это более естественный способ запуска: DKG — это неинтерактивная версия, а не интерактивная.
Третье, над чем я работаю, — это часть шардинга, о которой я только что говорил. Мы разрабатываем систему шардинга для DFINITY. Мы разработали систему шардинга для сети, подобной биткойну, и используем ту же концепцию, и наша статья будет опубликована в CCS. Это хорошая статья, поэтому вам следует ее прочитать.
Может быть, просто чтобы ответить на вопрос: «Каковы требования к DFINITY? Сколько людей могут быть нечестными, чтобы сеть выжила?»
Обычно, если вы работаете в асинхронной или полусинхронной среде, количество сторон, которые может допустить протокол, составляет одну треть. Таким образом, в асинхронной модели доля нечестных сторон всегда составляет одну треть, что является нижней границей, поэтому она не может терпеть ничего выше этого.
Система шардинга DFINTY
В этой модели работает DFINITY, а это значит, что доля нечестных участников во всей сети должна составлять одну треть, но в каждой группе мы можем терпеть только половину этой доли, поэтому переходим от одной трети к половине. «Знаем ли мы уже, насколько большими будут эти группы?»
Размер группы зависит от уровня безопасности, которого вы хотите достичь: чем больше группа, тем большую безопасность вы получаете. В настоящее время для уровня безопасности около 86-90 кажется логичным установить размер от 400 до 800, что означает, что вероятность ошибки будет около 86. Вы никогда не потеряете свои жетоны.
Время блока и окончательность
Еще один вопрос, прежде чем я подведу итоги: мы говорили об энергоэффективности и упомянули время блокировки для блокчейна Биткойн, которое, как вы упомянули, составляет около десяти минут. Так какого же времени блока мы достигаем в DFINITY?
В настоящее время в нашей тестовой сети время блокировки составляет около одной секунды или менее одной секунды.
Еще одно различие между DFINITY и Биткойн заключается в том, что для достижения окончательности с Биткойном, поскольку у них нет реального протокола консенсуса, вам нужно подождать шесть блоков. Для DFINITY нам нужны два блока.
Это означает 2 секунды, 1 секунду на блок, 2 секунды окончательности, что означает, что у нас есть 2 секунды окончательности, тогда как окончательность Биткойна составляет около 1 часа.
По сути, это то, что происходит в DFINITY с Биткойном, чтобы включить транзакцию, подобную кредитной карте, и завершить транзакцию. Если я пойду в кафе, чтобы купить кофе, в худшем случае мне придется подождать час, прежде чем я смогу использовать мой биткойн. Убедитесь, что транзакция действительно прошла. В DFINITY это может занять до двух секунд.
В лучшем случае, если создатель блока настроен оптимистично и честно, вам нужно подождать всего две секунды, чтобы в DFINITY было достигнуто окончательное состояние, тогда это похоже на систему с высокой пропускной способностью.
Спасибо Махнушу за то, что он нашел время рассказать нам о некоторых проблемах и инновациях DFINITY.

IC-контент, который вам важен
Технологический прогресс | Информация о проекте Глобальные события |

Собирайте и следите за IC Binance Channel
Будьте в курсе самой последней информации
