Отчет о последних событиях в сети Solana и обзор принятых мер по смягчению последствий.

Примерно в 20:30 UTC в субботу, 30 апреля, кластер Mainnet Beta компании Solana прекратил производство блоков в результате остановки. В течение следующих семи часов валидаторы слаженно работали и инициировали перезапуск сети. Производство блоков возобновилось в 03:30 UTC в воскресенье, 1 мая.

Что стало причиной сбоя?
Огромное количество входящих транзакций (6 миллионов в секунду) наводнило сеть, превысив 100 Гбит/с трафика на отдельных узлах. Есть свидетельства того, что боты пытались програмно выиграть новый NFT, который чеканился с помощью популярной программы Candy Machine.

Что мы делаем для предотвращения подобных ситуаций.

Предыдущее отключение Mainnet Beta произошло в сентябре 2021 года и длилось 17 часов. Отключение 30 апреля имеет общие черты с сентябрьским отключением, но в этот раз сеть продолжала функционировать, даже когда объем запросов на транзакции достиг 10 000% от уровня сентября, что отражает проделанную в предыдущих обновлениях работу по увеличению стабильности сети, сообществом валидаторов.

В настоящее время разрабатываются три меры по снижению стабильности и устойчивости сети.

QUIC — Чтобы повлиять на контроль над сетевым трафиком, основные протоколы Solana переделываются на базе QUIC, протокола, созданного Google, предназначенного для быстрой асинхронной связи, как UDP, но с сеансами и контролем потока, как TCP. После принятия этого протокола появится гораздо больше возможностей для адаптации и оптимизации приема данных.

QoS Учет объема транзакций. Пропускная способность сети имеет фиксированную емкость, и для ее эффективного использования необходимо определить приоритеты, чтобы положить конец существующей практике беспорядочного приема транзакций по принципу «первый пришел — первый обслужен» без учета источника.

Согласно этой модели узел с 0,5% долей будет иметь право передавать лидеру не менее 0,5% пакетов, а остальная часть сети и никакая комбинация оставшихся долей не сможет их полностью смести.

QoS сегодня находится в параллельной разработке с QUIC — и в совокупности эти две меры будут значительно эффективнее.

Fee-based execution priority — Приоритет выполнения на основе комиссии. После получения данных транзакции могут претендовать на изменение данных общей учетной записи. Этот спор решается простым порядком поступления данных в сеть в порядке живой очереди, не оставляя пользователям возможности выразить срочность выполнения их транзакций. Учитывая, что каждый может отправлять транзакции в сеть, взвешивание доли не подходит для такой расстановки приоритетов. Вместо этого в программу Compute Budget вводится новая инструкция, предлагающая пользователям возможность указать произвольную «дополнительную плату», которая будет взиматься при выполнении транзакции и включении ее в блок.

source