diff --git a/contract/r/gnoswap/position/_helper_test.gno b/contract/r/gnoswap/position/_helper_test.gno index e6b55fe9..6b9de0e7 100644 --- a/contract/r/gnoswap/position/_helper_test.gno +++ b/contract/r/gnoswap/position/_helper_test.gno @@ -454,10 +454,9 @@ func LPTokenUnStake(t *testing.T, owner std.Address, tokenId uint64, unwrap bool sr.UnStakeToken(tokenId, unwrap) } -func getPoolFromLpTokenId(t *testing.T, lpTokenId uint64) *pl.Pool { +func getPoolFromTokenId(t *testing.T, tokenId uint64) *pl.Pool { t.Helper() - - position := MustGetPosition(lpTokenId) + position := MustGetPosition(tokenId) return pl.GetPoolFromPoolPath(position.poolKey) } diff --git a/contract/r/gnoswap/position/api.gno b/contract/r/gnoswap/position/api.gno index 6754e942..cfa375ae 100644 --- a/contract/r/gnoswap/position/api.gno +++ b/contract/r/gnoswap/position/api.gno @@ -24,25 +24,25 @@ func ApiGetPositions() string { return makeJsonResponse(&baseStat, &PositionsResponse{Positions: rpcPositions}) } -func ApiGetPosition(lpTokenId uint64) string { - _, exist := GetPosition(lpTokenId) +func ApiGetPosition(id uint64) string { + _, exist := GetPosition(id) if !exist { return "" } - rpcPosition := rpcMakePosition(lpTokenId) + rpcPosition := rpcMakePosition(id) baseStat := NewResponseQueryBase(std.GetHeight(), time.Now().Unix()) return makeJsonResponse(&baseStat, &PositionsResponse{Positions: []RpcPosition{rpcPosition}}) } func ApiGetPositionsByPoolPath(poolPath string) string { rpcPositions := []RpcPosition{} - for lpTokenId := uint64(1); lpTokenId < nextId; lpTokenId++ { - position := MustGetPosition(lpTokenId) + for id := uint64(1); id < nextId; id++ { + position := MustGetPosition(id) if position.poolKey != poolPath { continue } - rpcPosition := rpcMakePosition(lpTokenId) + rpcPosition := rpcMakePosition(id) rpcPositions = append(rpcPositions, rpcPosition) } @@ -52,10 +52,10 @@ func ApiGetPositionsByPoolPath(poolPath string) string { func ApiGetPositionsUnclaimedFee() string { rpcUnclaimedFee := []RpcUnclaimedFee{} - for lpTokenId := uint64(1); lpTokenId < nextId; lpTokenId++ { - unclaimedFee0, unclaimedFee1 := unclaimedFee(lpTokenId) + for id := uint64(1); id < nextId; id++ { + unclaimedFee0, unclaimedFee1 := unclaimedFee(id) rpcUnclaimedFee = append(rpcUnclaimedFee, RpcUnclaimedFee{ - LpPositionId: lpTokenId, + LpPositionId: id, Fee0: unclaimedFee0.ToString(), Fee1: unclaimedFee1.ToString(), }) @@ -123,10 +123,10 @@ func ApiGetPositionUnclaimedFeeByLpPositionId(lpPositionId uint64) string { }) } -func rpcMakePosition(lpTokenId uint64) RpcPosition { - position := MustGetPosition(lpTokenId) +func rpcMakePosition(positionId uint64) RpcPosition { + position := MustGetPosition(positionId) - burned := isBurned(lpTokenId) + burned := isBurned(positionId) pool := pl.GetPoolFromPoolPath(position.poolKey) currentX96 := pool.Slot0SqrtPriceX96() @@ -143,16 +143,16 @@ func rpcMakePosition(lpTokenId uint64) RpcPosition { unclaimedFee0 := i256.Zero() unclaimedFee1 := i256.Zero() if !burned { - unclaimedFee0, unclaimedFee1 = unclaimedFee(lpTokenId) + unclaimedFee0, unclaimedFee1 = unclaimedFee(positionId) } - owner, err := gnft.OwnerOf(tokenIdFrom(lpTokenId)) + owner, err := gnft.OwnerOf(tokenIdFrom(positionId)) if err != nil { owner = consts.ZERO_ADDRESS } return RpcPosition{ - LpPositionId: lpTokenId, + LpPositionId: positionId, Burned: burned, Owner: owner.String(), Operator: position.operator.String(), diff --git a/contract/r/gnoswap/position/position.gno b/contract/r/gnoswap/position/position.gno index 903ae914..f3a9e56c 100644 --- a/contract/r/gnoswap/position/position.gno +++ b/contract/r/gnoswap/position/position.gno @@ -55,8 +55,8 @@ func mustUpdatePosition(id uint64, position Position) { // GetPosition returns a position for a given position ID. // Returns false if position doesn't exist func GetPosition(id uint64) (Position, bool) { - tokenIdStr := strconv.FormatUint(id, 10) - iPosition, exist := positions.Get(tokenIdStr) + idStr := strconv.FormatUint(id, 10) + iPosition, exist := positions.Get(idStr) if !exist { return Position{}, false } @@ -589,7 +589,7 @@ func IncreaseLiquidity( amount0Desired, amount1Desired, amount0Min, amount1Min := parseAmounts(amount0DesiredStr, amount1DesiredStr, amount0MinStr, amount1MinStr) increaseLiquidityParams := IncreaseLiquidityParams{ - tokenId: positionId, + positionId: positionId, amount0Desired: amount0Desired, amount1Desired: amount1Desired, amount0Min: amount0Min, @@ -694,12 +694,12 @@ func updatePosition( } func increaseLiquidity(params IncreaseLiquidityParams) (uint64, *u256.Uint, *u256.Uint, *u256.Uint, string) { - // verify tokenId exists - assertTokenExists(params.tokenId) + // verify position ID exists + assertTokenExists(params.positionId) caller := getPrevAddr() - assertOnlyOwnerOfToken(params.tokenId, caller) + assertOnlyOwnerOfToken(params.positionId, caller) - position := MustGetPosition(params.tokenId) + position := MustGetPosition(params.positionId) liquidity, amount0, amount1 := addLiquidity( AddLiquidityParams{ poolKey: position.poolKey, @@ -737,20 +737,20 @@ func increaseLiquidity(params IncreaseLiquidityParams) (uint64, *u256.Uint, *u25 position.liquidity = new(u256.Uint).Add(new(u256.Uint).Set(position.liquidity), liquidity) position.burned = false - updated := setPosition(params.tokenId, position) + updated := setPosition(params.positionId, position) if !updated { panic(newErrorWithDetail( errPositionDoesNotExist, - ufmt.Sprintf("can not increase liquidity for non-existent position(%d)", params.tokenId), + ufmt.Sprintf("can not increase liquidity for non-existent position(%d)", params.positionId), )) } - return params.tokenId, liquidity, amount0, amount1, position.poolKey + return params.positionId, liquidity, amount0, amount1, position.poolKey } // DecreaseLiquidity decreases liquidity of the existing position // It also handles the conversion between GNOT and WUGNOT transparently for the user. -// Returns tokenId, liquidity, fee0, fee1, amount0, amount1, poolPath +// Returns position ID, liquidity, fee0, fee1, amount0, amount1, poolPath // ref: https://docs.gnoswap.io/contracts/position/position.gno#decreaseliquidity func DecreaseLiquidity( positionId uint64, @@ -770,7 +770,7 @@ func DecreaseLiquidity( amount0Min := u256.MustFromDecimal(amount0MinStr) amount1Min := u256.MustFromDecimal(amount1MinStr) decreaseLiquidityParams := DecreaseLiquidityParams{ - tokenId: positionId, + positionId: positionId, liquidity: liquidityStr, amount0Min: amount0Min, amount1Min: amount1Min, @@ -812,19 +812,19 @@ func DecreaseLiquidity( // unwrapped to GNOT at the end of the operation. // Returns position ID, liquidity, fee0, fee1, amount0, amount1, poolPath func decreaseLiquidity(params DecreaseLiquidityParams) (uint64, *u256.Uint, *u256.Uint, *u256.Uint, *u256.Uint, *u256.Uint, string) { - verifyTokenIdAndOwnership(params.tokenId) + verifyTokenIdAndOwnership(params.positionId) // BEFORE DECREASE LIQUIDITY, COLLECT FEE FIRST - _, fee0Str, fee1Str, _, _, _ := CollectFee(params.tokenId, params.unwrapResult) + _, fee0Str, fee1Str, _, _, _ := CollectFee(params.positionId, params.unwrapResult) fee0 := u256.MustFromDecimal(fee0Str) fee1 := u256.MustFromDecimal(fee1Str) - position := MustGetPosition(params.tokenId) + position := MustGetPosition(params.positionId) positionLiquidity := position.liquidity if positionLiquidity.IsZero() { panic(newErrorWithDetail( errZeroLiquidity, - ufmt.Sprintf("position(position ID:%d) has 0 liquidity", params.tokenId), + ufmt.Sprintf("position(position ID:%d) has 0 liquidity", params.positionId), )) } @@ -870,7 +870,7 @@ func decreaseLiquidity(params DecreaseLiquidityParams) (uint64, *u256.Uint, *u25 position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128 position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128 position.liquidity = new(u256.Uint).Sub(positionLiquidity, liquidityToRemove) - mustUpdatePosition(params.tokenId, position) + mustUpdatePosition(params.positionId, position) collect0, collect1 := pl.Collect( pToken0, @@ -901,20 +901,20 @@ func decreaseLiquidity(params DecreaseLiquidityParams) (uint64, *u256.Uint, *u25 "tokensOwed1 underflow", )) } - mustUpdatePosition(params.tokenId, position) + mustUpdatePosition(params.positionId, position) if position.isClear() { - burnPosition(params.tokenId) // just update flag (we don't want to burn actual position) + burnPosition(params.positionId) // just update flag (we don't want to burn actual position) } // NO UNWRAP if !params.unwrapResult { - return params.tokenId, liquidityToRemove, fee0, fee1, collectAmount0, collectAmount1, position.poolKey + return params.positionId, liquidityToRemove, fee0, fee1, collectAmount0, collectAmount1, position.poolKey } handleUnwrap(pToken0, pToken1, params.unwrapResult, beforeWugnotBalance, caller) - return params.tokenId, liquidityToRemove, fee0, fee1, collectAmount0, collectAmount1, position.poolKey + return params.positionId, liquidityToRemove, fee0, fee1, collectAmount0, collectAmount1, position.poolKey } // CollectFee collects swap fee from the position @@ -1037,7 +1037,7 @@ func getCurrentFeeGrowth(postion Position) (FeeGrowthInside, error) { // Repositiomn adjusts the position of an existing liquidity token // by changing its price range and liquidity amount. -// Returns tokenId, liquidity, tickLower, tickUpper, amount0, amount1 +// Returns Position ID, liquidity, tickLower, tickUpper, amount0, amount1 // ref: https://docs.gnoswap.io/contracts/position/position.gno#reposition func Reposition( positionId uint64, diff --git a/contract/r/gnoswap/position/position_test.gno b/contract/r/gnoswap/position/position_test.gno index 2825dd2d..32bc1f2e 100644 --- a/contract/r/gnoswap/position/position_test.gno +++ b/contract/r/gnoswap/position/position_test.gno @@ -39,9 +39,9 @@ func IsRegistered(t *testing.T, tokenPath string) error { return errInvalidTokenPath } -func newDummyPosition(tokenId uint64) Position { +func newDummyPosition(id uint64) Position { return Position{ - nonce: u256.NewUint(tokenId), + nonce: u256.NewUint(id), operator: "user1", poolKey: "poolKey1", tickLower: -500, @@ -56,12 +56,12 @@ func newDummyPosition(tokenId uint64) Position { } func TestMustGetPosition(t *testing.T) { - tokenId := uint64(1) - position := newDummyPosition(tokenId) - setPosition(tokenId, position) + id := uint64(1) + position := newDummyPosition(id) + setPosition(id, position) t.Run("Success - Get existing position", func(t *testing.T) { - result := MustGetPosition(tokenId) + result := MustGetPosition(id) uassert.Equal(t, position.nonce.ToString(), result.nonce.ToString()) uassert.Equal(t, position.operator, result.operator) uassert.Equal(t, position.poolKey, result.poolKey) @@ -85,10 +85,10 @@ func TestMustGetPosition(t *testing.T) { } func TestGetPosition(t *testing.T) { - tokenId := uint64(1) - position := newDummyPosition(tokenId) + id := uint64(1) + position := newDummyPosition(id) t.Run("Success - Get existing position", func(t *testing.T) { - result := MustGetPosition(tokenId) + result := MustGetPosition(id) uassert.Equal(t, position.nonce.ToString(), result.nonce.ToString()) uassert.Equal(t, position.operator, result.operator) uassert.Equal(t, position.poolKey, result.poolKey) @@ -100,19 +100,19 @@ func TestGetPosition(t *testing.T) { uassert.Equal(t, position.tokensOwed0.ToString(), result.tokensOwed0.ToString()) uassert.Equal(t, position.tokensOwed1.ToString(), result.tokensOwed1.ToString()) uassert.Equal(t, position.burned, result.burned) - removePosition(tokenId) + removePosition(id) }) } func TestSetPosition(t *testing.T) { - tokenId := uint64(300) - position := newDummyPosition(tokenId) + id := uint64(300) + position := newDummyPosition(id) t.Run("Success - Create new position", func(t *testing.T) { - isNew := setPosition(tokenId, position) + isNew := setPosition(id, position) uassert.False(t, isNew) - storedPosition, _ := GetPosition(tokenId) + storedPosition, _ := GetPosition(id) uassert.Equal(t, position.nonce.ToString(), storedPosition.nonce.ToString()) uassert.Equal(t, position.operator, storedPosition.operator) uassert.Equal(t, position.poolKey, storedPosition.poolKey) @@ -128,44 +128,44 @@ func TestSetPosition(t *testing.T) { t.Run("Success - Update existing position", func(t *testing.T) { position.tickUpper = 1000 - isNew := setPosition(tokenId, position) + isNew := setPosition(id, position) uassert.True(t, isNew) - updatedPosition, _ := GetPosition(tokenId) + updatedPosition, _ := GetPosition(id) uassert.Equal(t, int32(1000), updatedPosition.tickUpper) }) } func TestRemovePosition(t *testing.T) { - tokenId := uint64(2) - position := newDummyPosition(tokenId) + id := uint64(2) + position := newDummyPosition(id) t.Run("Success - Remove existing position", func(t *testing.T) { - setPosition(tokenId, position) - removePosition(tokenId) - _, found := GetPosition(tokenId) + setPosition(id, position) + removePosition(id) + _, found := GetPosition(id) uassert.False(t, found) }) t.Run("Success - Remove non-existent position", func(t *testing.T) { - removePosition(tokenId) - _, found := GetPosition(tokenId) + removePosition(id) + _, found := GetPosition(id) uassert.False(t, found) }) } func TestExistPosition(t *testing.T) { - tokenId := uint64(2) - position := newDummyPosition(tokenId) + id := uint64(2) + position := newDummyPosition(id) t.Run("False - Position does not exist", func(t *testing.T) { - uassert.False(t, existPosition(tokenId)) + uassert.False(t, existPosition(id)) }) t.Run("True - Position exists", func(t *testing.T) { - setPosition(tokenId, position) - uassert.True(t, existPosition(tokenId)) - removePosition(tokenId) + setPosition(id, position) + uassert.True(t, existPosition(id)) + removePosition(id) }) } @@ -876,7 +876,7 @@ func TestIncreaseLiquidityInternal(t *testing.T) { { name: "Fail - Position Does Not Exist", params: IncreaseLiquidityParams{ - tokenId: 999, + positionId: 999, amount0Desired: u256.NewUint(1000000), amount1Desired: u256.NewUint(2000000), amount0Min: u256.NewUint(900000), @@ -889,7 +889,7 @@ func TestIncreaseLiquidityInternal(t *testing.T) { { name: "Fail - Zero Liquidity", params: IncreaseLiquidityParams{ - tokenId: 7, + positionId: 7, amount0Desired: u256.Zero(), amount1Desired: u256.Zero(), amount0Min: u256.NewUint(900000), @@ -911,7 +911,7 @@ func TestIncreaseLiquidityInternal(t *testing.T) { }) } else { tokenId, liquidity, amount0, amount1, _ := increaseLiquidity(tc.params) - uassert.Equal(t, tc.params.tokenId, tokenId) + uassert.Equal(t, tc.params.positionId, tokenId) uassert.Equal(t, tc.expectedLiquidity, liquidity.ToString()) uassert.Equal(t, tc.expectedAmount0, amount0.ToString()) uassert.Equal(t, tc.expectedAmount1, amount1.ToString()) diff --git a/contract/r/gnoswap/position/type.gno b/contract/r/gnoswap/position/type.gno index 73fadbf9..7bbaf699 100644 --- a/contract/r/gnoswap/position/type.gno +++ b/contract/r/gnoswap/position/type.gno @@ -71,7 +71,7 @@ func newMintParams(input ProcessedMintInput, mintInput MintInput) MintParams { } type IncreaseLiquidityParams struct { - tokenId uint64 // tokenId of the position to increase liquidity + positionId uint64 // positionId of the position to increase liquidity amount0Desired *u256.Uint // desired amount of token0 to be minted amount1Desired *u256.Uint // desired amount of token1 to be minted amount0Min *u256.Uint // minimum amount of token0 to be minted @@ -80,7 +80,7 @@ type IncreaseLiquidityParams struct { } type DecreaseLiquidityParams struct { - tokenId uint64 // tokenId of the position to decrease liquidity + positionId uint64 // positionId of the position to decrease liquidity liquidity string // amount of liquidity to decrease amount0Min *u256.Uint // minimum amount of token0 to be minted amount1Min *u256.Uint // minimum amount of token1 to be minted