github.com/Finschia/finschia-sdk@v0.48.1/x/evidence/types/genesis.go (about) 1 package types 2 3 import ( 4 "fmt" 5 6 proto "github.com/gogo/protobuf/proto" 7 8 "github.com/Finschia/finschia-sdk/codec/types" 9 "github.com/Finschia/finschia-sdk/x/evidence/exported" 10 ) 11 12 var _ types.UnpackInterfacesMessage = GenesisState{} 13 14 // NewGenesisState creates a new genesis state for the evidence module. 15 func NewGenesisState(e []exported.Evidence) *GenesisState { 16 evidence := make([]*types.Any, len(e)) 17 for i, evi := range e { 18 msg, ok := evi.(proto.Message) 19 if !ok { 20 panic(fmt.Errorf("cannot proto marshal %T", evi)) 21 } 22 any, err := types.NewAnyWithValue(msg) 23 if err != nil { 24 panic(err) 25 } 26 evidence[i] = any 27 } 28 return &GenesisState{ 29 Evidence: evidence, 30 } 31 } 32 33 // DefaultGenesisState returns the evidence module's default genesis state. 34 func DefaultGenesisState() *GenesisState { 35 return &GenesisState{ 36 Evidence: []*types.Any{}, 37 } 38 } 39 40 // Validate performs basic gensis state validation returning an error upon any 41 // failure. 42 func (gs GenesisState) Validate() error { 43 for _, e := range gs.Evidence { 44 evi, ok := e.GetCachedValue().(exported.Evidence) 45 if !ok { 46 return fmt.Errorf("expected evidence") 47 } 48 if err := evi.ValidateBasic(); err != nil { 49 return err 50 } 51 } 52 53 return nil 54 } 55 56 // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces 57 func (gs GenesisState) UnpackInterfaces(unpacker types.AnyUnpacker) error { 58 for _, any := range gs.Evidence { 59 var evi exported.Evidence 60 err := unpacker.UnpackAny(any, &evi) 61 if err != nil { 62 return err 63 } 64 } 65 return nil 66 }