github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/bank/internal/keeperadapter/msg_server.go (about) 1 package keeperadapter 2 3 import ( 4 "context" 5 6 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 7 sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors" 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/bank/internal/types" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/bank/internal/typesadapter" 10 ) 11 12 type msgServer struct { 13 MsgServerBankKeeper 14 } 15 16 // NewMsgServerImpl returns an implementation of the bank MsgServer interface 17 // for the provided Keeper. 18 func NewMsgServerImpl(keeper MsgServerBankKeeper) typesadapter.MsgServer { 19 return &msgServer{MsgServerBankKeeper: keeper} 20 } 21 22 var _ typesadapter.MsgServer = msgServer{} 23 24 func (k msgServer) Send(goCtx context.Context, msg *typesadapter.MsgSend) (*typesadapter.MsgSendResponse, error) { 25 ctx := sdk.UnwrapSDKContext(goCtx) 26 27 if !k.GetSendEnabled(ctx) { 28 return nil, types.ErrSendDisabled 29 } 30 31 from, err := sdk.AccAddressFromBech32(msg.FromAddress) 32 if err != nil { 33 return nil, err 34 } 35 to, err := sdk.AccAddressFromBech32(msg.ToAddress) 36 if err != nil { 37 return nil, err 38 } 39 40 if k.BlacklistedAddr(to) { 41 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive funds", msg.ToAddress) 42 } 43 44 err = k.SendCoins(ctx, from, to, sdk.CoinAdaptersToCoins(msg.Amount)) 45 if err != nil { 46 return nil, err 47 } 48 49 ctx.EventManager().EmitEvent( 50 sdk.NewEvent( 51 sdk.EventTypeMessage, 52 sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), 53 ), 54 ) 55 56 return &typesadapter.MsgSendResponse{}, nil 57 } 58 59 func (k msgServer) MultiSend(goCtx context.Context, msg *typesadapter.MsgMultiSend) (*typesadapter.MsgMultiSendResponse, error) { 60 //ctx := sdk.UnwrapSDKContext(goCtx) 61 // 62 //// NOTE: totalIn == totalOut should already have been checked 63 //for _, in := range msg.Inputs { 64 // k.GetSendEnabled(ctx) 65 // if err := k.IsSendEnabledCoins(ctx, in.Coins...); err != nil { 66 // return nil, err 67 // } 68 //} 69 // 70 //for _, out := range msg.Outputs { 71 // accAddr, err := sdk.AccAddressFromBech32(out.Address) 72 // if err != nil { 73 // panic(err) 74 // } 75 // if k.BlacklistedAddr(accAddr) { 76 // return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive transactions", out.Address) 77 // } 78 //} 79 // 80 //err := k.InputOutputCoins(ctx, msg.Inputs, msg.Outputs) 81 //if err != nil { 82 // return nil, err 83 //} 84 // 85 //ctx.EventManager().EmitEvent( 86 // sdk.NewEvent( 87 // sdk.EventTypeMessage, 88 // sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), 89 // ), 90 //) 91 92 return nil, sdkerrors.Wrap(types.ErrSendDisabled, "MultiSend is not support") 93 }