defi-state-querier 0.5.27__py3-none-any.whl → 0.5.28__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- defi_services/__init__.py +1 -1
- defi_services/constants/chain_constant.py +1 -8
- defi_services/constants/entities/dex_info_constant.py +2 -2
- defi_services/constants/entities/dex_services.py +1 -13
- defi_services/constants/entities/lending_constant.py +5 -11
- defi_services/constants/entities/lending_services.py +4 -31
- defi_services/constants/entities/vault_constant.py +2 -2
- defi_services/constants/entities/vault_services.py +1 -7
- defi_services/constants/network_constants.py +361 -20
- defi_services/constants/token_constant.py +1 -3
- defi_services/jobs/processors/cosmos_state_processor.py +2 -3
- defi_services/jobs/processors/ton_state_processor.py +4 -5
- defi_services/jobs/queriers/call_state_querier.py +0 -2
- defi_services/jobs/queriers/state_querier.py +0 -3
- defi_services/services/dex/dex_info/uniswap_info.py +1 -29
- defi_services/services/dex/uniswap_v3_service.py +2 -6
- defi_services/services/lending/aave_v2_services.py +29 -44
- defi_services/services/lending/aave_v3_services.py +20 -41
- defi_services/services/lending/compound_v3_services.py +5 -9
- defi_services/services/lending/granary_services.py +4 -6
- defi_services/services/lending/justlend_service.py +3 -4
- defi_services/services/lending/lending_info/arbitrum/aave_v3_arbitrum.py +1 -1
- defi_services/services/lending/lending_info/arbitrum/compound_v3_arbitrum.py +6 -96
- defi_services/services/lending/lending_info/ethereum/aave_v3_eth.py +140 -1
- defi_services/services/lending/lending_info/ethereum/compound_v3_eth.py +5 -180
- defi_services/services/lending/lending_info/polygon/compound_v3_polygon.py +5 -35
- defi_services/services/lending/morpho_aave_v2_services.py +3 -3
- defi_services/services/lending/morpho_aave_v3_services.py +2 -2
- defi_services/services/lending/radiant_v2_services.py +10 -52
- defi_services/services/lending/trava_services.py +2 -2
- defi_services/services/lending/uwu_services.py +3 -3
- defi_services/services/lending/valas_services.py +2 -2
- defi_services/services/lending/venus_services.py +3 -9
- defi_services/services/multicall/multicall_v2.py +317 -0
- {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info}/METADATA +3 -2
- {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info}/RECORD +46 -83
- {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info}/WHEEL +1 -1
- defi_services/abis/lending/ionic/__init__.py +0 -0
- defi_services/abis/lending/ionic/ionic_ctoken_abi.py +0 -1108
- defi_services/abis/lending/moonwell/__init__.py +0 -0
- defi_services/abis/lending/moonwell/moonwell_comptroller_abi.py +0 -1500
- defi_services/abis/lending/moonwell/moonwell_ctoken_abi.py +0 -1431
- defi_services/abis/lending/radiant_v2/radiant_reward_converter.py +0 -817
- defi_services/abis/token/trc20_abi.py +0 -304
- defi_services/abis/vault/tcv_abi.py +0 -1523
- defi_services/jobs/tcv.py +0 -144
- defi_services/services/lending/ionic_service.py +0 -167
- defi_services/services/lending/lending_info/arbitrum/venus_arbitrum.py +0 -10
- defi_services/services/lending/lending_info/base/__init__.py +0 -0
- defi_services/services/lending/lending_info/base/aave_v3_base.py +0 -61
- defi_services/services/lending/lending_info/base/compound_v3_base.py +0 -116
- defi_services/services/lending/lending_info/base/granary_base.py +0 -62
- defi_services/services/lending/lending_info/base/ionic_base.py +0 -173
- defi_services/services/lending/lending_info/base/moonwell_base.py +0 -89
- defi_services/services/lending/lending_info/base/radiant_v2_base.py +0 -57
- defi_services/services/lending/lending_info/base/sonne_base.py +0 -53
- defi_services/services/lending/lending_info/base/zerolend_base.py +0 -109
- defi_services/services/lending/lending_info/bsc/aave_v3_bsc.py +0 -68
- defi_services/services/lending/lending_info/ethereum/old_aave_v3_eth.py +0 -150
- defi_services/services/lending/lending_info/ethereum/radiant_eth.py +0 -69
- defi_services/services/lending/lending_info/ethereum/venus_eth.py +0 -10
- defi_services/services/lending/lending_info/ethereum/zerolend_eth.py +0 -96
- defi_services/services/lending/lending_info/optimism/compound_v3_optimism.py +0 -116
- defi_services/services/lending/lending_info/optimism/moonwell_optimism.py +0 -9
- defi_services/services/lending/lending_info/zksync/__init__.py +0 -0
- defi_services/services/lending/lending_info/zksync/aave_v3_zksync.py +0 -47
- defi_services/services/lending/lending_info/zksync/venus_zksync.py +0 -10
- defi_services/services/lending/lending_info/zksync/zerolend_zksync.py +0 -138
- defi_services/services/lending/moonwell_service.py +0 -120
- defi_services/services/lending/sonne_service.py +0 -64
- defi_services/services/lending/zerolend_services.py +0 -36
- defi_services/services/vault/tcv_vault_services.py +0 -108
- defi_services/services/vault/vault_info/arbitrum/__init__.py +0 -0
- defi_services/services/vault/vault_info/arbitrum/tcv_arb.py +0 -58
- /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/__init__.py +0 -0
- /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/aave_v2_event_abi.py +0 -0
- /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/aave_v2_incentives_abi.py +0 -0
- /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/lending_pool_abi.py +0 -0
- /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/oracle_abi.py +0 -0
- /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/staked_incentives_abi.py +0 -0
- /defi_services/abis/lending/{aave_v2_and_forks → aave_v2_and_forlks}/uwu_incentives_abi.py +0 -0
- {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info/licenses}/LICENSE +0 -0
- {defi_state_querier-0.5.27.dist-info → defi_state_querier-0.5.28.dist-info}/top_level.txt +0 -0
@@ -26,9 +26,6 @@ class StateQuerier:
|
|
26
26
|
def get_client_querier(self):
|
27
27
|
return self.client_querier
|
28
28
|
|
29
|
-
def get_provider(self):
|
30
|
-
return self.provider_uri
|
31
|
-
|
32
29
|
@staticmethod
|
33
30
|
def get_function_info(address: str, abi: list, fn_name: str, fn_paras: list = None, block_number: int = 'latest'):
|
34
31
|
if fn_paras is None:
|
@@ -7,6 +7,7 @@ UNISWAP_ETH_INFO = {
|
|
7
7
|
'factory_address': '0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f',
|
8
8
|
'factory_abi': UNISWAP_FACTORY_ABI,
|
9
9
|
'forked': 'uniswap-v2'
|
10
|
+
|
10
11
|
}
|
11
12
|
|
12
13
|
UNISWAP_V3_ETH_INFO = {
|
@@ -17,34 +18,5 @@ UNISWAP_V3_ETH_INFO = {
|
|
17
18
|
'NFT_manager_abi': UNISWAP_V3_NFT_TOKEN_MANGAGER_ABI,
|
18
19
|
'pool_abi': UNISWAP_V3_POOL_ABI,
|
19
20
|
'forked': 'uniswap-v3'
|
20
|
-
}
|
21
|
-
|
22
|
-
UNISWAP_V3_ARBITRUM_INFO = {
|
23
|
-
'factory_address': '0x1f98431c8ad98523631ae4a59f267346ea31f984',
|
24
|
-
'factory_abi': UNISWAP_V3_FACTORY_ABI,
|
25
|
-
'staker_address': '0xe34139463ba50bd61336e0c446bd8c0867c6fe65',
|
26
|
-
'NFT_manager_address': '0xc36442b4a4522e871399cd717abdd847ab11fe88',
|
27
|
-
'NFT_manager_abi': UNISWAP_V3_NFT_TOKEN_MANGAGER_ABI,
|
28
|
-
'pool_abi': UNISWAP_V3_POOL_ABI,
|
29
|
-
'forked': 'uniswap-v3'
|
30
|
-
}
|
31
|
-
|
32
|
-
UNISWAP_V3_BASE_INFO = {
|
33
|
-
'factory_address': '0x33128a8fC17869897dcE68Ed026d694621f6FDfD',
|
34
|
-
'factory_abi': UNISWAP_V3_FACTORY_ABI,
|
35
|
-
'staker_address': '0x42bE4D6527829FeFA1493e1fb9F3676d2425C3C1',
|
36
|
-
'NFT_manager_address': '0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1',
|
37
|
-
'NFT_manager_abi': UNISWAP_V3_NFT_TOKEN_MANGAGER_ABI,
|
38
|
-
'pool_abi': UNISWAP_V3_POOL_ABI,
|
39
|
-
'forked': 'uniswap-v3'
|
40
|
-
}
|
41
21
|
|
42
|
-
UNISWAP_V3_ZKSYNC_INFO = {
|
43
|
-
'factory_address': '0x8FdA5a7a8dCA67BBcDd10F02Fa0649A937215422',
|
44
|
-
'factory_abi': UNISWAP_V3_FACTORY_ABI,
|
45
|
-
'staker_address': '0xf84268FA8EB857c2e4298720C1C617178F5e78e1',
|
46
|
-
'NFT_manager_address': '0x0616e5762c1E7Dc3723c50663dF10a162D690a86',
|
47
|
-
'NFT_manager_abi': UNISWAP_V3_NFT_TOKEN_MANGAGER_ABI,
|
48
|
-
'pool_abi': UNISWAP_V3_POOL_ABI,
|
49
|
-
'forked': 'uniswap-v3'
|
50
22
|
}
|
@@ -5,8 +5,7 @@ from defi_services.abis.token.erc20_abi import ERC20_ABI
|
|
5
5
|
from defi_services.constants.chain_constant import Chain
|
6
6
|
from defi_services.constants.entities.dex_constant import Dex
|
7
7
|
from defi_services.jobs.queriers.state_querier import StateQuerier
|
8
|
-
from defi_services.services.dex.dex_info.uniswap_info import UNISWAP_V3_ETH_INFO
|
9
|
-
UNISWAP_V3_ZKSYNC_INFO, UNISWAP_V3_BASE_INFO
|
8
|
+
from defi_services.services.dex.dex_info.uniswap_info import UNISWAP_V3_ETH_INFO
|
10
9
|
from defi_services.services.dex_protocol_services import DexProtocolServices
|
11
10
|
from defi_services.utils.get_fees import get_fees
|
12
11
|
from defi_services.utils.sqrt_price_math import get_token_amount_of_user, get_token_amount_of_pool
|
@@ -16,10 +15,7 @@ logger = logging.getLogger("UniSwap V3 State Service")
|
|
16
15
|
|
17
16
|
class UniswapV3Info:
|
18
17
|
mapping = {
|
19
|
-
Chain.ethereum: UNISWAP_V3_ETH_INFO
|
20
|
-
Chain.arbitrum: UNISWAP_V3_ARBITRUM_INFO,
|
21
|
-
Chain.zksync: UNISWAP_V3_ZKSYNC_INFO,
|
22
|
-
Chain.base: UNISWAP_V3_BASE_INFO
|
18
|
+
Chain.ethereum: UNISWAP_V3_ETH_INFO
|
23
19
|
}
|
24
20
|
|
25
21
|
|
@@ -3,14 +3,13 @@ import time
|
|
3
3
|
|
4
4
|
from web3 import Web3
|
5
5
|
|
6
|
-
from defi_services.abis.lending.
|
7
|
-
from defi_services.abis.lending.
|
8
|
-
from defi_services.abis.lending.
|
6
|
+
from defi_services.abis.lending.aave_v2_and_forlks.aave_v2_incentives_abi import AAVE_V2_INCENTIVES_ABI
|
7
|
+
from defi_services.abis.lending.aave_v2_and_forlks.lending_pool_abi import LENDING_POOL_ABI
|
8
|
+
from defi_services.abis.lending.aave_v2_and_forlks.oracle_abi import ORACLE_ABI
|
9
9
|
from defi_services.abis.token.erc20_abi import ERC20_ABI
|
10
10
|
from defi_services.constants.chain_constant import Chain
|
11
11
|
from defi_services.constants.db_constant import DBConst
|
12
12
|
from defi_services.constants.entities.lending_constant import Lending
|
13
|
-
from defi_services.constants.network_constants import NATIVE_TOKEN
|
14
13
|
from defi_services.constants.time_constant import TimeConstants
|
15
14
|
from defi_services.jobs.queriers.state_querier import StateQuerier
|
16
15
|
from defi_services.services.lending.lending_info.avalanche.aave_v2_avalanche import AAVE_V2_AVALANCHE
|
@@ -84,20 +83,19 @@ class AaveV2StateService(ProtocolServices):
|
|
84
83
|
reserve_key = f"getReserveData_{self.name}_{token_address}_{block_number}".lower()
|
85
84
|
atoken_total_supply_key = f'totalSupply_{value["tToken"]}_{block_number}'.lower()
|
86
85
|
debt_token_total_supply_key = f'totalSupply_{value["dToken"]}_{block_number}'.lower()
|
86
|
+
sdebt_token_total_supply_key = f'totalSupply_{value["sdToken"]}_{block_number}'.lower()
|
87
87
|
decimals_key = f"decimals_{token_address}_{block_number}".lower()
|
88
|
+
|
88
89
|
rpc_calls[reserve_key] = self.get_function_lending_pool_info("getReserveData", [token_address])
|
89
90
|
rpc_calls[atoken_total_supply_key] = self.state_service.get_function_info(
|
90
91
|
value["tToken"], ERC20_ABI, "totalSupply", block_number=block_number)
|
91
92
|
rpc_calls[debt_token_total_supply_key] = self.state_service.get_function_info(
|
92
93
|
value["dToken"], ERC20_ABI, "totalSupply", block_number=block_number)
|
94
|
+
rpc_calls[sdebt_token_total_supply_key] = self.state_service.get_function_info(
|
95
|
+
value["sdToken"], ERC20_ABI, "totalSupply", block_number=block_number)
|
93
96
|
rpc_calls[decimals_key] = self.state_service.get_function_info(
|
94
97
|
token_address, ERC20_ABI, "decimals", block_number=block_number)
|
95
98
|
|
96
|
-
if value["sdToken"] != NATIVE_TOKEN:
|
97
|
-
sdebt_token_total_supply_key = f'totalSupply_{value["sdToken"]}_{block_number}'.lower()
|
98
|
-
rpc_calls[sdebt_token_total_supply_key] = self.state_service.get_function_info(
|
99
|
-
value["sdToken"], ERC20_ABI, "totalSupply", block_number=block_number)
|
100
|
-
|
101
99
|
return rpc_calls
|
102
100
|
|
103
101
|
@staticmethod
|
@@ -175,23 +173,18 @@ class AaveV2StateService(ProtocolServices):
|
|
175
173
|
decimals_call_id = f"decimals_{token_address}_{block_number}".lower()
|
176
174
|
atoken_total_supply_key = f'totalSupply_{atoken}_{block_number}'.lower()
|
177
175
|
debt_token_total_supply_key = f'totalSupply_{debt_token}_{block_number}'.lower()
|
178
|
-
|
176
|
+
sdebt_token_total_supply_key = f'totalSupply_{sdebt_token}_{block_number}'.lower()
|
177
|
+
|
178
|
+
reserve_tokens_info.append({
|
179
179
|
'underlying': token_address,
|
180
180
|
'underlying_decimals': decoded_data.get(decimals_call_id),
|
181
181
|
'a_token_supply': decoded_data.get(atoken_total_supply_key),
|
182
182
|
'd_token_supply': decoded_data.get(debt_token_total_supply_key),
|
183
|
+
'sd_token_supply': decoded_data.get(sdebt_token_total_supply_key),
|
183
184
|
'supply_apy': reserve_data[3],
|
184
|
-
'borrow_apy': reserve_data[4]
|
185
|
-
|
186
|
-
|
187
|
-
sdebt_token_total_supply_key = f'totalSupply_{sdebt_token}_{block_number}'.lower()
|
188
|
-
data['sd_token_supply'] = decoded_data.get(sdebt_token_total_supply_key)
|
189
|
-
data['stable_borrow_apy'] = reserve_data[5]
|
190
|
-
else:
|
191
|
-
data['sd_token_supply'] = 0
|
192
|
-
data['stable_borrow_apy'] = 0
|
193
|
-
|
194
|
-
reserve_tokens_info.append(data)
|
185
|
+
'borrow_apy': reserve_data[4],
|
186
|
+
'stable_borrow_apy': reserve_data[5]
|
187
|
+
})
|
195
188
|
|
196
189
|
return reserve_tokens_info
|
197
190
|
|
@@ -215,19 +208,19 @@ class AaveV2StateService(ProtocolServices):
|
|
215
208
|
|
216
209
|
@classmethod
|
217
210
|
def _calculate_interest_rates(cls, token_info: dict):
|
218
|
-
total_supply_t = token_info.get('a_token_supply'
|
219
|
-
total_supply_d = token_info.get('d_token_supply'
|
220
|
-
total_supply_sd = token_info.get('sd_token_supply'
|
211
|
+
total_supply_t = token_info.get('a_token_supply')
|
212
|
+
total_supply_d = token_info.get('d_token_supply')
|
213
|
+
total_supply_sd = token_info.get('sd_token_supply')
|
221
214
|
total_borrow = total_supply_d + total_supply_sd
|
222
215
|
|
223
216
|
total_supply = total_supply_t / 10 ** token_info['underlying_decimals']
|
224
217
|
total_borrow = total_borrow / 10 ** token_info['underlying_decimals']
|
225
218
|
|
226
|
-
supply_apr = float(token_info
|
219
|
+
supply_apr = float(token_info['supply_apy']) / 10 ** 27
|
227
220
|
supply_apy = apr_to_apy(supply_apr)
|
228
|
-
borrow_apr = float(token_info
|
221
|
+
borrow_apr = float(token_info['borrow_apy']) / 10 ** 27
|
229
222
|
borrow_apy = apr_to_apy(borrow_apr)
|
230
|
-
stable_borrow_apr = float(token_info
|
223
|
+
stable_borrow_apr = float(token_info['stable_borrow_apy']) / 10 ** 27
|
231
224
|
stable_borrow_apy = apr_to_apy(stable_borrow_apr)
|
232
225
|
|
233
226
|
return {
|
@@ -267,23 +260,21 @@ class AaveV2StateService(ProtocolServices):
|
|
267
260
|
decimals_call_id = f"decimals_{token_address}_{block_number}".lower()
|
268
261
|
atoken_assets_key = f"assets_{atoken}_{block_number}".lower()
|
269
262
|
debt_token_assets_key = f"assets_{debt_token}_{block_number}".lower()
|
263
|
+
sdebt_token_assets_key = f"assets_{sdebt_token}_{block_number}".lower()
|
270
264
|
atoken_total_supply_key = f'totalSupply_{atoken}_{block_number}'.lower()
|
271
265
|
debt_token_total_supply_key = f'totalSupply_{debt_token}_{block_number}'.lower()
|
266
|
+
sdebt_token_total_supply_key = f'totalSupply_{sdebt_token}_{block_number}'.lower()
|
267
|
+
|
272
268
|
atokens[lower_address] = atoken
|
273
269
|
debt_tokens[lower_address] = debt_token
|
274
270
|
sdebt_tokens[lower_address] = sdebt_token
|
275
271
|
decimals[lower_address] = decoded_data.get(decimals_call_id)
|
276
272
|
asset_data_tokens[atoken] = decoded_data.get(atoken_assets_key)
|
277
273
|
asset_data_tokens[debt_token] = decoded_data.get(debt_token_assets_key)
|
274
|
+
asset_data_tokens[sdebt_token] = decoded_data.get(sdebt_token_assets_key)
|
278
275
|
total_supply_tokens[atoken] = decoded_data.get(atoken_total_supply_key)
|
279
276
|
total_supply_tokens[debt_token] = decoded_data.get(debt_token_total_supply_key)
|
280
|
-
|
281
|
-
sdebt_token_assets_key = f"assets_{sdebt_token}_{block_number}".lower()
|
282
|
-
sdebt_token_total_supply_key = f'totalSupply_{sdebt_token}_{block_number}'.lower()
|
283
|
-
asset_data_tokens[sdebt_token] = decoded_data.get(sdebt_token_assets_key)
|
284
|
-
total_supply_tokens[sdebt_token] = decoded_data.get(sdebt_token_total_supply_key)
|
285
|
-
interest_rate[lower_address]['stable_borrow_apy'] = float(reserve_data[5]) / 10 ** 27
|
286
|
-
|
277
|
+
total_supply_tokens[sdebt_token] = decoded_data.get(sdebt_token_total_supply_key)
|
287
278
|
|
288
279
|
asset_price_key = f"getAssetsPrices_{self.name}_{block_number}".lower()
|
289
280
|
if not token_prices and asset_price_key in decoded_data:
|
@@ -312,19 +303,17 @@ class AaveV2StateService(ProtocolServices):
|
|
312
303
|
value = reserves_info[token]
|
313
304
|
atoken_balance_of_key = f'balanceOf_{value["tToken"]}_{wallet}_{block_number}'.lower()
|
314
305
|
debt_token_balance_of_key = f'balanceOf_{value["dToken"]}_{wallet}_{block_number}'.lower()
|
306
|
+
sdebt_token_balance_of_key = f'balanceOf_{value["sdToken"]}_{wallet}_{block_number}'.lower()
|
315
307
|
decimals_key = f"decimals_{token}_{block_number}".lower()
|
316
308
|
|
317
309
|
rpc_calls[atoken_balance_of_key] = self.state_service.get_function_info(
|
318
310
|
value["tToken"], ERC20_ABI, "balanceOf", [wallet], block_number=block_number)
|
319
311
|
rpc_calls[debt_token_balance_of_key] = self.state_service.get_function_info(
|
320
312
|
value["dToken"], ERC20_ABI, "balanceOf", [wallet], block_number=block_number)
|
313
|
+
rpc_calls[sdebt_token_balance_of_key] = self.state_service.get_function_info(
|
314
|
+
value["sdToken"], ERC20_ABI, "balanceOf", [wallet], block_number=block_number)
|
321
315
|
rpc_calls[decimals_key] = self.state_service.get_function_info(
|
322
316
|
token, ERC20_ABI, "decimals", block_number=block_number)
|
323
|
-
if value["sdToken"] != NATIVE_TOKEN:
|
324
|
-
sdebt_token_balance_of_key = f'balanceOf_{value["sdToken"]}_{wallet}_{block_number}'.lower()
|
325
|
-
rpc_calls[sdebt_token_balance_of_key] = self.state_service.get_function_info(
|
326
|
-
value["sdToken"], ERC20_ABI, "balanceOf", [wallet], block_number=block_number)
|
327
|
-
|
328
317
|
if health_factor:
|
329
318
|
rpc_calls.update(self.get_health_factor_function_info(wallet, reserves_info, block_number))
|
330
319
|
|
@@ -386,12 +375,8 @@ class AaveV2StateService(ProtocolServices):
|
|
386
375
|
get_decimals_id = f"decimals_{token}_{block_number}".lower()
|
387
376
|
deposit_amount[token] = decoded_data.get(get_total_deposit_id)
|
388
377
|
borrow_amount[token] = decoded_data.get(get_total_borrow_id)
|
378
|
+
stable_borrow_amount[token] = decoded_data.get(get_total_stable_borrow_id)
|
389
379
|
decimals[token] = decoded_data.get(get_decimals_id)
|
390
|
-
if value['sdToken'] != NATIVE_TOKEN:
|
391
|
-
stable_borrow_amount[token] = decoded_data.get(get_total_stable_borrow_id)
|
392
|
-
else:
|
393
|
-
stable_borrow_amount[token] = 0
|
394
|
-
|
395
380
|
data = self.get_wallet_deposit_borrow_balance(
|
396
381
|
reserves_info, token_prices, decimals, deposit_amount,
|
397
382
|
borrow_amount, stable_borrow_amount
|
@@ -10,19 +10,15 @@ from defi_services.abis.token.erc20_abi import ERC20_ABI
|
|
10
10
|
from defi_services.constants.chain_constant import Chain
|
11
11
|
from defi_services.constants.db_constant import DBConst
|
12
12
|
from defi_services.constants.entities.lending_constant import Lending
|
13
|
-
from defi_services.constants.network_constants import NATIVE_TOKEN
|
14
13
|
from defi_services.constants.time_constant import TimeConstants
|
15
14
|
from defi_services.jobs.queriers.state_querier import StateQuerier
|
16
15
|
from defi_services.services.lending.aave_v2_services import AaveV2StateService
|
17
16
|
from defi_services.services.lending.lending_info.arbitrum.aave_v3_arbitrum import AAVE_V3_ARB
|
18
17
|
from defi_services.services.lending.lending_info.avalanche.aave_v3_avalanche import AAVE_V3_AVALANCHE
|
19
|
-
from defi_services.services.lending.lending_info.
|
20
|
-
from defi_services.services.lending.lending_info.bsc.aave_v3_bsc import AAVE_V3_BSC
|
21
|
-
from defi_services.services.lending.lending_info.ethereum.old_aave_v3_eth import AAVE_V3_ETH
|
18
|
+
from defi_services.services.lending.lending_info.ethereum.aave_v3_eth import AAVE_V3_ETH
|
22
19
|
from defi_services.services.lending.lending_info.fantom.aave_v3_ftm import AAVE_V3_FTM
|
23
20
|
from defi_services.services.lending.lending_info.optimism.aave_v3_optimism import AAVE_V3_OPTIMISM
|
24
21
|
from defi_services.services.lending.lending_info.polygon.aave_v3_polygon import AAVE_V3_POLYGON
|
25
|
-
from defi_services.services.lending.lending_info.zksync.aave_v3_zksync import AAVE_V3_ZKSYNC
|
26
22
|
|
27
23
|
logger = logging.getLogger("Aave V3 Lending Pool State Service")
|
28
24
|
|
@@ -34,10 +30,7 @@ class AaveV3Info:
|
|
34
30
|
Chain.avalanche: AAVE_V3_AVALANCHE,
|
35
31
|
Chain.fantom: AAVE_V3_FTM,
|
36
32
|
Chain.optimism: AAVE_V3_OPTIMISM,
|
37
|
-
Chain.arbitrum: AAVE_V3_ARB
|
38
|
-
Chain.base: AAVE_V3_BASE,
|
39
|
-
Chain.zksync: AAVE_V3_ZKSYNC,
|
40
|
-
Chain.bsc: AAVE_V3_BSC
|
33
|
+
Chain.arbitrum: AAVE_V3_ARB
|
41
34
|
}
|
42
35
|
|
43
36
|
|
@@ -95,33 +88,25 @@ class AaveV3StateService(AaveV2StateService):
|
|
95
88
|
for token_address, reserve_info in reserves_info.items():
|
96
89
|
get_reserve_data_call_id = f'getReserveData_{self.name}_{token_address}_{block_number}'.lower()
|
97
90
|
reserve_data = decoded_data.get(get_reserve_data_call_id)
|
91
|
+
|
98
92
|
atoken = reserve_data[8].lower()
|
93
|
+
sdebt_token = reserve_data[9].lower()
|
99
94
|
debt_token = reserve_data[10].lower()
|
100
95
|
decimals_call_id = f"decimals_{token_address}_{block_number}".lower()
|
101
96
|
atoken_total_supply_key = f'totalSupply_{atoken}_{block_number}'.lower()
|
102
97
|
debt_token_total_supply_key = f'totalSupply_{debt_token}_{block_number}'.lower()
|
103
|
-
|
98
|
+
sdebt_token_total_supply_key = f'totalSupply_{sdebt_token}_{block_number}'.lower()
|
104
99
|
|
105
|
-
|
106
|
-
data = {
|
100
|
+
reserve_tokens_info.append({
|
107
101
|
'underlying': token_address,
|
108
102
|
'underlying_decimals': decoded_data.get(decimals_call_id),
|
109
103
|
'a_token_supply': decoded_data.get(atoken_total_supply_key),
|
110
104
|
'd_token_supply': decoded_data.get(debt_token_total_supply_key),
|
111
|
-
|
105
|
+
'sd_token_supply': decoded_data.get(sdebt_token_total_supply_key),
|
112
106
|
'supply_apy': reserve_data[2],
|
113
107
|
'borrow_apy': reserve_data[4],
|
114
|
-
|
115
|
-
}
|
116
|
-
if sdebt_token != NATIVE_TOKEN:
|
117
|
-
sdebt_token_total_supply_key = f'totalSupply_{sdebt_token}_{block_number}'.lower()
|
118
|
-
data['sd_token_supply'] = decoded_data.get(sdebt_token_total_supply_key)
|
119
|
-
data['stable_borrow_apy'] = reserve_data[5]
|
120
|
-
else:
|
121
|
-
data['sd_token_supply'] = 0
|
122
|
-
data['stable_borrow_apy'] = 0
|
123
|
-
|
124
|
-
reserve_tokens_info.append(data)
|
108
|
+
'stable_borrow_apy': reserve_data[5]
|
109
|
+
})
|
125
110
|
|
126
111
|
return reserve_tokens_info
|
127
112
|
|
@@ -136,17 +121,17 @@ class AaveV3StateService(AaveV2StateService):
|
|
136
121
|
reserve_key = f"getReserveData_{self.name}_{token_address}_{block_number}".lower()
|
137
122
|
atoken_total_supply_key = f'totalSupply_{value["tToken"]}_{block_number}'.lower()
|
138
123
|
debt_token_total_supply_key = f'totalSupply_{value["dToken"]}_{block_number}'.lower()
|
124
|
+
sdebt_token_total_supply_key = f'totalSupply_{value["sdToken"]}_{block_number}'.lower()
|
139
125
|
decimals_key = f"decimals_{token_address}_{block_number}".lower()
|
140
126
|
for reward_token in reward_tokens:
|
141
127
|
atoken_assets_key = f"getRewardsData_{value['tToken']}_{reward_token}_{block_number}".lower()
|
142
128
|
debt_token_assets_key = f"getRewardsData_{value['dToken']}_{reward_token}_{block_number}".lower()
|
129
|
+
sdebt_token_assets_key = f"getRewardsData_{value['sdToken']}_{reward_token}_{block_number}".lower()
|
143
130
|
rpc_calls[atoken_assets_key] = self.get_function_incentive_info(
|
144
131
|
"getRewardsData", [value['tToken'], reward_token], block_number)
|
145
132
|
rpc_calls[debt_token_assets_key] = self.get_function_incentive_info(
|
146
133
|
"getRewardsData", [value['dToken'], reward_token], block_number)
|
147
|
-
|
148
|
-
sdebt_token_assets_key = f"getRewardsData_{value['sdToken']}_{reward_token}_{block_number}".lower()
|
149
|
-
rpc_calls[sdebt_token_assets_key] = self.get_function_incentive_info(
|
134
|
+
rpc_calls[sdebt_token_assets_key] = self.get_function_incentive_info(
|
150
135
|
"getRewardsData", [value['sdToken'], reward_token], block_number)
|
151
136
|
|
152
137
|
rpc_calls[reserve_key] = self.get_function_lending_pool_info("getReserveData", [token_address])
|
@@ -154,14 +139,11 @@ class AaveV3StateService(AaveV2StateService):
|
|
154
139
|
value["tToken"], ERC20_ABI, "totalSupply", block_number=block_number)
|
155
140
|
rpc_calls[debt_token_total_supply_key] = self.state_service.get_function_info(
|
156
141
|
value["dToken"], ERC20_ABI, "totalSupply", block_number=block_number)
|
142
|
+
rpc_calls[sdebt_token_total_supply_key] = self.state_service.get_function_info(
|
143
|
+
value["sdToken"], ERC20_ABI, "totalSupply", block_number=block_number)
|
157
144
|
rpc_calls[decimals_key] = self.state_service.get_function_info(
|
158
145
|
token_address, ERC20_ABI, "decimals", block_number=block_number)
|
159
146
|
|
160
|
-
if value['sdToken'] != NATIVE_TOKEN:
|
161
|
-
sdebt_token_total_supply_key = f'totalSupply_{value["sdToken"]}_{block_number}'.lower()
|
162
|
-
rpc_calls[sdebt_token_total_supply_key] = self.state_service.get_function_info(
|
163
|
-
value["sdToken"], ERC20_ABI, "totalSupply", block_number=block_number)
|
164
|
-
|
165
147
|
return rpc_calls
|
166
148
|
|
167
149
|
def get_apy_lending_pool_deprecated(
|
@@ -258,32 +240,29 @@ class AaveV3StateService(AaveV2StateService):
|
|
258
240
|
sdebt_token = reserve_data[8].lower()
|
259
241
|
debt_token = reserve_data[9].lower()
|
260
242
|
decimals_call_id = f"decimals_{token_address}_{block_number}".lower()
|
243
|
+
|
261
244
|
atoken_total_supply_key = f'totalSupply_{atoken}_{block_number}'.lower()
|
262
245
|
debt_token_total_supply_key = f'totalSupply_{debt_token}_{block_number}'.lower()
|
246
|
+
sdebt_token_total_supply_key = f'totalSupply_{sdebt_token}_{block_number}'.lower()
|
263
247
|
asset_data_tokens[atoken] = {}
|
264
248
|
asset_data_tokens[debt_token] = {}
|
265
|
-
|
266
|
-
asset_data_tokens[sdebt_token] = {}
|
267
|
-
|
249
|
+
asset_data_tokens[sdebt_token] = {}
|
268
250
|
total_supply_tokens[atoken] = {}
|
269
251
|
for reward_token in reward_tokens:
|
270
252
|
atoken_assets_key = f"getRewardsData_{atoken}_{reward_token}_{block_number}".lower()
|
271
253
|
debt_token_assets_key = f"getRewardsData_{debt_token}_{reward_token}_{block_number}".lower()
|
254
|
+
sdebt_token_assets_key = f"getRewardsData_{sdebt_tokens}_{reward_token}_{block_number}".lower()
|
272
255
|
asset_data_tokens[atoken][reward_token] = decoded_data.get(atoken_assets_key)
|
273
256
|
asset_data_tokens[debt_token][reward_token] = decoded_data.get(debt_token_assets_key)
|
257
|
+
asset_data_tokens[sdebt_token][reward_token] = decoded_data.get(sdebt_token_assets_key)
|
274
258
|
total_supply_tokens[atoken][reward_token] = decoded_data.get(atoken_total_supply_key)
|
275
|
-
if sdebt_token != NATIVE_TOKEN:
|
276
|
-
sdebt_token_assets_key = f"getRewardsData_{sdebt_tokens}_{reward_token}_{block_number}".lower()
|
277
|
-
asset_data_tokens[sdebt_token][reward_token] = decoded_data.get(sdebt_token_assets_key)
|
278
259
|
|
279
260
|
atokens[lower_address] = atoken
|
280
261
|
debt_tokens[lower_address] = debt_token
|
281
262
|
sdebt_tokens[lower_address] = sdebt_token
|
282
263
|
decimals[lower_address] = decoded_data.get(decimals_call_id)
|
283
264
|
total_supply_tokens[debt_token] = decoded_data.get(debt_token_total_supply_key)
|
284
|
-
|
285
|
-
sdebt_token_total_supply_key = f'totalSupply_{sdebt_token}_{block_number}'.lower()
|
286
|
-
total_supply_tokens[sdebt_token] = decoded_data.get(sdebt_token_total_supply_key)
|
265
|
+
total_supply_tokens[sdebt_token] = decoded_data.get(sdebt_token_total_supply_key)
|
287
266
|
|
288
267
|
asset_price_key = f"getAssetsPrices_{self.name}_{block_number}".lower()
|
289
268
|
if not token_prices and asset_price_key in decoded_data:
|
@@ -9,9 +9,7 @@ from defi_services.constants.token_constant import Token
|
|
9
9
|
from defi_services.jobs.queriers.state_querier import StateQuerier
|
10
10
|
from defi_services.services.lending.compound_service import CompoundStateService
|
11
11
|
from defi_services.services.lending.lending_info.arbitrum.compound_v3_arbitrum import COMPOUND_V3_ARBITRUM
|
12
|
-
from defi_services.services.lending.lending_info.base.compound_v3_base import COMPOUND_V3_BASE
|
13
12
|
from defi_services.services.lending.lending_info.ethereum.compound_v3_eth import COMPOUND_V3_ETH
|
14
|
-
from defi_services.services.lending.lending_info.optimism.compound_v3_optimism import COMPOUND_V3_OPTIMISM
|
15
13
|
from defi_services.services.lending.lending_info.polygon.compound_v3_polygon import COMPOUND_V3_POLYGON
|
16
14
|
|
17
15
|
|
@@ -19,9 +17,7 @@ class CompoundV3Info:
|
|
19
17
|
mapping = {
|
20
18
|
Chain.ethereum: COMPOUND_V3_ETH,
|
21
19
|
Chain.polygon: COMPOUND_V3_POLYGON,
|
22
|
-
Chain.arbitrum: COMPOUND_V3_ARBITRUM
|
23
|
-
Chain.base: COMPOUND_V3_BASE,
|
24
|
-
Chain.optimism: COMPOUND_V3_OPTIMISM
|
20
|
+
Chain.arbitrum: COMPOUND_V3_ARBITRUM
|
25
21
|
}
|
26
22
|
|
27
23
|
|
@@ -29,7 +25,7 @@ class CompoundV3StateService(CompoundStateService):
|
|
29
25
|
def __init__(self, state_service: StateQuerier, chain_id: str = "0x1"):
|
30
26
|
super().__init__(state_service, chain_id)
|
31
27
|
self.name = f"{chain_id}_{Lending.compound_v3}"
|
32
|
-
self.pool_info = CompoundV3Info.mapping.get(chain_id
|
28
|
+
self.pool_info = CompoundV3Info.mapping.get(chain_id)
|
33
29
|
self.comet_abi = COMET_ABI
|
34
30
|
self.comet_ext = COMET_EXT_ABI
|
35
31
|
self.reward_abi = REWARD_ABI
|
@@ -51,7 +47,7 @@ class CompoundV3StateService(CompoundStateService):
|
|
51
47
|
):
|
52
48
|
result = {}
|
53
49
|
w3 = self.state_service.get_w3()
|
54
|
-
pools = [value.get('comet') for key, value in self.pool_info.get('reservesList'
|
50
|
+
pools = [value.get('comet') for key, value in self.pool_info.get('reservesList').items()]
|
55
51
|
if comets:
|
56
52
|
pools += comets
|
57
53
|
for pool in pools:
|
@@ -189,7 +185,7 @@ class CompoundV3StateService(CompoundStateService):
|
|
189
185
|
|
190
186
|
assets = {
|
191
187
|
underlying_token: {
|
192
|
-
'deposit_apy':
|
188
|
+
'deposit_apy': 0,
|
193
189
|
'borrow_apy': asset_info['borrow_apy'],
|
194
190
|
'total_deposit': 0,
|
195
191
|
'total_borrow': asset_info['total_borrow'],
|
@@ -207,7 +203,7 @@ class CompoundV3StateService(CompoundStateService):
|
|
207
203
|
'is_base': False
|
208
204
|
}
|
209
205
|
assets[collateral_address]['total_deposit'] += total_supply
|
210
|
-
|
206
|
+
assets[collateral_address]['deposit_apy'] = asset_info['deposit_apy']
|
211
207
|
|
212
208
|
comet = token_info['token']
|
213
209
|
data[comet] = assets
|
@@ -3,9 +3,9 @@ import time
|
|
3
3
|
|
4
4
|
from web3 import Web3
|
5
5
|
|
6
|
-
from defi_services.abis.lending.
|
7
|
-
from defi_services.abis.lending.
|
8
|
-
from defi_services.abis.lending.
|
6
|
+
from defi_services.abis.lending.aave_v2_and_forlks.aave_v2_incentives_abi import AAVE_V2_INCENTIVES_ABI
|
7
|
+
from defi_services.abis.lending.aave_v2_and_forlks.lending_pool_abi import LENDING_POOL_ABI
|
8
|
+
from defi_services.abis.lending.aave_v2_and_forlks.oracle_abi import ORACLE_ABI
|
9
9
|
from defi_services.abis.lending.granary.granary_rewarder_abi import GRANARY_REWARDER_ABI
|
10
10
|
from defi_services.abis.token.erc20_abi import ERC20_ABI
|
11
11
|
from defi_services.constants.chain_constant import Chain
|
@@ -14,7 +14,6 @@ from defi_services.constants.token_constant import Token
|
|
14
14
|
from defi_services.jobs.queriers.state_querier import StateQuerier
|
15
15
|
from defi_services.services.lending.lending_info.arbitrum.granary_arbitrum import GRANARY_ARBITRUM
|
16
16
|
from defi_services.services.lending.lending_info.avalanche.granary_avalanche import GRANARY_AVALANCHE
|
17
|
-
from defi_services.services.lending.lending_info.base.granary_base import GRANARY_BASE
|
18
17
|
from defi_services.services.lending.lending_info.bsc.granary_bsc import GRANARY_BSC
|
19
18
|
from defi_services.services.lending.lending_info.ethereum.granary_eth import GRANARY_V1_ETH
|
20
19
|
from defi_services.services.lending.lending_info.fantom.granary_ftm import GRANARY_FTM
|
@@ -32,8 +31,7 @@ class GranaryV1Info:
|
|
32
31
|
Chain.optimism: GRANARY_OPTIMISM,
|
33
32
|
Chain.fantom: GRANARY_FTM,
|
34
33
|
Chain.avalanche: GRANARY_AVALANCHE,
|
35
|
-
Chain.arbitrum: GRANARY_ARBITRUM
|
36
|
-
Chain.base: GRANARY_BASE
|
34
|
+
Chain.arbitrum: GRANARY_ARBITRUM
|
37
35
|
}
|
38
36
|
|
39
37
|
|
@@ -2,7 +2,7 @@ from web3 import Web3
|
|
2
2
|
|
3
3
|
from defi_services.abis.lending.justlend.just_token_abi import JUST_TOKEN_ABI
|
4
4
|
from defi_services.abis.lending.justlend.justlend_comptroller_abi import JUSTLEND_COMPTROLLER_ABI
|
5
|
-
from defi_services.abis.token.
|
5
|
+
from defi_services.abis.token.erc20_abi import ERC20_ABI
|
6
6
|
from defi_services.constants.chain_constant import Chain
|
7
7
|
from defi_services.constants.entities.lending_constant import Lending
|
8
8
|
from defi_services.constants.token_constant import Token
|
@@ -74,9 +74,8 @@ class JustLendStateService(CompoundStateService):
|
|
74
74
|
liquidation_threshold = decoded_data.get(markets)[1] / 10 ** 18
|
75
75
|
|
76
76
|
if underlying != Token.native_token:
|
77
|
-
underlying_contract = _w3.eth.contract(address=Web3.to_checksum_address(underlying), abi=
|
77
|
+
underlying_contract = _w3.eth.contract(address=Web3.to_checksum_address(underlying), abi=ERC20_ABI)
|
78
78
|
underlying_decimal = underlying_contract.functions.decimals().call()
|
79
|
-
|
80
79
|
else:
|
81
80
|
underlying_decimal = Chain.native_decimals.get(self.chain_id, 18)
|
82
81
|
exchange_rate_query_id = f'exchangeRateStored_{token}_{block_number}'
|
@@ -140,7 +139,7 @@ class JustLendStateService(CompoundStateService):
|
|
140
139
|
rpc_calls[underlying_balance_key] = self.get_ctoken_function_info(
|
141
140
|
ctoken, "balanceOfUnderlying", [wallet])
|
142
141
|
rpc_calls[underlying_decimals_key] = self.state_service.get_function_info(
|
143
|
-
underlying,
|
142
|
+
underlying, ERC20_ABI, "decimals", []
|
144
143
|
)
|
145
144
|
|
146
145
|
return rpc_calls
|
@@ -1,6 +1,6 @@
|
|
1
1
|
AAVE_V3_ARB = {
|
2
2
|
"address": "0x794a61358d6845594f94dc1db02a252b5b4814ad",
|
3
|
-
"name": "
|
3
|
+
"name": "Radiant Lending Pool",
|
4
4
|
"stakedIncentiveAddress": '0x929ec64c34a17401f460460d4b9390518e5b473e',
|
5
5
|
"oracleAddress": "0xb56c2F0B653B2e0b10C9b928C8580Ac5Df02C7C7",
|
6
6
|
"rewardTokensList": [],
|
@@ -37,113 +37,23 @@ COMPOUND_V3_ARBITRUM = {
|
|
37
37
|
"assets": {
|
38
38
|
"0x912ce59144191c1204e64559fe8253a0e49e6548": {
|
39
39
|
"priceFeed": "0xb2a824043730fe05f3da2efafa1cbbe83fa548d6",
|
40
|
-
"loanToValue": 0.
|
41
|
-
"liquidationThreshold": 0.
|
40
|
+
"loanToValue": 0.55,
|
41
|
+
"liquidationThreshold": 0.6
|
42
42
|
},
|
43
43
|
"0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a": {
|
44
44
|
"priceFeed": "0xdb98056fecfff59d032ab628337a4887110df3db",
|
45
|
-
"loanToValue": 0.
|
46
|
-
"liquidationThreshold": 0.
|
47
|
-
},
|
48
|
-
"0x82af49447d8a07e3bd95bd0d56f35241523fbab1": {
|
49
|
-
"priceFeed": "0x639fe6ab55c921f74e7fac1ee960c0b6293ba612",
|
50
|
-
"loanToValue": 0.83,
|
51
|
-
"liquidationThreshold": 0.9
|
52
|
-
},
|
53
|
-
"0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f": {
|
54
|
-
"priceFeed": "0xd0c7101eacbb49f3decccc166d238410d6d46d57",
|
55
|
-
"loanToValue": 0.75,
|
56
|
-
"liquidationThreshold": 0.85
|
57
|
-
},
|
58
|
-
"0x5979d7b546e38e414f7e9822514be443a4800529": {
|
59
|
-
"priceFeed": "0xe165155c34fe4cbfc55fc554437907bdb1af7e3e",
|
60
|
-
"loanToValue": 0.8,
|
61
|
-
"liquidationThreshold": 0.85
|
62
|
-
},
|
63
|
-
"0x2416092f143378750bb29b79ed961ab195cceea5": {
|
64
|
-
"priceFeed": "0xc49399814452b41da8a7cd76a159f5515cb3e493",
|
65
|
-
"loanToValue": 0.8,
|
66
|
-
"liquidationThreshold": 0.85
|
67
|
-
},
|
68
|
-
"0x57f5e098cad7a3d1eed53991d4d66c45c9af7812": {
|
69
|
-
"priceFeed": "0x13cdfb7db5e2f58e122b2e789b59de13645349c4",
|
70
|
-
"loanToValue": 0.88,
|
71
|
-
"liquidationThreshold": 0.9
|
72
|
-
}
|
73
|
-
}
|
74
|
-
},
|
75
|
-
"0x82af49447d8a07e3bd95bd0d56f35241523fbab1": {
|
76
|
-
"comet": "0x6f7d514bbd4aff3bcd1140b7344b32f063dee486",
|
77
|
-
"assets": {
|
78
|
-
"0x35751007a407ca6feffe80b3cb397736d2cf4dbe": {
|
79
|
-
"priceFeed": "0xd3cf278f135d9831d2bf28f6672a4575906ca724",
|
80
|
-
"loanToValue": 0.9,
|
81
|
-
"liquidationThreshold": 0.93
|
82
|
-
},
|
83
|
-
"0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8": {
|
84
|
-
"priceFeed": "0x970ffd8e335b8fa4cd5c869c7cac3a90671d5dc3",
|
85
|
-
"loanToValue": 0.9,
|
86
|
-
"liquidationThreshold": 0.93
|
87
|
-
},
|
88
|
-
"0x5979d7b546e38e414f7e9822514be443a4800529": {
|
89
|
-
"priceFeed": "0x6c987dde50db1dcdd32cd4175778c2a291978e2a",
|
90
|
-
"loanToValue": 0.88,
|
91
|
-
"liquidationThreshold": 0.93
|
92
|
-
},
|
93
|
-
"0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f": {
|
94
|
-
"priceFeed": "0xfa454de61b317b6535a0c462267208e8fdb89f45",
|
95
|
-
"loanToValue": 0.8,
|
96
|
-
"liquidationThreshold": 0.85
|
97
|
-
},
|
98
|
-
"0x4186bfc76e2e237523cbc30fd220fe055156b41f": {
|
99
|
-
"priceFeed": "0x3870fac3de911c12a57e5a2532d15ad8ca275a60",
|
100
|
-
"loanToValue": 0.88,
|
101
|
-
"liquidationThreshold": 0.91
|
102
|
-
},
|
103
|
-
"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9": {
|
104
|
-
"priceFeed": "0x84e93ec6170ed630f5ebd89a1aae72d4f63f2713",
|
105
|
-
"loanToValue": 0.8,
|
106
|
-
"liquidationThreshold": 0.85
|
107
|
-
},
|
108
|
-
"0xaf88d065e77c8cc2239327c5edb3a432268e5831": {
|
109
|
-
"priceFeed": "0x443ea0340cb75a160f31a440722dec7b5bc3c2e9",
|
110
|
-
"loanToValue": 0.8,
|
111
|
-
"liquidationThreshold": 0.85
|
112
|
-
},
|
113
|
-
"0x2416092f143378750bb29b79ed961ab195cceea5": {
|
114
|
-
"priceFeed": "0x72e9b6f907365d76c6192ad49c0c5ba356b7fa48",
|
115
|
-
"loanToValue": 0.88,
|
116
|
-
"liquidationThreshold": 0.91
|
117
|
-
}
|
118
|
-
}
|
119
|
-
},
|
120
|
-
"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9": {
|
121
|
-
"comet": "0xd98be00b5d27fc98112bde293e487f8d4ca57d07",
|
122
|
-
"assets": {
|
123
|
-
"0x912ce59144191c1204e64559fe8253a0e49e6548": {
|
124
|
-
"priceFeed": "0xb2a824043730fe05f3da2efafa1cbbe83fa548d6",
|
125
|
-
"loanToValue": 0.7,
|
126
|
-
"liquidationThreshold": 0.8
|
45
|
+
"loanToValue": 0.4,
|
46
|
+
"liquidationThreshold": 0.45
|
127
47
|
},
|
128
48
|
"0x82af49447d8a07e3bd95bd0d56f35241523fbab1": {
|
129
49
|
"priceFeed": "0x639fe6ab55c921f74e7fac1ee960c0b6293ba612",
|
130
|
-
"loanToValue": 0.
|
131
|
-
"liquidationThreshold": 0.9
|
132
|
-
},
|
133
|
-
"0x5979d7b546e38e414f7e9822514be443a4800529": {
|
134
|
-
"priceFeed": "0xe165155c34fe4cbfc55fc554437907bdb1af7e3e",
|
135
|
-
"loanToValue": 0.8,
|
50
|
+
"loanToValue": 0.78,
|
136
51
|
"liquidationThreshold": 0.85
|
137
52
|
},
|
138
53
|
"0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f": {
|
139
54
|
"priceFeed": "0xd0c7101eacbb49f3decccc166d238410d6d46d57",
|
140
55
|
"loanToValue": 0.7,
|
141
|
-
"liquidationThreshold": 0.
|
142
|
-
},
|
143
|
-
"0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a": {
|
144
|
-
"priceFeed": "0xdb98056fecfff59d032ab628337a4887110df3db",
|
145
|
-
"loanToValue": 0.6,
|
146
|
-
"liquidationThreshold": 0.7
|
56
|
+
"liquidationThreshold": 0.77
|
147
57
|
}
|
148
58
|
}
|
149
59
|
}
|