package types
import (
"cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
globalerrors "github.com/cybercongress/go-cyber/v7/app/helpers"
)
const (
BeginBlockSudoMessage = `{"clock_begin_block":{}}`
EndBlockSudoMessage = `{"clock_end_block":{}}`
)
const (
TypeMsgRegisterFeePayContract = "register_clock_contract"
TypeMsgUnregisterFeePayContract = "unregister_clock_contract"
TypeMsgUnjailFeePayContract = "unjail_clock_contract"
TypeMsgUpdateParams = "update_clock_params"
)
var (
_ sdk.Msg = &MsgRegisterClockContract{}
_ sdk.Msg = &MsgUnregisterClockContract{}
_ sdk.Msg = &MsgUnjailClockContract{}
_ sdk.Msg = &MsgUpdateParams{}
)
func (msg MsgRegisterClockContract) Route() string { return RouterKey }
func (msg MsgRegisterClockContract) Type() string { return TypeMsgRegisterFeePayContract }
func (msg MsgRegisterClockContract) ValidateBasic() error {
return validateAddresses(msg.SenderAddress, msg.ContractAddress)
}
func (msg *MsgRegisterClockContract) GetSignBytes() []byte {
return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(msg))
}
func (msg MsgRegisterClockContract) GetSigners() []sdk.AccAddress {
from, _ := sdk.AccAddressFromBech32(msg.SenderAddress)
return []sdk.AccAddress{from}
}
func (msg MsgUnregisterClockContract) Route() string { return RouterKey }
func (msg MsgUnregisterClockContract) Type() string { return TypeMsgRegisterFeePayContract }
func (msg MsgUnregisterClockContract) ValidateBasic() error {
return validateAddresses(msg.SenderAddress, msg.ContractAddress)
}
func (msg *MsgUnregisterClockContract) GetSignBytes() []byte {
return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(msg))
}
func (msg MsgUnregisterClockContract) GetSigners() []sdk.AccAddress {
from, _ := sdk.AccAddressFromBech32(msg.SenderAddress)
return []sdk.AccAddress{from}
}
func (msg MsgUnjailClockContract) Route() string { return RouterKey }
func (msg MsgUnjailClockContract) Type() string { return TypeMsgRegisterFeePayContract }
func (msg MsgUnjailClockContract) ValidateBasic() error {
return validateAddresses(msg.SenderAddress, msg.ContractAddress)
}
func (msg *MsgUnjailClockContract) GetSignBytes() []byte {
return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(msg))
}
func (msg MsgUnjailClockContract) GetSigners() []sdk.AccAddress {
from, _ := sdk.AccAddressFromBech32(msg.SenderAddress)
return []sdk.AccAddress{from}
}
func NewMsgUpdateParams(
sender sdk.Address,
contractGasLimit uint64,
) *MsgUpdateParams {
return &MsgUpdateParams{
Authority: sender.String(),
Params: NewParams(contractGasLimit),
}
}
func (msg MsgUpdateParams) Route() string { return RouterKey }
func (msg MsgUpdateParams) Type() string { return TypeMsgUpdateParams }
func (msg MsgUpdateParams) GetSignBytes() []byte {
return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg))
}
func (msg *MsgUpdateParams) GetSigners() []sdk.AccAddress {
addr, _ := sdk.AccAddressFromBech32(msg.Authority)
return []sdk.AccAddress{addr}
}
func (msg *MsgUpdateParams) ValidateBasic() error {
if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil {
return errors.Wrap(err, "invalid authority address")
}
return msg.Params.Validate()
}
func validateAddresses(addresses ...string) error {
for _, address := range addresses {
if _, err := sdk.AccAddressFromBech32(address); err != nil {
return errors.Wrapf(globalerrors.ErrInvalidAddress, "invalid address: %s", address)
}
}
return nil
}