From 466606fc2012b9f2888bd91bb1a35db8e5dd33d4 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Mon, 30 Dec 2024 17:49:09 +0800 Subject: [PATCH] Problem: negative coin amount error when query supply liquid of non BaseCoinUnit --- CHANGELOG.md | 1 + x/supply/keeper/keeper.go | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee1ea37ad..3f6891c0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - [#1088](https://github.com/crypto-org-chain/chain-main/pull/1088) Upgrade solomachine to `v0.1.4` and ibc-go to `v8.5.1`. * [#1091](https://github.com/crypto-org-chain/chain-main/pull/1091) Update cometbft to `0.38.13`, sdk to `v0.50.10` and memiavl to latest. - [#1091](https://github.com/crypto-org-chain/chain-main/pull/1091) Upgrade cometbft to v0.38.13, cosmos-sdk to `v0.50.10`. +- [#1097](https://github.com/crypto-org-chain/chain-main/pull/1097) Avoid negative coin amount error when query supply liquid of non BaseCoinUnit. *Dec 6, 2023* diff --git a/x/supply/keeper/keeper.go b/x/supply/keeper/keeper.go index 1db991f33..8e0c50741 100644 --- a/x/supply/keeper/keeper.go +++ b/x/supply/keeper/keeper.go @@ -137,9 +137,13 @@ func (k Keeper) GetTotalModuleAccountBalance(ctx sdk.Context, moduleNames ...str // GetLiquidSupply returns the total liquid supply in the system func (k Keeper) GetLiquidSupply(ctx sdk.Context) sdk.Coins { - totalSupply := k.GetTotalSupply(ctx) unvestedSupply := k.GetUnvestedSupply(ctx) moduleAccountBalance := k.GetTotalModuleAccountBalance(ctx, ModuleAccounts...) - - return totalSupply.Sub(unvestedSupply...).Sub(moduleAccountBalance...) + res := sdk.Coins{} + for _, balance := range moduleAccountBalance { + totalSupply := k.bankKeeper.GetSupply(ctx, balance.Denom) + totalSupply = totalSupply.Sub(sdk.NewCoin(balance.Denom, unvestedSupply.AmountOf(balance.Denom))) + res = append(res, totalSupply.Sub(balance)) + } + return res }