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  }