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  }