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  }