package keeper import ( "context" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/CosmWasm/wasmd/x/wasm/types" ) var _ types.MsgServer = msgServer{} type msgServer struct { keeper types.ContractOpsKeeper } func NewMsgServerImpl(k types.ContractOpsKeeper) types.MsgServer { return &msgServer{keeper: k} } func (m msgServer) StoreCode(goCtx context.Context, msg *types.MsgStoreCode) (*types.MsgStoreCodeResponse, error) { return nil, sdkerrors.Wrapf(sdkerrors.ErrNotSupported, "must use x/wormhole") // ctx := sdk.UnwrapSDKContext(goCtx) // senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) // if err != nil { // return nil, sdkerrors.Wrap(err, "sender") // } // ctx.EventManager().EmitEvent(sdk.NewEvent( // sdk.EventTypeMessage, // sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), // sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), // )) // codeID, err := m.keeper.Create(ctx, senderAddr, msg.WASMByteCode, msg.InstantiatePermission) // if err != nil { // return nil, err // } // return &types.MsgStoreCodeResponse{ // CodeID: codeID, // }, nil } func (m msgServer) InstantiateContract(goCtx context.Context, msg *types.MsgInstantiateContract) (*types.MsgInstantiateContractResponse, error) { return nil, sdkerrors.Wrapf(sdkerrors.ErrNotSupported, "must use x/wormhole") // ctx := sdk.UnwrapSDKContext(goCtx) // senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) // if err != nil { // return nil, sdkerrors.Wrap(err, "sender") // } // var adminAddr sdk.AccAddress // if msg.Admin != "" { // if adminAddr, err = sdk.AccAddressFromBech32(msg.Admin); err != nil { // return nil, sdkerrors.Wrap(err, "admin") // } // } // ctx.EventManager().EmitEvent(sdk.NewEvent( // sdk.EventTypeMessage, // sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), // sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), // )) // contractAddr, data, err := m.keeper.Instantiate(ctx, msg.CodeID, senderAddr, adminAddr, msg.Msg, msg.Label, msg.Funds) // if err != nil { // return nil, err // } // return &types.MsgInstantiateContractResponse{ // Address: contractAddr.String(), // Data: data, // }, nil } func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteContract) (*types.MsgExecuteContractResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) if err != nil { return nil, sdkerrors.Wrap(err, "sender") } contractAddr, err := sdk.AccAddressFromBech32(msg.Contract) if err != nil { return nil, sdkerrors.Wrap(err, "contract") } ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) data, err := m.keeper.Execute(ctx, contractAddr, senderAddr, msg.Msg, msg.Funds) if err != nil { return nil, err } return &types.MsgExecuteContractResponse{ Data: data, }, nil } func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateContract) (*types.MsgMigrateContractResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) if err != nil { return nil, sdkerrors.Wrap(err, "sender") } contractAddr, err := sdk.AccAddressFromBech32(msg.Contract) if err != nil { return nil, sdkerrors.Wrap(err, "contract") } ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) data, err := m.keeper.Migrate(ctx, contractAddr, senderAddr, msg.CodeID, msg.Msg) if err != nil { return nil, err } return &types.MsgMigrateContractResponse{ Data: data, }, nil } func (m msgServer) UpdateAdmin(goCtx context.Context, msg *types.MsgUpdateAdmin) (*types.MsgUpdateAdminResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) if err != nil { return nil, sdkerrors.Wrap(err, "sender") } contractAddr, err := sdk.AccAddressFromBech32(msg.Contract) if err != nil { return nil, sdkerrors.Wrap(err, "contract") } newAdminAddr, err := sdk.AccAddressFromBech32(msg.NewAdmin) if err != nil { return nil, sdkerrors.Wrap(err, "new admin") } ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) if err := m.keeper.UpdateContractAdmin(ctx, contractAddr, senderAddr, newAdminAddr); err != nil { return nil, err } return &types.MsgUpdateAdminResponse{}, nil } func (m msgServer) ClearAdmin(goCtx context.Context, msg *types.MsgClearAdmin) (*types.MsgClearAdminResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) senderAddr, err := sdk.AccAddressFromBech32(msg.Sender) if err != nil { return nil, sdkerrors.Wrap(err, "sender") } contractAddr, err := sdk.AccAddressFromBech32(msg.Contract) if err != nil { return nil, sdkerrors.Wrap(err, "contract") } ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) if err := m.keeper.ClearContractAdmin(ctx, contractAddr, senderAddr); err != nil { return nil, err } return &types.MsgClearAdminResponse{}, nil }