Добавить в корзинуПозвонить
Найти в Дзене
Nervos Network

Преодоление предела пропускной способности консенсуса Накамото

Более глубокий взгляд на дизайн Nervos Consensus Protocol Эта статья является третьей частью серии «Создание протокола консенсуса». В этой статье мы более подробно рассмотрим процесс разработки консенсусного протокола Nervos — NC-Max, варианта консенсуса Накамото с более высокой пропускной способностью. Статья основана на стенограммах выступления исследователя Nervos Ren Zhang на встрече «Масштабирование биткойнов» в Сан-Франциско. Посмотрите здесь видеообзор его выступления. Ren является исследователем в Nervos (в основном работает над протоколом консенсуса Nervos), а также PhD студентом Bart Preneel (разработчика RIPEMD 160, хэш-функции, которую вы используете для вычисления из вашего открытого ключа Биткойн в ваш биткойн-адрес) в COSIC Research. Group KU Leuven (место рождения AES, расширенного стандарта шифрования, который используется во всех ваших мобильных телефонах). В 2017 году, после проведения исследования, в ходе которого были обнаружены недостатки дизайна предлагаемого не

Более глубокий взгляд на дизайн Nervos Consensus Protocol

Эта статья является третьей частью серии «Создание протокола консенсуса».

В этой статье мы более подробно рассмотрим процесс разработки консенсусного протокола Nervos — NC-Max, варианта консенсуса Накамото с более высокой пропускной способностью.

Статья основана на стенограммах выступления исследователя Nervos Ren Zhang на встрече «Масштабирование биткойнов» в Сан-Франциско. Посмотрите здесь видеообзор его выступления.

Ren является исследователем в Nervos (в основном работает над протоколом консенсуса Nervos), а также PhD студентом Bart Preneel (разработчика RIPEMD 160, хэш-функции, которую вы используете для вычисления из вашего открытого ключа Биткойн в ваш биткойн-адрес) в COSIC Research. Group KU Leuven (место рождения AES, расширенного стандарта шифрования, который используется во всех ваших мобильных телефонах). В 2017 году, после проведения исследования, в ходе которого были обнаружены недостатки дизайна предлагаемого неограниченного масштабирования биткойнов, Ren был приглашен на стажировку в Blockstream и работал с Pietter Wullie и Gregory Maxwell. Недавно в IEEESSP (Окленд) была принята статья Ren «Установление общих метрик: оценка безопасности протоколов консенсуса Proof-of-Work».

Консенсус Накамото имеет естественный предел пропускной способности. Если вы хотите повысить пропускную способность, вы можете сделать следующее: во-первых, увеличить размер блока (например, Bitcoin Cash, Bitcoin Unlimited), во-вторых, уменьшить интервал между блоками, что увеличит количество потерянных блоков. Такие блоки потребляют пропускную способность, но не способствуют подтверждению транзакций. По мере увеличения количества потерянных файлов безопасность системы снижается, а пропускная способность снижается.

-2
-3

Когда процент потерянных блоков действительно высок, злоумышленнику легко тайно сгенерировать длинную цепочку. Злоумышленнику не нужно 51% мощности майнинга, он может перекрыть блокчейн с гораздо меньшей мощностью майнинга. Эти потерянные блоки потребляют большую часть пропускной способности общедоступных узлов, что негативно влияет на пропускную способность системы.

Если мы хотим выйти за пределы пропускной способности, мы должны найти какой-то способ снизить количество потерянных файлов.

Распространение блоков и потерянные блоки в биткойне

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

Если распространение блоков происходит мгновенно, потерянных блоков не будет. Как мы можем убедиться, что блоки могут распространяться достаточно быстро? (Разработчики биткойнов уже приложили немало усилий для ускорения распространения блоков.)

-4

Давайте подробнее рассмотрим, почему одни блоки распространяются медленнее, чем другие.

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

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

-5

В компактном блоке транзакции фактически не распространяются как целая транзакция, которая составляет 200 или 300 байтов. Он распространяется как идентификатор транзакции компактного блока. Идентификаторы транзакций компилируются в компактный блок, который намного меньше фактического блока.

Когда узел A распространяет компактный блок на узел B и в нем нет новой транзакции, узел B может немедленно передать эти компактные блоки всем своим соседям.

Однако, если в блоке есть новые транзакции, узлу B придется сначала синхронизировать эти транзакции с узла A, а затем проверить эти подписи этих транзакций, что также требует времени. Только когда действительность всего блока подтверждена, узел B может продолжать распространять этот блок. Это основной источник задержки распространения биткойн-блока.

Подход Ethereum: неудачная попытка

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

Таким образом, каждая транзакция в каждом блоке считается новой транзакцией. Ethereum имеет плохо поддерживаемый сетевой протокол, и с 2015 года не было обновлений. В распространении транзакций много избыточности.

-6

Клиент Ethereum будет распространять одну и ту же транзакцию семь раз на разные узлы, что означает, что для каждого узла он получит одну и ту же транзакцию семь раз.

