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  }