github.com/Finschia/finschia-sdk@v0.48.1/x/token/msgs.go (about) 1 package token 2 3 import ( 4 sdk "github.com/Finschia/finschia-sdk/types" 5 sdkerrors "github.com/Finschia/finschia-sdk/types/errors" 6 ) 7 8 var _ sdk.Msg = (*MsgSend)(nil) 9 10 // ValidateBasic implements Msg. 11 func (m MsgSend) ValidateBasic() error { 12 if err := ValidateContractID(m.ContractId); err != nil { 13 return err 14 } 15 16 if _, err := sdk.AccAddressFromBech32(m.From); err != nil { 17 return sdkerrors.ErrInvalidAddress.Wrapf("invalid from address: %s", m.From) 18 } 19 if _, err := sdk.AccAddressFromBech32(m.To); err != nil { 20 return sdkerrors.ErrInvalidAddress.Wrapf("invalid to address: %s", m.To) 21 } 22 23 if err := validateAmount(m.Amount); err != nil { 24 // Daphne emits ErrInvalidCoins here, which is against to the spec. 25 return err 26 } 27 28 return nil 29 } 30 31 // GetSigners implements Msg 32 func (m MsgSend) GetSigners() []sdk.AccAddress { 33 signer, _ := sdk.AccAddressFromBech32(m.From) 34 return []sdk.AccAddress{signer} 35 } 36 37 // Type implements the LegacyMsg.Type method. 38 func (m MsgSend) Type() string { 39 return sdk.MsgTypeURL(&m) 40 } 41 42 // Route implements the LegacyMsg.Route method. 43 func (m MsgSend) Route() string { 44 return RouterKey 45 } 46 47 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 48 func (m MsgSend) GetSignBytes() []byte { 49 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 50 } 51 52 var _ sdk.Msg = (*MsgOperatorSend)(nil) 53 54 // ValidateBasic implements Msg. 55 func (m MsgOperatorSend) ValidateBasic() error { 56 if err := ValidateContractID(m.ContractId); err != nil { 57 return err 58 } 59 60 if _, err := sdk.AccAddressFromBech32(m.Operator); err != nil { 61 return sdkerrors.ErrInvalidAddress.Wrapf("invalid operator address: %s", m.Operator) 62 } 63 if _, err := sdk.AccAddressFromBech32(m.From); err != nil { 64 return sdkerrors.ErrInvalidAddress.Wrapf("invalid from address: %s", m.From) 65 } 66 if _, err := sdk.AccAddressFromBech32(m.To); err != nil { 67 return sdkerrors.ErrInvalidAddress.Wrapf("invalid to address: %s", m.To) 68 } 69 70 if err := validateAmount(m.Amount); err != nil { 71 return err 72 } 73 74 return nil 75 } 76 77 // GetSigners implements Msg 78 func (m MsgOperatorSend) GetSigners() []sdk.AccAddress { 79 signer, _ := sdk.AccAddressFromBech32(m.Operator) 80 return []sdk.AccAddress{signer} 81 } 82 83 // Type implements the LegacyMsg.Type method. 84 func (m MsgOperatorSend) Type() string { 85 return sdk.MsgTypeURL(&m) 86 } 87 88 // Route implements the LegacyMsg.Route method. 89 func (m MsgOperatorSend) Route() string { 90 return RouterKey 91 } 92 93 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 94 func (m MsgOperatorSend) GetSignBytes() []byte { 95 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 96 } 97 98 var _ sdk.Msg = (*MsgRevokeOperator)(nil) 99 100 // ValidateBasic implements Msg. 101 func (m MsgRevokeOperator) ValidateBasic() error { 102 if err := ValidateContractID(m.ContractId); err != nil { 103 return err 104 } 105 106 if _, err := sdk.AccAddressFromBech32(m.Holder); err != nil { 107 return sdkerrors.ErrInvalidAddress.Wrapf("invalid holder address: %s", m.Holder) 108 } 109 if _, err := sdk.AccAddressFromBech32(m.Operator); err != nil { 110 return sdkerrors.ErrInvalidAddress.Wrapf("invalid operator address: %s", m.Operator) 111 } 112 113 if m.Operator == m.Holder { 114 return ErrApproverProxySame 115 } 116 117 return nil 118 } 119 120 // GetSigners implements Msg. 121 func (m MsgRevokeOperator) GetSigners() []sdk.AccAddress { 122 signer, _ := sdk.AccAddressFromBech32(m.Holder) 123 return []sdk.AccAddress{signer} 124 } 125 126 // Type implements the LegacyMsg.Type method. 127 func (m MsgRevokeOperator) Type() string { 128 return sdk.MsgTypeURL(&m) 129 } 130 131 // Route implements the LegacyMsg.Route method. 132 func (m MsgRevokeOperator) Route() string { 133 return RouterKey 134 } 135 136 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 137 func (m MsgRevokeOperator) GetSignBytes() []byte { 138 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 139 } 140 141 var _ sdk.Msg = (*MsgAuthorizeOperator)(nil) 142 143 // ValidateBasic implements Msg. 144 func (m MsgAuthorizeOperator) ValidateBasic() error { 145 if err := ValidateContractID(m.ContractId); err != nil { 146 return err 147 } 148 149 if _, err := sdk.AccAddressFromBech32(m.Holder); err != nil { 150 return sdkerrors.ErrInvalidAddress.Wrapf("invalid holder address: %s", m.Holder) 151 } 152 if _, err := sdk.AccAddressFromBech32(m.Operator); err != nil { 153 return sdkerrors.ErrInvalidAddress.Wrapf("invalid operator address: %s", m.Operator) 154 } 155 156 if m.Operator == m.Holder { 157 return ErrApproverProxySame 158 } 159 160 return nil 161 } 162 163 // GetSigners implements Msg. 164 func (m MsgAuthorizeOperator) GetSigners() []sdk.AccAddress { 165 signer, _ := sdk.AccAddressFromBech32(m.Holder) 166 return []sdk.AccAddress{signer} 167 } 168 169 // Type implements the LegacyMsg.Type method. 170 func (m MsgAuthorizeOperator) Type() string { 171 return sdk.MsgTypeURL(&m) 172 } 173 174 // Route implements the LegacyMsg.Route method. 175 func (m MsgAuthorizeOperator) Route() string { 176 return RouterKey 177 } 178 179 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 180 func (m MsgAuthorizeOperator) GetSignBytes() []byte { 181 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 182 } 183 184 var _ sdk.Msg = (*MsgIssue)(nil) 185 186 // ValidateBasic implements Msg. 187 func (m MsgIssue) ValidateBasic() error { 188 if _, err := sdk.AccAddressFromBech32(m.Owner); err != nil { 189 return sdkerrors.ErrInvalidAddress.Wrapf("invalid owner address: %s", m.Owner) 190 } 191 192 if _, err := sdk.AccAddressFromBech32(m.To); err != nil { 193 return sdkerrors.ErrInvalidAddress.Wrapf("invalid to address: %s", m.To) 194 } 195 196 if err := validateName(m.Name); err != nil { 197 return err 198 } 199 200 if err := validateSymbol(m.Symbol); err != nil { 201 return err 202 } 203 204 if err := validateURI(m.Uri); err != nil { 205 return err 206 } 207 208 if err := validateMeta(m.Meta); err != nil { 209 return err 210 } 211 212 if err := validateDecimals(m.Decimals); err != nil { 213 return err 214 } 215 216 if err := validateAmount(m.Amount); err != nil { 217 return err 218 } 219 220 return nil 221 } 222 223 // GetSigners implements Msg. 224 func (m MsgIssue) GetSigners() []sdk.AccAddress { 225 signer, _ := sdk.AccAddressFromBech32(m.Owner) 226 return []sdk.AccAddress{signer} 227 } 228 229 // Type implements the LegacyMsg.Type method. 230 func (m MsgIssue) Type() string { 231 return sdk.MsgTypeURL(&m) 232 } 233 234 // Route implements the LegacyMsg.Route method. 235 func (m MsgIssue) Route() string { 236 return RouterKey 237 } 238 239 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 240 func (m MsgIssue) GetSignBytes() []byte { 241 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 242 } 243 244 var _ sdk.Msg = (*MsgGrantPermission)(nil) 245 246 // ValidateBasic implements Msg. 247 func (m MsgGrantPermission) ValidateBasic() error { 248 if err := ValidateContractID(m.ContractId); err != nil { 249 return err 250 } 251 252 if _, err := sdk.AccAddressFromBech32(m.From); err != nil { 253 return sdkerrors.ErrInvalidAddress.Wrapf("invalid granter address: %s", m.From) 254 } 255 if _, err := sdk.AccAddressFromBech32(m.To); err != nil { 256 return sdkerrors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", m.To) 257 } 258 259 if err := validateLegacyPermission(m.Permission); err != nil { 260 return err 261 } 262 263 return nil 264 } 265 266 // GetSigners implements Msg 267 func (m MsgGrantPermission) GetSigners() []sdk.AccAddress { 268 signer, _ := sdk.AccAddressFromBech32(m.From) 269 return []sdk.AccAddress{signer} 270 } 271 272 // Type implements the LegacyMsg.Type method. 273 func (m MsgGrantPermission) Type() string { 274 return sdk.MsgTypeURL(&m) 275 } 276 277 // Route implements the LegacyMsg.Route method. 278 func (m MsgGrantPermission) Route() string { 279 return RouterKey 280 } 281 282 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 283 func (m MsgGrantPermission) GetSignBytes() []byte { 284 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 285 } 286 287 var _ sdk.Msg = (*MsgRevokePermission)(nil) 288 289 // ValidateBasic implements Msg. 290 func (m MsgRevokePermission) ValidateBasic() error { 291 if err := ValidateContractID(m.ContractId); err != nil { 292 return err 293 } 294 295 if _, err := sdk.AccAddressFromBech32(m.From); err != nil { 296 return sdkerrors.ErrInvalidAddress.Wrapf("invalid from address: %s", m.From) 297 } 298 299 if err := validateLegacyPermission(m.Permission); err != nil { 300 return err 301 } 302 303 return nil 304 } 305 306 // GetSigners implements Msg 307 func (m MsgRevokePermission) GetSigners() []sdk.AccAddress { 308 signer, _ := sdk.AccAddressFromBech32(m.From) 309 return []sdk.AccAddress{signer} 310 } 311 312 // Type implements the LegacyMsg.Type method. 313 func (m MsgRevokePermission) Type() string { 314 return sdk.MsgTypeURL(&m) 315 } 316 317 // Route implements the LegacyMsg.Route method. 318 func (m MsgRevokePermission) Route() string { 319 return RouterKey 320 } 321 322 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 323 func (m MsgRevokePermission) GetSignBytes() []byte { 324 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 325 } 326 327 var _ sdk.Msg = (*MsgMint)(nil) 328 329 // ValidateBasic implements Msg. 330 func (m MsgMint) ValidateBasic() error { 331 if err := ValidateContractID(m.ContractId); err != nil { 332 return err 333 } 334 if _, err := sdk.AccAddressFromBech32(m.From); err != nil { 335 return sdkerrors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", m.From) 336 } 337 338 if _, err := sdk.AccAddressFromBech32(m.To); err != nil { 339 return sdkerrors.ErrInvalidAddress.Wrapf("invalid to address: %s", m.To) 340 } 341 342 if err := validateAmount(m.Amount); err != nil { 343 return err 344 } 345 346 return nil 347 } 348 349 // GetSigners implements Msg 350 func (m MsgMint) GetSigners() []sdk.AccAddress { 351 signer, _ := sdk.AccAddressFromBech32(m.From) 352 return []sdk.AccAddress{signer} 353 } 354 355 // Type implements the LegacyMsg.Type method. 356 func (m MsgMint) Type() string { 357 return sdk.MsgTypeURL(&m) 358 } 359 360 // Route implements the LegacyMsg.Route method. 361 func (m MsgMint) Route() string { 362 return RouterKey 363 } 364 365 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 366 func (m MsgMint) GetSignBytes() []byte { 367 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 368 } 369 370 var _ sdk.Msg = (*MsgBurn)(nil) 371 372 // ValidateBasic implements Msg. 373 func (m MsgBurn) ValidateBasic() error { 374 if err := ValidateContractID(m.ContractId); err != nil { 375 return err 376 } 377 if _, err := sdk.AccAddressFromBech32(m.From); err != nil { 378 return sdkerrors.ErrInvalidAddress.Wrapf("invalid from address: %s", m.From) 379 } 380 381 if err := validateAmount(m.Amount); err != nil { 382 return err 383 } 384 385 return nil 386 } 387 388 // GetSigners implements Msg 389 func (m MsgBurn) GetSigners() []sdk.AccAddress { 390 signer, _ := sdk.AccAddressFromBech32(m.From) 391 return []sdk.AccAddress{signer} 392 } 393 394 // Type implements the LegacyMsg.Type method. 395 func (m MsgBurn) Type() string { 396 return sdk.MsgTypeURL(&m) 397 } 398 399 // Route implements the LegacyMsg.Route method. 400 func (m MsgBurn) Route() string { 401 return RouterKey 402 } 403 404 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 405 func (m MsgBurn) GetSignBytes() []byte { 406 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 407 } 408 409 var _ sdk.Msg = (*MsgOperatorBurn)(nil) 410 411 // ValidateBasic implements Msg. 412 func (m MsgOperatorBurn) ValidateBasic() error { 413 if err := ValidateContractID(m.ContractId); err != nil { 414 return err 415 } 416 417 if _, err := sdk.AccAddressFromBech32(m.Operator); err != nil { 418 return sdkerrors.ErrInvalidAddress.Wrapf("invalid operator address: %s", m.Operator) 419 } 420 if _, err := sdk.AccAddressFromBech32(m.From); err != nil { 421 return sdkerrors.ErrInvalidAddress.Wrapf("invalid from address: %s", m.From) 422 } 423 424 if err := validateAmount(m.Amount); err != nil { 425 return err 426 } 427 428 return nil 429 } 430 431 // GetSigners implements Msg 432 func (m MsgOperatorBurn) GetSigners() []sdk.AccAddress { 433 signer, _ := sdk.AccAddressFromBech32(m.Operator) 434 return []sdk.AccAddress{signer} 435 } 436 437 // Type implements the LegacyMsg.Type method. 438 func (m MsgOperatorBurn) Type() string { 439 return sdk.MsgTypeURL(&m) 440 } 441 442 // Route implements the LegacyMsg.Route method. 443 func (m MsgOperatorBurn) Route() string { 444 return RouterKey 445 } 446 447 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 448 func (m MsgOperatorBurn) GetSignBytes() []byte { 449 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 450 } 451 452 var _ sdk.Msg = (*MsgModify)(nil) 453 454 // ValidateBasic implements Msg. 455 func (m MsgModify) ValidateBasic() error { 456 UpdateMsgModify(&m) 457 458 if err := ValidateContractID(m.ContractId); err != nil { 459 return err 460 } 461 if _, err := sdk.AccAddressFromBech32(m.Owner); err != nil { 462 return sdkerrors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", m.Owner) 463 } 464 465 seenKeys := map[string]bool{} 466 for _, change := range m.Changes { 467 key := change.Key 468 if seenKeys[key] { 469 return ErrDuplicateChangesField.Wrapf("duplicate fields: %s", change.Key) 470 } 471 seenKeys[key] = true 472 473 if err := validateChange(change); err != nil { 474 return err 475 } 476 } 477 if len(seenKeys) == 0 { 478 return ErrEmptyChanges.Wrapf("no field provided") 479 } 480 481 return nil 482 } 483 484 func UpdateMsgModify(msg *MsgModify) { 485 for i, change := range msg.Changes { 486 key := change.Key 487 converted := canonicalKey(key) 488 if converted != key { 489 msg.Changes[i].Key = converted 490 } 491 } 492 } 493 494 // GetSigners implements Msg 495 func (m MsgModify) GetSigners() []sdk.AccAddress { 496 signer, _ := sdk.AccAddressFromBech32(m.Owner) 497 return []sdk.AccAddress{signer} 498 } 499 500 // Type implements the LegacyMsg.Type method. 501 func (m MsgModify) Type() string { 502 return sdk.MsgTypeURL(&m) 503 } 504 505 // Route implements the LegacyMsg.Route method. 506 func (m MsgModify) Route() string { 507 return RouterKey 508 } 509 510 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 511 func (m MsgModify) GetSignBytes() []byte { 512 return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) 513 }