You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To aid with smoothing out the migration process from Classic to Concentrated pools, we implemented a light feature that approximated splitting rewards between linked Classic and Concentrated pools based on liquidity. The goal was to treat the linked Classic pool as a full range Concentrated position for the purposes of incentives, and kick back the appropriate amount of incentives back to the Classic pool's internal gauge with a small discount to nudge people to migrate.
While this was a very useful and elegantly implemented feature, I propose we remove it in favor of volume splitting incentives for the following reasons:
Volume splitting incentives are better in essentially all cases
The existence of automatic liquidity-based splitting between linked pools will interfere with volume-splitting incentives
Early CL pools have demonstrated that volume flocks to the concentrated pool quickly, so we should expect the incentives to be weighted heavily towards the CL pool and migrating should remain a rational thing to do
The second point is particularly difficult to circumvent because the liquidity-based splitting is implemented at the CL pool level of abstraction out of necessity, as an epoch-based model at the gauge layer would have led to weird games (compared to spoofing volume, spoofing liquidity is very low-cost).
Suggested Design
Fortunately, the feature was quite well-abstracted, so the actual change (outside of fixing tests) should actually be quite small.
In fact, the entire feature should be able to be disabled by simply removing the following two lines from updateGivenPoolUptimeAccumulatorsToNow:
We of course should make an effort to remove dead code and keep tests clean, so the following changes should also be made:
Delete prepareBalancerPoolAsFullRange
Delete claimAndResetFullRangeBalancerPool
Remove all uses of reward splitting from tests
If necessary/applicable, remove BalancerSharesRewardDiscount as a param as well as the corresponding default value (DefaultBalancerSharesDiscount) from types/constants.go
Acceptance Criteria
All CL tests pass without issue
All uses of "reward splitting" are removed from CL
The text was updated successfully, but these errors were encountered:
Background
To aid with smoothing out the migration process from Classic to Concentrated pools, we implemented a light feature that approximated splitting rewards between linked Classic and Concentrated pools based on liquidity. The goal was to treat the linked Classic pool as a full range Concentrated position for the purposes of incentives, and kick back the appropriate amount of incentives back to the Classic pool's internal gauge with a small discount to nudge people to migrate.
While this was a very useful and elegantly implemented feature, I propose we remove it in favor of volume splitting incentives for the following reasons:
The second point is particularly difficult to circumvent because the liquidity-based splitting is implemented at the CL pool level of abstraction out of necessity, as an epoch-based model at the gauge layer would have led to weird games (compared to spoofing volume, spoofing liquidity is very low-cost).
Suggested Design
Fortunately, the feature was quite well-abstracted, so the actual change (outside of fixing tests) should actually be quite small.
In fact, the entire feature should be able to be disabled by simply removing the following two lines from
updateGivenPoolUptimeAccumulatorsToNow
:osmosis/x/concentrated-liquidity/incentives.go
Line 390 in b3cbdd4
osmosis/x/concentrated-liquidity/incentives.go
Line 441 in b3cbdd4
We of course should make an effort to remove dead code and keep tests clean, so the following changes should also be made:
prepareBalancerPoolAsFullRange
claimAndResetFullRangeBalancerPool
BalancerSharesRewardDiscount
as a param as well as the corresponding default value (DefaultBalancerSharesDiscount
) fromtypes/constants.go
Acceptance Criteria
The text was updated successfully, but these errors were encountered: