Кто платит и кто подписывает

`Granter` выделяет баланс только на сетевую комиссию. Сообщения внутри транзакции подписывает `grantee` и другие обязательные участники. `Feegrant` не разрешает отправлять токены, голосовать или стейкать от имени плательщика. Для таких полномочий нужен отдельный `Authz grant`. Перед подписью проверьте, что именно показывает кошелёк.

Запросите запись по упорядоченной паре `granter`–`grantee`. Одновременно сохраните идентификатор сети (`chain-id`) и высоту ответа. Для пары может существовать только одна запись, а выдать её самому себе нельзя. Переставленные адреса или другая Cosmos-сеть дадут другой результат.

Три вида разрешения на оплату комиссии отвечают на разные вопросы

Как читать три вида разрешения на оплату комиссии
ТипКак устроенЧто сверить перед отправкой
`BasicAllowance`Общий остаток `spend_limit` и необязательный срок `expiration`Точный `denom`, сумму комиссии и время блока
`PeriodicAllowance`Общий предел плюс бюджет на каждый период`period_can_spend`, `period_reset` и внутренний базовый лимит
`AllowedMsgAllowance`Оборачивает один из двух видов и фильтрует сообщенияВнутренний `allowance` и каждый `type URL` из `allowed_messages`
Как читать три вида разрешения на оплату комиссии
Тип
`BasicAllowance`
Как устроен
Общий остаток `spend_limit` и необязательный срок `expiration`
Что сверить перед отправкой
Точный `denom`, сумму комиссии и время блока
Тип
`PeriodicAllowance`
Как устроен
Общий предел плюс бюджет на каждый период
Что сверить перед отправкой
`period_can_spend`, `period_reset` и внутренний базовый лимит
Тип
`AllowedMsgAllowance`
Как устроен
Оборачивает один из двух видов и фильтрует сообщения
Что сверить перед отправкой
Внутренний `allowance` и каждый `type URL` из `allowed_messages`

Сначала посмотрите поле `@type`. У `AllowedMsgAllowance` затем раскройте внутренний `allowance`. Пустой `spend_limit` означает отсутствие общего лимита, а пустой `expiration` — отсутствие срока. Если пусты оба поля, запись действует до отзыва. Значение `null` здесь не равно нулю.

Проверьте будущую транзакцию по текущему состоянию

Пять сверок перед подписью

  • комиссия указана в том же `denom`, который есть в остатке `allowance`;
  • сумма помещается и в общий предел, и в текущий периодический остаток;
  • `expiration` и `period_reset` сравниваются со временем блока, а не с часами телефона;
  • каждый `sdk.Msg` разрешён фильтром `allowed_messages`, если он установлен;
  • в подписанных байтах указан нужный `fee granter`; в интерфейсе командной строки (`CLI`) для этого часто служит `--fee-granter`.

`Feegrant` проверяется и расходуется предварительным обработчиком (`ante handler`) модуля `x/auth`. Это происходит до исполнения сообщений. Поэтому новый остаток подтверждает оплату комиссии, но не успех `sdk.Msg`. После включения транзакции проверьте её `code`, события и ожидаемое изменение состояния. Затем отдельно запросите новый остаток `allowance`. Устройство RPC поможет разобрать расхождение ответов.

Если запись не найдена, снова сверьте сеть, порядок адресов и высоту. При нехватке бюджета проверьте точный `denom` и текущий период. Запрещённое сообщение удалите или явно измените `allowance`. Если платит `grantee`, пересоберите транзакцию и проверьте подписанные байты.

Как отозвать запись и не принять отправку за результат

Короткий путь отзыва

  1. 1
    Соберите `MsgRevokeAllowance`

    Укажите исходного `granter` и нужного `grantee`. Транзакцию подписывает плательщик; для неё нужна собственная комиссия.

  2. 2
    Получите сетевой результат

    Сохраните хеш транзакции, итоговый `code` и события. Одна отправка на RPC-узел ещё ничего не отозвала.

  3. 3
    Повторите запрос

    На более поздней высоте снова запросите `allowance` для той же пары. Отзыв завершён, когда запись отсутствует.

Когда лучше остановиться

  • неизвестны `chain-id`, точные адреса или высота ответа;
  • интерфейс скрывает `@type` либо внутреннюю обёртку `allowance`;
  • пустые `spend_limit` и `expiration` без оснований считают нулевым лимитом;
  • `Feegrant` смешивают с `Authz` и обещают полномочия плательщика;
  • для проверки просят seed-фразу, закрытый ключ или удалённый доступ;
  • отзыв отправлен, но нет успешного `code` и свежего запроса без записи.

Источники

Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.

  1. Cosmos SDK Feegrant — concepts, queries and transactions Cosmos SDK · Проверено 25 августа 2026 г. в 00:08 GMT+5
  2. Cosmos SDK feegrant protobuf types Cosmos SDK · Проверено 25 августа 2026 г. в 00:08 GMT+5
  3. Cosmos SDK feegrant transaction messages Cosmos SDK · Проверено 25 августа 2026 г. в 00:08 GMT+5
  4. Cosmos SDK keeper — consuming and removing grants Cosmos SDK · Проверено 25 августа 2026 г. в 00:08 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.