Как узнать комиссию транзакции Solana до подписания
Для предпросмотра перевода кошельку нужна комиссия именно того сообщения, которое увидит пользователь. RPC принимает сериализованное сообщение до добавления подписей.
Подготовьте сообщение
Сформируйте список аккаунтов и инструкций, включая параметры Compute Budget. Добавьте свежий blockhash, сериализуйте сообщение legacy или v0, закодируйте байты в base64 и подставьте строку ниже. Префикс количества подписей и сами подписи из сетевого формата транзакции находятся за пределами сообщения.
{
"jsonrpc": "2.0",
"id": 1,
"method": "getFeeForMessage",
"params": [
"BASE64_MESSAGE",
{
"commitment": "confirmed"
}
]
}
Покажите оценку и обновляйте её при изменениях
При обычном переводе 1 000 000 лампортов и расчётной комиссии 5 000 со счёта отправителя спишут 1 005 000, если он сам оплачивает комиссию. Дополнительные инструкции перевода или создания аккаунта меняют итог. Храните комиссию отдельным полем.
Значение null означает, что оценка не получена. Возьмите свежий blockhash, пересоберите сообщение и повторите запрос. Если пользователь изменил приоритетную цену, пересчитайте комиссию до подписания.