github.com/Finschia/finschia-sdk@v0.48.1/x/foundation/msgs.go (about) 1 package foundation 2 3 import ( 4 "github.com/gogo/protobuf/proto" 5 6 codectypes "github.com/Finschia/finschia-sdk/codec/types" 7 sdk "github.com/Finschia/finschia-sdk/types" 8 sdkerrors "github.com/Finschia/finschia-sdk/types/errors" 9 "github.com/Finschia/finschia-sdk/x/foundation/codec" 10 ) 11 12 var _ sdk.Msg = (*MsgUpdateParams)(nil) 13 14 // ValidateBasic implements Msg. 15 func (m MsgUpdateParams) ValidateBasic() error { 16 return sdkerrors.ErrUnknownRequest.Wrapf("unrecognized message route: %s", m.Route()) 17 } 18 19 // GetSigners implements Msg. 20 func (m MsgUpdateParams) GetSigners() []sdk.AccAddress { 21 signer := sdk.MustAccAddressFromBech32(m.Authority) 22 return []sdk.AccAddress{signer} 23 } 24 25 // Type implements the LegacyMsg.Type method. 26 func (m MsgUpdateParams) Type() string { 27 return sdk.MsgTypeURL(&m) 28 } 29 30 // Route implements the LegacyMsg.Route method. 31 func (m MsgUpdateParams) Route() string { 32 return sdk.MsgTypeURL(&m) 33 } 34 35 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 36 func (m MsgUpdateParams) GetSignBytes() []byte { 37 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 38 } 39 40 var _ sdk.Msg = (*MsgFundTreasury)(nil) 41 42 // ValidateBasic implements Msg. 43 func (m MsgFundTreasury) ValidateBasic() error { 44 if _, err := sdk.AccAddressFromBech32(m.From); err != nil { 45 return sdkerrors.ErrInvalidAddress.Wrapf("invalid from address: %s", m.From) 46 } 47 48 if !m.Amount.IsValid() || !m.Amount.IsAllPositive() { 49 return sdkerrors.ErrInvalidCoins.Wrap(m.Amount.String()) 50 } 51 52 return nil 53 } 54 55 // GetSigners implements Msg. 56 func (m MsgFundTreasury) GetSigners() []sdk.AccAddress { 57 signer := sdk.MustAccAddressFromBech32(m.From) 58 return []sdk.AccAddress{signer} 59 } 60 61 // Type implements the LegacyMsg.Type method. 62 func (m MsgFundTreasury) Type() string { 63 return sdk.MsgTypeURL(&m) 64 } 65 66 // Route implements the LegacyMsg.Route method. 67 func (m MsgFundTreasury) Route() string { 68 return sdk.MsgTypeURL(&m) 69 } 70 71 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 72 func (m MsgFundTreasury) GetSignBytes() []byte { 73 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 74 } 75 76 var _ sdk.Msg = (*MsgWithdrawFromTreasury)(nil) 77 78 // ValidateBasic implements Msg. 79 func (m MsgWithdrawFromTreasury) ValidateBasic() error { 80 if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { 81 return sdkerrors.ErrInvalidAddress.Wrapf("invalid authority address: %s", m.Authority) 82 } 83 84 if _, err := sdk.AccAddressFromBech32(m.To); err != nil { 85 return sdkerrors.ErrInvalidAddress.Wrapf("invalid to address: %s", m.To) 86 } 87 88 if !m.Amount.IsValid() || !m.Amount.IsAllPositive() { 89 return sdkerrors.ErrInvalidCoins.Wrap(m.Amount.String()) 90 } 91 92 return nil 93 } 94 95 // GetSigners implements Msg. 96 func (m MsgWithdrawFromTreasury) GetSigners() []sdk.AccAddress { 97 signer := sdk.MustAccAddressFromBech32(m.Authority) 98 return []sdk.AccAddress{signer} 99 } 100 101 // Type implements the LegacyMsg.Type method. 102 func (m MsgWithdrawFromTreasury) Type() string { 103 return sdk.MsgTypeURL(&m) 104 } 105 106 // Route implements the LegacyMsg.Route method. 107 func (m MsgWithdrawFromTreasury) Route() string { 108 return sdk.MsgTypeURL(&m) 109 } 110 111 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 112 func (m MsgWithdrawFromTreasury) GetSignBytes() []byte { 113 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 114 } 115 116 var _ sdk.Msg = (*MsgUpdateMembers)(nil) 117 118 // ValidateBasic implements Msg. 119 func (m MsgUpdateMembers) ValidateBasic() error { 120 if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { 121 return sdkerrors.ErrInvalidAddress.Wrapf("invalid authority address: %s", m.Authority) 122 } 123 124 if len(m.MemberUpdates) == 0 { 125 return sdkerrors.ErrInvalidRequest.Wrap("empty updates") 126 } 127 members := MemberRequests{Members: m.MemberUpdates} 128 if err := members.ValidateBasic(); err != nil { 129 return err 130 } 131 132 return nil 133 } 134 135 // GetSigners implements Msg. 136 func (m MsgUpdateMembers) GetSigners() []sdk.AccAddress { 137 signer := sdk.MustAccAddressFromBech32(m.Authority) 138 return []sdk.AccAddress{signer} 139 } 140 141 // Type implements the LegacyMsg.Type method. 142 func (m MsgUpdateMembers) Type() string { 143 return sdk.MsgTypeURL(&m) 144 } 145 146 // Route implements the LegacyMsg.Route method. 147 func (m MsgUpdateMembers) Route() string { 148 return sdk.MsgTypeURL(&m) 149 } 150 151 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 152 func (m MsgUpdateMembers) GetSignBytes() []byte { 153 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 154 } 155 156 var _ sdk.Msg = (*MsgUpdateDecisionPolicy)(nil) 157 158 // ValidateBasic implements Msg. 159 func (m MsgUpdateDecisionPolicy) ValidateBasic() error { 160 if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { 161 return sdkerrors.ErrInvalidAddress.Wrapf("invalid authority address: %s", m.Authority) 162 } 163 164 if m.GetDecisionPolicy() == nil { 165 return sdkerrors.ErrInvalidRequest.Wrap("nil decision policy") 166 } 167 if err := m.GetDecisionPolicy().ValidateBasic(); err != nil { 168 return err 169 } 170 171 return nil 172 } 173 174 // GetSigners implements Msg. 175 func (m MsgUpdateDecisionPolicy) GetSigners() []sdk.AccAddress { 176 signer := sdk.MustAccAddressFromBech32(m.Authority) 177 return []sdk.AccAddress{signer} 178 } 179 180 // Type implements the LegacyMsg.Type method. 181 func (m MsgUpdateDecisionPolicy) Type() string { 182 return sdk.MsgTypeURL(&m) 183 } 184 185 // Route implements the LegacyMsg.Route method. 186 func (m MsgUpdateDecisionPolicy) Route() string { 187 return sdk.MsgTypeURL(&m) 188 } 189 190 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 191 func (m MsgUpdateDecisionPolicy) GetSignBytes() []byte { 192 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 193 } 194 195 func (m MsgUpdateDecisionPolicy) GetDecisionPolicy() DecisionPolicy { 196 if m.DecisionPolicy == nil { 197 return nil 198 } 199 200 policy, ok := m.DecisionPolicy.GetCachedValue().(DecisionPolicy) 201 if !ok { 202 return nil 203 } 204 return policy 205 } 206 207 func (m *MsgUpdateDecisionPolicy) SetDecisionPolicy(policy DecisionPolicy) error { 208 msg, ok := policy.(proto.Message) 209 if !ok { 210 return sdkerrors.ErrInvalidType.Wrapf("can't proto marshal %T", msg) 211 } 212 213 any, err := codectypes.NewAnyWithValue(msg) 214 if err != nil { 215 return err 216 } 217 m.DecisionPolicy = any 218 219 return nil 220 } 221 222 func (m MsgUpdateDecisionPolicy) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { 223 var policy DecisionPolicy 224 return unpacker.UnpackAny(m.DecisionPolicy, &policy) 225 } 226 227 var _ sdk.Msg = (*MsgSubmitProposal)(nil) 228 229 // ValidateBasic implements Msg. 230 func (m MsgSubmitProposal) ValidateBasic() error { 231 if err := validateProposers(m.Proposers); err != nil { 232 return err 233 } 234 235 if err := validateMsgs(m.GetMsgs()); err != nil { 236 return err 237 } 238 239 if _, ok := Exec_name[int32(m.Exec)]; !ok { 240 return sdkerrors.ErrInvalidRequest.Wrap("invalid exec option") 241 } 242 243 return nil 244 } 245 246 func (m MsgSubmitProposal) GetMsgs() []sdk.Msg { 247 msgs, err := GetMsgs(m.Messages, "proposal") 248 if err != nil { 249 panic(err) 250 } 251 return msgs 252 } 253 254 func (m *MsgSubmitProposal) SetMsgs(msgs []sdk.Msg) error { 255 anys, err := SetMsgs(msgs) 256 if err != nil { 257 return err 258 } 259 m.Messages = anys 260 return nil 261 } 262 263 func (m MsgSubmitProposal) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { 264 return UnpackInterfaces(unpacker, m.Messages) 265 } 266 267 // GetSigners implements Msg. 268 func (m MsgSubmitProposal) GetSigners() []sdk.AccAddress { 269 signers := make([]sdk.AccAddress, len(m.Proposers)) 270 for i, p := range m.Proposers { 271 proposer := sdk.MustAccAddressFromBech32(p) 272 signers[i] = proposer 273 } 274 return signers 275 } 276 277 // Type implements the LegacyMsg.Type method. 278 func (m MsgSubmitProposal) Type() string { 279 return sdk.MsgTypeURL(&m) 280 } 281 282 // Route implements the LegacyMsg.Route method. 283 func (m MsgSubmitProposal) Route() string { 284 return sdk.MsgTypeURL(&m) 285 } 286 287 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 288 func (m MsgSubmitProposal) GetSignBytes() []byte { 289 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 290 } 291 292 var _ sdk.Msg = (*MsgWithdrawProposal)(nil) 293 294 // ValidateBasic implements Msg. 295 func (m MsgWithdrawProposal) ValidateBasic() error { 296 if m.ProposalId == 0 { 297 return sdkerrors.ErrInvalidRequest.Wrap("empty proposal id") 298 } 299 300 if _, err := sdk.AccAddressFromBech32(m.Address); err != nil { 301 return sdkerrors.ErrInvalidAddress.Wrapf("invalid withdrawer address: %s", m.Address) 302 } 303 304 return nil 305 } 306 307 // GetSigners implements Msg. 308 func (m MsgWithdrawProposal) GetSigners() []sdk.AccAddress { 309 signer := sdk.MustAccAddressFromBech32(m.Address) 310 return []sdk.AccAddress{signer} 311 } 312 313 // Type implements the LegacyMsg.Type method. 314 func (m MsgWithdrawProposal) Type() string { 315 return sdk.MsgTypeURL(&m) 316 } 317 318 // Route implements the LegacyMsg.Route method. 319 func (m MsgWithdrawProposal) Route() string { 320 return sdk.MsgTypeURL(&m) 321 } 322 323 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 324 func (m MsgWithdrawProposal) GetSignBytes() []byte { 325 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 326 } 327 328 var _ sdk.Msg = (*MsgVote)(nil) 329 330 // ValidateBasic implements Msg. 331 func (m MsgVote) ValidateBasic() error { 332 if m.ProposalId == 0 { 333 return sdkerrors.ErrInvalidRequest.Wrap("empty proposal id") 334 } 335 336 if _, err := sdk.AccAddressFromBech32(m.Voter); err != nil { 337 return sdkerrors.ErrInvalidAddress.Wrapf("invalid voter address: %s", m.Voter) 338 } 339 340 if err := validateVoteOption(m.Option); err != nil { 341 return err 342 } 343 344 if _, ok := Exec_name[int32(m.Exec)]; !ok { 345 return sdkerrors.ErrInvalidRequest.Wrap("invalid exec option") 346 } 347 348 return nil 349 } 350 351 // GetSigners implements Msg. 352 func (m MsgVote) GetSigners() []sdk.AccAddress { 353 signer := sdk.MustAccAddressFromBech32(m.Voter) 354 return []sdk.AccAddress{signer} 355 } 356 357 // Type implements the LegacyMsg.Type method. 358 func (m MsgVote) Type() string { 359 return sdk.MsgTypeURL(&m) 360 } 361 362 // Route implements the LegacyMsg.Route method. 363 func (m MsgVote) Route() string { 364 return sdk.MsgTypeURL(&m) 365 } 366 367 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 368 func (m MsgVote) GetSignBytes() []byte { 369 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 370 } 371 372 var _ sdk.Msg = (*MsgExec)(nil) 373 374 // ValidateBasic implements Msg. 375 func (m MsgExec) ValidateBasic() error { 376 if m.ProposalId == 0 { 377 return sdkerrors.ErrInvalidRequest.Wrap("empty proposal id") 378 } 379 380 if _, err := sdk.AccAddressFromBech32(m.Signer); err != nil { 381 return sdkerrors.ErrInvalidAddress.Wrapf("invalid signer address: %s", m.Signer) 382 } 383 384 return nil 385 } 386 387 // GetSigners implements Msg. 388 func (m MsgExec) GetSigners() []sdk.AccAddress { 389 signer := sdk.MustAccAddressFromBech32(m.Signer) 390 return []sdk.AccAddress{signer} 391 } 392 393 // Type implements the LegacyMsg.Type method. 394 func (m MsgExec) Type() string { 395 return sdk.MsgTypeURL(&m) 396 } 397 398 // Route implements the LegacyMsg.Route method. 399 func (m MsgExec) Route() string { 400 return sdk.MsgTypeURL(&m) 401 } 402 403 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 404 func (m MsgExec) GetSignBytes() []byte { 405 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 406 } 407 408 var _ sdk.Msg = (*MsgLeaveFoundation)(nil) 409 410 // ValidateBasic implements Msg. 411 func (m MsgLeaveFoundation) ValidateBasic() error { 412 if _, err := sdk.AccAddressFromBech32(m.Address); err != nil { 413 return sdkerrors.ErrInvalidAddress.Wrapf("invalid member address: %s", m.Address) 414 } 415 416 return nil 417 } 418 419 // GetSigners implements Msg. 420 func (m MsgLeaveFoundation) GetSigners() []sdk.AccAddress { 421 signer := sdk.MustAccAddressFromBech32(m.Address) 422 return []sdk.AccAddress{signer} 423 } 424 425 // Type implements the LegacyMsg.Type method. 426 func (m MsgLeaveFoundation) Type() string { 427 return sdk.MsgTypeURL(&m) 428 } 429 430 // Route implements the LegacyMsg.Route method. 431 func (m MsgLeaveFoundation) Route() string { 432 return sdk.MsgTypeURL(&m) 433 } 434 435 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 436 func (m MsgLeaveFoundation) GetSignBytes() []byte { 437 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 438 } 439 440 var _ sdk.Msg = (*MsgUpdateCensorship)(nil) 441 442 // ValidateBasic implements Msg. 443 func (m MsgUpdateCensorship) ValidateBasic() error { 444 if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { 445 return sdkerrors.ErrInvalidAddress.Wrapf("invalid authority address: %s", m.Authority) 446 } 447 448 if err := m.Censorship.ValidateBasic(); err != nil { 449 return err 450 } 451 452 return nil 453 } 454 455 // GetSigners implements Msg. 456 func (m MsgUpdateCensorship) GetSigners() []sdk.AccAddress { 457 signer := sdk.MustAccAddressFromBech32(m.Authority) 458 return []sdk.AccAddress{signer} 459 } 460 461 // Type implements the LegacyMsg.Type method. 462 func (m MsgUpdateCensorship) Type() string { 463 return sdk.MsgTypeURL(&m) 464 } 465 466 // Route implements the LegacyMsg.Route method. 467 func (m MsgUpdateCensorship) Route() string { 468 return sdk.MsgTypeURL(&m) 469 } 470 471 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 472 func (m MsgUpdateCensorship) GetSignBytes() []byte { 473 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 474 } 475 476 var _ sdk.Msg = (*MsgGrant)(nil) 477 478 // ValidateBasic implements Msg. 479 func (m MsgGrant) ValidateBasic() error { 480 if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { 481 return sdkerrors.ErrInvalidAddress.Wrapf("invalid authority address: %s", m.Authority) 482 } 483 484 if _, err := sdk.AccAddressFromBech32(m.Grantee); err != nil { 485 return sdkerrors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", m.Grantee) 486 } 487 488 if a := m.GetAuthorization(); a != nil { 489 if err := a.ValidateBasic(); err != nil { 490 return err 491 } 492 } else { 493 return sdkerrors.ErrInvalidType.Wrap("invalid authorization") 494 } 495 496 return nil 497 } 498 499 func (m MsgGrant) GetAuthorization() Authorization { 500 if m.Authorization == nil { 501 return nil 502 } 503 504 a, err := GetAuthorization(m.Authorization, "grant") 505 if err != nil { 506 return nil 507 } 508 return a 509 } 510 511 func (m *MsgGrant) SetAuthorization(a Authorization) error { 512 any, err := SetAuthorization(a) 513 if err != nil { 514 return err 515 } 516 m.Authorization = any 517 518 return nil 519 } 520 521 func (m MsgGrant) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { 522 var authorization Authorization 523 return unpacker.UnpackAny(m.Authorization, &authorization) 524 } 525 526 // GetSigners implements Msg. 527 func (m MsgGrant) GetSigners() []sdk.AccAddress { 528 signer := sdk.MustAccAddressFromBech32(m.Authority) 529 return []sdk.AccAddress{signer} 530 } 531 532 // Type implements the LegacyMsg.Type method. 533 func (m MsgGrant) Type() string { 534 return sdk.MsgTypeURL(&m) 535 } 536 537 // Route implements the LegacyMsg.Route method. 538 func (m MsgGrant) Route() string { 539 return sdk.MsgTypeURL(&m) 540 } 541 542 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 543 func (m MsgGrant) GetSignBytes() []byte { 544 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 545 } 546 547 var _ sdk.Msg = (*MsgRevoke)(nil) 548 549 // ValidateBasic implements Msg. 550 func (m MsgRevoke) ValidateBasic() error { 551 if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { 552 return sdkerrors.ErrInvalidAddress.Wrapf("invalid authority address: %s", m.Authority) 553 } 554 555 if _, err := sdk.AccAddressFromBech32(m.Grantee); err != nil { 556 return sdkerrors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", m.Grantee) 557 } 558 559 if len(m.MsgTypeUrl) == 0 { 560 return sdkerrors.ErrInvalidRequest.Wrapf("empty url") 561 } 562 563 return nil 564 } 565 566 // GetSigners implements Msg. 567 func (m MsgRevoke) GetSigners() []sdk.AccAddress { 568 signer := sdk.MustAccAddressFromBech32(m.Authority) 569 return []sdk.AccAddress{signer} 570 } 571 572 // Type implements the LegacyMsg.Type method. 573 func (m MsgRevoke) Type() string { 574 return sdk.MsgTypeURL(&m) 575 } 576 577 // Route implements the LegacyMsg.Route method. 578 func (m MsgRevoke) Route() string { 579 return sdk.MsgTypeURL(&m) 580 } 581 582 // GetSignBytes implements the LegacyMsg.GetSignBytes method. 583 func (m MsgRevoke) GetSignBytes() []byte { 584 return sdk.MustSortJSON(codec.ModuleCdc.MustMarshalJSON(&m)) 585 }