diff --git a/contracts/LpSugar.vy b/contracts/LpSugar.vy index 429ef9f..f1f012f 100644 --- a/contracts/LpSugar.vy +++ b/contracts/LpSugar.vy @@ -323,8 +323,11 @@ def tokens(_limit: uint256, _offset: uint256, _account: address, \ if len(col) >= _limit or index >= addresses_count: break - col.append(self._token(_addresses[index], _account)) seen.append(_addresses[index]) + new_token: Token = self._token(_addresses[index], _account) + + if new_token.decimals != 0 and new_token.symbol != "": + col.append(new_token) for index: uint256 in range(0, lp_shared.MAX_POOLS): if len(col) >= _limit or index >= pools_count: @@ -333,16 +336,18 @@ def tokens(_limit: uint256, _offset: uint256, _account: address, \ pool_data: address[4] = pools[index] pool: IPool = IPool(pool_data[1]) - token0: address = staticcall pool.token0() - token1: address = staticcall pool.token1() + tokens: address[2] = [staticcall pool.token0(), staticcall pool.token1()] - if token0 not in seen: - col.append(self._token(token0, _account)) - seen.append(token0) + for ptoken: address in tokens: + if ptoken in seen: + continue - if token1 not in seen: - col.append(self._token(token1, _account)) - seen.append(token1) + seen.append(ptoken) + new_token: Token = self._token(ptoken, _account) + + # Skip tokens that fail basic ERC20 calls + if new_token.decimals != 0 and new_token.symbol != "": + col.append(new_token) return col @@ -1092,7 +1097,7 @@ def _safe_decimals(_token: address) -> uint8: if len(response) > 0: return (abi_decode(response, uint8)) - return 18 + return 0 @internal @view @@ -1114,6 +1119,9 @@ def _safe_symbol(_token: address) -> String[MAX_TOKEN_SYMBOL_LEN]: resp_len: uint256 = len(response) + if resp_len == 0: + return "" + # Check response as revert_on_failure is set to False # And that the symbol size is not some large value (probably spam) if resp_len > 0 and resp_len <= 96: diff --git a/deployments/base.env b/deployments/base.env index 79e10e3..9cde43f 100644 --- a/deployments/base.env +++ b/deployments/base.env @@ -15,7 +15,7 @@ TEST_ADDRESS_8453=0x892Ff98a46e5bd141E2D12618f4B2Fe6284debac TEST_ALM_ADDRESS_8453=0x892Ff98a46e5bd141E2D12618f4B2Fe6284debac # Deployed Contracts -LP_SUGAR_ADDRESS_8453=0xB647E0a927a3DB224090FbA71e9F8faAB9e18310 +LP_SUGAR_ADDRESS_8453=0x92294D631E995f1dd9CeE4097426e6a71aB87Bcf REWARDS_SUGAR_ADDRESS_8453=0xA44600F4DBA6683d8BD99270B1A6a143fB9F1C3B VE_SUGAR_ADDRESS_8453=0x4d6A741cEE6A8cC5632B2d948C050303F6246D24 RELAY_SUGAR_ADDRESS_8453=0x8932B5FE23C07Df06533F8f09E43e7cca6a24143 diff --git a/deployments/fraxtal.env b/deployments/fraxtal.env index 95498fd..5cc8db4 100644 --- a/deployments/fraxtal.env +++ b/deployments/fraxtal.env @@ -12,8 +12,9 @@ CONVERTOR_252=0x1111111111111111111111111111111111111111 SLIPSTREAM_HELPER_252=0x593D092BB28CCEfe33bFdD3d9457e77Bd3084271 ALM_FACTORY_252=0x0000000000000000000000000000000000000000 -LP_SUGAR_ADDRESS_252=0xB1d0DFFe6260982164B53EdAcD3ccd58B081889d -REWARDS_SUGAR_ADDRESS_252=0xbDD1d5A9d9566F575bC59cE33C8F77ACa5cF924b - TEST_ADDRESS_252=0x892ff98a46e5bd141e2d12618f4b2fe6284debac TEST_ALM_ADDRESS_252=0x892ff98a46e5bd141e2d12618f4b2fe6284debac + +# Deployed Contracts +LP_SUGAR_ADDRESS_252=0xC1E2B701d10A34c7c3bC2f0848806EF03E699221 +REWARDS_SUGAR_ADDRESS_252=0xbDD1d5A9d9566F575bC59cE33C8F77ACa5cF924b diff --git a/deployments/ink.env b/deployments/ink.env index c11c272..909acc6 100644 --- a/deployments/ink.env +++ b/deployments/ink.env @@ -16,5 +16,5 @@ TEST_ADDRESS_57073=0x892ff98a46e5bd141e2d12618f4b2fe6284debac TEST_ALM_ADDRESS_57073=0x892ff98a46e5bd141e2d12618f4b2fe6284debac # Deployed Contracts -LP_SUGAR_ADDRESS_57073=0xD938B20f40505e33b7C131e6aDD6C6FF7380094A +LP_SUGAR_ADDRESS_57073=0xff86fd0eBA25D2bB37A9A948327DAA6159C8638a REWARDS_SUGAR_ADDRESS_57073=0xc100DC20aff9907E833a6aDEDDB52fC310554fF2 diff --git a/deployments/lisk.env b/deployments/lisk.env index bb1a319..353196e 100644 --- a/deployments/lisk.env +++ b/deployments/lisk.env @@ -12,8 +12,9 @@ CONVERTOR_1135=0x1111111111111111111111111111111111111111 SLIPSTREAM_HELPER_1135=0xB98fB4C9C99dE155cCbF5A14af0dBBAd96033D6f ALM_FACTORY_1135=0x0000000000000000000000000000000000000000 -LP_SUGAR_ADDRESS_1135=0x0F5B7D59690F99f34081E24557f022d06d580BB6 -REWARDS_SUGAR_ADDRESS_1135=0xB1d0DFFe6260982164B53EdAcD3ccd58B081889d - TEST_ADDRESS_1135=0x892ff98a46e5bd141e2d12618f4b2fe6284debac TEST_ALM_ADDRESS_1135=0x892ff98a46e5bd141e2d12618f4b2fe6284debac + +# Deployed Contracts +LP_SUGAR_ADDRESS_1135=0x567401a95c33bcD401b0BFF0701eB5E1e5634236 +REWARDS_SUGAR_ADDRESS_1135=0xB1d0DFFe6260982164B53EdAcD3ccd58B081889d diff --git a/deployments/metall2.env b/deployments/metall2.env index 6935482..079d429 100644 --- a/deployments/metall2.env +++ b/deployments/metall2.env @@ -12,8 +12,9 @@ CONVERTOR_1750=0x1111111111111111111111111111111111111111 SLIPSTREAM_HELPER_1750=0x222ed297aF0560030136AE652d39fa40E1B72818 ALM_FACTORY_1750=0x0000000000000000000000000000000000000000 -LP_SUGAR_ADDRESS_1750=0xB1d0DFFe6260982164B53EdAcD3ccd58B081889d -REWARDS_SUGAR_ADDRESS_1750=0xbDD1d5A9d9566F575bC59cE33C8F77ACa5cF924b - TEST_ADDRESS_1750=0x892ff98a46e5bd141e2d12618f4b2fe6284debac TEST_ALM_ADDRESS_1750=0x892ff98a46e5bd141e2d12618f4b2fe6284debac + +# Deployed Contracts +LP_SUGAR_ADDRESS_1750=0x26350C6a222E9391279A7513Ee730a3c13c71961 +REWARDS_SUGAR_ADDRESS_1750=0xbDD1d5A9d9566F575bC59cE33C8F77ACa5cF924b diff --git a/deployments/mode.env b/deployments/mode.env index 69ac642..5d8602d 100644 --- a/deployments/mode.env +++ b/deployments/mode.env @@ -12,8 +12,9 @@ CONVERTOR_34443=0x1111111111111111111111111111111111111111 SLIPSTREAM_HELPER_34443=0xD24a61656AB0d70994Ef5F42fE11AA95c0a1d329 ALM_FACTORY_34443=0x0000000000000000000000000000000000000000 -LP_SUGAR_ADDRESS_34443=0x7f23Fa4D139CCD5b7a4e4EFfFe1d2e61b33BCD21 -REWARDS_SUGAR_ADDRESS_34443=0xD5d3ABAcB8CF075636792658EE0be8B03AF517B8 - TEST_ADDRESS_34443=0x892ff98a46e5bd141e2d12618f4b2fe6284debac TEST_ALM_ADDRESS_34443=0x892ff98a46e5bd141e2d12618f4b2fe6284debac + +# Deployed Contracts +LP_SUGAR_ADDRESS_34443=0xceC5b86bC187e061Ef3374873193Ca4cbFD21C5b +REWARDS_SUGAR_ADDRESS_34443=0xD5d3ABAcB8CF075636792658EE0be8B03AF517B8 diff --git a/deployments/optimism.env b/deployments/optimism.env index abdbd36..1f2b31e 100644 --- a/deployments/optimism.env +++ b/deployments/optimism.env @@ -14,7 +14,7 @@ TEST_ADDRESS_10=0x892ff98a46e5bd141e2d12618f4b2fe6284debac TEST_ALM_ADDRESS_10=0x892ff98a46e5bd141e2d12618f4b2fe6284debac # Deployed Contracts -LP_SUGAR_ADDRESS_10=0x7fD327b8341fc3C24C04f414B1e76244B1b5EC53 +LP_SUGAR_ADDRESS_10=0x3B919747B46B13CFfd9f16629cFf951C0b7ea1e2 REWARDS_SUGAR_ADDRESS_10=0x62CCFB2496f49A80B0184AD720379B529E9152fB VE_SUGAR_ADDRESS_10=0xFE0a44d356a9F52c9F1bE0ba0f0877d986438c9C -RELAY_SUGAR_ADDRESS_10=0xb8307e5842B9aeE75C704183F0355076aa74b4e2 +RELAY_SUGAR_ADDRESS_10=0xb8307e5842B9aeE75C704183F0355076aa74b4e2 \ No newline at end of file diff --git a/deployments/soneium.env b/deployments/soneium.env index cbdda35..040622b 100644 --- a/deployments/soneium.env +++ b/deployments/soneium.env @@ -16,5 +16,5 @@ TEST_ADDRESS_1868=0x892ff98a46e5bd141e2d12618f4b2fe6284debac TEST_ALM_ADDRESS_1868=0x892ff98a46e5bd141e2d12618f4b2fe6284debac # Deployed Contracts -LP_SUGAR_ADDRESS_1868=0xB1d0DFFe6260982164B53EdAcD3ccd58B081889d +LP_SUGAR_ADDRESS_1868=0x085ab5bf2c0Ef1043cD5F28039c291576b47d69a REWARDS_SUGAR_ADDRESS_1868=0xbDD1d5A9d9566F575bC59cE33C8F77ACa5cF924b diff --git a/tests/test_lp_sugar.py b/tests/test_lp_sugar.py index 60d454c..e61acc2 100644 --- a/tests/test_lp_sugar.py +++ b/tests/test_lp_sugar.py @@ -66,6 +66,20 @@ def test_tokens_long_symbol(sugar_contract): assert token.symbol == "-???-" +@pytest.mark.skipif(int(CHAIN_ID) not in [10], reason="Only OP") +def test_tokens_invalid_erc20(sugar_contract): + tokens = sugar_contract.tokens(2, 0, ADDRESS_ZERO, [ADDRESS_ZERO]) + + assert tokens is not None + assert len(tokens) > 1 + + token_addresses = list(map(lambda t: t.token_address, tokens)) + token_symbols = list(map(lambda t: t.symbol, tokens)) + + assert ADDRESS_ZERO not in token_addresses + assert "-???-" not in token_symbols + + @pytest.mark.skipif(int(CHAIN_ID) not in [8453], reason="Only BASE") def test_tokens_max_long_symbol(sugar_contract): tokens = sugar_contract.tokens(1, 2508, ADDRESS_ZERO, [])