Ethereum имеет несогласованность в разных клиентах. Два основных клиента Ethereum в основном отделены друг от друга. В этих двух разных сетях подключено очень мало узлов, поэтому Ethereum имеет очень высокий уровень потерянных ресурсов, иногда до 30%, и очень низкую транзакцию в секунду.

У крупных майнеров нет стимула ускорять распространение блоков: «Если мой блок может распространяться медленнее, это означает, что я могу выполнять де-факто майнинг, это в моих интересах, зачем мне ускорять распространение блоков?»

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

Подход Nervos: NC-Max

В NC-Max есть три основных новшества:

1. Двухэтапное подтверждение транзакции для снижения процентной ставки;

2. Динамический интервал блока и награда за блок для наилучшего использования полосы пропускания;

3. Рассмотрение всех блоков в настройке сложности для защиты от эгоистичного майнинга.

1. Двухэтапное подтверждение транзакции для снижения процентной ставки

-7

Как показано на рисунке, мы изменили и увеличили несколько полей в формате блока Биткойн:

Во-первых, традиционная зона подтверждения транзакций может содержать только транзакции, которые предложены за несколько блоков до — например, между 2 блоками до и 5 блоками до — только эти транзакции могут быть подтверждены, новые транзакции не могут быть подтверждены в зоне подтверждения транзакций.

Мы добавляем зону «uncle block headers», которая позволяет майнерам встраивать в блок как можно больше uncle blocks. Uncle blocks должны распространять свои заголовки и зону предложения транзакций в блоке, а uncle blocks не учитываются при ограничении размера блока. Таким образом, майнерам не рекомендуется включать в свой блок uncle blocks.

Мы также добавили зону предложений транзакций, которая может содержать несколько новых транзакций и содержит только усеченные идентификаторы транзакций, которые представляют собой более короткую версию идентификатора транзакции, поэтому зона предложений транзакций может быть очень маленькой. Полная транзакция синхронизируется после распространения блока. Так что они синхронизируются параллельно, они не повлияют на процедуру распространения блока. И они не влияют на валидность блока, пока проверяется хэш.

-8

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

-9

Как показано на двух графиках слева, наш компактный блок немного больше компактного блока Биткойна. Компактный блок всегда распространяется на своих соседей.

-10

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

Вы можете спросить:

Что делать, если майнер отказывается предоставить полную версию предлагаемых транзакций?

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

Что, если майнеры включат эти предложенные без трансляции транзакции в свои более поздние блоки, чтобы получить де-факто эгоистичное преимущество майнинга?

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

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

Майнер может майнить только транзакции, которые предложены между 2 или 5 блоками до этого, вы не можете майнить транзакцию, предложенную в предыдущем блоке, но только если этот блок найден злоумышленником.

-11

Как видно из рисунка выше, в Северной Каролине, когда эгоистичный майнер находит блок, он может сразу начать майнить блок h+1, однако честные майнеры могут начать майнить только после того, как получат полный блок — это преимущество эгоистичного майнера во время блока в период распространения.

В NC-Max, когда эгоистичный майнер находит блок h, честный майнер может немедленно начать добычу блока h+1.

Если эгоистичный майнер хочет использовать это предложение без трансляции транзакций, он должен найти блоки в n блоках после этого, только тогда эгоистичный майнер сможет использовать это преимущество. Однако это случается реже. Вы не можете быть уверены, что через 7 блоков будет добытый мной блок, предугадать это очень сложно.

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

NC-Max использует другой механизм регулировки сложности, который нацелен на фиксированный процент потерянных блоков (учитывается как uncle blocks в последний период регулировки сложности):

-12

Если уровень потерянных ресурсов в последний период сложности ниже целевого уровня потерянных ресурсов, сложность будет снижаться, интервал между блоками будет уменьшаться, а пропускная способность будет увеличиваться.

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

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

Награда за блок обратно пропорциональна ожидаемому интервалу блока, поэтому ожидаемая общая награда за период корректировки сложности является фиксированной. Например: если у нас есть 10 минут на блок, в каждом блоке 12,5 биткойнов; если бы у нас было 5 минут на блок, в каждом блоке может быть 6,125 биткойнов. Таким образом, курс эмиссии валюты всегда фиксирован.

3. Учет всех блоков с корректировкой сложности для защиты от эгоистичного майнинга

В NC-Max механизм регулировки сложности подсчитывает все блоки, включая uncle blocks, при оценке общей мощности майнинга.

-13

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

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

В заключение, NC-Max использует потерянные блоки. Мы хотим уменьшить количество потерянных блоков за счет двухэтапного подтверждения транзакции. После того, как количество потерянных блоков уменьшится, мы используем оставшиеся в качестве индикатора использования полосы пропускания для регулировки пропускной способности, и, учитывая, что информация об uncle blocks встроена в блокчейн, мы можем использовать их, чтобы сделать эгоистичный майнинг невыгодным.

1. Почему мы любим Консенсус Накамото (Северная Каролина)

2. Забудьте о конкурсе TPS

3. Детальное рассмотрение конструкции NC-Max, варианта консенсуса Накамото с более высокой пропускной способностью.