Skip to content

Commit

Permalink
improve error logging and emit events
Browse files Browse the repository at this point in the history
  • Loading branch information
tqin7 committed Sep 18, 2024
1 parent 39a75df commit 411394e
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 7 deletions.
8 changes: 8 additions & 0 deletions protocol/x/vault/keeper/deposit.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,14 @@ func (k Keeper) DepositToMegavault(
return nil, err
}

ctx.EventManager().EmitEvent(
types.NewDepositToMegavaultEvent(
fromSubaccount.Owner,
quoteQuantums.Uint64(),
mintedShares.Uint64(),
),
)

return mintedShares, nil
}

Expand Down
12 changes: 12 additions & 0 deletions protocol/x/vault/keeper/msg_server_withdraw_from_megavault_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,18 @@ func TestMsgWithdrawFromMegavault(t *testing.T) {
expectedTotalShares: 0,
expectedOwnerShares: 0,
},
"Failure: Withdraw more than locked shares": {
mainVaultBalance: 100,
totalShares: 500,
owner: constants.AliceAccAddress.String(),
ownerTotalShares: 100,
ownerLockedShares: 20,
sharesToWithdraw: 81,
minQuoteQuantums: 1,
deliverTxFails: true,
expectedTotalShares: 500, // unchanged
expectedOwnerShares: 100, // unchanged
},
"Failure: Withdraw some unlocked shares (8% of total), one sub-vault, Redeemed quantums < Min quantums": {
mainVaultBalance: 1_234,
totalShares: 500,
Expand Down
23 changes: 16 additions & 7 deletions protocol/x/vault/keeper/withdraw.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ func (k Keeper) WithdrawFromMegavault(
totalShares := k.GetTotalShares(ctx).NumShares.BigInt()
redeemedQuoteQuantums, err = k.GetSubaccountEquity(ctx, types.MegavaultMainSubaccount)
if err != nil {
log.ErrorLogWithError(ctx, "Failed to get megavault main vault equity", err)
log.ErrorLogWithError(ctx, "Megavault withdrawal: failed to get megavault main vault equity", err)
return nil, err
}
redeemedQuoteQuantums.Mul(redeemedQuoteQuantums, sharesToWithdraw)
Expand All @@ -158,20 +158,20 @@ func (k Keeper) WithdrawFromMegavault(
for ; vaultParamsIterator.Valid(); vaultParamsIterator.Next() {
vaultId, err := types.GetVaultIdFromStateKey(vaultParamsIterator.Key())
if err != nil {
log.ErrorLogWithError(ctx, "Failed to get vault ID from state key", err)
log.ErrorLogWithError(ctx, "Megavault withdrawal: failed to get vault ID from state key", err)
continue
}
var vaultParams types.VaultParams
k.cdc.MustUnmarshal(vaultParamsIterator.Value(), &vaultParams)

_, perpetual, marketParam, marketPrice, err := k.GetVaultClobPerpAndMarket(ctx, *vaultId)
if err != nil {
log.ErrorLogWithError(ctx, "Failed to get perpetual and market", err, "Vault ID", vaultId)
log.ErrorLogWithError(ctx, "Megavault withdrawal: failed to get perpetual and market", err, "Vault ID", vaultId)
continue
}
leverage, equity, err := k.GetVaultLeverageAndEquity(ctx, *vaultId, &perpetual, &marketPrice)
if err != nil {
log.ErrorLogWithError(ctx, "Failed to get vault leverage and equity", err, "Vault ID", vaultId)
log.ErrorLogWithError(ctx, "Megavault withdrawal: failed to get vault leverage and equity", err, "Vault ID", vaultId)
continue
}

Expand All @@ -187,7 +187,7 @@ func (k Keeper) WithdrawFromMegavault(
if err != nil {
log.ErrorLogWithError(
ctx,
"Failed to get vault withdrawal slippage",
"Megavault withdrawal: failed to get vault withdrawal slippage",
err,
"Vault ID",
vaultId,
Expand All @@ -211,7 +211,7 @@ func (k Keeper) WithdrawFromMegavault(
if err != nil {
log.ErrorLogWithError(
ctx,
"Failed to transfer from sub vault to main vault",
"Megavault withdrawal: failed to transfer from sub vault to main vault",
err,
"Vault ID",
vaultId,
Expand Down Expand Up @@ -246,7 +246,7 @@ func (k Keeper) WithdrawFromMegavault(
if err != nil {
log.ErrorLogWithError(
ctx,
"Failed to transfer from main vault to subaccount",
"Megavault withdrawal: failed to transfer from main vault to subaccount",
err,
"Subaccount",
toSubaccount,
Expand Down Expand Up @@ -274,5 +274,14 @@ func (k Keeper) WithdrawFromMegavault(
}
}

ctx.EventManager().EmitEvent(
types.NewWithdrawFromMegavaultEvent(
toSubaccount.Owner,
sharesToWithdraw.Uint64(),
totalShares.Uint64(),
redeemedQuoteQuantums.Uint64(),
),
)

return redeemedQuoteQuantums, nil
}
51 changes: 51 additions & 0 deletions protocol/x/vault/types/events.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package types

import (
fmt "fmt"

sdk "github.com/cosmos/cosmos-sdk/types"
// satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
)

const (
EventTypeDepositToMegavault = "deposit_to_megavault"
AttributeKeyDepositor = "depositor"
AttributeKeyQuoteQuantums = "quote_quantums"
AttributeKeyMintedShares = "minted_shares"

EventTypeWithdrawFromMegavault = "withdraw_from_megavault"
AttributeKeyWithdrawer = "withdrawer"
AttributeKeySharesToWithdraw = "shares_to_withdraw"
AttributeKeyTotalShares = "total_shares"
AttributeKeyRedeemedQuoteQuantums = "redeemed_quote_quantums"
)

// NewDepositToMegavaultEvent constructs a new deposit_to_megavault sdk.Event.
func NewDepositToMegavaultEvent(
depositorAddress string,
quoteQuantums uint64,
mintedShares uint64,
) sdk.Event {
return sdk.NewEvent(
EventTypeDepositToMegavault,
sdk.NewAttribute(AttributeKeyDepositor, depositorAddress),
sdk.NewAttribute(AttributeKeyQuoteQuantums, fmt.Sprintf("%d", quoteQuantums)),
sdk.NewAttribute(AttributeKeyMintedShares, fmt.Sprintf("%d", mintedShares)),
)
}

// NewWithdrawFromMegavaultEvent constructs a new withdraw_from_megavault sdk.Event.
func NewWithdrawFromMegavaultEvent(
withdrawerAddress string,
sharesToWithdraw uint64,
totalShares uint64,
redeemedQuoteQuantums uint64,
) sdk.Event {
return sdk.NewEvent(
EventTypeWithdrawFromMegavault,
sdk.NewAttribute(AttributeKeyWithdrawer, withdrawerAddress),
sdk.NewAttribute(AttributeKeySharesToWithdraw, fmt.Sprintf("%d", sharesToWithdraw)),
sdk.NewAttribute(AttributeKeyTotalShares, fmt.Sprintf("%d", totalShares)),
sdk.NewAttribute(AttributeKeyRedeemedQuoteQuantums, fmt.Sprintf("%d", redeemedQuoteQuantums)),
)
}

0 comments on commit 411394e

Please sign in to comment.