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  }