Skip to content

Commit b364585

Browse files
committed
fix: pass in tokens in args to save gas
1 parent 7bc9efd commit b364585

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

contracts/LpSugar.vy

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ struct Lp:
9696
emissions_token: address
9797

9898
pool_fee: uint256 # staked fee % on v3, fee % on v2
99-
unstaked_fee: uint256 # unstaked fee % on v3, fee % on v2
99+
unstaked_fee: uint256 # unstaked fee % on v3, 0 on v2
100100
token0_fees: uint256
101101
token1_fees: uint256
102102

@@ -399,15 +399,15 @@ def all(_limit: uint256, _offset: uint256, _account: address) \
399399
token1: address = pool.token1()
400400

401401
is_cl_pool: bool = False
402-
is_stable: bool = factory.getPool(token0, token1, 0) == pools[index][1]
402+
is_stable: bool = factory.getPool(token0, token1, 0) == pool.address
403403

404-
if not is_stable and factory.getPool(token0, token1, 1) != pools[index][1]:
404+
if not is_stable and factory.getPool(token0, token1, 1) != pool.address:
405405
is_cl_pool = True
406406

407407
if is_cl_pool:
408-
col.append(self._byDataCL(pools[index], _account))
408+
col.append(self._byDataCL(pools[index], token0, token1, _account))
409409
else:
410-
col.append(self._byData(pools[index], _account))
410+
col.append(self._byData(pools[index], token0, token1, _account))
411411

412412
return col
413413

@@ -428,18 +428,18 @@ def byIndex(_index: uint256, _account: address) -> Lp:
428428
token1: address = pool.token1()
429429

430430
is_cl_pool: bool = False
431-
is_stable: bool = factory.getPool(token0, token1, 0) == pools[_index][1]
431+
is_stable: bool = factory.getPool(token0, token1, 0) == pool.address
432432

433-
if not is_stable and factory.getPool(token0, token1, 1) != pools[_index][1]:
433+
if not is_stable and factory.getPool(token0, token1, 1) != pool.address:
434434
is_cl_pool = True
435435

436436
if is_cl_pool:
437-
return self._byDataCL(pools[_index], _account)
438-
return self._byData(pools[_index], _account)
437+
return self._byDataCL(pools[_index], token0, token1, _account)
438+
return self._byData(pools[_index], token0, token1, _account)
439439

440440
@internal
441441
@view
442-
def _byData(_data: address[3], _account: address) -> Lp:
442+
def _byData(_data: address[3], _token0: address, _token1: address, _account: address) -> Lp:
443443
"""
444444
@notice Returns pool data based on the factory, pool and gauge addresses
445445
@param _address The addresses to lookup
@@ -457,8 +457,8 @@ def _byData(_data: address[3], _account: address) -> Lp:
457457
is_stable: bool = pool.stable()
458458
pool_fee: uint256 = IPoolFactory(_data[0]).getFee(_data[1], is_stable)
459459
pool_fees: address = pool.poolFees()
460-
token0: IERC20 = IERC20(pool.token0())
461-
token1: IERC20 = IERC20(pool.token1())
460+
token0: IERC20 = IERC20(_token0)
461+
token1: IERC20 = IERC20(_token1)
462462
gauge_alive: bool = self.voter.isAlive(gauge.address)
463463

464464
type: int24 = -1
@@ -519,7 +519,7 @@ def _byData(_data: address[3], _account: address) -> Lp:
519519
emissions_token: emissions_token,
520520

521521
pool_fee: pool_fee,
522-
unstaked_fee: pool_fee,
522+
unstaked_fee: 0,
523523
token0_fees: token0.balanceOf(pool_fees),
524524
token1_fees: token1.balanceOf(pool_fees),
525525

@@ -528,7 +528,7 @@ def _byData(_data: address[3], _account: address) -> Lp:
528528

529529
@internal
530530
@view
531-
def _byDataCL(_data: address[3], _account: address) -> Lp:
531+
def _byDataCL(_data: address[3], _token0: address, _token1: address, _account: address) -> Lp:
532532
"""
533533
@notice Returns CL pool data based on the factory, pool and gauge addresses
534534
@param _data The addresses to lookup
@@ -544,12 +544,11 @@ def _byDataCL(_data: address[3], _account: address) -> Lp:
544544
fee_voting_reward: address = empty(address)
545545
emissions: uint256 = 0
546546
emissions_token: address = empty(address)
547-
token0: IERC20 = IERC20(pool.token0())
548-
token1: IERC20 = IERC20(pool.token1())
547+
token0: IERC20 = IERC20(_token0)
548+
token1: IERC20 = IERC20(_token1)
549549

550-
if gauge.address != empty(address):
551-
fee_voting_reward = gauge.feesVotingReward()
552-
emissions_token = gauge.rewardToken()
550+
fee_voting_reward = gauge.feesVotingReward()
551+
emissions_token = gauge.rewardToken()
553552

554553
if gauge_alive:
555554
emissions = gauge.rewardRate()

0 commit comments

Comments
 (0)