Запрети мне любить Solana.
Эпиграф
Как говорит Anatoly Yakovenko ( CEO Solana ):
" Есть 8 ключевых технологий, которые делают Solana самым производительным блокчейном в мире. "
В этой работе я бы хотел познакомить вас с частью из них. О самой большой и сложной теме Proof of History я уже рассказывал, но рассказывать о ещё 7 аспектах будет весьма долго и нудно для одной лекции так что остановимся на парочке.
- Proof of History (POH)— часы до консенсуса;
- Tower BFT — PoH-оптимизированная версия PBFT;
- Турбина — протокол блочного распространения;
- Gulf Stream— протокол пересылки транзакций без Mempool;
- Sealevel — время выполнения параллельных смарт-контрактов;
- Pipelining — блок обработки транзакций для оптимизации валидации
- cloudbreak— горизонтально масштабируемая база данных аккаунтов;
- Архиваторы — хранилище распределенного реестра
P.s с ссылками на личные статьи от Anatoly о каждой.
Так же его личный Medium.
Sealevel
Введение:
Как по мне данный аспект Solana можно назвать центральным и его наличие, позволяет убрать все ограничения по пропускной способности и масштабируемости в данной среде на программном уровне, оставив ограничения только на техническом. То есть по программному обеспечению Solana не имеет ограничений и сколько мы дадим её мощностей столько она использует и не важно на сколько совершенными они будут, все будет использовано одинаково эффективно.
Технология:
Sealevel - это механизм параллельной обработки транзакций на блокчейне Solana.
Прежде чем мы начнем, следует учитывать, что все среды выполнения EVM и EOS на основе WASM являются однопоточными. Это означает, что один контракт за раз изменяет состояние блокчейна. Тут поясню:
В большинстве классических блокчейнов ( ethereum/bitcoin ) за раз может обработаться только что-то одно, то есть мы не можем за раз обработать два блока или внести изменения в блокчейн двумя разными контрактами хоть они и не конфликтуют с друг другом. Если проводить аналогию, можно это сравнить с однопоточным процессором в компьютере который выполняет все поставленные перед ним задачи последовательно.
Sealevel расширяет наши возможности, позволяя делать задачи параллельно. То есть по сути деля процессор много поточным.
Sealevel позволяет блокчейну обрабатывать несколько транзакций одновременно, если они не зависят друг от друга. Например:
- Если две транзакции не касаются одних и тех же данных (например, один пользователь покупает пирог, а другой — сок), их можно обработать параллельно.
- Если они затрагивают одни и те же данные (например, оба покупателя хотят купить одно и то же яблоко), Solana заставит их подождать друг друга, чтобы избежать ошибок.
Я думаю нет нужды пояснять в чем преимущество относительно последовательной модели, но ест и минусы давайте затронем и их.
- Сложность разработки: Параллельная обработка требует от разработчиков тщательно продумывать архитектуру своих приложений. Смарт-контракты должны быть спроектированы таким образом, чтобы избежать конфликтов данных.
- Риски параллелизма: Если транзакции затрагивают одни и те же данные (например, два пользователя пытаются провести операции с одним и тем же активом), система должна остановить одну из них и разрешить конфликт.
- Требования к оборудованию: Узлы в сети Solana должны обладать высокой вычислительной мощностью, чтобы поддерживать быструю и эффективную обработку транзакций. Это ограничивает участие мелких узлов.
- Централизация: Из-за высоких требований к оборудованию количество узлов может быть ограничено, что потенциально ведёт к централизации.
Итог:
Sealevel — это технология, которая даёт Solana преимущество в скорости и масштабируемости, делая её одним из самых быстрых блокчейнов. Но из-за свой технической сложности она накладывает свои ограничения как на разработчиков так и на валидаторов сети. Ну и не стоит забывать что данная технология несет в себе большой потенциал для ошибок и сбоев так как контролировать правомерность параллельных потоков информации гораздо тяжелее чем последовательного. Но разработчики успешно справились с этой задачей и довели реализацию технологии до логичного завершения. Как это проверить? Можно обратится к графику Uptime и за весь 2024 год был всего один день когда
Тут можно посмотреть всю статистику - тык.
Cloudbreak
Sealevel позволяет блокчейну проводить операции параллельно друг с другом тем сам давая возможность ему работать быстрее, но какой это имеет смысл если база данных на которую проводится воздействие медленная и линейная. По своей сути Cloudbreak занимается тем что оптимизирует стандартную структуру баз данных под работу в парольной среде.
Cloudbreak - это структура данных, которая оптимизирует чтение и запись данных в памяти. Это достигается через индексацию и разделение данных на разные сегменты памяти.
Основные элементы работы Cloudbreak:
- Log-Structured Merge Trees (LSM Trees): Cloudbreak использует концепцию LSM-деревьев для эффективного ведения записей и поиска данных.
LSM-дерево — это структура данных, которая позволяет распределять данные по слоям памяти и оперировать ими гораздо быстрее.
Основные аспекты LSM:
- Оперативное хранилище (буфер): В LSM-дереве буфер — место куда сначала записываются все новые данные. Запись в этот буфер очень быстрая, и все новые данные хранятся здесь, пока не накопится определённое количество.
- Записи на диске (основное хранилище): Когда буфер заполняется, данные нужно куда-то деть так как на подходе уже новые, а место нет тогда система сбрасывает их в хранилище. В LSM-дереве это называется сброс на диск. Когда данные накапливаются в буфере, их сразу записывают в хранилище (долговременную память), но в сжатом и упорядоченном виде.
- Слияние полок (объединение данных): . Данные периодически перемещаются между уровнями хранения, где происходит их упорядочивание и удаление старых версий информации (если данные обновились). Это помогает поддерживать структуру чистой и быстрой для поиска.
- Поиск в библиотеке: В LSM-дереве поиск данных сначала начинается с буфера (в памяти), а если там нужных данных нет, они ищутся на диске. Благодаря тому, что данные на диске хранятся в упорядоченном виде, поиск происходит быстрее.
Хорошую аналогию можно привести с библиотекой, если кому интересно вот текстовый вариант аналогии.
Следующим элементы работы Cloudbreak является:
- Параллельное чтение и запись: Cloudbreak позволяет одновременно производить чтения и запись файла если эти две операции не конфликтуют друг с другом. Cloudbreak делает это с помощью распределения данных в разных частях памяти и разделение данных на сегменты ( по сути тот же Sharding) к которым можно обращаться независимо.
- Горизонтальное масштабирование: Cloudbreak легко масштабируется за счёт своей способности добавлять новые "слои" памяти для хранения данных. Когда нагрузка на сеть увеличивается, Cloudbreak способен динамически распределять данные по новому пространству памяти, сохраняя производительность.
- Преимущества индексации данных: В Cloudbreak данные не просто записываются, они также эффективно индексируются. Это значит, что поиск данных (например, нахождение конкретной транзакции или аккаунта) происходит очень быстро, даже если таких данных в системе огромное количество.
Итог:
Cloudbreak — это просто технология которая оптимизирует базы данных для возможности параллельной работы с ней и являет собой прямой компонент Sealevel, есть очень краткий и понятый водосик который наглядно показывает процесс взаимодействия Cloudbreak и Sealevel.
Turbine
Если говорить просто, то Turbine решает проблему узкого горлышка классических блокчейнов.
В классических блокчейнах каждый узел вынужден отправлять блоки данных всем остальным узлам напрямую и в полном объёме что приводит к значительным затратам пропускной способности и времени, особенно с увеличением размера сети и кол-ва узлов.
С увеличением размера сети, передача данных становится «узким местом» для масштабируемости, так как каждый узел должен обмениваться информацией с огромным количеством других узлов и то время что уходит на " рассылку " блоков можно было бы использвать на создание новых блоков.
Как эту проблему решает Turbine?
Turbine заимствует идеи из протоколов распределенных систем и использует технику под названием sharding (шардирование), которая делит информацию на маленькие части и отправляет их небольшими порциями, что упрощает передачу данных.
Основные особенности работы Turbine:
- Разделение данных на части: Вместо того чтобы передавать весь блок данных, Turbine разбивает его на маленькие кусочки (фрагменты). Эти фрагменты передаются между узлами параллельно.
- Группы узлов (clustering): Узлы делятся на небольшие группы. В Turbine каждый узел отвечает за передачу данных только ограниченному числу других узлов, а не всей сети, что уменьшает требования к пропускной способности.
- Графическая структура передачи данных: Turbine использует принцип передачи по деревовидной структуре (tree-like structure). Один узел передает данные нескольким другим, затем каждый из них передает данные дальше по сети. Это позволяет передавать информацию очень быстро даже по мере увеличения числа узлов.
- Реконструкция данных: Получив несколько фрагментов от разных узлов, каждый узел может восстановить полные данные блока с помощью специальных алгоритмов восстановления (например, с использованием кодов Рида-Соломона).
Итог: Данная технология позволяет уменьшить нагрузку на одного валидатора путем распределения её по всей массе участников тем самым уменьшая требования к техническим характеристиками этого валидатора что уже в свою очередь делает возможность стать валидатором - проще. Ну уже это подтягивает за собой децентрализацию.
Эпилог
Если подводить какой-то общий смысл всего сказанного, то основной принцип работы Solana это разделяй и властвуй, данный блокчейн в себе воплотил идеальную педантичность в работе с данными, сами данные сегментированы и доступны, подготовлены к работе. Среда исполнения позволяет контрактам работать параллельно, сама сеть может меняться так же параллельно. Да, это все на техническом уровне выше чем классика от этого раньше постоянно возникали ошибки, сеть ложилась. Но команда не стоит на месте и уже в данный момент сеть работает с прекрасным апТаймом. Так же набор данных технологий по сути архитектурно не ограничен ничем кроме мощности и идеальности вычислительных систем так что блокчейн может продолжать масштабироваться по суть до бесконечности