github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/wasm/types/genesis.go (about) 1 package types 2 3 import ( 4 codectypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec/types" 5 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 6 sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors" 7 ) 8 9 func (s Sequence) ValidateBasic() error { 10 if len(s.IDKey) == 0 { 11 return sdkerrors.Wrap(ErrEmpty, "id key") 12 } 13 return nil 14 } 15 16 func (s GenesisState) ValidateBasic() error { 17 if err := s.Params.ValidateBasic(); err != nil { 18 return sdkerrors.Wrap(err, "params") 19 } 20 for i := range s.Codes { 21 if err := s.Codes[i].ValidateBasic(); err != nil { 22 return sdkerrors.Wrapf(err, "code: %d", i) 23 } 24 } 25 for i := range s.Contracts { 26 if err := s.Contracts[i].ValidateBasic(); err != nil { 27 return sdkerrors.Wrapf(err, "contract: %d", i) 28 } 29 } 30 for i := range s.Sequences { 31 if err := s.Sequences[i].ValidateBasic(); err != nil { 32 return sdkerrors.Wrapf(err, "sequence: %d", i) 33 } 34 } 35 for i := range s.GenMsgs { 36 if err := s.GenMsgs[i].ValidateBasic(); err != nil { 37 return sdkerrors.Wrapf(err, "gen message: %d", i) 38 } 39 } 40 return nil 41 } 42 43 func (c Code) ValidateBasic() error { 44 if c.CodeID == 0 { 45 return sdkerrors.Wrap(ErrEmpty, "code id") 46 } 47 if err := c.CodeInfo.ValidateBasic(); err != nil { 48 return sdkerrors.Wrap(err, "code info") 49 } 50 if err := validateWasmCode(c.CodeBytes); err != nil { 51 return sdkerrors.Wrap(err, "code bytes") 52 } 53 return nil 54 } 55 56 func (c Contract) ValidateBasic() error { 57 if _, err := sdk.AccAddressFromBech32(c.ContractAddress); err != nil { 58 return sdkerrors.Wrap(err, "contract address") 59 } 60 if err := c.ContractInfo.ValidateBasic(); err != nil { 61 return sdkerrors.Wrap(err, "contract info") 62 } 63 64 if c.ContractInfo.Created != nil { 65 return sdkerrors.Wrap(ErrInvalid, "created must be empty") 66 } 67 for i := range c.ContractState { 68 if err := c.ContractState[i].ValidateBasic(); err != nil { 69 return sdkerrors.Wrapf(err, "contract state %d", i) 70 } 71 } 72 return nil 73 } 74 75 // AsMsg returns the underlying cosmos-sdk message instance. Null when can not be mapped to a known type. 76 func (m GenesisState_GenMsgs) AsMsg() sdk.Msg { 77 if msg := m.GetStoreCode(); msg != nil { 78 return msg 79 } 80 if msg := m.GetInstantiateContract(); msg != nil { 81 return msg 82 } 83 if msg := m.GetExecuteContract(); msg != nil { 84 return msg 85 } 86 return nil 87 } 88 89 func (m GenesisState_GenMsgs) ValidateBasic() error { 90 msg := m.AsMsg() 91 if msg == nil { 92 return sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "unknown message") 93 } 94 return msg.ValidateBasic() 95 } 96 97 // ValidateGenesis performs basic validation of supply genesis data returning an 98 // error for any failed validation criteria. 99 func ValidateGenesis(data GenesisState) error { 100 return data.ValidateBasic() 101 } 102 103 var _ codectypes.UnpackInterfacesMessage = GenesisState{} 104 105 // UnpackInterfaces implements codectypes.UnpackInterfaces 106 func (s GenesisState) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { 107 for _, v := range s.Contracts { 108 if err := v.UnpackInterfaces(unpacker); err != nil { 109 return err 110 } 111 } 112 return nil 113 } 114 115 var _ codectypes.UnpackInterfacesMessage = &Contract{} 116 117 // UnpackInterfaces implements codectypes.UnpackInterfaces 118 func (c *Contract) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { 119 return c.ContractInfo.UnpackInterfaces(unpacker) 120 }