Skip to content

Commit

Permalink
feat: speedup epoch distribution, superfluid component (backport #2214)…
Browse files Browse the repository at this point in the history
… (#2215)

* feat: speedup epoch distribution, superfluid component (#2214)

* Speedup epoch distribution, superfluid component

* changelog entries

* lint

Co-authored-by: Dev Ojha <[email protected]>
(cherry picked from commit 3cdfbcc)

# Conflicts:
#	CHANGELOG.md
#	x/incentives/keeper/distribute.go

* merge conflicts

* Update CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Adam Tucker <[email protected]>
Co-authored-by: Adam Tucker <[email protected]>
  • Loading branch information
3 people authored Jul 23, 2022
1 parent dcda2e3 commit 1a5d120
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
7 changes: 5 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## v10.1.1

#### Improvements
* [#2214](https://github.com/osmosis-labs/osmosis/pull/2214) Speedup epoch distribution, superfluid component

## v10.1.0

#### Bug Fixes
Expand Down Expand Up @@ -90,8 +95,6 @@ This release contains minor CLI bug fixes.
* [1698](https://github.com/osmosis-labs/osmosis/pull/1698) Register wasm snapshotter extension.
* [1931](https://github.com/osmosis-labs/osmosis/pull/1931) Add explicit check for input denoms to `CalcJoinPoolShares`



## [v9.0.0 - Nitrogen](https://github.com/osmosis-labs/osmosis/releases/tag/v9.0.0)

The Nitrogen release brings with it a number of features enabling further cosmwasm development work in Osmosis.
Expand Down
35 changes: 26 additions & 9 deletions x/incentives/keeper/distribute.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,20 +227,37 @@ func (k Keeper) doDistributionSends(ctx sdk.Context, distrs *distributionInfo) e
func (k Keeper) distributeSyntheticInternal(
ctx sdk.Context, gauge types.Gauge, locks []lockuptypes.PeriodLock, distrInfo *distributionInfo,
) (sdk.Coins, error) {
denom := gauge.DistributeTo.Denom

qualifiedLocks := make([]lockuptypes.PeriodLock, 0, len(locks))
qualifiedLocks := k.lk.GetLocksLongerThanDurationDenom(ctx, gauge.DistributeTo.Denom, gauge.DistributeTo.Duration)

// map from lockID to present index in resultant list
// to be state compatible with what we had before, we iterate over locks, to get qualified locks
// to be in the same order as what is present in locks.
// in a future release, we can just use qualified locks directly.
type lockIndexPair struct {
lock lockuptypes.PeriodLock
index int
}
qualifiedLocksMap := make(map[uint64]lockIndexPair, len(qualifiedLocks))
for _, lock := range qualifiedLocks {
qualifiedLocksMap[lock.ID] = lockIndexPair{lock, -1}
}
curIndex := 0
for _, lock := range locks {
// See if this lock has a synthetic lockup. If so, err == nil, and we add to qualifiedLocks
// otherwise it does not, and we continue.
_, err := k.lk.GetSyntheticLockup(ctx, lock.ID, denom)
if err != nil {
if v, ok := qualifiedLocksMap[lock.ID]; ok {
qualifiedLocksMap[lock.ID] = lockIndexPair{v.lock, curIndex}
curIndex += 1
}
}

sortedAndTrimmedQualifiedLocks := make([]lockuptypes.PeriodLock, curIndex)
for _, v := range qualifiedLocksMap {
if v.index < 0 {
continue
}
qualifiedLocks = append(qualifiedLocks, lock)
sortedAndTrimmedQualifiedLocks[v.index] = v.lock
}

return k.distributeInternal(ctx, gauge, qualifiedLocks, distrInfo)
return k.distributeInternal(ctx, gauge, sortedAndTrimmedQualifiedLocks, distrInfo)
}

// distributeInternal runs the distribution logic for a gauge, and adds the sends to
Expand Down

0 comments on commit 1a5d120

Please sign in to comment.