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  }