Skip to main content

Правило чаевых

Каждая транзакция, которую вы отправляете через Apex, должна содержать ровно одни чаевые, которые отвечают всем этим условиям:
1

Перевод SystemProgram

Чаевые представляют собой обычную инструкцию SystemProgram::Transfer на один из опубликованных аккаунтов для чаевых Apex.
2

Верхний уровень

Перевод является инструкцией верхнего уровня в транзакции. Перевод, сделанный изнутри вашей программы через CPI, не считается.
3

Оплачены подписантом

Аккаунт, который платит чаевые, подписывает транзакцию. Он не обязан быть плательщиком комиссии.
4

Аккаунт для чаевых в статических ключах

Аккаунт для чаевых присутствует в статических ключах аккаунтов транзакции. Не загружайте его через address lookup table.
5

Не ниже минимума вашего тарифа

Минимум стандартного тарифа составляет 0.001 SOL (1,000,000 lamports). Тариф вашего ключа может задавать другой минимум.
Транзакция без чаевых, с несколькими чаевыми или с чаевыми ниже вашего минимума отклоняется до того, как будет куда-либо отправлена. Отклонение сообщает, какое правило нарушено, а сообщение о чаевых ниже минимума указывает ваш минимум. См. Ошибки и лимиты запросов.

Вы платите, только когда транзакция попала в блок

Чаевые находятся внутри вашей транзакции. Если транзакция не попала в блок, перевод не исполняется, и вы ничего не платите. Отклонённая, просроченная или отброшенная транзакция не стоит вам чаевых.

Получите аккаунты для чаевых

Вызовите JSON-RPC getTipAccounts на любом эндпоинте Apex. API-ключ для этого не нужен.
Ответ представляет собой массив адресов в base58:
Получите список при запуске и закэшируйте его. Выбирайте аккаунт случайным образом для каждой транзакции. Распределение чаевых по аккаунтам избавляет ваши транзакции от конкуренции за блокировку записи на одном и том же аккаунте.

Опубликованные аккаунты

Аккаунты для чаевых в mainnet, все они хранилища программы чаевых 9ig7pd4gqe2m16ACGPbPo4HfMGD3ba38poDhXEayx7EF. Авторитетный список даёт getTipAccounts: только его эндпоинт принимает, и изменения появляются там первыми. Каждый адрес начинается с APeX, так что подменённый аккаунт заметен сразу.

Добавьте инструкцию чаевых

Добавьте её в список инструкций транзакции рядом с вашими собственными инструкциями. В разделе Быстрый старт приведены полные программы.

Куда идут чаевые

Аккаунты для чаевых являются хранилищами ончейн-программы чаевых OrbitFlare. Списывать с них средства может только программа. Когда вашу транзакцию доставляет в блок именно путь Jito, чаевые за вычетом базовой комиссии 5,000 lamports идут ставкой в Jito в том же бандле, что и ваша транзакция. Отдельные чаевые Jito добавлять не нужно. Одни чаевые Apex покрывают все три пути. Поэтому более крупные чаевые означают более крупную ставку на аукционе Jito. Вы платите одну и ту же сумму, какой бы путь ни доставил транзакцию в блок, потому что чаевые и есть перевод, который вы подписали.

Чем чаевые отличаются от приоритетной комиссии

Apex доставляет вашу транзакцию лидеру. Планировщик лидера по-прежнему упорядочивает транзакции по приоритетной комиссии, то есть по цене вычислительной единицы, умноженной на лимит вычислительных единиц. Задавайте оба значения в каждой транзакции:
  • Лимит вычислительных единиц, близкий к тому, что транзакция реально использует. Завышенный лимит снижает ваш эффективный приоритет на единицу и впустую занимает место в блоке.
  • Цена вычислительной единицы, которая соответствует текущему рынку для аккаунтов, которые вы затрагиваете.
Эти инструкции предназначены для транзакций legacy и v0. Транзакция v1 задаёт вычислительный бюджет в TransactionConfig сообщения. Рекомендации по выбору обоих значений см. в разделе Лучшие практики.