github.com/lino-network/lino@v0.6.11/x/vote/types/msg.go (about)

     1  package types
     2  
     3  // nolint
     4  import (
     5  	"fmt"
     6  
     7  	"github.com/lino-network/lino/types"
     8  
     9  	sdk "github.com/cosmos/cosmos-sdk/types"
    10  )
    11  
    12  var _ types.Msg = StakeInMsg{}
    13  var _ types.Msg = StakeOutMsg{}
    14  var _ types.Msg = ClaimInterestMsg{}
    15  var _ types.Msg = StakeInForMsg{}
    16  
    17  // StakeInMsg - voter deposit
    18  type StakeInMsg struct {
    19  	Username types.AccountKey `json:"username"`
    20  	Deposit  types.LNO        `json:"deposit"`
    21  }
    22  
    23  // StakeOutMsg - voter withdraw
    24  type StakeOutMsg struct {
    25  	Username types.AccountKey `json:"username"`
    26  	Amount   types.LNO        `json:"amount"`
    27  }
    28  
    29  // ClaimInterestMsg - claim interest generated from lino power
    30  type ClaimInterestMsg struct {
    31  	Username types.AccountKey `json:"username"`
    32  }
    33  
    34  // StakeInForMsg - stake in for other people
    35  type StakeInForMsg struct {
    36  	Sender   types.AccountKey `json:"username"`
    37  	Receiver types.AccountKey `json:"receiver"`
    38  	Deposit  types.LNO        `json:"deposit"`
    39  }
    40  
    41  // NewStakeInMsg - return a StakeInMsg
    42  func NewStakeInMsg(username string, deposit types.LNO) StakeInMsg {
    43  	return StakeInMsg{
    44  		Username: types.AccountKey(username),
    45  		Deposit:  deposit,
    46  	}
    47  }
    48  
    49  // Route - implements sdk.Msg
    50  func (msg StakeInMsg) Route() string { return RouterKey }
    51  
    52  // Type - implements sdk.Msg
    53  func (msg StakeInMsg) Type() string { return "StakeInMsg" }
    54  
    55  // ValidateBasic - implements sdk.Msg
    56  func (msg StakeInMsg) ValidateBasic() sdk.Error {
    57  	if !msg.Username.IsValid() {
    58  		return ErrInvalidUsername()
    59  	}
    60  
    61  	_, err := types.LinoToCoin(msg.Deposit)
    62  	if err != nil {
    63  		return err
    64  	}
    65  	return nil
    66  }
    67  
    68  func (msg StakeInMsg) String() string {
    69  	return fmt.Sprintf("StakeInMsg{Username:%v, Deposit:%v}", msg.Username, msg.Deposit)
    70  }
    71  
    72  // GetPermission - implements types.Msg
    73  func (msg StakeInMsg) GetPermission() types.Permission {
    74  	return types.TransactionPermission
    75  }
    76  
    77  // GetSignBytes - implements sdk.Msg
    78  func (msg StakeInMsg) GetSignBytes() []byte {
    79  	b, err := msgCdc.MarshalJSON(msg) // XXX: ensure some canonical form
    80  	if err != nil {
    81  		panic(err)
    82  	}
    83  	return b
    84  }
    85  
    86  // GetSigners - implements sdk.Msg
    87  func (msg StakeInMsg) GetSigners() []sdk.AccAddress {
    88  	return []sdk.AccAddress{sdk.AccAddress(msg.Username)}
    89  }
    90  
    91  // GetConsumeAmount - implement types.Msg
    92  func (msg StakeInMsg) GetConsumeAmount() types.Coin {
    93  	return types.NewCoinFromInt64(0)
    94  }
    95  
    96  // NewStakeOutMsg - return StakeOutMsg
    97  func NewStakeOutMsg(username string, amount types.LNO) StakeOutMsg {
    98  	return StakeOutMsg{
    99  		Username: types.AccountKey(username),
   100  		Amount:   amount,
   101  	}
   102  }
   103  
   104  // Route - implements sdk.Msg
   105  func (msg StakeOutMsg) Route() string { return RouterKey }
   106  
   107  // Type - implements sdk.Msg
   108  func (msg StakeOutMsg) Type() string { return "StakeOutMsg" }
   109  
   110  // ValidateBasic - implements sdk.Msg
   111  func (msg StakeOutMsg) ValidateBasic() sdk.Error {
   112  	if !msg.Username.IsValid() {
   113  		return ErrInvalidUsername()
   114  	}
   115  	_, err := types.LinoToCoin(msg.Amount)
   116  	if err != nil {
   117  		return err
   118  	}
   119  	return nil
   120  }
   121  
   122  func (msg StakeOutMsg) String() string {
   123  	return fmt.Sprintf("StakeOutMsg{Username:%v, Amount:%v}", msg.Username, msg.Amount)
   124  }
   125  
   126  // GetPermission - implements types.Msg
   127  func (msg StakeOutMsg) GetPermission() types.Permission {
   128  	return types.TransactionPermission
   129  }
   130  
   131  // GetSignBytes - implements sdk.Msg
   132  func (msg StakeOutMsg) GetSignBytes() []byte {
   133  	b, err := msgCdc.MarshalJSON(msg)
   134  	if err != nil {
   135  		panic(err)
   136  	}
   137  	return b
   138  }
   139  
   140  // GetSigners - implements sdk.Msg
   141  func (msg StakeOutMsg) GetSigners() []sdk.AccAddress {
   142  	return []sdk.AccAddress{sdk.AccAddress(msg.Username)}
   143  }
   144  
   145  // GetConsumeAmount - implement types.Msg
   146  func (msg StakeOutMsg) GetConsumeAmount() types.Coin {
   147  	return types.NewCoinFromInt64(0)
   148  }
   149  
   150  // NewClaimInterestMsg - return a ClaimInterestMsg
   151  func NewClaimInterestMsg(username string) ClaimInterestMsg {
   152  	return ClaimInterestMsg{
   153  		Username: types.AccountKey(username),
   154  	}
   155  }
   156  
   157  // Route - implements sdk.Msg
   158  func (msg ClaimInterestMsg) Route() string { return RouterKey }
   159  
   160  // Type - implements sdk.Msg
   161  func (msg ClaimInterestMsg) Type() string { return "ClaimInterestMsg" }
   162  
   163  // ValidateBasic - implements sdk.Msg
   164  func (msg ClaimInterestMsg) ValidateBasic() sdk.Error {
   165  	if !msg.Username.IsValid() {
   166  		return ErrInvalidUsername()
   167  	}
   168  	return nil
   169  }
   170  
   171  func (msg ClaimInterestMsg) String() string {
   172  	return fmt.Sprintf("ClaimInterestMsg{Username:%v}", msg.Username)
   173  }
   174  
   175  // GetPermission - implements types.Msg
   176  func (msg ClaimInterestMsg) GetPermission() types.Permission {
   177  	return types.TransactionPermission
   178  }
   179  
   180  // GetSignBytes - implements sdk.Msg
   181  func (msg ClaimInterestMsg) GetSignBytes() []byte {
   182  	b, err := msgCdc.MarshalJSON(msg) // XXX: ensure some canonical form
   183  	if err != nil {
   184  		panic(err)
   185  	}
   186  	return b
   187  }
   188  
   189  // GetSigners - implements sdk.Msg
   190  func (msg ClaimInterestMsg) GetSigners() []sdk.AccAddress {
   191  	return []sdk.AccAddress{sdk.AccAddress(msg.Username)}
   192  }
   193  
   194  // GetConsumeAmount - implements types.Msg
   195  func (msg ClaimInterestMsg) GetConsumeAmount() types.Coin {
   196  	return types.NewCoinFromInt64(0)
   197  }
   198  
   199  // NewStakeInForMsg - return a StakeInForMsg
   200  func NewStakeInForMsg(sender, receiver string, deposit types.LNO) StakeInForMsg {
   201  	return StakeInForMsg{
   202  		Sender:   types.AccountKey(sender),
   203  		Receiver: types.AccountKey(receiver),
   204  		Deposit:  deposit,
   205  	}
   206  }
   207  
   208  // Route - implements sdk.Msg
   209  func (msg StakeInForMsg) Route() string { return RouterKey }
   210  
   211  // Type - implements sdk.Msg
   212  func (msg StakeInForMsg) Type() string { return "StakeInForMsg" }
   213  
   214  // ValidateBasic - implements sdk.Msg
   215  func (msg StakeInForMsg) ValidateBasic() sdk.Error {
   216  	if !msg.Sender.IsValid() || !msg.Receiver.IsValid() {
   217  		return ErrInvalidUsername()
   218  	}
   219  
   220  	_, err := types.LinoToCoin(msg.Deposit)
   221  	if err != nil {
   222  		return err
   223  	}
   224  	return nil
   225  }
   226  
   227  func (msg StakeInForMsg) String() string {
   228  	return fmt.Sprintf("StakeInForMsg{Sender:%v, Receiver:%v, Deposit:%v}", msg.Sender, msg.Receiver, msg.Deposit)
   229  }
   230  
   231  // GetPermission - implements types.Msg
   232  func (msg StakeInForMsg) GetPermission() types.Permission {
   233  	return types.TransactionPermission
   234  }
   235  
   236  // GetSignBytes - implements sdk.Msg
   237  func (msg StakeInForMsg) GetSignBytes() []byte {
   238  	b, err := msgCdc.MarshalJSON(msg) // XXX: ensure some canonical form
   239  	if err != nil {
   240  		panic(err)
   241  	}
   242  	return b
   243  }
   244  
   245  // GetSigners - implements sdk.Msg
   246  func (msg StakeInForMsg) GetSigners() []sdk.AccAddress {
   247  	return []sdk.AccAddress{sdk.AccAddress(msg.Sender)}
   248  }
   249  
   250  // GetConsumeAmount - implement types.Msg
   251  func (msg StakeInForMsg) GetConsumeAmount() types.Coin {
   252  	return types.NewCoinFromInt64(0)
   253  }