Skip to main content
Метод RPC getFeeForMessage позволяет оценить комиссию, которую сеть взимает за обработку указанного сообщения транзакции. Это помогает определить стоимость транзакции до ее отправки в сеть. Примечание о версии: этот метод доступен в solana-core версии 1.9 и новее. Для более ранних версий используйте getFees.

Распространенные сценарии использования

  • Оценка комиссии: определите предполагаемую комиссию за транзакцию (в лампортах) для конкретного сообщения.
  • Оптимизация затрат: проанализируйте комиссии для разных структур транзакций или в разное время.
  • Отображение в пользовательском интерфейсе: покажите пользователям предполагаемую стоимость транзакции до ее подписания и отправки.

Параметры запроса

  1. message (строка, обязательный): сообщение транзакции в кодировке base64. Его можно получить путем компиляции транзакции.
  2. config (объект, необязательный): объект конфигурации со следующими полями:
    • commitment (строка, необязательный): задает используемый уровень подтверждения. Значение по умолчанию — finalized.
    • minContextSlot (число, необязательный): минимальный слот, на котором можно обработать запрос.

Структура ответа

Поле result ответа JSON-RPC представляет собой объект со следующей структурой:
  • context (объект):
    • slot (u64): слот, на котором была рассчитана комиссия.
  • value (u64 | null): предполагаемая комиссия в лампортах. Значением может быть null, если комиссию невозможно определить (например, если хеш блока, используемый в сообщении, устарел или недействителен).

Примеры

1. Оценка комиссии для сообщения о простом переводе

В этом примере показано, как создать простой перевод, скомпилировать его сообщение и получить предполагаемую комиссию.

Рекомендации для разработчиков

  • Создание сообщения: чтобы использовать getFeeForMessage, необходимо правильно создать и сериализовать Message транзакции. Для этого нужно задать плательщика комиссии, инструкции и недавний хеш блока.
  • Недавний хеш блока: сообщение должно быть создано с недавним хешем блока. Если хеш блока слишком старый, значением value в ответе может быть null.
  • Базовая и приоритетная комиссии: этот метод возвращает базовую сетевую комиссию. В нее не входят дополнительные приоритетные комиссии, которые можно добавить к транзакции, чтобы повысить вероятность ее быстрой обработки при высокой нагрузке на сеть. Используйте getRecentPrioritizationFees для оценки приоритетных комиссий.
  • Лампорты: комиссия возвращается в лампортах (1 SOL = 1 000 000 000 лампортов).
  • Значение null: значение null для комиссии может указывать на проблемы с сообщением (например, недействительный хеш блока или некорректное сообщение) либо на то, что узел не может рассчитать для него комиссию при заданном уровне подтверждения или слоте.
В этом руководстве описаны необходимые шаги для использования метода RPC getFeeForMessage с целью оценки комиссий за транзакции в сети Solana.

Связанные методы

getLatestBlockhash

Получите недавний хеш блока для создания сообщений

getRecentPrioritizationFees

Оцените приоритетные комиссии для ускорения обработки