Skip to content

Commit

Permalink
Revert "x/lock: Fix ExtendLockup API (backport #1937) (#2030)"
Browse files Browse the repository at this point in the history
This reverts commit bd32316.
  • Loading branch information
ValarDragon committed Aug 1, 2022
1 parent 1a5d120 commit 54f8d89
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 31 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
#### Bug Fixes
* [2011](https://github.com/osmosis-labs/osmosis/pull/2011) Fix bug in TokenFactory initGenesis, relating to denom creation fee param.

<<<<<<< HEAD
#### Improvements
* [#2130](https://github.com/osmosis-labs/osmosis/pull/2130) Introduce errors in mint types.
* [#2000](https://github.com/osmosis-labs/osmosis/pull/2000) Update import paths from v9 to v10.
Expand All @@ -66,6 +67,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* Bring back the cliff vesting command: https://github.com/osmosis-labs/cosmos-sdk/pull/272
* Allow ScheduleUpgrade to come from same block: https://github.com/osmosis-labs/cosmos-sdk/pull/261

=======
>>>>>>> parent of bd32316c (x/lock: Fix `ExtendLockup` API (backport #1937) (#2030))
## v10.0.1

Expand Down
33 changes: 12 additions & 21 deletions x/lockup/keeper/lock.go
Original file line number Diff line number Diff line change
Expand Up @@ -353,16 +353,7 @@ func (k Keeper) unlockMaturedLockInternalLogic(ctx sdk.Context, lock types.Perio
// 2. Locks that are unlokcing are not allowed to change duration.
// 3. Locks that have synthetic lockup are not allowed to change.
// 4. Provided duration should be greater than the original duration.
func (k Keeper) ExtendLockup(ctx sdk.Context, lockID uint64, owner sdk.AccAddress, newDuration time.Duration) error {
lock, err := k.GetLockByID(ctx, lockID)
if err != nil {
return err
}

if lock.GetOwner() != owner.String() {
return types.ErrNotLockOwner
}

func (k Keeper) ExtendLockup(ctx sdk.Context, lock types.PeriodLock, newDuration time.Duration) error {
if lock.IsUnlocking() {
return fmt.Errorf("cannot edit unlocking lockup for lock %d", lock.ID)
}
Expand All @@ -372,15 +363,10 @@ func (k Keeper) ExtendLockup(ctx sdk.Context, lockID uint64, owner sdk.AccAddres
return fmt.Errorf("cannot edit lockup with synthetic lock %d", lock.ID)
}

// completely delete existing lock refs
err = k.deleteLockRefs(ctx, unlockingPrefix(lock.IsUnlocking()), *lock)
if err != nil {
return err
}
oldLock := lock

oldDuration := lock.GetDuration()
if newDuration != 0 {
if newDuration <= oldDuration {
if newDuration <= lock.Duration {
return fmt.Errorf("new duration should be greater than the original")
}

Expand All @@ -393,20 +379,25 @@ func (k Keeper) ExtendLockup(ctx sdk.Context, lockID uint64, owner sdk.AccAddres
lock.Duration = newDuration
}

// add lock refs with the new duration
err = k.addLockRefs(ctx, *lock)
// update lockup
err := k.deleteLockRefs(ctx, unlockingPrefix(oldLock.IsUnlocking()), oldLock)
if err != nil {
return err
}

err = k.addLockRefs(ctx, lock)
if err != nil {
return err
}

err = k.setLock(ctx, *lock)
err = k.setLock(ctx, lock)
if err != nil {
return err
}

k.hooks.OnLockupExtend(ctx,
lock.GetID(),
oldDuration,
oldLock.GetDuration(),
lock.GetDuration(),
)

Expand Down
6 changes: 3 additions & 3 deletions x/lockup/keeper/lock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -741,14 +741,14 @@ func (suite *KeeperTestSuite) TestEditLockup() {
lock, _ := suite.App.LockupKeeper.GetLockByID(suite.Ctx, 1)

// duration decrease should fail
err = suite.App.LockupKeeper.ExtendLockup(suite.Ctx, lock.ID, addr, time.Second/2)
err = suite.App.LockupKeeper.ExtendLockup(suite.Ctx, *lock, time.Second/2)
suite.Require().Error(err)
// extending lock with same duration should fail
err = suite.App.LockupKeeper.ExtendLockup(suite.Ctx, lock.ID, addr, time.Second)
err = suite.App.LockupKeeper.ExtendLockup(suite.Ctx, *lock, time.Second)
suite.Require().Error(err)

// duration increase should success
err = suite.App.LockupKeeper.ExtendLockup(suite.Ctx, lock.ID, addr, time.Second*2)
err = suite.App.LockupKeeper.ExtendLockup(suite.Ctx, *lock, time.Second*2)
suite.Require().NoError(err)

// check queries
Expand Down
13 changes: 6 additions & 7 deletions x/lockup/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,19 +155,18 @@ func createBeginUnlockEvent(lock *types.PeriodLock) sdk.Event {
func (server msgServer) ExtendLockup(goCtx context.Context, msg *types.MsgExtendLockup) (*types.MsgExtendLockupResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)

owner, err := sdk.AccAddressFromBech32(msg.Owner)
lock, err := server.keeper.GetLockByID(ctx, msg.ID)
if err != nil {
return nil, err
return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, err.Error())
}

err = server.keeper.ExtendLockup(ctx, msg.ID, owner, msg.Duration)
if err != nil {
return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, err.Error())
if msg.Owner != lock.Owner {
return nil, sdkerrors.Wrapf(types.ErrNotLockOwner, fmt.Sprintf("msg sender (%s) and lock owner (%s) does not match", msg.Owner, lock.Owner))
}

lock, err := server.keeper.GetLockByID(ctx, msg.ID)
err = server.keeper.ExtendLockup(ctx, *lock, msg.Duration)
if err != nil {
return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, err.Error())
}

ctx.EventManager().EmitEvents(sdk.Events{
Expand Down

0 comments on commit 54f8d89

Please sign in to comment.