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 }