github.com/okex/exchain@v1.8.0/libs/ibc-go/modules/apps/transfer/keeper/msg_server.go (about) 1 package keeper 2 3 import ( 4 "context" 5 6 sdk "github.com/okex/exchain/libs/cosmos-sdk/types" 7 "github.com/okex/exchain/libs/ibc-go/modules/apps/transfer/types" 8 ) 9 10 //var _ types.MsgServer = Keeper{} 11 12 // See createOutgoingPacket in spec:https://github.com/cosmos/ics/tree/master/spec/ics-020-fungible-token-transfer#packet-relay 13 14 // Transfer defines a rpc handler method for MsgTransfer. 15 func (k Keeper) Transfer(goCtx context.Context, msg *types.MsgTransfer) (*types.MsgTransferResponse, error) { 16 ctx := sdk.UnwrapSDKContext(goCtx) 17 18 sender, err := sdk.AccAddressFromBech32(msg.Sender) 19 if err != nil { 20 return nil, err 21 } 22 if err := k.SendTransfer( 23 ctx, msg.SourcePort, msg.SourceChannel, msg.Token, 24 sender, msg.Receiver, msg.TimeoutHeight, msg.TimeoutTimestamp, 25 ); err != nil { 26 return nil, err 27 } 28 29 k.Logger(ctx).Info("IBC fungible token transfer", "token", msg.Token.Denom, "amount", msg.Token.Amount.String(), "sender", msg.Sender, "receiver", msg.Receiver) 30 31 ctx.EventManager().EmitEvents(sdk.Events{ 32 sdk.NewEvent( 33 types.EventTypeTransfer, 34 sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), 35 sdk.NewAttribute(types.AttributeKeyReceiver, msg.Receiver), 36 ), 37 sdk.NewEvent( 38 sdk.EventTypeMessage, 39 sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), 40 ), 41 }) 42 43 return &types.MsgTransferResponse{}, nil 44 }