feat: expose HasMetadata on bank Keeper (#10134)
<!-- Add a description of the changes that this PR introduces and the files that are the most critical to review. --> Add `HasMetaData` to bank keeper API. --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct `docs:` prefix in the PR title - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the [documentation writing guidelines](https://github.com/cosmos/cosmos-sdk/blob/master/docs/DOC_WRITING_GUIDELINES.md) - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct `docs:` prefix in the PR title - [ ] confirmed all author checklist items have been addressed - [ ] confirmed that this PR only changes documentation - [ ] reviewed content for consistency - [ ] reviewed content for thoroughness - [ ] reviewed content for spelling and grammar - [ ] tested instructions (if applicable)
This commit is contained in:
parent
8378ba7e9f
commit
8ebda84c89
@ -87,6 +87,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
||||
|
||||
### Improvements
|
||||
|
||||
* (x/bank) [\#10134](https://github.com/cosmos/cosmos-sdk/pull/10134) Add `HasDenomMetadata` function to bank `Keeper` to check if a client coin denom metadata exists in state.
|
||||
* (store) [\#10026](https://github.com/cosmos/cosmos-sdk/pull/10026) Improve CacheKVStore datastructures / algorithms, to no longer take O(N^2) time when interleaving iterators and insertions.
|
||||
* (types) [\#10076](https://github.com/cosmos/cosmos-sdk/pull/10076) Significantly speedup and lower allocations for `Coins.String()`.
|
||||
* (x/bank) [\#10022](https://github.com/cosmos/cosmos-sdk/pull/10022) `BankKeeper.SendCoins` now takes less execution time.
|
||||
|
||||
@ -28,6 +28,7 @@ type Keeper interface {
|
||||
GetPaginatedTotalSupply(ctx sdk.Context, pagination *query.PageRequest) (sdk.Coins, *query.PageResponse, error)
|
||||
IterateTotalSupply(ctx sdk.Context, cb func(sdk.Coin) bool)
|
||||
GetDenomMetaData(ctx sdk.Context, denom string) (types.Metadata, bool)
|
||||
HasDenomMetaData(ctx sdk.Context, denom string) bool
|
||||
SetDenomMetaData(ctx sdk.Context, denomMetaData types.Metadata)
|
||||
IterateAllDenomMetaData(ctx sdk.Context, cb func(types.Metadata) bool)
|
||||
|
||||
@ -73,7 +74,6 @@ func (k BaseKeeper) GetPaginatedTotalSupply(ctx sdk.Context, pagination *query.P
|
||||
supply = supply.Add(sdk.NewCoin(string(key), amount))
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@ -231,6 +231,13 @@ func (k BaseKeeper) GetDenomMetaData(ctx sdk.Context, denom string) (types.Metad
|
||||
return metadata, true
|
||||
}
|
||||
|
||||
// HasDenomMetaData checks if the denomination metadata exists in store.
|
||||
func (k BaseKeeper) HasDenomMetaData(ctx sdk.Context, denom string) bool {
|
||||
store := ctx.KVStore(k.storeKey)
|
||||
store = prefix.NewStore(store, types.DenomMetadataPrefix)
|
||||
return store.Has([]byte(denom))
|
||||
}
|
||||
|
||||
// GetAllDenomMetaData retrieves all denominations metadata
|
||||
func (k BaseKeeper) GetAllDenomMetaData(ctx sdk.Context) []types.Metadata {
|
||||
denomMetaData := make([]types.Metadata, 0)
|
||||
|
||||
@ -1001,6 +1001,8 @@ func (suite *IntegrationTestSuite) TestSetDenomMetaData() {
|
||||
|
||||
actualMetadata, found := app.BankKeeper.GetDenomMetaData(ctx, metadata[1].Base)
|
||||
suite.Require().True(found)
|
||||
found = app.BankKeeper.HasDenomMetaData(ctx, metadata[1].Base)
|
||||
suite.Require().True(found)
|
||||
suite.Require().Equal(metadata[1].GetBase(), actualMetadata.GetBase())
|
||||
suite.Require().Equal(metadata[1].GetDisplay(), actualMetadata.GetDisplay())
|
||||
suite.Require().Equal(metadata[1].GetDescription(), actualMetadata.GetDescription())
|
||||
@ -1132,18 +1134,19 @@ func (suite *IntegrationTestSuite) TestBalanceTrackingEvents() {
|
||||
}
|
||||
|
||||
func (suite *IntegrationTestSuite) getTestMetadata() []types.Metadata {
|
||||
return []types.Metadata{{
|
||||
Name: "Cosmos Hub Atom",
|
||||
Symbol: "ATOM",
|
||||
Description: "The native staking token of the Cosmos Hub.",
|
||||
DenomUnits: []*types.DenomUnit{
|
||||
{"uatom", uint32(0), []string{"microatom"}},
|
||||
{"matom", uint32(3), []string{"milliatom"}},
|
||||
{"atom", uint32(6), nil},
|
||||
return []types.Metadata{
|
||||
{
|
||||
Name: "Cosmos Hub Atom",
|
||||
Symbol: "ATOM",
|
||||
Description: "The native staking token of the Cosmos Hub.",
|
||||
DenomUnits: []*types.DenomUnit{
|
||||
{"uatom", uint32(0), []string{"microatom"}},
|
||||
{"matom", uint32(3), []string{"milliatom"}},
|
||||
{"atom", uint32(6), nil},
|
||||
},
|
||||
Base: "uatom",
|
||||
Display: "atom",
|
||||
},
|
||||
Base: "uatom",
|
||||
Display: "atom",
|
||||
},
|
||||
{
|
||||
Name: "Token",
|
||||
Symbol: "TOKEN",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user