Как узнать доступный к расходованию баланс в Cosmos

На вестинговом счёте могут лежать монеты, срок разблокировки которых ещё не наступил. Для формы перевода нужна доступная сумма по выбранному номиналу.

Запросите доступные средства

Запишите в ADDR адрес счёта, в GRPC — адрес TLS gRPC с поддержкой reflection. В примере сеть предоставляет метод банковского модуля и использует номинал uatom.

grpcurl -d "{\"address\":\"$ADDR\",\"denom\":\"uatom\"}" "$GRPC" cosmos.bank.v1beta1.Query/SpendableBalanceByDenom

Если общий баланс равен 9 000 000 uatom, а запрос вернул 2 000 000, вторая сумма задаёт предел до учёта комиссии. Обрабатывайте значение как целое число минимальных единиц.

Учтите оплату комиссии

Если комиссию платит тот же счёт в uatom, вычтите её до предложения максимальной суммы. Отдельный плательщик или разрешение на оплату комиссии меняет расчёт. При неизвестном методе сверьте версию SDK этой сети. github.com Cosmos SDK Query API