github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/vmbridge/types/tx.go (about)

     1  package types
     2  
     3  import (
     4  	"fmt"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  )
     8  
     9  func (msg MsgSendToEvm) Route() string {
    10  	return RouterKey
    11  }
    12  
    13  func (msg MsgSendToEvm) Type() string {
    14  	return SendToEvmSubMsgName
    15  }
    16  
    17  func (msg MsgSendToEvm) ValidateBasic() error {
    18  	sender, err := sdk.AccAddressFromBech32(msg.Sender)
    19  	if err != nil {
    20  		return ErrMsgSendToEvm(err.Error())
    21  	}
    22  	if !sdk.IsWasmAddress(sender) {
    23  		return ErrIsNotWasmAddr
    24  	}
    25  
    26  	contract, err := sdk.AccAddressFromBech32(msg.Contract)
    27  	if err != nil {
    28  		return ErrMsgSendToEvm(err.Error())
    29  	}
    30  	if sdk.IsWasmAddress(contract) {
    31  		return ErrIsNotEvmAddr
    32  	}
    33  
    34  	recipient, err := sdk.AccAddressFromBech32(msg.Recipient)
    35  	if err != nil {
    36  		return ErrMsgSendToEvm(err.Error())
    37  	}
    38  	if sdk.IsWasmAddress(recipient) {
    39  		return ErrIsNotEvmAddr
    40  	}
    41  
    42  	if msg.Amount.IsNegative() {
    43  		return ErrMsgSendToEvm(fmt.Sprintf("negative coin amount: %v", msg.Amount))
    44  	}
    45  	return nil
    46  }
    47  
    48  func (msg MsgSendToEvm) GetSignBytes() []byte {
    49  	panic(fmt.Errorf("MsgSendToEvm can not be sign beacuse it can not exist in tx. It only exist in wasm call"))
    50  }
    51  
    52  func (msg MsgSendToEvm) GetSigners() []sdk.AccAddress {
    53  	senderAddr, err := sdk.AccAddressFromBech32(msg.Sender)
    54  	if err != nil { // should never happen as valid basic rejects invalid addresses
    55  		panic(err)
    56  	}
    57  	return []sdk.AccAddress{senderAddr}
    58  }