diff --git a/x/crosschain/keeper/relay_transfer.go b/x/crosschain/keeper/relay_transfer.go index e28325972..e5a6f4406 100644 --- a/x/crosschain/keeper/relay_transfer.go +++ b/x/crosschain/keeper/relay_transfer.go @@ -201,7 +201,7 @@ func (k Keeper) bridgeCallEvmHandler( ctx.EventManager().EmitEvents(sdk.Events{sdk.NewEvent(types.EventTypeBridgeCallEvm, attrs...)}) }() - txResp, err := k.evmKeeper.CallEVM(ctx, sender, to, value.BigInt(), gasLimit, fxtypes.MustDecodeHex(message), true) + txResp, err := k.evmKeeper.CallEVM(ctx, sender, to, value.BigInt(), gasLimit, types.MustDecodeMessage(message), true) if err != nil { k.Logger(ctx).Error("bridge call evm error", "nonce", eventNonce, "error", err.Error()) callErr = err.Error() diff --git a/x/crosschain/types/bridge_call.go b/x/crosschain/types/bridge_call.go index a34108c9f..42bc31eb7 100644 --- a/x/crosschain/types/bridge_call.go +++ b/x/crosschain/types/bridge_call.go @@ -121,3 +121,14 @@ func PackERC20Asset(tokens [][]byte, amounts []*big.Int) ([]byte, error) { } return assetTypeDecode.Pack("ERC20", assetData) } + +func MustDecodeMessage(message string) []byte { + if len(message) == 0 { + return []byte{} + } + bz, err := hex.DecodeString(message) + if err != nil { + panic(err) + } + return bz +} diff --git a/x/crosschain/types/msg_validate.go b/x/crosschain/types/msg_validate.go index 48c5778d8..c4646f03e 100644 --- a/x/crosschain/types/msg_validate.go +++ b/x/crosschain/types/msg_validate.go @@ -6,7 +6,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" errortypes "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" fxtypes "github.com/functionx/fx-core/v7/types" ) @@ -215,7 +214,7 @@ func (b MsgValidate) MsgBridgeCallClaimValidate(m *MsgBridgeCallClaim) (err erro return errortypes.ErrInvalidRequest.Wrap("invalid value") } if len(m.Message) > 0 { - if _, err := hexutil.Decode(m.Message); err != nil { + if _, err := hex.DecodeString(m.Message); err != nil { return errortypes.ErrInvalidRequest.Wrap("invalid message") } } diff --git a/x/tron/types/msg_validate.go b/x/tron/types/msg_validate.go index 9c36fa5e3..8ccbdd4b5 100644 --- a/x/tron/types/msg_validate.go +++ b/x/tron/types/msg_validate.go @@ -5,7 +5,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" errortypes "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/ethereum/go-ethereum/common/hexutil" tronaddress "github.com/fbsobreira/gotron-sdk/pkg/address" crosschaintypes "github.com/functionx/fx-core/v7/x/crosschain/types" @@ -170,7 +169,7 @@ func (b TronMsgValidate) MsgBridgeCallClaimValidate(m *crosschaintypes.MsgBridge return errortypes.ErrInvalidRequest.Wrap("invalid value") } if len(m.Message) > 0 { - if _, err := hexutil.Decode(m.Message); err != nil { + if _, err := hex.DecodeString(m.Message); err != nil { return errortypes.ErrInvalidRequest.Wrap("invalid message") } }