forked from cerc-io/laconicd-deprecated
e90b21bc8e
1. add bond,auction, nameserivce module 2. update to v0.12.2 ethermint version 3. fix the test cases 4. add gql server
131 lines
3.6 KiB
Go
131 lines
3.6 KiB
Go
package keeper
|
|
|
|
import (
|
|
"context"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/tharsis/ethermint/x/bond/types"
|
|
)
|
|
|
|
type msgServer struct {
|
|
Keeper
|
|
}
|
|
|
|
// NewMsgServerImpl returns an implementation of the bond MsgServer interface for the provided Keeper.
|
|
func NewMsgServerImpl(keeper Keeper) types.MsgServer {
|
|
return &msgServer{Keeper: keeper}
|
|
}
|
|
|
|
var _ types.MsgServer = msgServer{}
|
|
|
|
func (k msgServer) CreateBond(c context.Context, msg *types.MsgCreateBond) (*types.MsgCreateBondResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
_, err = k.Keeper.CreateBond(ctx, signerAddress, msg.Coins)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
ctx.EventManager().EmitEvents(sdk.Events{
|
|
sdk.NewEvent(
|
|
types.EventTypeCreateBond,
|
|
sdk.NewAttribute(types.AttributeKeySigner, msg.Signer),
|
|
sdk.NewAttribute(sdk.AttributeKeyAmount, msg.Coins.String()),
|
|
),
|
|
sdk.NewEvent(
|
|
sdk.EventTypeMessage,
|
|
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
|
|
sdk.NewAttribute(types.AttributeKeySigner, msg.Signer),
|
|
),
|
|
})
|
|
|
|
return &types.MsgCreateBondResponse{}, nil
|
|
}
|
|
|
|
func (k msgServer) RefillBond(c context.Context, msg *types.MsgRefillBond) (*types.MsgRefillBondResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
_, err = k.Keeper.RefillBond(ctx, msg.Id, signerAddress, msg.Coins)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
ctx.EventManager().EmitEvents(sdk.Events{
|
|
sdk.NewEvent(
|
|
types.EventTypeRefillBond,
|
|
sdk.NewAttribute(types.AttributeKeySigner, msg.Signer),
|
|
sdk.NewAttribute(types.AttributeKeyBondId, msg.Id),
|
|
sdk.NewAttribute(sdk.AttributeKeyAmount, msg.Coins.String()),
|
|
),
|
|
sdk.NewEvent(
|
|
sdk.EventTypeMessage,
|
|
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
|
|
sdk.NewAttribute(types.AttributeKeySigner, msg.Signer),
|
|
),
|
|
})
|
|
|
|
return &types.MsgRefillBondResponse{}, nil
|
|
}
|
|
|
|
func (k msgServer) WithdrawBond(c context.Context, msg *types.MsgWithdrawBond) (*types.MsgWithdrawBondResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
_, err = k.Keeper.WithdrawBond(ctx, msg.Id, signerAddress, msg.Coins)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
ctx.EventManager().EmitEvents(sdk.Events{
|
|
sdk.NewEvent(
|
|
types.EventTypeWithdrawBond,
|
|
sdk.NewAttribute(types.AttributeKeySigner, msg.Signer),
|
|
sdk.NewAttribute(types.AttributeKeyBondId, msg.Id),
|
|
sdk.NewAttribute(sdk.AttributeKeyAmount, msg.Coins.String()),
|
|
),
|
|
sdk.NewEvent(
|
|
sdk.EventTypeMessage,
|
|
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
|
|
sdk.NewAttribute(types.AttributeKeySigner, msg.Signer),
|
|
),
|
|
})
|
|
|
|
return &types.MsgWithdrawBondResponse{}, nil
|
|
}
|
|
|
|
func (k msgServer) CancelBond(c context.Context, msg *types.MsgCancelBond) (*types.MsgCancelBondResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
signerAddress, err := sdk.AccAddressFromBech32(msg.Signer)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
_, err = k.Keeper.CancelBond(ctx, msg.Id, signerAddress)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
ctx.EventManager().EmitEvents(sdk.Events{
|
|
sdk.NewEvent(
|
|
types.EventTypeCancelBond,
|
|
sdk.NewAttribute(types.AttributeKeySigner, msg.Signer),
|
|
sdk.NewAttribute(types.AttributeKeyBondId, msg.Id),
|
|
),
|
|
sdk.NewEvent(
|
|
sdk.EventTypeMessage,
|
|
sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
|
|
sdk.NewAttribute(types.AttributeKeySigner, msg.Signer),
|
|
),
|
|
})
|
|
|
|
return &types.MsgCancelBondResponse{}, nil
|
|
}
|