Cloudbreak — Горизонтально масштабируется государственная архитектура Соланы

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

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

В этом блоге, мы будем идти по Cloudbreak, горизонтально масштабируется архитектуры государства Солана

Обзор: оперативная память, SSD и темы

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

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

Samsung SSD Datasheet

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

С максимумом 15 000 уникальных считываний в секунду наивная однопонивная реализация базы данных счетов с использованием одного SSD будет поддерживать до 7500 транзакций в секунду. Современные SSD-набытые тростника поддерживают 32 одновременных потока, поэтому могут поддерживать 370 000 считываний в секунду, или примерно 185 000 транзакций в секунду.

Cloudbreak

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

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

Во-первых, мы используем файлы с картографированными памятью. Файл с картографом памяти — это файл, байты которого отображаются в виртуальном адресном пространстве процесса. После того, как файл был отображены, он ведет себя как любой другой памяти. Ядро может держать часть или ни одну из памяти, кэшированной в оперативной памяти, но количество физической памяти ограничено размером диска, а не оперативной памятью. Чтения и записи по-прежнему, очевидно, связаны производительности диска.

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

  1. Индекс счетов и вилок хранится в оперативной памяти.
  2. Учетные записи хранятся в файлах с картографированными памятью до 4 МБ в размерах.
  3. Каждая карта памяти хранит учетные записи только из одной предлагаемой вилки.
  4. Карты случайным образом распределены по столько SSD, сколько доступны.
  5. Используется семантика копирования на записи.
  6. Записи прикреплятся к случайной карте памяти для той же вилки.
  7. Индекс обновляется после завершения каждой записи.

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

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

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

Бенчмаркинг Cloudbreak

В то время как база данных учетных записей находится в оперативной памяти, мы видим пропускную систему, которая соответствует времени доступа оперативной памяти, в то время как масштабирование с числом доступных ядер. На 10m учетных записей база данных больше не вписывается в оперативную память. Тем не менее, мы по-прежнему видим производительность около 1 м в читает или пишет в секунду на одном SSD.

Узнайте больше о Туре де СОЛ – стимулируемом тестеном событии Соланы.

Использование Solana Cloudbreak, наряду с инновациями, такими как Proof of History, Pipeline VM и Tower BFT, объединяется для создания первого в мире блокчейна в интернете. Тест-нет Соланы сегодня в прямом эфире. Вы можете увидеть его на https://testnet.solana.com. Для целей затрат мы запускаем только несколько узлов. Тем не менее, мы закрутили его на многих экземплярах до более чем 200 физически различных узлов (не на общем оборудовании) в 23 центрах обработки данных на AWS, GCE и Azure для бенчмаркинга.

Время выполнения работает сегодня, и разработчики могут развернуть код на testnow сейчас. Разработчики могут строить смарт-контракты в C сегодня, и мы активно работаем над цепочкой инструментов Rust. Rust станет флагманским языком для разработки смарт-контрактов Solana. Цепочка инструментов Rust является общедоступной как часть SDK Соланы Javascript, и мы далее итерируем набор для разработки программного обеспечения.

Солана скоро запустит публичную бета-версию, стимулирующую валидаторы для запуска узлов через Tour de SOL — по аналогии с «Игрой ставок» «Космос», — которая бросает вызов широкой публике, чтобы проверить пределы сети Solana, зарабатывая жетоны для этого.