Solana была задумана в 2017 году, когда ее основатель Анатолий Яковенко искал способ для децентрализованной сети узлов, соответствующей производительности одного узла. Ни один из основных блокчейнов не имеет этого свойства. Достижение этого - самое главное достижение Solana.
Такие системы Proof of Work, как Bitcoin и Ethereum, поддерживают около 10 транзакций в секунду (TPS). Практические византийские системы PoS, основанные на отказоустойчивости (PBFT), такие как Tendermint, поддерживают около 1000 TPS со 100–200 узлами. Solana, PBFT-подобный PoS блокчейн, поддерживает более 50 000 TPS с более чем 200 узлами на текущих итерациях тестовой сети, что делает его самым производительным блокчейном и первой в мире децентрализованной сетью веб-масштаба.
С момента своего создания команда Solana, состоящая из новаторских технологов из Qualcomm, Intel, Netscape и Google, сосредоточилась на создании технологий, необходимых Solana для работы в соответствии с этими революционными стандартами производительности.
Для создания децентрализованной сети, соответствующей производительности одного узла, команда Solana разработала 8 ключевых технологий:
- Доказательство истории (PoH)
- Tower BFT — версия PBFT, оптимизированная для PoH
- Тurbine — протокол распространения блоков;
- Gulf Stream — протокол пересылки транзакций
- Sealevel — параллельное время выполнения смарт-контрактов
- Pipelining — блок обработки транзакций для оптимизации проверки
- Cloudbreak — база данных учетных записей с горизонтальным масштабом
- Архиваторы — распределенное хранилище главной книги
В этой статье мы кратко объясним каждое из вышеперечисленных.
PoH
Беспроводные сотовые сети имеют много общего с сетями на основе блокчейна и уже давно сосредоточены на оптимизации сетевой связи. В масштабе ни одна радиовышка не имеет достаточной пропускной способности, чтобы дать каждому сотовому телефону свою собственную радиочастоту для передачи, поэтому телекоммуникационные компании нуждались в «технологиях множественного доступа», чтобы втиснуть несколько телефонных звонков на одной и той же частоте.
Time Division Multiple Access (TDMA) является одной из основных технологий, которые обеспечили массовую масштабируемость в сотовых сетях. TDMA указывает, что башни делят каждую радиочастоту на временные интервалы и выделяют эти временные интервалы для каждого телефонного звонка. Таким образом, вышка сотовой связи обеспечивает глобально доступные часы для сети. Это значительно повышает масштабируемость ограниченной полосы пропускания, позволяя каждой частоте поддерживать несколько одновременных каналов передачи данных и уменьшая помехи от нескольких телефонов, вещающих на одной и той же частоте одновременно.
Современные сети на основе блокчейна имеют проблему с часами. Эквивалентом TDMA для сетей на основе блокчейна будут часы с субсекундной детализацией, с которой согласны все проверяющие узлы, чтобы они могли более эффективно обрабатывать транзакции. Основной инновацией Solana является Proof of History (PоH), глобально доступный источник времени в сети, который работает до консенсуса. PоH не является консенсусным протоколом или анти-syble механизмом. Скорее, PoH является решением проблемы синхронизации.
В то время как другие блокчейны требуют, чтобы валидаторы общались друг с другом, чтобы договориться о том, что время прошло, каждый валидатор Solana поддерживает свои собственные часы, кодируя течение времени в простой функции задержки (VDF) SHA-256, последовательно хеширующую проверку. Solana не использует VDF для случайности. Вместо этого каждый валидатор использует VDF для поддержания своих собственных часов. Поскольку каждый валидатор поддерживает свои собственные часы, выбор лидера запланирован заранее на всю эпоху. Как и Tendermint, расписание для эпохи длится на тысячи блоков. Однако, в отличие от Tendermint, сеть никогда не ждет неисправного узла. Каждый валидатор запускает VDF, чтобы доказать, что он приобрел свой слот для передачи блока и валидаторов. Каждый валидатор получает компенсацию за это, потому что производитель блока получает вознаграждение за создание блока.
Благодаря Proof of History, лидеры продолжают ротироваться, и сеть в целом прогрессирует независимо от условий сети. Это означает, что сеть никогда не останавливается. Сеть может принять решение о повороте валидаторов без разговора ни с одним из валидаторов. Это тонкий, но глубокий сдвиг. Ни один другой блокчейн не имеет сопоставимого механизма. В любой другой цепочке валидаторы должны общаться, чтобы принять решение. В Solana решения о ротации лидеров принимаются асинхронно.
Эта основная инновация открыла пространство дизайна, идущей вверх по стеку. В дополнение к предоставлению часов, которые можно использовать для отметки времени, PoH позволяет Solana оптимизировать время блокировки (800 мс), распространения блоков (log200(n)), пропускной способности (50K-80=K TPS) и хранения бухгалтерской книги (петабайт), доступного в сети.
Tower BFT
Помимо доказательства истории, Solana запускает Tower Consensus, алгоритм консенсуса, похожий на PBFT, специально разработанный для использования синхронизированных часов. В отличие от PBFT, Tower Consensus предпочитает живость, а не согласованность. Как и PBFT, узлы экспоненциально увеличивают свои тайм-ауты, чтобы прийти к соглашению, но поскольку бухгалтерская книга также является "trustless" источником времени, узлы могут наблюдать и проверять тайм-ауты всех других валидаторов в сети.
Turbine
Учитывая, что консенсусный уровень Solana не зависит от одноранговых сообщений, Solana может оптимизировать передачу блоков по сети независимо от консенсуса. Turbine, техника распространения блоков Solana, в значительной степени заимствована у BitTorrent. По мере потоковой передачи блока он разбивается на небольшие пакеты вместе с кодами стирания, а затем распространяется по большому набору случайных одноранговых узлов. При наличии разветления из 200 узлов, второй уровень сети может охватывать 40 000 валидаторов. Таким образом, валидаторы могут распространять блоки с влиянием log200(n) до окончательности. Для всех практических целей, если каждое соединение составляет 100 мс, репликация может быть достигнута за 400 мс, а окончательность - за 500 мс для сети 40 000 узлов. Механизм Turbine должен быть устойчив к неисправностях. Таким образом, валидаторы кодируют данные с использованием кодов стирания Reed-Solomon, обеспечивая степень отказоустойчивости.
Gulf Stream
В высокопроизводительной сети управление мемпулом - это новый класс проблем, которые другие сети на самом деле не должны делегировать. Gulf Stream функции путем продвижения кэшируют транзакций и передают на край сети. Поскольку каждый валидатор знает порядок будущих лидеров в архитектуре Solana, клиенты и валидаторы заранее пересылают транзакции ожидаемому лидеру. Это позволяет валидаторам выполнять транзакции заранее, сокращать время подтверждения, быстрее переключаться и уменьшать давление памяти на валидаторы из неподтвержденного пула транзакций.
Клиенты, такие как кошельки, подписывают транзакции, которые ссылаются на определенный блок-хэш. Клиенты выбирают довольно недавний блок-хэш, который был полностью подтвержден сетью. Блоки предлагаются примерно каждые 800 мс и требуют экспоненциально увеличивающего тайм-аута, чтобы разворачиваться с каждым дополнительным блоком. Предполагая время блокировки 800 мс, что эквивалентно 25,6 секундам.
Как только транзакция перенаправляется любому валидатору, валидатор перенаправит ее одному из будущих лидеров. Клиенты могут подписаться на подтверждение транзакций от валидаторов. Клиенты знают, что блок-хэш истекает через конечный период времени, или транзакция подтверждается сетью. Это позволяет клиентам подписывать транзакции, которые гарантированно будут выполняться, или сбои. Как только сеть проходит мимо точки отката, так что блок-хэш ссылки на транзакцию истекают, клиенты имеют гарантию того, что транзакция теперь недействительна и никогда не будет выполнена в цепочке.
Sealevel
Чтобы воспользоваться преимуществами высокопроизводительной сети Solana, разработчики создали Sealevel, гиперпараллельный механизм обработки транзакций, предназначенный для горизонтального масштабирования между графическими процессорами и твердотельными накопителями. Обратите внимание, что все другие блокчейны являются однопоточными компьютерами. Solana - единственная цепочка, поддерживающая параллельное выполнение транзакций (а не только проверку подписи) в одном шарде.
Решение этой проблемы в значительной степени заимствовано из техники драйвера операционной системы, называемой сборкой рассеяния. Транзакции заранее указывают, какое состояние они будут читать и записывать во время выполнения. Среда выполнения может найти все неперекрывающиеся функции перехода состояния, происходящие в блоке, и выполнять их параллельно — так называемое параллельным выполнением — оптимизируя при этом, как чтение и запись в состояние планируются в массиве твердотельных накопителей RAID 0.
Хотя Sealevel сама по себе является виртуальной машиной, которая планирует транзакции, Sealevel на самом деле не выполняет транзакции в виртуальной машине. Вместо этого Sealevel передает транзакции, которые будут выполняться на оборудовании с использованием проверенного в отрасли байт-кода под названием Berkeley Packet Filter (BPF), который предназначен для высокопроизводительных фильтров пакетов. Этот байт-код был оптимизирован с начала 90-х годов и был развернут в производстве в миллионах коммутаторов по всему миру для обработки 60 миллионов пакетов в секунду в 40-гигабитной сети за один коммутатор.
Каждый раз, когда Nvidia удваивает количество доступных SIMD-полосов, наша сеть будет удваивать вычислительную мощность. Практически все остальные блокчейны, которые по замыслу являются однопоточными компьютерами, никогда не могут масштабироваться таким образом.
Используя LLVM, тот же компилятор, который нацелен на WASM, команда предоставляет разработчикам большой набор инструментов для написания высокопроизводительных смарт-контрактов на C/C++ и Rust, которые выполняют контракты на графических процессорах. Хотя Solana не использует WASM, разработчики могут перекомпилировать код C и Rust, написанный для WASM-компиляторов в компиляторе Solana с минимальными изменениями. Таким образом, разработчики могут легко перенести свои приложения из других крупных сетей WASM, таких как Dfinity, EOS, Polkadot и Ethereum 2.0.
У Ethereum была история ошибок, возникающих в результате архитектуры программного обеспечения. Два соответствующих примера:
- Несколько взломов паритета через Delegate Call
- Ошибка аренды DAO через «колл»
Определенно можно написать безопасный код Solidity, точно так же, как и можно писать сложное программное обеспечение на языке С без защиты памяти. Но до тех пор, пока ошибки легко добавить и трудно обнаружить, становится труднее проверить поведение сложного программного обеспечения. И Solana, и команда Libra признали эту проблему на раннем этапе и разработали архитектуры, которые поддерживают строгое разделение состояния между различными модулями.
Язык Move представил Resources и Scripts в качестве концепций высокого уровня. Оба естественным образом вписываются в Solana Sealevel Runtime, а также в то, как команда разрабатывает родные программы. Их цель состоит в том, чтобы поддерживать Move как язык первого уровня, так что Resources вели себя как нативные программы Solana.
Pipelining
Процесс проверки транзакций в сети Solana широко использует оптимизацию, распространенную в проектировании CPU, называемую pipelining. Pipelining является подходящим процессом, когда есть поток входных данных, который должен быть обработан последовательностью шагов, и за каждый из них отвечает за разное оборудование.
В сети Solana блок обработки транзакций прогрессирует через извлечение данных на уровне ядра, проверку подписи на уровне графического процессора, банковское обслуживание на уровне процессора и запись в пространстве ядра. К тому времени, как ТPU начнет отправлять блоки валидаторам, он уже извлекается в следующем наборе пакетов, проверяет их подписи и начинает начислять токены.
Между параллелизацией графического процессора в этом четырехступенчатом конвейере в любой момент, Solana TPU может прогрессировать на 50 000 транзакций одновременно. Все это может быть достигнуто с помощью компьютера стоимостью менее чем 5000 долларов. При разгрузке графического процессора на блок обработки транзакций Solana сеть может повлиять на эффективность одного узла.
Cloudbreak
Недостаточно просто масштабировать вычисления. Память, которая используется для отслеживания учетных записей, быстро становится недостаточным местом как по размеру, так и по скорости доступа. Например, общепринято, что LevelDB, локальный механизм баз данных, который используют многие современные цепочки, не может поддерживать более 5000 TPS.
Наивное решение заключается в поддержании глобального состояния в оперативной памяти. Однако неразумно ожидать, что машины потребительского класса будут иметь достаточно оперативной памяти для хранения. Для Solana разработчики разработали Cloudbreak, государственную архитектуру, оптимизированную для одновременных операций чтения и записи, распределенных по конфигурации SSD RAID 0. Каждый дополнительный диск добавляет емкость хранилища, доступную для цепных программ, а также увеличивает количество параллельных программ чтения и записи, которые могут выполнять в процессе.
В сочетании с дизайном транзакций эта архитектура поддерживает AOT (Ahead Of Time) выполнение транзакций. Как только транзакция наблюдается валидатором, Sealevel может начать предварительную выборку всех учетных записей с диска и подготовку среды выполнения к выполнению. Валидаторы и производители блоков могут даже начать выполнять транзакции до того, как они будут закодированы в блок, что позволяет разработчикам дополнительно оптимизировать время блокировки и задержки подтверждения.
Архиваторы
При 1GBPS блокчейн-сеть будет генерировать 4 петабайта данных в год для бухгалтерской книги. Хранение данных быстро станет основным вектором централизации, что опровергнет саму цель реализации блокчейна в процессе.
На Solana хранилище данных выгружается из валидаторов в сеть узлов, называемых архиваторами. Архиваторы не участвуют в консенсусе. История разбита на множество фрагментов и также закодировано стирание. Часто сеть будет просить архиваторов доказать, что они хранят данные, которые они должны хранить. Solana использует Proofs of Replication (PoRep), которые в значительной степени заимствованы у Filecoin.
Команда может использовать Proof of History для оптимизации создания PoReps. Узлы архиваторов, которые не участвуют в консенсусе, используют PoH для генерации легких доказательств, с помощью которых были реплицированы части бухгалтерской книги, и валидаторы могут проверять их очень большими партиями на графических процессорах. Архиваторы могут быть легкими узлами (например, ноутбуками). Благодаря кодам стирания и избыточности, сеть архиваторов может предложить гарантии доступности данных, превышающие все, что AWS или GCE когда-либо могли бы надеяться предоставить.
Выводы
В результате этих 8 основных инноваций, сеть Solana представляет собой молниеносную технологию распределенной бухгалтерской книги, которая всегда будет работать. Кроме того, система оптимизирует распространение данных, массово использует параллельные графические процессоры для обработки транзакций и не отягощает валидаторы с массовой историей хранимых цепей.
Программное обеспечение Solana разработано для того, чтобы позволить оборудованию работать на полную мощность. Таким образом, Solana масштабируется естественным образом с помощью пропускной способности, SSD и графических ядер. Это единственный блокчейн, который делает это, и именно так Solana достигает 50 000 TPS в сети из 200 физически различных узлов по всему миру.
Solana значительно выросла в течение 2020 года, и такие проекты, как Serum, Chainlink, Terra, Audius, USDC и USDT, присоединились к экосистеме Solana. Вот некоторые данные с момента запуска бета-тестирования Mainnet в начале года:
- Более 100 интеграций проектов, охватывающих вертикали DeFi, Blockchain Gaming и Web3
- Более 350 активных валидаторов, распределенных по всему миру
- 8,3 миллиарда транзакций по цепочке и подсчет
- Было создано более 54 миллионов блоков
- 4,9 миллиона уникальных кошельков SOL
- Более 600 000 глобальных защитников и членов сообщества
- Фонд Solana провел свой первый хакатон в четвертом квартале, и более 1000 разработчиков приняли участие в мероприятии.