From ee432629a671f833add6ca769e9b1258a25b9656 Mon Sep 17 00:00:00 2001 From: Julian Compagni Portis Date: Tue, 3 Sep 2024 16:17:31 -0400 Subject: [PATCH 1/5] add more dex tx events for easier indexing and frontend --- x/dex/keeper/cancel_limit_order.go | 2 +- x/dex/keeper/place_limit_order.go | 31 ++++++++++++--------- x/dex/keeper/withdraw_filled_limit_order.go | 1 + x/dex/types/events.go | 26 ++++++++++++++--- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/x/dex/keeper/cancel_limit_order.go b/x/dex/keeper/cancel_limit_order.go index 8c3af443e..f298b239a 100644 --- a/x/dex/keeper/cancel_limit_order.go +++ b/x/dex/keeper/cancel_limit_order.go @@ -41,8 +41,8 @@ func (k Keeper) CancelLimitOrderCore( pairID.Token1, tradePairID.MakerDenom, tradePairID.TakerDenom, - makerCoinOut.Amount, takerCoinOut.Amount, + makerCoinOut.Amount, trancheKey, )) diff --git a/x/dex/keeper/place_limit_order.go b/x/dex/keeper/place_limit_order.go index 161707765..b35a7a58d 100644 --- a/x/dex/keeper/place_limit_order.go +++ b/x/dex/keeper/place_limit_order.go @@ -72,19 +72,24 @@ func (k Keeper) PlaceLimitOrderCore( // This will never panic because we've already successfully constructed a TradePairID above pairID := takerTradePairID.MustPairID() - ctx.EventManager().EmitEvent(types.CreatePlaceLimitOrderEvent( - callerAddr, - receiverAddr, - pairID.Token0, - pairID.Token1, - tokenIn, - tokenOut, - totalIn, - tickIndexInToOut, - orderType.String(), - sharesIssued, - trancheKey, - )) + types.EmitEventWithTimestamp( + ctx, + types.CreatePlaceLimitOrderEvent( + callerAddr, + receiverAddr, + pairID.Token0, + pairID.Token1, + tokenIn, + tokenOut, + totalIn, + tickIndexInToOut, + orderType.String(), + sharesIssued, + trancheKey, + swapInCoin.Amount, + swapOutCoin.Amount, + ), + ) return trancheKey, totalInCoin, swapInCoin, swapOutCoin, nil } diff --git a/x/dex/keeper/withdraw_filled_limit_order.go b/x/dex/keeper/withdraw_filled_limit_order.go index b6d25c460..f85450732 100644 --- a/x/dex/keeper/withdraw_filled_limit_order.go +++ b/x/dex/keeper/withdraw_filled_limit_order.go @@ -42,6 +42,7 @@ func (k Keeper) WithdrawFilledLimitOrderCore( tradePairID.MakerDenom, tradePairID.TakerDenom, amountOutTokenOut, + remainingTokenIn, trancheKey, )) diff --git a/x/dex/types/events.go b/x/dex/types/events.go index f24ebcb00..d822c79fc 100644 --- a/x/dex/types/events.go +++ b/x/dex/types/events.go @@ -3,6 +3,7 @@ package types import ( "strconv" "strings" + "time" "cosmossdk.io/math" "cosmossdk.io/store/types" @@ -19,6 +20,8 @@ const ( AttributeTokenOut = "TokenOut" AttributeAmountIn = "AmountIn" AttributeAmountOut = "AmountOut" + AttributeSwapAmountIn = "SwapAmountIn" + AttributeSwapAmountOut = "SwapAmountOut" AttributeTokenInAmountOut = "TokenInAmountOut" AttributeTokenOutAmountOut = "TokenOutAmountOut" AttributeTickIndex = "TickIndex" @@ -47,6 +50,7 @@ const ( AttributeInc = "inc" AttributeDec = "dec" AttributePairID = "pair_id" + AttributeTimestamp = "Timestamp" ) // Event Keys @@ -64,6 +68,12 @@ const ( EventTypeNeutronMessage = "neutron" ) +func EmitEventWithTimestamp(ctx sdk.Context, event sdk.Event) { + timestamp := sdk.NewAttribute(AttributeTimestamp, ctx.BlockTime().Format(time.RFC3339)) + event = event.AppendAttributes(timestamp) + ctx.EventManager().EmitEvent(event) +} + func CreateDepositEvent( creator sdk.AccAddress, receiver sdk.AccAddress, @@ -162,6 +172,8 @@ func CreatePlaceLimitOrderEvent( orderType string, shares math.Int, trancheKey string, + swapAmountIn math.Int, + swapAmountOut math.Int, ) sdk.Event { attrs := []sdk.Attribute{ sdk.NewAttribute(sdk.AttributeKeyModule, "dex"), @@ -177,6 +189,8 @@ func CreatePlaceLimitOrderEvent( sdk.NewAttribute(AttributeOrderType, orderType), sdk.NewAttribute(AttributeShares, shares.String()), sdk.NewAttribute(AttributeTrancheKey, trancheKey), + sdk.NewAttribute(AttributeSwapAmountIn, swapAmountIn.String()), + sdk.NewAttribute(AttributeSwapAmountOut, swapAmountOut.String()), } return sdk.NewEvent(sdk.EventTypeMessage, attrs...) @@ -188,7 +202,8 @@ func WithdrawFilledLimitOrderEvent( token1 string, makerDenom string, tokenOut string, - amountOut math.Int, + amountOutTaker math.Int, + amountOutMaker math.Int, trancheKey string, ) sdk.Event { attrs := []sdk.Attribute{ @@ -201,7 +216,10 @@ func WithdrawFilledLimitOrderEvent( sdk.NewAttribute(AttributeTokenIn, makerDenom), sdk.NewAttribute(AttributeTokenOut, tokenOut), sdk.NewAttribute(AttributeTrancheKey, trancheKey), - sdk.NewAttribute(AttributeAmountOut, amountOut.String()), + // DEPRECATED: `AmountOut` will be removed in the next release + sdk.NewAttribute(AttributeAmountOut, amountOutTaker.String()), + sdk.NewAttribute(AttributeTokenOutAmountOut, amountOutTaker.String()), + sdk.NewAttribute(AttributeTokenInAmountOut, amountOutMaker.String()), } return sdk.NewEvent(sdk.EventTypeMessage, attrs...) @@ -213,8 +231,8 @@ func CancelLimitOrderEvent( token1 string, makerDenom string, tokenOut string, - amountOutMaker math.Int, amountOutTaker math.Int, + amountOutMaker math.Int, trancheKey string, ) sdk.Event { attrs := []sdk.Attribute{ @@ -226,8 +244,8 @@ func CancelLimitOrderEvent( sdk.NewAttribute(AttributeToken1, token1), sdk.NewAttribute(AttributeTokenIn, makerDenom), sdk.NewAttribute(AttributeTokenOut, tokenOut), - sdk.NewAttribute(AttributeTokenInAmountOut, amountOutMaker.String()), sdk.NewAttribute(AttributeTokenOutAmountOut, amountOutTaker.String()), + sdk.NewAttribute(AttributeTokenInAmountOut, amountOutMaker.String()), sdk.NewAttribute(AttributeTrancheKey, trancheKey), } From 3ad6350842601ca76c6a07dc87dcbb8dc530f2e8 Mon Sep 17 00:00:00 2001 From: Julian Compagni Portis Date: Thu, 19 Sep 2024 16:02:10 -0400 Subject: [PATCH 2/5] Misc event cleanup + TrancheUserUpdateEvent --- x/dex/keeper/limit_order_tranche_user.go | 2 ++ x/dex/keeper/place_limit_order.go | 33 +++++++++++------------- x/dex/types/events.go | 32 ++++++++++++++++------- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/x/dex/keeper/limit_order_tranche_user.go b/x/dex/keeper/limit_order_tranche_user.go index 9df5c072e..e5a862f5c 100644 --- a/x/dex/keeper/limit_order_tranche_user.go +++ b/x/dex/keeper/limit_order_tranche_user.go @@ -93,6 +93,8 @@ func (k Keeper) SaveTrancheUser(ctx sdk.Context, trancheUser *types.LimitOrderTr } else { k.SetLimitOrderTrancheUser(ctx, trancheUser) } + ctx.EventManager().EmitEvent(types.TrancheUserUpdateEvent(*trancheUser)) + } // GetAllLimitOrderTrancheUser returns all LimitOrderTrancheUser diff --git a/x/dex/keeper/place_limit_order.go b/x/dex/keeper/place_limit_order.go index b35a7a58d..fcb562b5b 100644 --- a/x/dex/keeper/place_limit_order.go +++ b/x/dex/keeper/place_limit_order.go @@ -72,24 +72,21 @@ func (k Keeper) PlaceLimitOrderCore( // This will never panic because we've already successfully constructed a TradePairID above pairID := takerTradePairID.MustPairID() - types.EmitEventWithTimestamp( - ctx, - types.CreatePlaceLimitOrderEvent( - callerAddr, - receiverAddr, - pairID.Token0, - pairID.Token1, - tokenIn, - tokenOut, - totalIn, - tickIndexInToOut, - orderType.String(), - sharesIssued, - trancheKey, - swapInCoin.Amount, - swapOutCoin.Amount, - ), - ) + ctx.EventManager().EmitEvent(types.CreatePlaceLimitOrderEvent( + callerAddr, + receiverAddr, + pairID.Token0, + pairID.Token1, + tokenIn, + tokenOut, + totalIn, + tickIndexInToOut, + orderType.String(), + sharesIssued, + trancheKey, + swapInCoin.Amount, + swapOutCoin.Amount, + )) return trancheKey, totalInCoin, swapInCoin, swapOutCoin, nil } diff --git a/x/dex/types/events.go b/x/dex/types/events.go index d822c79fc..e08c1defa 100644 --- a/x/dex/types/events.go +++ b/x/dex/types/events.go @@ -3,7 +3,6 @@ package types import ( "strconv" "strings" - "time" "cosmossdk.io/math" "cosmossdk.io/store/types" @@ -50,7 +49,10 @@ const ( AttributeInc = "inc" AttributeDec = "dec" AttributePairID = "pair_id" - AttributeTimestamp = "Timestamp" + AttributeMakerDenom = "MakerDenom" + AttributeTakerDenom = "TakerDenom" + AttributeSharesOwned = "SharesOwned" + AttributeSharesWithdrawn = "SharesWithdrawn" ) // Event Keys @@ -64,16 +66,12 @@ const ( EventTypeTickUpdate = "TickUpdate" TickUpdateEventKey = "TickUpdate" EventTypeGoodTilPurgeHitGasLimit = "GoodTilPurgeHitGasLimit" + TrancheUserUpdateEventKey = "TrancheUserUpdate" + EventTypeTrancheUserUpdate = "TrancheUserUpdate" // EventTypeNeutronMessage defines the event type used by the Interchain Queries module events. EventTypeNeutronMessage = "neutron" ) -func EmitEventWithTimestamp(ctx sdk.Context, event sdk.Event) { - timestamp := sdk.NewAttribute(AttributeTimestamp, ctx.BlockTime().Format(time.RFC3339)) - event = event.AppendAttributes(timestamp) - ctx.EventManager().EmitEvent(event) -} - func CreateDepositEvent( creator sdk.AccAddress, receiver sdk.AccAddress, @@ -244,8 +242,8 @@ func CancelLimitOrderEvent( sdk.NewAttribute(AttributeToken1, token1), sdk.NewAttribute(AttributeTokenIn, makerDenom), sdk.NewAttribute(AttributeTokenOut, tokenOut), - sdk.NewAttribute(AttributeTokenOutAmountOut, amountOutTaker.String()), sdk.NewAttribute(AttributeTokenInAmountOut, amountOutMaker.String()), + sdk.NewAttribute(AttributeTokenOutAmountOut, amountOutTaker.String()), sdk.NewAttribute(AttributeTrancheKey, trancheKey), } @@ -423,3 +421,19 @@ func GetEventsDecTotalPoolReserves(pairID PairID) sdk.Events { ), } } + +func TrancheUserUpdateEvent(trancheUser LimitOrderTrancheUser) sdk.Event { + attrs := []sdk.Attribute{ + sdk.NewAttribute(sdk.AttributeKeyModule, "dex"), + sdk.NewAttribute(sdk.AttributeKeyAction, TrancheUserUpdateEventKey), + sdk.NewAttribute(AttributeTrancheKey, trancheUser.TrancheKey), + sdk.NewAttribute(AttributeCreator, trancheUser.Address), + sdk.NewAttribute(AttributeTickIndex, strconv.Itoa(int(trancheUser.TickIndexTakerToMaker))), + sdk.NewAttribute(AttributeMakerDenom, trancheUser.TradePairId.MakerDenom), + sdk.NewAttribute(AttributeTakerDenom, trancheUser.TradePairId.TakerDenom), + sdk.NewAttribute(AttributeSharesOwned, trancheUser.SharesOwned.String()), + sdk.NewAttribute(AttributeSharesWithdrawn, trancheUser.SharesWithdrawn.String()), + } + return sdk.NewEvent(EventTypeTickUpdate, attrs...) + +} From b040804e702485e7896a96645187ad6ab572d86e Mon Sep 17 00:00:00 2001 From: Julian Compagni Portis Date: Thu, 19 Sep 2024 16:13:13 -0400 Subject: [PATCH 3/5] fmt --- x/dex/keeper/limit_order_tranche_user.go | 1 - x/dex/types/events.go | 1 - 2 files changed, 2 deletions(-) diff --git a/x/dex/keeper/limit_order_tranche_user.go b/x/dex/keeper/limit_order_tranche_user.go index e5a862f5c..ea2896a70 100644 --- a/x/dex/keeper/limit_order_tranche_user.go +++ b/x/dex/keeper/limit_order_tranche_user.go @@ -94,7 +94,6 @@ func (k Keeper) SaveTrancheUser(ctx sdk.Context, trancheUser *types.LimitOrderTr k.SetLimitOrderTrancheUser(ctx, trancheUser) } ctx.EventManager().EmitEvent(types.TrancheUserUpdateEvent(*trancheUser)) - } // GetAllLimitOrderTrancheUser returns all LimitOrderTrancheUser diff --git a/x/dex/types/events.go b/x/dex/types/events.go index e08c1defa..1ebaef969 100644 --- a/x/dex/types/events.go +++ b/x/dex/types/events.go @@ -435,5 +435,4 @@ func TrancheUserUpdateEvent(trancheUser LimitOrderTrancheUser) sdk.Event { sdk.NewAttribute(AttributeSharesWithdrawn, trancheUser.SharesWithdrawn.String()), } return sdk.NewEvent(EventTypeTickUpdate, attrs...) - } From 078ef5f2af8b52b42382b71ba3f48526ded3a46b Mon Sep 17 00:00:00 2001 From: Julian Compagni Portis Date: Mon, 23 Sep 2024 16:50:53 -0400 Subject: [PATCH 4/5] Use Token0,Token1,TokenIn for TrancheUserUpdate --- x/dex/types/events.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/x/dex/types/events.go b/x/dex/types/events.go index 1ebaef969..9b616e26f 100644 --- a/x/dex/types/events.go +++ b/x/dex/types/events.go @@ -423,16 +423,18 @@ func GetEventsDecTotalPoolReserves(pairID PairID) sdk.Events { } func TrancheUserUpdateEvent(trancheUser LimitOrderTrancheUser) sdk.Event { + pairID := trancheUser.TradePairId.MustPairID() attrs := []sdk.Attribute{ sdk.NewAttribute(sdk.AttributeKeyModule, "dex"), sdk.NewAttribute(sdk.AttributeKeyAction, TrancheUserUpdateEventKey), sdk.NewAttribute(AttributeTrancheKey, trancheUser.TrancheKey), sdk.NewAttribute(AttributeCreator, trancheUser.Address), sdk.NewAttribute(AttributeTickIndex, strconv.Itoa(int(trancheUser.TickIndexTakerToMaker))), - sdk.NewAttribute(AttributeMakerDenom, trancheUser.TradePairId.MakerDenom), - sdk.NewAttribute(AttributeTakerDenom, trancheUser.TradePairId.TakerDenom), + sdk.NewAttribute(AttributeToken0, pairID.Token0), + sdk.NewAttribute(AttributeToken1, pairID.Token1), + sdk.NewAttribute(AttributeTokenIn, trancheUser.TradePairId.MakerDenom), sdk.NewAttribute(AttributeSharesOwned, trancheUser.SharesOwned.String()), sdk.NewAttribute(AttributeSharesWithdrawn, trancheUser.SharesWithdrawn.String()), } - return sdk.NewEvent(EventTypeTickUpdate, attrs...) + return sdk.NewEvent(EventTypeTrancheUserUpdate, attrs...) } From 10a548a3b0c65656497a2b234a0a6da2c07f915d Mon Sep 17 00:00:00 2001 From: Julian Compagni Portis Date: Tue, 24 Sep 2024 11:56:48 -0400 Subject: [PATCH 5/5] fix merge --- x/dex/keeper/cancel_limit_order.go | 4 ++-- x/dex/keeper/withdraw_filled_limit_order.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/x/dex/keeper/cancel_limit_order.go b/x/dex/keeper/cancel_limit_order.go index 24142db0e..967ff5602 100644 --- a/x/dex/keeper/cancel_limit_order.go +++ b/x/dex/keeper/cancel_limit_order.go @@ -42,8 +42,8 @@ func (k Keeper) CancelLimitOrderCore( callerAddr, pairID.Token0, pairID.Token1, - tradePairID.MakerDenom, - tradePairID.TakerDenom, + makerDenom, + takerDenom, takerCoinOut.Amount, makerCoinOut.Amount, trancheKey, diff --git a/x/dex/keeper/withdraw_filled_limit_order.go b/x/dex/keeper/withdraw_filled_limit_order.go index 536c7d38f..40ff3c6ec 100644 --- a/x/dex/keeper/withdraw_filled_limit_order.go +++ b/x/dex/keeper/withdraw_filled_limit_order.go @@ -39,10 +39,10 @@ func (k Keeper) WithdrawFilledLimitOrderCore( callerAddr, pairID.Token0, pairID.Token1, - tradePairID.MakerDenom, - tradePairID.TakerDenom, - amountOutTokenOut, - remainingTokenIn, + makerDenom, + takerDenom, + takerCoinOut.Amount, + makerCoinOut.Amount, trancheKey, ))