/
genesis.go
51 lines (41 loc) · 1.15 KB
/
genesis.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package types
import (
fmt "fmt"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/NibiruChain/nibiru/x/common/set"
)
// DefaultGenesis returns the default genesis state. This state is used for
// upgrades and for the start of the chain (InitChain).
func DefaultGenesis() *GenesisState {
return &GenesisState{
Params: DefaultModuleParams(),
FactoryDenoms: []GenesisDenom{},
}
}
// Validate performs basic genesis state validation.
func (gs GenesisState) Validate() error {
err := gs.Params.Validate()
if err != nil {
return err
}
seenDenoms := set.New[string]()
for _, genesisDenom := range gs.GetFactoryDenoms() {
denom := genesisDenom.GetDenom()
if seenDenoms.Has(denom) {
return ErrInvalidGenesis.Wrapf("duplicate denom: %s", denom)
}
seenDenoms.Add(denom)
if err := genesisDenom.Validate(); err != nil {
return ErrInvalidGenesis.Wrap(err.Error())
}
if admin := genesisDenom.AuthorityMetadata.Admin; admin != "" {
_, err = sdk.AccAddressFromBech32(admin)
if err != nil {
return fmt.Errorf("%w: %s: admin address (%s): %s",
ErrInvalidGenesis, ErrInvalidAdmin, admin, err,
)
}
}
}
return nil
}