MCPcopy Create free account
hub / github.com/Sifchain/sifnode / Close

Method Close

x/margin/keeper/msg_server.go:91–129  ·  view source on GitHub ↗
(goCtx context.Context, msg *types.MsgClose)

Source from the content-addressed store, hash-verified

89}
90
91func (k msgServer) Close(goCtx context.Context, msg *types.MsgClose) (*types.MsgCloseResponse, error) {
92 ctx := sdk.UnwrapSDKContext(goCtx)
93
94 mtp, err := k.GetMTP(ctx, msg.Signer, msg.Id)
95 if err != nil {
96 return nil, err
97 }
98
99 var closedMtp *types.MTP
100 var repayAmount sdk.Uint
101 switch mtp.Position {
102 case types.Position_LONG:
103 closedMtp, repayAmount, err = k.CloseLong(ctx, msg)
104 if err != nil {
105 return nil, err
106 }
107 default:
108 return nil, sdkerrors.Wrap(types.ErrInvalidPosition, mtp.Position.String())
109 }
110
111 ctx.EventManager().EmitEvent(sdk.NewEvent(types.EventClose,
112 sdk.NewAttribute("id", strconv.FormatInt(int64(closedMtp.Id), 10)),
113 sdk.NewAttribute("position", closedMtp.Position.String()),
114 sdk.NewAttribute("address", closedMtp.Address),
115 sdk.NewAttribute("collateral_asset", closedMtp.CollateralAsset),
116 sdk.NewAttribute("collateral_amount", closedMtp.CollateralAmount.String()),
117 sdk.NewAttribute("custody_asset", closedMtp.CustodyAsset),
118 sdk.NewAttribute("custody_amount", closedMtp.CustodyAmount.String()),
119 sdk.NewAttribute("repay_amount", repayAmount.String()),
120 sdk.NewAttribute("leverage", closedMtp.Leverage.String()),
121 sdk.NewAttribute("liabilities", closedMtp.Liabilities.String()),
122 sdk.NewAttribute("interest_paid_collateral", mtp.InterestPaidCollateral.String()),
123 sdk.NewAttribute("interest_paid_custody", mtp.InterestPaidCustody.String()),
124 sdk.NewAttribute("interest_unpaid_collateral", closedMtp.InterestUnpaidCollateral.String()),
125 sdk.NewAttribute("health", closedMtp.MtpHealth.String()),
126 ))
127
128 return &types.MsgCloseResponse{}, nil
129}
130
131func (k msgServer) OpenLong(ctx sdk.Context, msg *types.MsgOpen) (*types.MTP, error) {
132 maxLeverage := k.GetMaxLeverageParam(ctx)

Callers

nothing calls this directly

Calls 3

CloseLongMethod · 0.95
GetMTPMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected