Turbine  –  протокол распространения блоков Solana решает трилемму масштабируемости

Узнайте об одной из 8 ключевых технологий, которые делают Solana самым производительным блокчейном в мире

Solana – самый производительный permissionless блокчейн в мире. На текущих итерациях сеть Solana Testnet из 200 физических отдельных узлов поддерживает устойчивую пропускную способность более 50 000 транзакций в секунду при работе с графическими процессорами. Это достижение требует внедрения нескольких оптимизаций и новых технологий, в результате будет осуществлен прорыв в пропускной способности сети, который свидетельствует о новом этапе в разработке блокчейна.

8 ключевых технических инноваций, которые делают сеть Solana возможной:

  • Proof of History(POH)– часы до консенсуса;
  • Tower BFT — PoH-оптимизированная PBFT;
  • Turbine – протокол распространения блоков;
  • Gulf Stream – протокол пересылки транзакций без Mempool;
  • Sealevel – Параллельно исполняемые смарт-контракты;
  • Cloudbreak – данных горизонтально масштабируемых учетных записей;
  • Replicators — Распределенное хранение реестра

В этом посте мы рассмотрим реализованный Solana протокол распространения блоков Turbine, вдохновленный технологией BitTorrent, который решает трилемму масштабируемости блокчейна.

Трилемма масштабируемости

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

Тем не менее, существует множество возможностей оптимизировать способ распространения данных. Существует много новых методов распространения данных, каждый из которых оптимизирован для конкретных приложений. Например, BitTorrent оптимизирован для предоставления больших файлов большим группам людей, использующих TCP, а MediaFLO – это протокол, оптимизированный для распространения данных на физическом уровне для повышения эффективности многоадресной передачи по беспроводным сетям.

В этом контексте давайте перейдем к Turbine, протоколу распространения блоков Solana, чтобы объяснить, как сеть Solana распространяет данные для решения трилеммы масштабируемости блокчейна.

Turbine

Солана, блокчейн, построенный для шкалы

Одна из проблем высокопроизводительных сетей блокчейн заключается в том, как сеть передает большие объемы данных большому количеству узлов. Давайте рассмотрим, например, сеть из 20 000 валидаторов. Лидер должен передать блок размером 128 Мб (около 500 000 транзакций при 250 байтах на транзакцию) всем 20 000 валидаторам. Простая реализация потребовала бы, чтобы лидер имел уникальное соединение с каждым валидатором и передавал бы все 128 Мб 20 000 раз. В этому случае будет недостаточно пропускной способности для такого количества соединений.

Наше решение этой проблемы – Turbine, который в значительной степени заимствует подход у BitTorrent, хотя некоторые важные технические детали отличаются. Turbine оптимизирован для потоковой передачи и передает данные только с использованием UDP, реализует случайный путь для каждого пакета через сеть, поскольку лидеры (производители блоков) передают свои данные в поток. Лидер разбивает блок на пакеты размером до 64 Кб. Для блока размером 128 Мб лидер генерирует 2000 пакетов по 64 Кб и передает каждый пакет другому валидатору.

Солана, блокчейн, построенный для шкалы

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

Солана, блокчейн, построенный для шкалы

Каждое окружение отвечает за передачу части своих данных каждому окружению под ним.

Солана, блокчейн, построенный для шкалы

Если каждое окружение состоит из 200 узлов, трехуровневая сеть, начинающаяся с одного лидера в корне, может достигать 40000 валидаторов за 2 такта или примерно 200 миллисекунд, если предположить, что каждое сетевое соединение в среднем занимает 100 мс.

При реализации этого метода мы сталкиваемся с проблемой безопасности. Например, распределенные узлы могут отказаться от ретрансляции данных или ретранслировать неверные данные. Для работы с распределенными узлами лидер генерирует коды восстановления Рида-Соломона. Коды восстановления позволяют каждому валидатору реконструировать весь блок без получения всех пакетов.

Солана, блокчейн, построенный для шкалы

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

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

Как мы справляемся с такого рода eclipse-атаками? Наш алгоритм разветвления генерирует взвешенное по ставке дерево для каждого пакета с использованием случайного числа на основе цифровой подписи пакета. Поскольку каждый пакет имеет свой путь, а путь заранее неизвестен, eclipse-атака потребует почти полного контроля над сетью.

Солана, блокчейн, построенный для шкалыУзнайте больше о Tour de SOL – Мотивирующем событии testnet.

На одном уровне эта техника масштабируется где-то между 200 и 1000 узлами. Сетевые карты, поддерживающие 1 Гбит/с, могут передавать миллион пакетов в секунду. Один валидатор может отправлять пакеты размером до 64 Кб на 1000 машин в течение одной секунды, если это позволяет сетевое соединение.

Использование в Solana технологии Turbine, наряду с такими инновациями, как Proof of History, Pipeline VM, Proof of Replication и Gulf Stream, в совокупности создают самый производительный блокчейн в мире. Тестет Solana работает уже сегодня. Вы можете увидеть его по адресу https://explorer.solana.com/. В целях экономии мы используем только несколько узлов. Однако во многих случаях мы распространили его более чем на 200 физических отдельных узлов (не на совместно используемом оборудовании) в 23 центрах обработки данных в AWS, GCE и Azure для сравнительного анализа.

Среда выполнения также работает уже сегодня, разработчики могут развернуть код в тестовом режиме уже сейчас. Сегодня разработчики могут создавать смарт-контракты на C, мы активно работаем над набором инструментов Rust. Rust будет основным языком для разработки смарт-контрактов Solana. Набор инструментов Rust общедоступен как часть Solana Javascript SDK, мы продолжаем работу над пакетом разработки ПО.

Вскоре Solana запустит общедоступную бета-версию, стимулирующую валидаторов для запуска узлов через Tour de SOL – аналог “Game of Stakes” у Cosmos, которая ставит перед общественностью задачу протестировать пределы сети Solana, зарабатывая при этом токены.