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

     1  package types
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  	sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors"
     6  	"github.com/fibonacci-chain/fbc/x/evidence/exported"
     7  )
     8  
     9  // Message types for the evidence module
    10  const (
    11  	TypeMsgSubmitEvidence = "submit_evidence"
    12  )
    13  
    14  var (
    15  	_ sdk.Msg = MsgSubmitEvidence{}
    16  )
    17  
    18  // MsgSubmitEvidence defines an sdk.Msg type that supports submitting arbitrary
    19  // Evidence.
    20  type MsgSubmitEvidence struct {
    21  	Evidence  exported.Evidence `json:"evidence" yaml:"evidence"`
    22  	Submitter sdk.AccAddress    `json:"submitter" yaml:"submitter"`
    23  }
    24  
    25  func NewMsgSubmitEvidence(e exported.Evidence, s sdk.AccAddress) MsgSubmitEvidence {
    26  	return MsgSubmitEvidence{Evidence: e, Submitter: s}
    27  }
    28  
    29  // Route returns the MsgSubmitEvidence's route.
    30  func (m MsgSubmitEvidence) Route() string { return RouterKey }
    31  
    32  // Type returns the MsgSubmitEvidence's type.
    33  func (m MsgSubmitEvidence) Type() string { return TypeMsgSubmitEvidence }
    34  
    35  // ValidateBasic performs basic (non-state-dependant) validation on a MsgSubmitEvidence.
    36  func (m MsgSubmitEvidence) ValidateBasic() error {
    37  	if m.Evidence == nil {
    38  		return sdkerrors.Wrap(ErrInvalidEvidence, "missing evidence")
    39  	}
    40  	if err := m.Evidence.ValidateBasic(); err != nil {
    41  		return err
    42  	}
    43  	if m.Submitter.Empty() {
    44  		return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, m.Submitter.String())
    45  	}
    46  
    47  	return nil
    48  }
    49  
    50  // GetSignBytes returns the raw bytes a signer is expected to sign when submitting
    51  // a MsgSubmitEvidence message.
    52  func (m MsgSubmitEvidence) GetSignBytes() []byte {
    53  	return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m))
    54  }
    55  
    56  // GetSigners returns the single expected signer for a MsgSubmitEvidence.
    57  func (m MsgSubmitEvidence) GetSigners() []sdk.AccAddress {
    58  	return []sdk.AccAddress{m.Submitter}
    59  }