Local Fee Market (Solana): локальные рынки комиссий и priority fees

Локальные рынки комиссий — это механизм ценообразования в Solana, при котором «стоимость приоритета» формируется локально вокруг перегруженных участков состояния (аккаунтов/приложений), а не глобально на всю сеть. В пике нагрузки конкурируют только те транзакции, которые касаются одних и тех же «горячих» данных; операции, не имеющие отношения к очагу, проходят по базовой цене. Такой дизайн логично вытекает из модели аккаунтов и параллельного исполнения Sealevel (Solana): параллельное исполнение, рантайм и планировщик и является одной из причин устойчивости UX Solana при массовых событиях.

Local Fee Market (Solana): локальные рынки комиссий и priority fees

Коротко про локальные рынки комисси Solana

Откуда берутся «локальные рынки»

В Solana транзакция заранее объявляет, какими аккаунтами (единицами состояния) она будет пользоваться и с какими правами. Планировщик исполняет независимые наборы аккаунтов параллельно, а пересекающиеся по записи — сериализует. Если множество пользователей одновременно пытаются писать в один и тот же аккаунт (например, состояние пула ликвидности или записи минта коллекции), возникает очаг конкуренции: именно туда «стекаются» приоритетные доплаты, а «цена» за место в ближайших слотах растёт.

Такие очаги и образуют «локальные рынки» — микроаукционы за право быть обработанным раньше в конкретной зоне данных. В результате нет необходимости «поднимать цену» для всей сети: конкуренция остаётся локализованной.

Как это выглядит для пользователя

  • Если ваша операция не трогает горячий аккаунт, базовая комиссия и задержка остаются близки к норме: вы не платите за чужой ажиотаж.
  • Если операция касается очага, вы соревнуетесь с похожими транзакциями. Помогают:
    1. разумная приоритетная доплата;
    2. корректные ретраи с горизонтом нескольких слотов;
    3. выбор времени (перенос вне пиков).
  • «Прыжки» задержек (p95/p99) в дашбордах чаще отражают локальные пики, а не «слом всей сети».

Как это устроено технически (интуитивно)

  1. Узел-лидер принимает поток транзакций и строит партии, учитывая пересечения по аккаунтам на запись.
  2. Для аккаунтов/программ, где много write-конфликтов, формируется локальная очередь.
  3. Внутри такой очереди порядок транзакций определяется эффективной ценой: базовая комиссия + приоритетная доплата.
  4. Параллельно другие партии, которые не пересекаются по данным с «очагом», исполняются одновременно, не мешая друг другу.

Именно поэтому Solana «держит цену» для большинства переводов, когда где-то идёт массовый минт или всплеск арбитражей: перегрев изолирован.

Сравнение с «глобальными» рынками газа

Аспект Локальные рынки (Solana) Глобальный газ (классическая L1-модель)
Область конкуренции Вокруг «горячих» аккаунтов/приложений Весь блок/сеть целиком
Влияние пиков dApp на переводы Минимальное вне очага Рост цен для всех операций
Планирование исполнения Параллельные партии по независимым данным Одна глобальная очередь
Настройка приоритета Прицельная доплата в очаге Повышение цены «в целом»
UX при хайпе Стабильно вне очага, локальные всплески внутри Повсеместный рост фи и задержек

Роль приоритетной доплаты

Priority fee — это дополнительная сумма к базовой комиссии, которая влияет на порядок внутри локального рынка. Важно понимать:

Что делать разработчикам dApp

Активный дизайн может радикально снизить локальную конкуренцию и улучшить UX:

  • Шардируйте состояние. Вместо одного «центрального» аккаунта используйте множество аккаунтов по пользователям/рынкам/ключам. Это снижает write-конфликты и «размазывает» нагрузку.
  • Разделяйте «горячее» и «холодное». Константы и редко меняющиеся поля вынесите в отдельные read-only аккаунты; событие записи должно затрагивать как можно меньше объектов.
  • Сужайте инструкции. Несколько узких инструкций лучше, чем один «комбайн» — планировщик утилизирует параллелизм эффективнее.
  • Подсказки UX. В интерфейсе показывайте подсказки по приоритетной доплате: пресеты и индикаторы локальной очереди.
  • Ретраи и TTL. Закладывайте аккуратные ретраи с ограниченными окнами (несколько слотов) вместо «бомбардировки» дубликатами.

Связанный технический контекст раскрыт на странице Sealevel (Solana): параллельное исполнение, рантайм и планировщик (как планировщик формирует партии) и в обзоре архитектуры Архитектура Solana: Объяснение Высокой Производительности, PoH, Sealevel.

Типовые сценарии «горячих» рынков

  • Минт коллекций/NFT-ивенты. Сотни тысяч пользователей пытаются записать в одни и те же аккаунты минта/аллокейшна.
  • DEX-арбитраж и ликвидации. Ордербуки/пулы становятся «узким горлышком»; операции пишут в общие записи состояния.
  • Популярные платежные маршруты. Если эквайринг/кошелёк оформляют записи через общий аккаунт, он превращается в очаг.

В каждом случае выход один: уменьшать конфликтность за счёт дизайна аккаунтов и схем доступа.

Диагностика и метрики

Что смотреть Почему это важно Как интерпретировать
Доля write-конфликтов Индикатор «узких мест» в данных Высокая доля → нужно шардирование/разделение аккаунтов
p95/p99 задержек Пользовательский опыт при пике Рост хвостов в конкретных dApp показывает локальные очереди
Распределение priority fee Прокси-сигнал «жары» в очаге Пики в одной зоне при «холодной» сети — локальный рынок работает как задумано
Ошибки CPI/прав Побочные эффекты перегрева «account not found/borrowed as immutable» часто указывают на неверный набор аккаунтов/режимов

Практика: логируйте наборы аккаунтов транзакций, агрегируйте статистику конфликтов по аккаунтам/программам, а не «в среднем по больнице». Это позволит увидеть именно те зоны, где формируются локальные рынки.

Частые вопросы (FAQ)

Почему моя комиссия выросла, хотя «по сети всё дёшево»? Почти наверняка вы попали в локальный рынок вокруг «горячих» аккаунтов конкретной dApp. Попробуйте разумную доплату к приоритету, ретраи или другое время.

Поможет ли поднять приоритет «вдвое»? Если вы действительно конкурируете в очаге — да, это повысит шанс быть обработанным раньше. Если ваша операция вне очага, повышенная доплата не даст выигрыша.

Можно ли «обойти» локальные рынки? Как пользователь — только временем/маршрутом и приоритетной доплатой. Как разработчик — уменьшать конфликтность данных (шардирование, узкие инструкции, разделение горячего/холодного).

Не приведёт ли это к скрытой «цензуре»? Механизм рынок-ориентированный: доступ определяется ценой приоритета в конкретной зоне, а не «глобальным» повышением барьеров. Для борьбы с вредными перестановками и фронт-раннингом применяются «пакеты/бандлы» и приватные каналы заявок (см. разделы о MEV в «См. также»).

Мини-глоссарий

  • Очаг (горячая зона) — набор аккаунтов/программа, вокруг которых накопилась конкуренция на запись.
  • Priority fee — приоритетная доплата к базовой комиссии внутри локального рынка.
  • Write-конфликт — ситуация, когда две транзакции хотят писать в один и тот же аккаунт.
  • Партия (batch) — группа транзакций без write-конфликтов, исполняемая параллельно.

См. также

MEV (Maximal Extractable Value) в блокчейнах и на Solana — определение и примеры Jito Block Engine: частные бандлы, аукционы и MEV на Solana — как это работает

Task Runner