diff --git a/contracts/LpSugar.vy b/contracts/LpSugar.vy index 4daf3bd..1a01b49 100644 --- a/contracts/LpSugar.vy +++ b/contracts/LpSugar.vy @@ -297,6 +297,8 @@ def forSwaps(_limit: uint256, _offset: uint256) -> DynArray[SwapLp, MAX_POOLS]: pools_count: uint256 = factory.allPoolsLength() + is_cl_factory: bool = self._is_cl_factory(factories[index]) + for pindex in range(_offset, _offset + MAX_POOLS): if len(pools) >= _limit or pindex >= pools_count: break @@ -309,22 +311,16 @@ def forSwaps(_limit: uint256, _offset: uint256) -> DynArray[SwapLp, MAX_POOLS]: reserve0: uint256 = 0 pool_fee: uint256 = 0 - is_cl_pool: bool = False - is_stable: bool = factory.getPool(token0, token1, 0) == pool_addr - - if not is_stable and factory.getPool(token0, token1, 1) != pool_addr: - is_cl_pool = True - - if is_cl_pool: + if is_cl_factory: type = pool.tickSpacing() reserve0 = IERC20(token0).balanceOf(pool_addr) pool_fee = convert(pool.fee(), uint256) else: - if is_stable: + if factory.getPool(token0, token1, 1) == pool_addr: type = 0 reserve0 = pool.reserve0() - pool_fee = factory.getFee(pool_addr, is_stable) + pool_fee = factory.getFee(pool_addr, (type == 0)) if reserve0 > 0: pools.append(SwapLp({ @@ -422,14 +418,9 @@ def all(_limit: uint256, _offset: uint256, _account: address) \ factory: IPoolFactory = IPoolFactory(pools[index][0]) token0: address = pool.token0() token1: address = pool.token1() + is_cl_factory: bool = self._is_cl_factory(pools[index][0]) - is_cl_pool: bool = False - is_stable: bool = factory.getPool(token0, token1, 0) == pool.address - - if not is_stable and factory.getPool(token0, token1, 1) != pool.address: - is_cl_pool = True - - if is_cl_pool: + if is_cl_factory: col.append(self._byDataCL(pools[index], token0, token1, _account)) else: col.append(self._byData(pools[index], token0, token1, _account)) @@ -451,14 +442,9 @@ def byIndex(_index: uint256, _account: address) -> Lp: factory: IPoolFactory = IPoolFactory(pools[_index][0]) token0: address = pool.token0() token1: address = pool.token1() + is_cl_factory: bool = self._is_cl_factory(pools[_index][0]) - is_cl_pool: bool = False - is_stable: bool = factory.getPool(token0, token1, 0) == pool.address - - if not is_stable and factory.getPool(token0, token1, 1) != pool.address: - is_cl_pool = True - - if is_cl_pool: + if is_cl_factory: return self._byDataCL(pools[_index], token0, token1, _account) return self._byData(pools[_index], token0, token1, _account) @@ -968,3 +954,21 @@ def _poolRewards(_venft_id: uint256, _pool: address, _gauge: address) \ ) return col + +@internal +@view +def _is_cl_factory(_factory: address) -> (bool): + """ + @notice Returns true if address is a CL factory + @param _factory The factory address + """ + response: Bytes[32] = raw_call( + _factory, + method_id("nft()"), + max_outsize=32, + is_delegate_call=False, + is_static_call=True, + revert_on_failure=False + )[1] + + return len(response) > 0 diff --git a/env.example b/env.example index e2bc52f..51cc0b9 100644 --- a/env.example +++ b/env.example @@ -2,7 +2,7 @@ VOTER_ADDRESS=0x41C914ee0c7E1A5edCD0295623e6dC557B5aBf3C REGISTRY_ADDRESS=0xF4c67CdEAaB8360370F41514d06e32CcD8aA1d7B DIST_ADDRESS=0x9D4736EC60715e71aFe72973f7885DCBC21EA99b CONVERTOR_ADDRESS=0x585Af0b397AC42dbeF7f18395426BF878634f18D -LP_SUGAR_ADDRESS=0xE180829A166d1e0bec705C1eB25758F645C9E317 +LP_SUGAR_ADDRESS=0x4F6C0ae189fB11937E092D71F5D5F4B343d06a8C VE_SUGAR_ADDRESS=0x37403dBd6f1b583ea244F7956fF9e37EF45c63eB RELAY_SUGAR_ADDRESS=0x062185EEF2726EFc11880856CD356FA2Ac2B38Ff RELAY_REGISTRY_ADDRESS=0xe9F00f2e61CB0c6fb00A2e457546aCbF0fC303C2 diff --git a/readme.md b/readme.md index c4fe82a..2bf98a2 100644 --- a/readme.md +++ b/readme.md @@ -35,7 +35,7 @@ Below is the list of datasets we support. ### Liquidity Pools Data -`LpSugar.vy` is deployed at `0xE180829A166d1e0bec705C1eB25758F645C9E317` +`LpSugar.vy` is deployed at `0x90b18D906aa461a45229877469eD4c6A41c31Da6` It allows fetching on-chain pools data. The returned data/struct of type `Lp` values represent: diff --git a/requirements.txt b/requirements.txt index fce8b8d..0686345 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -eth-brownie +eth-brownie==1.19.3 vyper flake8 titanoboa