From 3e8ca619decf1adac570506bbf1c36c6954545da Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 27 Feb 2024 17:43:50 -0700 Subject: [PATCH] feat: tick init/deinit for CL (#7622) (cherry picked from commit ea2310a6485a673981018ffac70ae494c6908fce) # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 5 +++++ x/concentrated-liquidity/tick.go | 26 +++++++++++++++++++++++- x/concentrated-liquidity/types/events.go | 2 ++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad2f43d4794..cc99a4aeac7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### State Compatible * [#7590](https://github.com/osmosis-labs/osmosis/pull/7590) fix cwpool migration prop disallowing only one of code id or bytecode. +<<<<<<< HEAD +======= +* [#7582](https://github.com/osmosis-labs/osmosis/pull/7582) IAVL v1 +* [#7622](https://github.com/osmosis-labs/osmosis/pull/7622) Create/remove tick events. +>>>>>>> ea2310a6 (feat: tick init/deinit for CL (#7622)) ## v23.0.0 diff --git a/x/concentrated-liquidity/tick.go b/x/concentrated-liquidity/tick.go index b17cff6b893..1ddffbded7d 100644 --- a/x/concentrated-liquidity/tick.go +++ b/x/concentrated-liquidity/tick.go @@ -153,7 +153,21 @@ func (k Keeper) makeInitialTickInfo(ctx sdk.Context, poolId uint64, tickIndex in initialUptimeTrackers = append(initialUptimeTrackers, model.UptimeTracker{UptimeGrowthOutside: uptimeTrackerValue}) } - return model.TickInfo{LiquidityGross: osmomath.ZeroDec(), LiquidityNet: osmomath.ZeroDec(), SpreadRewardGrowthOppositeDirectionOfLastTraversal: initialSpreadRewardGrowthOppositeDirectionOfLastTraversal, UptimeTrackers: model.UptimeTrackers{List: initialUptimeTrackers}}, nil + uptimeTrackers := model.UptimeTrackers{List: initialUptimeTrackers} + + // Emit init tick event + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.TypeEvtInitTick, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + sdk.NewAttribute(types.AttributeKeyPoolId, strconv.FormatUint(poolId, 10)), + sdk.NewAttribute(types.AttributeKeyTickIndex, strconv.FormatInt(tickIndex, 10)), + sdk.NewAttribute(types.AttributeKeySpreadRewardGrowthOppositeDirectionOfLastTraversal, initialSpreadRewardGrowthOppositeDirectionOfLastTraversal.String()), + sdk.NewAttribute(types.AttributeKeyUptimeGrowthOppositeDirectionOfLastTraversal, uptimeTrackers.String()), + ), + }) + + return model.TickInfo{LiquidityGross: osmomath.ZeroDec(), LiquidityNet: osmomath.ZeroDec(), SpreadRewardGrowthOppositeDirectionOfLastTraversal: initialSpreadRewardGrowthOppositeDirectionOfLastTraversal, UptimeTrackers: uptimeTrackers}, nil } func (k Keeper) SetTickInfo(ctx sdk.Context, poolId uint64, tickIndex int64, tickInfo *model.TickInfo) { @@ -167,6 +181,16 @@ func (k Keeper) RemoveTickInfo(ctx sdk.Context, poolId uint64, tickIndex int64) store := ctx.KVStore(k.storeKey) key := types.KeyTick(poolId, tickIndex) store.Delete(key) + + // Emit remove tick event + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.TypeEvtRemoveTick, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + sdk.NewAttribute(types.AttributeKeyPoolId, strconv.FormatUint(poolId, 10)), + sdk.NewAttribute(types.AttributeKeyTickIndex, strconv.FormatInt(tickIndex, 10)), + ), + }) } func (k Keeper) GetAllInitializedTicksForPool(ctx sdk.Context, poolId uint64) ([]genesis.FullTick, error) { diff --git a/x/concentrated-liquidity/types/events.go b/x/concentrated-liquidity/types/events.go index e24838d334f..5f5338c1efa 100644 --- a/x/concentrated-liquidity/types/events.go +++ b/x/concentrated-liquidity/types/events.go @@ -13,6 +13,8 @@ const ( TypeEvtMoveRewards = "move_rewards" TypeEvtCrossTick = "cross_tick" TypeEvtTransferPositions = "transfer_positions" + TypeEvtInitTick = "init_tick" + TypeEvtRemoveTick = "remove_tick" AttributeValueCategory = ModuleName AttributeKeyPositionId = "position_id"