github.com/InjectiveLabs/sdk-go@v1.53.0/chain/tokenfactory/types/genesis.go (about) 1 package types 2 3 import ( 4 "cosmossdk.io/errors" 5 sdk "github.com/cosmos/cosmos-sdk/types" 6 ) 7 8 // this line is used by starport scaffolding # genesis/types/import 9 10 // DefaultIndex is the default capability global index 11 const DefaultIndex uint64 = 1 12 13 // DefaultGenesis returns the default Capability genesis state 14 func DefaultGenesis() *GenesisState { 15 return &GenesisState{ 16 Params: DefaultParams(), 17 FactoryDenoms: []GenesisDenom{}, 18 } 19 } 20 21 // Validate performs basic genesis state validation returning an error upon any 22 // failure. 23 func (gs GenesisState) Validate() error { 24 err := gs.Params.Validate() 25 if err != nil { 26 return err 27 } 28 29 seenDenoms := map[string]bool{} 30 31 for _, denom := range gs.GetFactoryDenoms() { 32 if seenDenoms[denom.GetDenom()] { 33 return errors.Wrapf(ErrInvalidGenesis, "duplicate denom: %s", denom.GetDenom()) 34 } 35 seenDenoms[denom.GetDenom()] = true 36 37 _, _, err := DeconstructDenom(denom.GetDenom()) 38 if err != nil { 39 return err 40 } 41 42 if denom.AuthorityMetadata.Admin != "" { 43 _, err = sdk.AccAddressFromBech32(denom.AuthorityMetadata.Admin) 44 if err != nil { 45 return errors.Wrapf(ErrInvalidAuthorityMetadata, "Invalid admin address (%s)", err) 46 } 47 } 48 } 49 50 return nil 51 }