Pipelining в Solana: модуль обработки транзакций

Чтобы получить время подтверждения менее секунды и количество транзакций, необходимых для того, чтобы Solana стала первым в мире блокчейном веб-масштаба, недостаточно просто быстро достигать консенсуса. Команда должна была разработать способ быстрой проверки огромных блоков транзакций и быстрой репликации их по сети. Чтобы достичь этого, процесс проверки транзакций в сети Solana широко использует оптимизацию, схожую с технологиями проектирования ЦП, называемую конвейерными вычислениями или pipelining.

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

Чтобы достичь максимальной производительности мы создаем последовательность этапов. Мы будем называть стиральную машину первым этапом, сушилку – вторым, а процесс складывания белья – третьим. Для запуска конвейера добавляется загрузка второго комплекта белья в стиральную машину сразу после отправки первого комплекта в сушилку. Аналогично, третий комплект белья загружается в стиральную машину после того, как второй комплект находится в сушилке, а первый складывается. Таким образом, можно одновременно работать с тремя комплектами белья. Учитывая бесконечные нагрузки, механизм pipeline будет последовательно выполнять работу со скоростью самой медленной стадии на конвейере.

«Нам нужно было найти способ постоянно нагружать все оборудование. Это сетевые карты, ядра процессора и все ядра графического процессора. Чтобы сделать это, мы позаимствовали идею из архитектуры процессора», – объясняет основатель Solana и технический директор Грег Фиджеральд. «Мы создали четырехступенчатый процессор транзакций в программном обеспечении. Мы называем это TPU, модулем обработки транзакций».

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

Узел валидатора одновременно запускает два конвейерных процесса: один используется в режиме лидера, называемом TPU, а другой – в режиме валидатора, называемом TVU. В обоих случаях конвейерное оборудование одинаково: сетевой вход, процессор графической карты, ядра ЦП, запись на диск и сетевой выход. Но отличается их способы работы с этим оборудованием. TPU предназначен для создания записей в реестре, а TVU предназначен для их проверки.

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

Благодаря распараллеливанию вычислений графического процессора в этом четырехступенчатом конвейере в любой момент времени модуль TPU сети Solana может одновременно выполнять 50 000 транзакций.  « Этого уровня можно достичь с компьютером стоимостью меньше 5000 долларов», – объясняет Фиджеральд, – «это далеко не суперкомпьютер».

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

«Следующая задача состоит в том, чтобы каким-то образом доставить блоки от узла-лидера ко всем узлам валидатора и сделать это так, чтобы не перегружать сеть и не снижать пропускную способность до скорости улитки», – продолжает Фиджеральд, – «для этого мы разработали стратегию распространения блоков, которую мы называем Turbine».

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

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

8 инноваций, которые делают Solana первым блокчейном веб-масштаба

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