diff --git a/CHANGELOG.md b/CHANGELOG.md index 23876f75457..f6c44942ecf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased * [#8128](https://github.com/osmosis-labs/osmosis/pull/8128) Cache the result for poolmanager.GetPoolModule +* [#8148](https://github.com/osmosis-labs/osmosis/pull/8148) Remove the deserialization time for GetDefaultTakerFee() ## v25.0.0 diff --git a/x/poolmanager/keeper.go b/x/poolmanager/keeper.go index 8442384cf26..f28ed094e22 100644 --- a/x/poolmanager/keeper.go +++ b/x/poolmanager/keeper.go @@ -41,6 +41,9 @@ type Keeper struct { poolModules []types.PoolModuleI paramSpace paramtypes.Subspace + + defaultTakerFeeBz []byte + defaultTakerFeeVal sdk.Dec } func NewKeeper(storeKey storetypes.StoreKey, paramSpace paramtypes.Subspace, gammKeeper types.PoolModuleI, concentratedKeeper types.PoolModuleI, cosmwasmpoolKeeper types.PoolModuleI, bankKeeper types.BankI, accountKeeper types.AccountI, communityPoolKeeper types.CommunityPoolI, stakingKeeper types.StakingKeeper, protorevKeeper types.ProtorevKeeper) *Keeper { diff --git a/x/poolmanager/taker_fee.go b/x/poolmanager/taker_fee.go index 205ba5a7c2b..c8bda6da48a 100644 --- a/x/poolmanager/taker_fee.go +++ b/x/poolmanager/taker_fee.go @@ -1,6 +1,8 @@ package poolmanager import ( + "bytes" + "encoding/json" "fmt" sdk "github.com/cosmos/cosmos-sdk/types" @@ -12,10 +14,18 @@ import ( txfeestypes "github.com/osmosis-labs/osmosis/v25/x/txfees/types" ) -func (k Keeper) GetDefaultTakerFee(ctx sdk.Context) sdk.Dec { - var defaultTakerFee sdk.Dec - k.paramSpace.Get(ctx, types.KeyDefaultTakerFee, &defaultTakerFee) - return defaultTakerFee +func (k *Keeper) GetDefaultTakerFee(ctx sdk.Context) sdk.Dec { + defaultTakerFeeBz := k.paramSpace.GetRaw(ctx, types.KeyDefaultTakerFee) + if !bytes.Equal(defaultTakerFeeBz, k.defaultTakerFeeBz) { + var defaultTakerFeeValue sdk.Dec + err := json.Unmarshal(defaultTakerFeeBz, &defaultTakerFeeValue) + if err != nil { + defaultTakerFeeValue = sdk.ZeroDec() + } + k.defaultTakerFeeBz = defaultTakerFeeBz + k.defaultTakerFeeVal = defaultTakerFeeValue + } + return k.defaultTakerFeeVal } // SetDenomPairTakerFee sets the taker fee for the given trading pair.