图片

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

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

图片
Рисунок 1. Общая архитектура компьютеров, подключенных к Интернету.

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

Недавно предложенный уровень P2P использует недавно запущенный новый транспортный уровень на основе QUIC. Таким образом, с переходом на этот новый уровень P2P-уровень компьютеров Интернета полностью перестанет использовать TCP. Переход на QUIC также означает полностью асинхронный переход на Уровень P2P, реализованная трансформация.

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

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

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

Внедрение нового предложенного уровня P2P начинается с принятия серии предложений NNS, которые переводят распределение артефактов HTTPS-вызовов на использование нового уровня P2P, после чего все оставшиеся клиенты будут перемещены, включая протокол консенсуса, в конечном итоге используя старый Уровень P2P устарел.

Предыстория: P2P-уровень компьютеров, подключенных к Интернету.

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

图片
Рисунок 2. Интерфейс между уровнем P2P и его клиентами.

На рисунке 2 показан интерфейс между P2P и клиентами поверх него, который может произвольно изменять пул артефактов каждый раз при вызове on_state_change().

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

Существующие протоколы P2P для компьютеров в Интернете основаны на потоке артефактов от каждого узла к его узлам. Всякий раз, когда артефакт добавляется в проверенный пул, всем узлам рассылается рекламное объявление. Рекламное объявление представляет собой небольшое описание артефакта. .

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

Уровень P2P должен гарантировать доставку артефактов между честными и рабочими узлами и быть устойчивым к вредоносному поведению потенциально вредоносных узлов.

Все клиенты, связанные с консенсусом, на уровне P2P имеют два важных свойства:

  • P1 — Ограниченное количество активных артефактов. Размер пула проверенных артефактов ограничен в любой момент времени, а протокол консенсуса использует контрольные точки для периодической очистки артефактов, поэтому максимальный размер пула C можно использовать в качестве интервала контрольных точек ( измеряется в блоках)) и размер подсети.

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

Здесь подчеркнуты эти два свойства, поскольку они поддерживают важные проектные решения, которые будут объяснены позже.

Противодавление сети

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

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

  • Буферные сообщения (возможно, на неопределенный срок)

  • отказаться от выходных сообщений

В блокчейне это становится более сложным: представьте, что отправитель испытывает противодавление со стороны партнера, который может быть честным, а может и не быть честным. Использование любого из вышеперечисленных подходов может привести к серьезной проблеме:

  • Замедление производства данных означает замедление работы блокчейна, что может стать вектором атаки типа «отказ в обслуживании» (DoS);

  • Буферы (возможно, неопределенные) также станут вектором атаки;

  • Отбрасывание исходящих сообщений может означать, что доставка сообщений на честные, но медленные узлы не гарантируется.

Из-за рисков безопасности, присущих вариантам 1 и 2, большинство блокчейнов выбирают вариант 3, однако вариант 3 имеет риск жизнеспособности блокчейна (т. е., если будет отброшено достаточно сообщений, он может застрять), предоставляя Интернету новый уровень P2P. предложенный компьютером преодолевает риск без потери сообщений.

Новый уровень P2P

Новый P2P-слой работает совсем иначе, чем существующий, во-первых, он не всегда использует рекламу, если артефакты достаточно малы, они будут отправлены сразу без всякой рекламы; во-вторых, он использует не один поток, а по одни и те же соединения QUIC используют несколько потоков; в-третьих, поскольку он не использует один поток, он управляет отправкой артефактов совсем по-другому; в-четвёртых, он вводит немного другой протокол для связи между узлами.

Давайте сделаем шаг назад и посмотрим на цель уровня P2P при обслуживании протоколов консенсуса и других клиентов со схожими потребностями (т. е. негосударственная синхронизация). Цель состоит в том, чтобы для каждого честного узла гарантировать, что одноранговые узлы могут получать все, что Конечно, узел имеет в своем пуле проверенных артефактов, сохраняя при этом все безопасно, масштабируемо и производительно.

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

Структура данных таблицы слотов

Таблица слотов представляет собой абстрактную структуру данных, которая поддерживается каждым узлом на отправляющей стороне и выводится каждым узлом на принимающей стороне. Размер таблицы слотов на отправляющей стороне точно соответствует количеству активных артефактов в пуле проверки. , если вы помните свойство P1 выше, это означает, что таблица слотов ограничена некоторой константой C.

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

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

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

图片
Рисунок 3. Пример абстрактной структуры данных таблицы слотов.

На рисунке 3 показан пример этого процесса: отправитель генерирует артефакты от A до F, он также удаляет некоторые из них в процессе, и, поскольку удаления не обязательно распространяются на одноранговые узлы, они помещаются в таблицу слотов своих одноранговых узлов. У вас все еще могут быть удаленные артефакты в представлении, и это правильно, поскольку содержимое слота со временем будет обновляться и распространяться.

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

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

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

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

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

Когда узел на принимающей стороне замечает, что артефакт больше не существует в таблицах слотов любого из его узлов, узел может безопасно удалить артефакт из непроверенного пула артефактов (если он все еще существует) или остановить любую попытку получить его. артефакт, если он еще не был получен.

Свойство P2: Явное истечение срока действия ранее упомянутых артефактов гарантирует, что такие артефакты больше не нужны ни одному узлу, поэтому таблица слотов также накладывает неявное ограничение на размер пула непроверенных артефактов: непроверенный пул может содержать не более C артефактов из честных одноранговые узлы (поскольку они должны иметь примерно одинаковый контент в аутентифицированном пуле) и, самое большее, артефакты C от каждого злонамеренного узла, поскольку он может использовать C. Совершенно разные артефакты рассылают спам по IC.

Менее 1/3 узлов потенциально вредоносны, поэтому общий размер непроверенного пула не может превышать артефактов C*4*n/3.

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

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

Повысить производительность

Асинхронная реализация с использованием QUIC и прямое использование более мелких артефактов повышает производительность сети и, следовательно, производительность консенсуса.

图片图片
Рисунок 4: (Вверху, существующий уровень P2P / внизу, новый уровень P2P) Частота блоков с течением времени в подсети из 60 узлов с большой нагрузкой подсети и без нее, а также с искусственно увеличенной задержкой канала, вертикальная линия указывает на конец высокой нагрузки.


На рисунке 4 показаны результаты эксперимента, который мы провели для сравнения производительности существующего уровня P2P и нового уровня P2P. В этом эксперименте мы запускали нагрузку 200 x 100 КБ запросов в секунду в центре обработки данных. Подсеть из 60 узлов. и была измерена частота консенсусных блоков.

На графике показана скорость блокировки с течением времени с помощью линии для каждого узла. В обоих экспериментах мы вручную добавили задержку в 80 мс для всех сетевых каналов в обоих экспериментах, чтобы имитировать географически распределенные подсети.net.

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

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

в заключение

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

В некоторых подсетях он уже включен только для артефактов, связанных с вызовами HTTPS, и вскоре Фонд DFINITY представит предложение включить его для других клиентов.

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

Узнайте больше о компьютерах, подключенных к Интернету:

图片图片

#内容挖矿 #P2P #ICP

IC-контент, который вам важен

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

Собирайте и следите за IC Binance Channel

Будьте в курсе самой последней информации