github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/evidence/internal/types/genesis.go (about)

     1  package types
     2  
     3  import (
     4  	"fmt"
     5  	"time"
     6  
     7  	"github.com/fibonacci-chain/fbc/x/evidence/exported"
     8  )
     9  
    10  // DONTCOVER
    11  
    12  // GenesisState defines the evidence module's genesis state.
    13  type GenesisState struct {
    14  	Params   Params              `json:"params" yaml:"params"`
    15  	Evidence []exported.Evidence `json:"evidence" yaml:"evidence"`
    16  }
    17  
    18  func NewGenesisState(p Params, e []exported.Evidence) GenesisState {
    19  	return GenesisState{
    20  		Params:   p,
    21  		Evidence: e,
    22  	}
    23  }
    24  
    25  // DefaultGenesisState returns the evidence module's default genesis state.
    26  func DefaultGenesisState() GenesisState {
    27  	return GenesisState{
    28  		Params:   DefaultParams(),
    29  		Evidence: []exported.Evidence{},
    30  	}
    31  }
    32  
    33  // Validate performs basic gensis state validation returning an error upon any
    34  // failure.
    35  func (gs GenesisState) Validate() error {
    36  	for _, e := range gs.Evidence {
    37  		if err := e.ValidateBasic(); err != nil {
    38  			return err
    39  		}
    40  	}
    41  
    42  	maxEvidence := gs.Params.MaxEvidenceAge
    43  	if maxEvidence < 1*time.Minute {
    44  		return fmt.Errorf("max evidence age must be at least 1 minute, is %s", maxEvidence.String())
    45  	}
    46  
    47  	return nil
    48  }