Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[VS Incentives]: Remove liquidity-based reward splitting from CL #6093

Closed
Tracked by #6057
AlpinYukseloglu opened this issue Aug 17, 2023 · 0 comments · Fixed by #6142
Closed
Tracked by #6057

[VS Incentives]: Remove liquidity-based reward splitting from CL #6093

AlpinYukseloglu opened this issue Aug 17, 2023 · 0 comments · Fixed by #6142
Assignees
Labels
F: volume-splitting feat: Volume-splitting incentives

Comments

@AlpinYukseloglu
Copy link
Contributor

AlpinYukseloglu commented Aug 17, 2023

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:

  1. Volume splitting incentives are better in essentially all cases
  2. The existence of automatic liquidity-based splitting between linked pools will interfere with volume-splitting incentives
  3. 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:

balancerPoolId, qualifyingBalancerShares, err := k.prepareBalancerPoolAsFullRange(ctx, poolId, uptimeAccums)

_, err := k.claimAndResetFullRangeBalancerPool(ctx, poolId, balancerPoolId, uptimeAccums)

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
@github-project-automation github-project-automation bot moved this to Needs Triage 🔍 in Osmosis Chain Development Aug 17, 2023
@AlpinYukseloglu AlpinYukseloglu changed the title Remove rewards splitting [VS Incentives]: Remove liquidity-based reward splitting from CL Aug 17, 2023
@AlpinYukseloglu AlpinYukseloglu added the F: volume-splitting feat: Volume-splitting incentives label Aug 17, 2023
@AlpinYukseloglu AlpinYukseloglu self-assigned this Aug 17, 2023
@github-project-automation github-project-automation bot moved this from Needs Triage 🔍 to Done ✅ in Osmosis Chain Development Aug 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
F: volume-splitting feat: Volume-splitting incentives
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

1 participant