defi-state-querier 0.4.24__py3-none-any.whl → 0.4.26__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/jobs/processors/multi_state_processor.py +2 -2
- defi_services/jobs/processors/state_processor.py +2 -2
- defi_services/jobs/queriers/state_querier.py +4 -4
- defi_services/services/dex/dex_info/pancakeswap_info.py +10 -1
- defi_services/services/dex/pancakeswap_service.py +1 -1
- defi_services/services/dex/pancakeswap_v2_service.py +1 -1
- defi_services/services/dex/pancakeswap_v3_service.py +25 -7
- defi_services/services/dex/quickswap_v3_service.py +14 -4
- defi_services/services/dex/uniswap_v2_service.py +1 -1
- defi_services/services/dex/uniswap_v3_service.py +16 -7
- defi_services/services/lending/aave_v2_services.py +2 -2
- defi_services/services/lending/aave_v3_services.py +4 -4
- defi_services/services/lending/apeswap_services.py +3 -3
- defi_services/services/lending/compound_service.py +3 -3
- defi_services/services/lending/compound_v3_services.py +1 -1
- defi_services/services/lending/flux_services.py +3 -3
- defi_services/services/lending/granary_services.py +1 -1
- defi_services/services/lending/iron_bank_service.py +4 -4
- defi_services/services/lending/justlend_service.py +3 -3
- defi_services/services/lending/liqee_service.py +3 -3
- defi_services/services/lending/morpho_aave_v2_services.py +2 -2
- defi_services/services/lending/morpho_aave_v3_services.py +2 -2
- defi_services/services/lending/morpho_compound_services.py +5 -5
- defi_services/services/lending/onyx_service.py +4 -4
- defi_services/services/lending/silo_services.py +3 -3
- defi_services/services/lending/strike_service.py +3 -3
- defi_services/services/lending/trava_services.py +2 -2
- defi_services/services/lending/uwu_services.py +2 -2
- defi_services/services/lending/valas_services.py +1 -1
- defi_services/services/lending/venus_services.py +7 -7
- defi_services/services/lending/wepiggy_services.py +4 -4
- defi_services/utils/convert_address.py +2 -2
- {defi_state_querier-0.4.24.dist-info → defi_state_querier-0.4.26.dist-info}/METADATA +1 -1
- {defi_state_querier-0.4.24.dist-info → defi_state_querier-0.4.26.dist-info}/RECORD +38 -38
- {defi_state_querier-0.4.24.dist-info → defi_state_querier-0.4.26.dist-info}/LICENSE +0 -0
- {defi_state_querier-0.4.24.dist-info → defi_state_querier-0.4.26.dist-info}/WHEEL +0 -0
- {defi_state_querier-0.4.24.dist-info → defi_state_querier-0.4.26.dist-info}/top_level.txt +0 -0
defi_services/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.4.
|
1
|
+
__version__ = "0.4.26"
|
@@ -31,11 +31,11 @@ class MultiStateProcessor:
|
|
31
31
|
|
32
32
|
@staticmethod
|
33
33
|
def check_address(address):
|
34
|
-
return Web3.
|
34
|
+
return Web3.is_address(address)
|
35
35
|
|
36
36
|
@staticmethod
|
37
37
|
def checksum_address(address):
|
38
|
-
return Web3.
|
38
|
+
return Web3.to_checksum_address(address)
|
39
39
|
|
40
40
|
def init_rpc_call_information(
|
41
41
|
self, wallet: str, query_id: str, entity_id: str, query_type: str, block_number: int = 'latest', **kwargs):
|
@@ -39,11 +39,11 @@ class StateProcessor:
|
|
39
39
|
|
40
40
|
@staticmethod
|
41
41
|
def check_address(address):
|
42
|
-
return Web3.
|
42
|
+
return Web3.is_address(address)
|
43
43
|
|
44
44
|
@staticmethod
|
45
45
|
def checksum_address(address):
|
46
|
-
return Web3.
|
46
|
+
return Web3.to_checksum_address(address)
|
47
47
|
|
48
48
|
def init_rpc_call_information(
|
49
49
|
self, wallet: str, query_id: str, entity_id: str, query_type: str, block_number: int = 'latest', **kwargs):
|
@@ -112,7 +112,7 @@ class StateQuerier:
|
|
112
112
|
@staticmethod
|
113
113
|
def add_native_token_balance_rpc_call(
|
114
114
|
fn_paras: str = None, call_id: str = None, block_number: int = "latest"):
|
115
|
-
eth_call = GetBalance(Web3.
|
115
|
+
eth_call = GetBalance(Web3.to_checksum_address(fn_paras), block_number, call_id)
|
116
116
|
return eth_call
|
117
117
|
|
118
118
|
def add_rpc_call(self, abi: dict, fn_name: str, contract_address: str,
|
@@ -120,12 +120,12 @@ class StateQuerier:
|
|
120
120
|
args = []
|
121
121
|
if fn_paras:
|
122
122
|
for item in fn_paras:
|
123
|
-
if self._w3.
|
124
|
-
item = self._w3.
|
123
|
+
if self._w3.is_address(item):
|
124
|
+
item = self._w3.to_checksum_address(item)
|
125
125
|
args.append(item)
|
126
126
|
|
127
127
|
data_call = encode_eth_call_data(abi=abi, fn_name=fn_name, args=args)
|
128
|
-
eth_call = EthCall(to=self._w3.
|
128
|
+
eth_call = EthCall(to=self._w3.to_checksum_address(contract_address), block_number=block_number,
|
129
129
|
data=data_call, abi=abi, fn_name=fn_name, id=call_id)
|
130
130
|
return eth_call
|
131
131
|
|
@@ -6,6 +6,9 @@ from defi_services.abis.dex.pancakeswap.pancakeswap_v2_factory_abi import PANCAK
|
|
6
6
|
from defi_services.abis.dex.pancakeswap.v3_pool_abi import PANCAKESWAP_V3_POOL_ABI
|
7
7
|
|
8
8
|
PANCAKESWAP_V0_BSC_INFO = {
|
9
|
+
"project_id": "pancakeswap",
|
10
|
+
"chain_id": "0x1",
|
11
|
+
"router_address": "0xeff92a263d31888d860bd50809a8d171709b7b1c",
|
9
12
|
'master_chef_address': '0x73feaa1ee314f8c655e354234017be2193c9e24e',
|
10
13
|
"reward_token": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82",
|
11
14
|
'forked': 'uniswap-v2'
|
@@ -13,15 +16,20 @@ PANCAKESWAP_V0_BSC_INFO = {
|
|
13
16
|
}
|
14
17
|
|
15
18
|
PANCAKESWAP_V2_BSC_INFO = {
|
19
|
+
"project_id": "pancakeswap-amm",
|
20
|
+
"chain_id": "0x38",
|
16
21
|
'factory_address': '0xca143ce32fe78f1f7019d7d551a6402fc5350c73',
|
17
22
|
'master_chef_address': '0xa5f8c5dbd5f286960b9d90548680ae5ebff07652',
|
18
23
|
"reward_token": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82",
|
19
24
|
'factory_abi': PANCAKESWAP_V2_FACTORY_ABI,
|
20
25
|
'master_chef_abi': PANCAKESWAP_MASTERCHEF_V2_ABI,
|
21
|
-
'forked': 'uniswap-v2'
|
26
|
+
'forked': 'uniswap-v2',
|
27
|
+
"router_address": "0x10ed43c718714eb63d5aa57b78b54704e256024e",
|
22
28
|
}
|
23
29
|
|
24
30
|
PANCAKESWAP_V3_BSC_INFO = {
|
31
|
+
"project_id": "pancakeswap-v3",
|
32
|
+
"chain_id": "0x38",
|
25
33
|
'factory_address': '0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865',
|
26
34
|
'factory_abi': PANCAKESWAP_V3_FACTORY_ABI,
|
27
35
|
'master_chef_address': '0x556b9306565093c855aea9ae92a594704c2cd59e',
|
@@ -31,5 +39,6 @@ PANCAKESWAP_V3_BSC_INFO = {
|
|
31
39
|
'pool_abi': PANCAKESWAP_V3_POOL_ABI,
|
32
40
|
'forked': 'uniswap-v3',
|
33
41
|
"reward_token": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82",
|
42
|
+
'router_address': "0x13f4ea83d0bd40e75c8222255bc855a974568dd4"
|
34
43
|
|
35
44
|
}
|
@@ -38,7 +38,7 @@ class PancakeSwapServices(PancakeSwapV2Services):
|
|
38
38
|
masterchef_addr = self.pool_info.get('master_chef_address')
|
39
39
|
|
40
40
|
master_chef_contract = web3.eth.contract(abi=self.masterchef_abi,
|
41
|
-
address=web3.
|
41
|
+
address=web3.to_checksum_address(masterchef_addr))
|
42
42
|
pool_length = master_chef_contract.functions.poolLength().call()
|
43
43
|
|
44
44
|
rpc_calls = {}
|
@@ -42,7 +42,7 @@ class PancakeSwapV2Services(UniswapV2Services):
|
|
42
42
|
masterchef_addr = self.pool_info.get('master_chef_address')
|
43
43
|
|
44
44
|
master_chef_contract = web3.eth.contract(abi=self.masterchef_abi,
|
45
|
-
address=web3.
|
45
|
+
address=web3.to_checksum_address(masterchef_addr))
|
46
46
|
pool_length = master_chef_contract.functions.poolLength().call()
|
47
47
|
|
48
48
|
rpc_calls = {}
|
@@ -126,6 +126,10 @@ class PancakeSwapV3Service(UniswapV3Services):
|
|
126
126
|
query_id = f'decimals_{token_address}_{block_number}'.lower()
|
127
127
|
rpc_calls[query_id] = self.state_service.get_function_info(
|
128
128
|
address=token_address, abi=ERC20_ABI, fn_name="decimals", block_number=block_number)
|
129
|
+
query_id = f'{token_key}_{lp_token}_{block_number}'.lower()
|
130
|
+
rpc_calls[query_id] = self.state_service.get_function_info(
|
131
|
+
address=lp_token, abi=self.pool_info['pool_abi'], fn_name=token_key, fn_paras=None,
|
132
|
+
block_number=block_number)
|
129
133
|
|
130
134
|
return rpc_calls
|
131
135
|
|
@@ -133,15 +137,21 @@ class PancakeSwapV3Service(UniswapV3Services):
|
|
133
137
|
lp_token_info = supplied_data['lp_token_info']
|
134
138
|
for lp_token, value in lp_token_info.items():
|
135
139
|
slot0 = response_data.get(f"slot0_{lp_token}_{block_number}".lower())
|
136
|
-
price = (slot0[0] / 2 ** 96) ** 2
|
137
140
|
token0_address = value.get('token0')
|
138
141
|
token1_address = value.get('token1')
|
139
|
-
|
140
|
-
|
142
|
+
if token0_address == response_data.get(f'token0_{lp_token}_{block_number}'.lower()):
|
143
|
+
token0_decimals = response_data.get(f'decimals_{token0_address}_{block_number}'.lower())
|
144
|
+
token1_decimals = response_data.get(f'decimals_{token1_address}_{block_number}'.lower())
|
145
|
+
else:
|
146
|
+
token1_decimals = response_data.get(f'decimals_{token0_address}_{block_number}'.lower())
|
147
|
+
token0_decimals = response_data.get(f'decimals_{token1_address}_{block_number}'.lower())
|
148
|
+
price = (slot0[0] / 2 ** 96) ** 2 * 10 ** (token0_decimals - token1_decimals)
|
141
149
|
unstake_liquidity = response_data.get(f"liquidity_{lp_token}_{block_number}".lower())
|
142
150
|
tick_spacing = response_data.get(f'tickSpacing_{lp_token}_{block_number}'.lower())
|
143
151
|
|
144
152
|
lp_token_info[lp_token].update({
|
153
|
+
"token0": token0_address,
|
154
|
+
"token1": token1_address,
|
145
155
|
'liquidity_in_range': unstake_liquidity,
|
146
156
|
"price": price,
|
147
157
|
'tick': slot0[1],
|
@@ -174,9 +184,12 @@ class PancakeSwapV3Service(UniswapV3Services):
|
|
174
184
|
tick_upper = (tick // tick_spacing + 1) * tick_spacing
|
175
185
|
amount0, amount1 = get_token_amount_of_pool(liquidity=liquidity_in_range,
|
176
186
|
tick_lower=tick_lower, tick_upper=tick_upper)
|
187
|
+
# stake_amount0, stake_amount1 = get_token_amount_of_pool(liquidity=value.get("stake_liquidity"), tick_lower= tick_lower, tick_upper=tick_upper)
|
177
188
|
lp_token_info[lp_token].update({
|
178
189
|
'token0_amount_in_range': amount0 / 10 ** value.get('token0_decimals'),
|
179
|
-
'token1_amount_in_range': amount1 / 10 ** value.get('token1_decimals')
|
190
|
+
'token1_amount_in_range': amount1 / 10 ** value.get('token1_decimals'),
|
191
|
+
# 'token0_amount_stake': stake_amount0 / 10 ** value.get('token0_decimals'),
|
192
|
+
# 'token1_amount_stake': stake_amount1 / 10 ** value.get('token1_decimals')
|
180
193
|
})
|
181
194
|
|
182
195
|
return lp_token_info
|
@@ -253,6 +266,7 @@ class PancakeSwapV3Service(UniswapV3Services):
|
|
253
266
|
'tick_upper': master_chef_position[3],
|
254
267
|
'reward': master_chef_position[5] / 10 ** 18,
|
255
268
|
'farming_pid': master_chef_position[7],
|
269
|
+
'reward_token': self.pool_info['reward_token'],
|
256
270
|
'pending_cake': decoded_data.get(
|
257
271
|
f'pendingCake_{self.masterchef_addr}_{token_id}_{block_number}'.lower()) / 10 ** 18,
|
258
272
|
'fee_growth_inside0_x128': nft_position[8],
|
@@ -284,9 +298,13 @@ class PancakeSwapV3Service(UniswapV3Services):
|
|
284
298
|
block_number)
|
285
299
|
for token_id, value in user_data['stake_token'].items():
|
286
300
|
pid = value.get('farming_pid')
|
287
|
-
|
301
|
+
pool_info = decoded_data.get(f'poolInfo_{self.masterchef_addr}_{pid}_{block_number}'.lower())
|
302
|
+
lp_token_address = pool_info[1]
|
288
303
|
user_data['stake_token'][token_id].update({
|
289
|
-
'pool_address': lp_token_address
|
304
|
+
'pool_address': lp_token_address,
|
305
|
+
'token0': pool_info[2],
|
306
|
+
'token1': pool_info[3],
|
307
|
+
'fee': pool_info[4]
|
290
308
|
})
|
291
309
|
liquidity = value.get('liquidity')
|
292
310
|
token0_decimals = lp_token_info.get(lp_token_address, {}).get("token0_decimals")
|
@@ -296,7 +314,7 @@ class PancakeSwapV3Service(UniswapV3Services):
|
|
296
314
|
tick_lower = value.get('tick_lower')
|
297
315
|
tick_upper = value.get('tick_upper')
|
298
316
|
if price and tick:
|
299
|
-
sqrt_price_x96 = math.sqrt(price) * 2 ** 96
|
317
|
+
sqrt_price_x96 = (math.sqrt(price / 10 ** (token0_decimals - token1_decimals))) * 2 ** 96
|
300
318
|
token0_amount, token1_amount = get_token_amount_of_user(liquidity=liquidity,
|
301
319
|
sqrt_price_x96=sqrt_price_x96,
|
302
320
|
tick=tick, tick_upper=tick_upper,
|
@@ -86,6 +86,10 @@ class QuickSwapV3Services(UniswapV3Services):
|
|
86
86
|
query_id = f'decimals_{token_address}_{block_number}'.lower()
|
87
87
|
rpc_calls[query_id] = self.state_service.get_function_info(
|
88
88
|
address=token_address, abi=ERC20_ABI, fn_name="decimals", block_number=block_number)
|
89
|
+
query_id = f'{token_key}_{lp_token}_{block_number}'.lower()
|
90
|
+
rpc_calls[query_id] = self.state_service.get_function_info(
|
91
|
+
address=lp_token, abi=self.pool_info['pool_abi'], fn_name=token_key, fn_paras=None,
|
92
|
+
block_number=block_number)
|
89
93
|
|
90
94
|
return rpc_calls
|
91
95
|
|
@@ -94,14 +98,20 @@ class QuickSwapV3Services(UniswapV3Services):
|
|
94
98
|
for lp_token, value in lp_token_info.items():
|
95
99
|
liquidity_in_range = response_data.get(f'liquidity_{lp_token}_{block_number}'.lower(), 0)
|
96
100
|
slot0 = response_data.get(f"globalState_{lp_token}_{block_number}".lower())
|
97
|
-
price = (slot0[0] / 2 ** 96) ** 2
|
98
101
|
token0_address = value.get('token0')
|
99
102
|
token1_address = value.get('token1')
|
100
|
-
|
101
|
-
|
103
|
+
if token0_address == response_data.get(f'token0_{lp_token}_{block_number}'.lower()):
|
104
|
+
token0_decimals = response_data.get(f'decimals_{token0_address}_{block_number}'.lower())
|
105
|
+
token1_decimals = response_data.get(f'decimals_{token1_address}_{block_number}'.lower())
|
106
|
+
else:
|
107
|
+
token1_decimals = response_data.get(f'decimals_{token0_address}_{block_number}'.lower())
|
108
|
+
token0_decimals = response_data.get(f'decimals_{token1_address}_{block_number}'.lower())
|
109
|
+
price = (slot0[0] / 2 ** 96) ** 2 * 10 ** (token0_decimals - token1_decimals)
|
102
110
|
tick_spacing = response_data.get(f'tickSpacing_{lp_token}_{block_number}'.lower())
|
103
111
|
|
104
112
|
lp_token_info[lp_token].update({
|
113
|
+
"token0": token0_address,
|
114
|
+
"token1": token1_address,
|
105
115
|
"liquidity_in_range": liquidity_in_range,
|
106
116
|
"price": price,
|
107
117
|
'tick': slot0[1],
|
@@ -213,4 +223,4 @@ class QuickSwapV3Services(UniswapV3Services):
|
|
213
223
|
'token1_reward': token1_reward
|
214
224
|
})
|
215
225
|
|
216
|
-
return user_data
|
226
|
+
return user_data
|
@@ -41,7 +41,7 @@ class UniswapV2Services(DexProtocolServices):
|
|
41
41
|
factory_addr = self.pool_info.get('factory_address')
|
42
42
|
|
43
43
|
factory_contract = web3.eth.contract(
|
44
|
-
address=web3.
|
44
|
+
address=web3.to_checksum_address(factory_addr), abi=self.factory_abi)
|
45
45
|
pool_length = factory_contract.functions.allPairsLength().call()
|
46
46
|
|
47
47
|
rpc_calls = {}
|
@@ -98,6 +98,10 @@ class UniswapV3Services(DexProtocolServices):
|
|
98
98
|
query_id = f'decimals_{token_address}_{block_number}'.lower()
|
99
99
|
rpc_calls[query_id] = self.state_service.get_function_info(
|
100
100
|
address=token_address, abi=ERC20_ABI, fn_name="decimals", block_number=block_number)
|
101
|
+
query_id = f'{token_key}_{lp_token}_{block_number}'.lower()
|
102
|
+
rpc_calls[query_id] = self.state_service.get_function_info(
|
103
|
+
address=lp_token, abi=self.pool_info['pool_abi'], fn_name=token_key, fn_paras=None,
|
104
|
+
block_number=block_number)
|
101
105
|
|
102
106
|
return rpc_calls
|
103
107
|
|
@@ -106,14 +110,19 @@ class UniswapV3Services(DexProtocolServices):
|
|
106
110
|
for lp_token, value in lp_token_info.items():
|
107
111
|
liquidity_in_range = response_data.get(f'liquidity_{lp_token}_{block_number}'.lower(), 0)
|
108
112
|
slot0 = response_data.get(f"slot0_{lp_token}_{block_number}".lower())
|
109
|
-
price = (slot0[0] / 2 ** 96) ** 2
|
110
113
|
token0_address = value.get('token0')
|
111
114
|
token1_address = value.get('token1')
|
112
|
-
|
113
|
-
|
115
|
+
if token0_address == response_data.get(f'token0_{lp_token}_{block_number}'.lower()):
|
116
|
+
token0_decimals = response_data.get(f'decimals_{token0_address}_{block_number}'.lower())
|
117
|
+
token1_decimals = response_data.get(f'decimals_{token1_address}_{block_number}'.lower())
|
118
|
+
else:
|
119
|
+
token1_decimals = response_data.get(f'decimals_{token0_address}_{block_number}'.lower())
|
120
|
+
token0_decimals = response_data.get(f'decimals_{token1_address}_{block_number}'.lower())
|
121
|
+
price = (slot0[0] / 2 ** 96) ** 2 * 10 ** (token0_decimals - token1_decimals)
|
114
122
|
tick_spacing = response_data.get(f'tickSpacing_{lp_token}_{block_number}'.lower())
|
115
|
-
|
116
123
|
lp_token_info[lp_token].update({
|
124
|
+
"token0": token0_address,
|
125
|
+
"token1": token1_address,
|
117
126
|
"liquidity_in_range": liquidity_in_range,
|
118
127
|
"price": price,
|
119
128
|
'tick': slot0[1],
|
@@ -272,7 +281,7 @@ class UniswapV3Services(DexProtocolServices):
|
|
272
281
|
tick_upper = value.get('tick_upper')
|
273
282
|
tick_lower = value.get('tick_lower')
|
274
283
|
if price and tick:
|
275
|
-
sqrt_price_x96 = (math.sqrt(price)) * 2 ** 96
|
284
|
+
sqrt_price_x96 = (math.sqrt(price / 10 ** (token0_decimals - token1_decimals))) * 2 ** 96
|
276
285
|
|
277
286
|
token0_amount, token1_amount = get_token_amount_of_user(
|
278
287
|
liquidity=liquidity,
|
@@ -352,6 +361,6 @@ class UniswapV3Services(DexProtocolServices):
|
|
352
361
|
return user_data
|
353
362
|
|
354
363
|
def checksum_address(self, address):
|
355
|
-
if self.
|
356
|
-
address = self.web3.
|
364
|
+
if self.Web3.is_address(address):
|
365
|
+
address = self.web3.to_checksum_address(address)
|
357
366
|
return address
|
@@ -54,7 +54,7 @@ class AaveV2StateService(ProtocolServices):
|
|
54
54
|
def get_dapp_asset_info(self, block_number: int = 'latest'):
|
55
55
|
begin = time.time()
|
56
56
|
_w3 = self.state_service.get_w3()
|
57
|
-
pool_address = Web3.
|
57
|
+
pool_address = Web3.to_checksum_address(self.pool_info['address'])
|
58
58
|
contract = _w3.eth.contract(address=pool_address, abi=self.lending_abi)
|
59
59
|
reserves_list = contract.functions.getReservesList().call(block_identifier=block_number)
|
60
60
|
reserves_info = {}
|
@@ -430,7 +430,7 @@ class AaveV2StateService(ProtocolServices):
|
|
430
430
|
rpc_calls = {}
|
431
431
|
tokens = []
|
432
432
|
for token, value in reserves_info.items():
|
433
|
-
atoken, debt_token = Web3.
|
433
|
+
atoken, debt_token = Web3.to_checksum_address(value['tToken']), Web3.to_checksum_address(value['dToken'])
|
434
434
|
tokens += [atoken, debt_token]
|
435
435
|
key = f"getRewardsBalance_{self.name}_{wallet}_{block_number}".lower()
|
436
436
|
rpc_calls[key] = self.get_function_incentive_info(
|
@@ -59,13 +59,13 @@ class AaveV3StateService(AaveV2StateService):
|
|
59
59
|
def get_dapp_asset_info(self, block_number: int = 'latest'):
|
60
60
|
_w3 = self.state_service.get_w3()
|
61
61
|
pool_address = self.pool_info.get("address")
|
62
|
-
pool_contract = _w3.eth.contract(address=_w3.
|
62
|
+
pool_contract = _w3.eth.contract(address=_w3.to_checksum_address(pool_address), abi=self.lending_abi)
|
63
63
|
reserve_list = pool_contract.functions.getReservesList().call(block_identifier=block_number)
|
64
64
|
reserves_info = {}
|
65
65
|
for token in reserve_list:
|
66
66
|
token = token.lower()
|
67
67
|
reserve_data = pool_contract.functions.getReserveData(
|
68
|
-
_w3.
|
68
|
+
_w3.to_checksum_address(token)).call(block_identifier=block_number)
|
69
69
|
reserves_info[token] = {}
|
70
70
|
reserves_info[token]["tToken"] = reserve_data[8].lower()
|
71
71
|
reserves_info[token]["sdToken"] = reserve_data[9].lower()
|
@@ -293,9 +293,9 @@ class AaveV3StateService(AaveV2StateService):
|
|
293
293
|
reward_token, ERC20_ABI, "decimals", block_number=block_number)
|
294
294
|
tokens = []
|
295
295
|
for key, value in reserves_info.items():
|
296
|
-
tokens += [Web3.
|
296
|
+
tokens += [Web3.to_checksum_address(value["tToken"]), Web3.to_checksum_address(value["dToken"])]
|
297
297
|
key = f"getAllUserRewards_{self.name}_{wallet}_{block_number}".lower()
|
298
|
-
rpc_calls[key] = self.get_function_incentive_info("getAllUserRewards", [tokens, Web3.
|
298
|
+
rpc_calls[key] = self.get_function_incentive_info("getAllUserRewards", [tokens, Web3.to_checksum_address(wallet)], block_number)
|
299
299
|
return rpc_calls
|
300
300
|
|
301
301
|
def calculate_rewards_balance(
|
@@ -43,7 +43,7 @@ class ApeSwapStateService(CompoundStateService):
|
|
43
43
|
block_number: int = "latest"):
|
44
44
|
_w3 = self.state_service.get_w3()
|
45
45
|
comptroller_contract = _w3.eth.contract(
|
46
|
-
address=_w3.
|
46
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
47
47
|
ctokens = []
|
48
48
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
49
49
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -52,9 +52,9 @@ class ApeSwapStateService(CompoundStateService):
|
|
52
52
|
ctokens.append(token)
|
53
53
|
|
54
54
|
lens_contract = _w3.eth.contract(
|
55
|
-
address=Web3.
|
55
|
+
address=Web3.to_checksum_address(self.pool_info.get("lensAddress")), abi=self.lens_abi
|
56
56
|
)
|
57
|
-
tokens = [Web3.
|
57
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
58
58
|
metadata = lens_contract.functions.cTokenMetadataAll(tokens).call(block_identifier=block_number)
|
59
59
|
reserves_info = {}
|
60
60
|
for data in metadata:
|
@@ -50,7 +50,7 @@ class CompoundStateService(ProtocolServices):
|
|
50
50
|
block_number: int = "latest"):
|
51
51
|
_w3 = self.state_service.get_w3()
|
52
52
|
comptroller_contract = _w3.eth.contract(
|
53
|
-
address=_w3.
|
53
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
54
54
|
ctokens = []
|
55
55
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
56
56
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -59,9 +59,9 @@ class CompoundStateService(ProtocolServices):
|
|
59
59
|
ctokens.append(token)
|
60
60
|
|
61
61
|
lens_contract = _w3.eth.contract(
|
62
|
-
address=Web3.
|
62
|
+
address=Web3.to_checksum_address(self.pool_info.get("lensAddress")), abi=self.lens_abi
|
63
63
|
)
|
64
|
-
tokens = [Web3.
|
64
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
65
65
|
metadata = lens_contract.functions.cTokenMetadataAll(tokens).call(block_identifier=block_number)
|
66
66
|
reserves_info = {}
|
67
67
|
for data in metadata:
|
@@ -51,7 +51,7 @@ class CompoundV3StateService(CompoundStateService):
|
|
51
51
|
if comets:
|
52
52
|
pools += comets
|
53
53
|
for pool in pools:
|
54
|
-
contract = w3.eth.contract(address=w3.
|
54
|
+
contract = w3.eth.contract(address=w3.to_checksum_address(pool), abi=self.comet_abi)
|
55
55
|
base_token = contract.functions.baseToken().call().lower()
|
56
56
|
number_assets = contract.functions.numAssets().call()
|
57
57
|
asset_data = {}
|
@@ -47,7 +47,7 @@ class FluxStateService(CompoundStateService):
|
|
47
47
|
block_number: int = "latest"):
|
48
48
|
_w3 = self.state_service.get_w3()
|
49
49
|
comptroller_contract = _w3.eth.contract(
|
50
|
-
address=_w3.
|
50
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
51
51
|
ctokens = []
|
52
52
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
53
53
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -56,9 +56,9 @@ class FluxStateService(CompoundStateService):
|
|
56
56
|
ctokens.append(token)
|
57
57
|
|
58
58
|
lens_contract = _w3.eth.contract(
|
59
|
-
address=Web3.
|
59
|
+
address=Web3.to_checksum_address(self.pool_info.get("lensAddress")), abi=self.lens_abi
|
60
60
|
)
|
61
|
-
tokens = [Web3.
|
61
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
62
62
|
metadata = lens_contract.functions.cTokenMetadataAll(tokens).call(block_identifier=block_number)
|
63
63
|
reserves_info = {}
|
64
64
|
for data in metadata:
|
@@ -61,7 +61,7 @@ class GranaryStateService(ProtocolServices):
|
|
61
61
|
def get_dapp_asset_info(self, block_number: int = 'latest'):
|
62
62
|
begin = time.time()
|
63
63
|
_w3 = self.state_service.get_w3()
|
64
|
-
pool_address = Web3.
|
64
|
+
pool_address = Web3.to_checksum_address(self.pool_info['address'])
|
65
65
|
contract = _w3.eth.contract(address=pool_address, abi=self.lending_abi)
|
66
66
|
reserves_list = contract.functions.getReservesList().call(block_identifier=block_number)
|
67
67
|
reserves_info = {}
|
@@ -53,7 +53,7 @@ class IronBankStateService(CompoundStateService):
|
|
53
53
|
block_number: int = "latest"):
|
54
54
|
_w3 = self.state_service.get_w3()
|
55
55
|
comptroller_contract = _w3.eth.contract(
|
56
|
-
address=_w3.
|
56
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
57
57
|
ctokens = []
|
58
58
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
59
59
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -62,9 +62,9 @@ class IronBankStateService(CompoundStateService):
|
|
62
62
|
ctokens.append(token)
|
63
63
|
|
64
64
|
lens_contract = _w3.eth.contract(
|
65
|
-
address=Web3.
|
65
|
+
address=Web3.to_checksum_address(self.pool_info.get("lensAddress")), abi=self.lens_abi
|
66
66
|
)
|
67
|
-
tokens = [Web3.
|
67
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
68
68
|
reserves_info = {}
|
69
69
|
queries = {}
|
70
70
|
for token in tokens:
|
@@ -91,7 +91,7 @@ class IronBankStateService(CompoundStateService):
|
|
91
91
|
liquidation_threshold = decoded_data.get(markets)[1] / 10 ** 18
|
92
92
|
|
93
93
|
if underlying != Token.native_token:
|
94
|
-
underlying_contract = _w3.eth.contract(address=Web3.
|
94
|
+
underlying_contract = _w3.eth.contract(address=Web3.to_checksum_address(underlying), abi=ERC20_ABI)
|
95
95
|
underlying_decimal = underlying_contract.functions.decimals().call()
|
96
96
|
else:
|
97
97
|
underlying_decimal = Chain.native_decimals.get(self.chain_id, 18)
|
@@ -42,12 +42,12 @@ class JustLendStateService(CompoundStateService):
|
|
42
42
|
block_number: int = "latest"):
|
43
43
|
_w3 = self.state_service.get_w3()
|
44
44
|
comptroller_contract = _w3.eth.contract(
|
45
|
-
address=_w3.
|
45
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
46
46
|
ctokens = []
|
47
47
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
48
48
|
ctokens.append(token)
|
49
49
|
|
50
|
-
tokens = [Web3.
|
50
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
51
51
|
reserves_info = {}
|
52
52
|
queries = {}
|
53
53
|
for token in tokens:
|
@@ -74,7 +74,7 @@ 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.
|
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
79
|
else:
|
80
80
|
underlying_decimal = Chain.native_decimals.get(self.chain_id, 18)
|
@@ -53,13 +53,13 @@ class LiqeeStateService(CompoundStateService):
|
|
53
53
|
block_number: int = "latest"):
|
54
54
|
_w3 = self.state_service.get_w3()
|
55
55
|
comptroller_contract = _w3.eth.contract(
|
56
|
-
address=_w3.
|
56
|
+
address=_w3.to_checksum_address(self.pool_info.get("controllerAddress")), abi=self.controller_abi)
|
57
57
|
ctokens = []
|
58
58
|
for token in comptroller_contract.functions.getAlliTokens().call(block_identifier=block_number):
|
59
59
|
ctokens.append(token)
|
60
60
|
reserves_info = {}
|
61
61
|
for token in ctokens:
|
62
|
-
address = _w3.
|
62
|
+
address = _w3.to_checksum_address(token)
|
63
63
|
contract = _w3.eth.contract(address=address, abi=self.lquee_token_abi)
|
64
64
|
underlying = contract.functions.underlying().call(block_identifier=block_number)
|
65
65
|
liquidation_threshold = comptroller_contract.functions.markets(address).call(block_identifier=block_number)
|
@@ -182,7 +182,7 @@ class LiqeeStateService(CompoundStateService):
|
|
182
182
|
reserves_info: dict = None,
|
183
183
|
block_number: int = "latest",
|
184
184
|
):
|
185
|
-
fn_paras = [Web3.
|
185
|
+
fn_paras = [Web3.to_checksum_address(wallet)]
|
186
186
|
rpc_call = self.get_lending_function_info("getAccountRewardAmount", fn_paras, block_number)
|
187
187
|
get_reward_id = f"getAccountRewardAmount_{self.name}_{wallet}_{block_number}".lower()
|
188
188
|
return {get_reward_id: rpc_call}
|
@@ -57,10 +57,10 @@ class MorphoAaveV2StateService(MorphoCompoundStateService):
|
|
57
57
|
block_number: int = "latest"):
|
58
58
|
begin = time.time()
|
59
59
|
_w3 = self.state_service.get_w3()
|
60
|
-
pool_address = Web3.
|
60
|
+
pool_address = Web3.to_checksum_address(self.aave_info['address'])
|
61
61
|
contract = _w3.eth.contract(address=pool_address, abi=self.lending_abi)
|
62
62
|
comptroller_contract = _w3.eth.contract(
|
63
|
-
address=_w3.
|
63
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
64
64
|
markets = comptroller_contract.functions.getMarketsCreated().call(block_identifier=block_number)
|
65
65
|
reserves_list = contract.functions.getReservesList().call(block_identifier=block_number)
|
66
66
|
reserves_info = {}
|
@@ -55,10 +55,10 @@ class MorphoAaveV3StateService(MorphoCompoundStateService):
|
|
55
55
|
block_number: int = "latest"):
|
56
56
|
begin = time.time()
|
57
57
|
_w3 = self.state_service.get_w3()
|
58
|
-
pool_address = Web3.
|
58
|
+
pool_address = Web3.to_checksum_address(self.aave_info['address'])
|
59
59
|
contract = _w3.eth.contract(address=pool_address, abi=self.lending_abi)
|
60
60
|
comptroller_contract = _w3.eth.contract(
|
61
|
-
address=_w3.
|
61
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
62
62
|
markets = comptroller_contract.functions.marketsCreated().call(block_identifier=block_number)
|
63
63
|
markets = [i.lower() for i in markets]
|
64
64
|
reserves_list = contract.functions.getReservesList().call(block_identifier=block_number)
|
@@ -56,7 +56,7 @@ class MorphoCompoundStateService(ProtocolServices):
|
|
56
56
|
block_number: int = "latest"):
|
57
57
|
_w3 = self.state_service.get_w3()
|
58
58
|
comptroller_contract = _w3.eth.contract(
|
59
|
-
address=_w3.
|
59
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
60
60
|
ctokens = []
|
61
61
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
62
62
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -65,9 +65,9 @@ class MorphoCompoundStateService(ProtocolServices):
|
|
65
65
|
ctokens.append(token)
|
66
66
|
|
67
67
|
compound_lens_contract = _w3.eth.contract(
|
68
|
-
address=Web3.
|
68
|
+
address=Web3.to_checksum_address(self.compound_info.get("lensAddress")), abi=self.compound_lens_abi
|
69
69
|
)
|
70
|
-
tokens = [Web3.
|
70
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
71
71
|
metadata = compound_lens_contract.functions.cTokenMetadataAll(tokens).call(block_identifier=block_number)
|
72
72
|
reserves_info = {}
|
73
73
|
for data in metadata:
|
@@ -196,8 +196,8 @@ class MorphoCompoundStateService(ProtocolServices):
|
|
196
196
|
if not reserves_info:
|
197
197
|
reserves_info = self.pool_info.get("reservesList")
|
198
198
|
params = [
|
199
|
-
[Web3.
|
200
|
-
Web3.
|
199
|
+
[Web3.to_checksum_address(value.get(self.market_key)) for key, value in reserves_info.items()],
|
200
|
+
Web3.to_checksum_address(wallet)
|
201
201
|
]
|
202
202
|
rpc_call = self.get_lens_function_info("getUserUnclaimedRewards", params, block_number)
|
203
203
|
get_reward_id = f"getUserUnclaimedRewards_{self.name}_{wallet}_{block_number}".lower()
|
@@ -49,7 +49,7 @@ class OnyxStateService(CompoundStateService):
|
|
49
49
|
block_number: int = "latest"):
|
50
50
|
_w3 = self.state_service.get_w3()
|
51
51
|
comptroller_contract = _w3.eth.contract(
|
52
|
-
address=_w3.
|
52
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
53
53
|
ctokens = []
|
54
54
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
55
55
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -58,9 +58,9 @@ class OnyxStateService(CompoundStateService):
|
|
58
58
|
ctokens.append(token)
|
59
59
|
|
60
60
|
lens_contract = _w3.eth.contract(
|
61
|
-
address=Web3.
|
61
|
+
address=Web3.to_checksum_address(self.pool_info.get("lensAddress")), abi=self.lens_abi
|
62
62
|
)
|
63
|
-
tokens = [Web3.
|
63
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
64
64
|
metadata = lens_contract.functions.oTokenMetadataAll(tokens).call(block_identifier=block_number)
|
65
65
|
reserves_info = {}
|
66
66
|
for data in metadata:
|
@@ -199,7 +199,7 @@ class OnyxStateService(CompoundStateService):
|
|
199
199
|
)
|
200
200
|
key = f"oTokenBalances_{self.name}_{wallet}_{token}_{block_number}".lower()
|
201
201
|
rpc_calls[key] = self.get_lens_function_info(
|
202
|
-
"oTokenBalances", [value.get("cToken"), Web3.
|
202
|
+
"oTokenBalances", [value.get("cToken"), Web3.to_checksum_address(wallet)])
|
203
203
|
return rpc_calls
|
204
204
|
|
205
205
|
def calculate_wallet_deposit_borrow_balance(
|
@@ -64,15 +64,15 @@ class SiloStateService(ProtocolServices):
|
|
64
64
|
):
|
65
65
|
_w3 = self.state_service.get_w3()
|
66
66
|
repository_contract = _w3.eth.contract(
|
67
|
-
address=_w3.
|
67
|
+
address=_w3.to_checksum_address(self.pool_info.get("repositoryAddress")), abi=self.repository_abi)
|
68
68
|
result = {}
|
69
69
|
if not tokens:
|
70
70
|
tokens = self.pool_info.get("reservesList").keys()
|
71
71
|
for token in tokens:
|
72
|
-
silo_token = repository_contract.functions.getSilo(_w3.
|
72
|
+
silo_token = repository_contract.functions.getSilo(_w3.to_checksum_address(token)).call(block_identifier=block_number)
|
73
73
|
if not silo_token:
|
74
74
|
continue
|
75
|
-
contract = _w3.eth.contract(address=_w3.
|
75
|
+
contract = _w3.eth.contract(address=_w3.to_checksum_address(silo_token), abi=self.silo_abi)
|
76
76
|
assets = contract.functions.getAssets().call()
|
77
77
|
main_asset = contract.functions.siloAsset().call()
|
78
78
|
all_assets = [i.lower() for i in assets]
|
@@ -47,7 +47,7 @@ class StrikeStateService(CompoundStateService):
|
|
47
47
|
block_number: int = "latest"):
|
48
48
|
_w3 = self.state_service.get_w3()
|
49
49
|
comptroller_contract = _w3.eth.contract(
|
50
|
-
address=_w3.
|
50
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
51
51
|
ctokens = []
|
52
52
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
53
53
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -56,9 +56,9 @@ class StrikeStateService(CompoundStateService):
|
|
56
56
|
ctokens.append(token)
|
57
57
|
|
58
58
|
lens_contract = _w3.eth.contract(
|
59
|
-
address=Web3.
|
59
|
+
address=Web3.to_checksum_address(self.pool_info.get("lensAddress")), abi=self.lens_abi
|
60
60
|
)
|
61
|
-
tokens = [Web3.
|
61
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
62
62
|
metadata = lens_contract.functions.sTokenMetadataAll(tokens).call(block_identifier=block_number)
|
63
63
|
reserves_info = {}
|
64
64
|
for data in metadata:
|
@@ -53,7 +53,7 @@ class TravaStateService(ProtocolServices):
|
|
53
53
|
def get_dapp_asset_info(self, block_number: int = 'latest'):
|
54
54
|
begin = time.time()
|
55
55
|
_w3 = self.state_service.get_w3()
|
56
|
-
pool_address = Web3.
|
56
|
+
pool_address = Web3.to_checksum_address(self.pool_info['address'])
|
57
57
|
contract = _w3.eth.contract(address=pool_address, abi=self.lending_abi)
|
58
58
|
reserves_list = contract.functions.getReservesList().call(block_identifier=block_number)
|
59
59
|
reserves_info = {}
|
@@ -396,7 +396,7 @@ class TravaStateService(ProtocolServices):
|
|
396
396
|
rpc_calls = {}
|
397
397
|
tokens = []
|
398
398
|
for token, value in reserves_info.items():
|
399
|
-
atoken, debt_token = Web3.
|
399
|
+
atoken, debt_token = Web3.to_checksum_address(value['tToken']), Web3.to_checksum_address(value['dToken'])
|
400
400
|
tokens += [atoken, debt_token]
|
401
401
|
key = f"getRewardsBalance_{self.name}_{wallet}_{block_number}".lower()
|
402
402
|
rpc_calls[key] = self.get_function_incentive_info(
|
@@ -48,7 +48,7 @@ class UwuStateService(ProtocolServices):
|
|
48
48
|
def get_dapp_asset_info(self, block_number: int = 'latest'):
|
49
49
|
begin = time.time()
|
50
50
|
_w3 = self.state_service.get_w3()
|
51
|
-
pool_address = Web3.
|
51
|
+
pool_address = Web3.to_checksum_address(self.pool_info['address'])
|
52
52
|
contract = _w3.eth.contract(address=pool_address, abi=self.lending_abi)
|
53
53
|
reserves_list = contract.functions.getReservesList().call(block_identifier=block_number)
|
54
54
|
reserves_info = {}
|
@@ -287,7 +287,7 @@ class UwuStateService(ProtocolServices):
|
|
287
287
|
rpc_calls = {}
|
288
288
|
tokens = []
|
289
289
|
for token, value in reserves_info.items():
|
290
|
-
atoken, debt_token = Web3.
|
290
|
+
atoken, debt_token = Web3.to_checksum_address(value['tToken']), Web3.to_checksum_address(value['dToken'])
|
291
291
|
tokens += [atoken, debt_token]
|
292
292
|
key = f"claimableReward_{self.name}_{wallet}_{block_number}".lower()
|
293
293
|
rpc_calls[key] = self.get_function_incentive_info(
|
@@ -51,7 +51,7 @@ class ValasStateService(ProtocolServices):
|
|
51
51
|
def get_dapp_asset_info(self, block_number: int = 'latest'):
|
52
52
|
begin = time.time()
|
53
53
|
_w3 = self.state_service.get_w3()
|
54
|
-
pool_address = Web3.
|
54
|
+
pool_address = Web3.to_checksum_address(self.pool_info['address'])
|
55
55
|
contract = _w3.eth.contract(address=pool_address, abi=self.lending_abi)
|
56
56
|
reserves_list = contract.functions.getReservesList().call(block_identifier=block_number)
|
57
57
|
reserves_info = {}
|
@@ -50,7 +50,7 @@ class VenusStateService(CompoundStateService):
|
|
50
50
|
block_number: int = "latest"):
|
51
51
|
_w3 = self.state_service.get_w3()
|
52
52
|
comptroller_contract = _w3.eth.contract(
|
53
|
-
address=_w3.
|
53
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
54
54
|
ctokens = []
|
55
55
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
56
56
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -59,7 +59,7 @@ class VenusStateService(CompoundStateService):
|
|
59
59
|
ctokens.append(token)
|
60
60
|
|
61
61
|
reserves_info = {}
|
62
|
-
tokens = [Web3.
|
62
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
63
63
|
queries = {}
|
64
64
|
for token in tokens:
|
65
65
|
key = f"underlying_{token}_{block_number}".lower()
|
@@ -83,7 +83,7 @@ class VenusStateService(CompoundStateService):
|
|
83
83
|
ltv = liquidation_threshold
|
84
84
|
|
85
85
|
if underlying != Token.native_token:
|
86
|
-
underlying_contract = _w3.eth.contract(address=Web3.
|
86
|
+
underlying_contract = _w3.eth.contract(address=Web3.to_checksum_address(underlying), abi=ERC20_ABI)
|
87
87
|
underlying_decimal = underlying_contract.functions.decimals().call()
|
88
88
|
else:
|
89
89
|
underlying_decimal = Chain.native_decimals.get(self.chain_id, 18)
|
@@ -152,9 +152,9 @@ class VenusStateService(CompoundStateService):
|
|
152
152
|
def calculate_rewards_balance(
|
153
153
|
self, wallet: str, reserves_info: dict, decoded_data: dict, block_number: int = "latest"):
|
154
154
|
w3 = self.state_service.get_w3()
|
155
|
-
contract = w3.eth.contract(address=w3.
|
155
|
+
contract = w3.eth.contract(address=w3.to_checksum_address(self.pool_info.get("lensAddress")), abi = self.lens_abi)
|
156
156
|
# get_reward_id = f"pendingRewards_{self.name}_{wallet}_{block_number}".lower()
|
157
|
-
return_data = contract.functions.pendingRewards(w3.
|
157
|
+
return_data = contract.functions.pendingRewards(w3.to_checksum_address(wallet), w3.to_checksum_address(self.pool_info.get("comptrollerAddress"))).call(block_identifier=block_number)
|
158
158
|
rewards = return_data[2]
|
159
159
|
for item in return_data[-1]:
|
160
160
|
rewards += item[-1]
|
@@ -365,7 +365,7 @@ class VenusStateService(CompoundStateService):
|
|
365
365
|
reserves_info: dict = None,
|
366
366
|
block_number: int = "latest"
|
367
367
|
):
|
368
|
-
tokens = [Web3.
|
368
|
+
tokens = [Web3.to_checksum_address(value['cToken']) for key, value in reserves_info.items()]
|
369
369
|
key = f"vTokenMetadataAll_{self.pool_info.get('lensAddress')}_{block_number}".lower()
|
370
370
|
return {
|
371
371
|
key: self.get_lens_function_info("vTokenMetadataAll", tokens, block_number)
|
@@ -373,7 +373,7 @@ class VenusStateService(CompoundStateService):
|
|
373
373
|
|
374
374
|
def ctoken_underlying_price_all(
|
375
375
|
self, reserves_info, block_number: int = 'latest'):
|
376
|
-
tokens = [Web3.
|
376
|
+
tokens = [Web3.to_checksum_address(value['cToken']) for key, value in reserves_info.items()]
|
377
377
|
key = f"vTokenUnderlyingPriceAll_{self.pool_info.get('lensAddress')}_{block_number}".lower()
|
378
378
|
return {
|
379
379
|
key: self.get_lens_function_info("cTokenUnderlyingPriceAll", tokens, block_number)
|
@@ -56,7 +56,7 @@ class WepiggyStateService(CompoundStateService):
|
|
56
56
|
block_number: int = "latest"):
|
57
57
|
_w3 = self.state_service.get_w3()
|
58
58
|
comptroller_contract = _w3.eth.contract(
|
59
|
-
address=_w3.
|
59
|
+
address=_w3.to_checksum_address(self.pool_info.get("comptrollerAddress")), abi=self.comptroller_abi)
|
60
60
|
ctokens = []
|
61
61
|
for token in comptroller_contract.functions.getAllMarkets().call(block_identifier=block_number):
|
62
62
|
# if token in [ContractAddresses.LUNA.lower(), ContractAddresses.UST.lower(), ContractAddresses.LUNA,
|
@@ -65,16 +65,16 @@ class WepiggyStateService(CompoundStateService):
|
|
65
65
|
ctokens.append(token)
|
66
66
|
|
67
67
|
lens_contract = _w3.eth.contract(
|
68
|
-
address=Web3.
|
68
|
+
address=Web3.to_checksum_address(self.pool_info.get("lensAddress")), abi=self.lens_abi
|
69
69
|
)
|
70
|
-
tokens = [Web3.
|
70
|
+
tokens = [Web3.to_checksum_address(i) for i in ctokens]
|
71
71
|
reserves_info = {}
|
72
72
|
for token in tokens:
|
73
73
|
if token.lower() == '0xef86384cf696929c3227428f539e740ee12fcdc7':
|
74
74
|
reserves_info[token.lower()] = self.pool_info.get("reservesList").get(
|
75
75
|
"0xf88506b0f1d30056b9e5580668d5875b9cd30f23")
|
76
76
|
continue
|
77
|
-
data = lens_contract.functions.pTokenMetadata(Web3.
|
77
|
+
data = lens_contract.functions.pTokenMetadata(Web3.to_checksum_address(token)).call(
|
78
78
|
block_identifier=block_number)
|
79
79
|
underlying = data[2].lower()
|
80
80
|
ctoken = data[0].lower()
|
@@ -21,11 +21,11 @@ def convert_address_dict(data):
|
|
21
21
|
if isinstance(data, dict):
|
22
22
|
result = {}
|
23
23
|
for key, value in data.items():
|
24
|
-
if Web3.
|
24
|
+
if Web3.is_address(key):
|
25
25
|
key = hex_to_base58(key)
|
26
26
|
if isinstance(value, dict):
|
27
27
|
value = convert_address_dict(value)
|
28
|
-
if Web3.
|
28
|
+
if Web3.is_address(value):
|
29
29
|
value = hex_to_base58(value)
|
30
30
|
result[key] = value
|
31
31
|
return result
|
@@ -1,4 +1,4 @@
|
|
1
|
-
defi_services/__init__.py,sha256=
|
1
|
+
defi_services/__init__.py,sha256=lR0PxzTAjaaJQ_3Wm5vE1PfTgOS8pdhmsmn4OrIioB0,23
|
2
2
|
defi_services/abis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
defi_services/abis/dex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
defi_services/abis/dex/biswap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -252,13 +252,13 @@ defi_services/constants/entities/vault_services.py,sha256=IMmQc15wS1KA7EuQqM_Ara
|
|
252
252
|
defi_services/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
253
253
|
defi_services/jobs/processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
254
254
|
defi_services/jobs/processors/cosmos_state_processor.py,sha256=2S5fhqHQ4pUtRaLnbFJNUo4jKc5MHq7HA-0FHebOJyo,1334
|
255
|
-
defi_services/jobs/processors/multi_state_processor.py,sha256=
|
255
|
+
defi_services/jobs/processors/multi_state_processor.py,sha256=uMv1kVkkBV_GkYnMVaE8UgAhdnu7J_FzU6-fAoXCqjo,4752
|
256
256
|
defi_services/jobs/processors/solana_state_processor.py,sha256=szsBYrkEV8kBzuA_iaSVescnwKJ2MHoTbut5kORbWTs,4065
|
257
|
-
defi_services/jobs/processors/state_processor.py,sha256=
|
257
|
+
defi_services/jobs/processors/state_processor.py,sha256=Ze_5isU_l_APB262E-VV_4KZwEG6W0XE6PikJZIcAoM,7291
|
258
258
|
defi_services/jobs/processors/substrate_state_processor.py,sha256=KkiY1NkaxnizNJBTfn4twB-zuQo3fT3akOlbie8VF5g,3940
|
259
259
|
defi_services/jobs/queriers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
260
260
|
defi_services/jobs/queriers/solana_state_querier.py,sha256=TQELYo6GUoF8s-LfetqYbclNaH8bakQqC7y2ifACIb8,3239
|
261
|
-
defi_services/jobs/queriers/state_querier.py,sha256
|
261
|
+
defi_services/jobs/queriers/state_querier.py,sha256=-bx71x2ZobwuAlc2pVp5Ju_fxYt48wLrs8IdLN1KJVs,7306
|
262
262
|
defi_services/jobs/queriers/substrate_state_querier.py,sha256=_T0Dk06sP_uBKaxgj2J_EBtJDoq-hi8jU7Np4iuO0LA,3858
|
263
263
|
defi_services/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
264
264
|
defi_services/services/cosmos_token_services.py,sha256=6z_eE7lF5tY461VJ6uVoG18hOdXKeWR4NgDDP-MGI0k,1603
|
@@ -269,49 +269,49 @@ defi_services/services/solana_token_services.py,sha256=NQKUHGMBe9eQciOaY3N20rPbI
|
|
269
269
|
defi_services/services/substrate_token_services.py,sha256=HsjceBHo0fxQIcXgDaV0OBANLuggRwXAEPt7ASB0BKk,2904
|
270
270
|
defi_services/services/token_services.py,sha256=ncGdOpATIb9tGFa9cY1dQq3hFRwbhcYwIz0we9tNWNY,2766
|
271
271
|
defi_services/services/dex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
272
|
-
defi_services/services/dex/pancakeswap_service.py,sha256=
|
273
|
-
defi_services/services/dex/pancakeswap_v2_service.py,sha256=
|
274
|
-
defi_services/services/dex/pancakeswap_v3_service.py,sha256=
|
272
|
+
defi_services/services/dex/pancakeswap_service.py,sha256=cN_L7897l8dh7DnNuHo6fcnYa-JLHI7yLLzBW1C9RlI,4637
|
273
|
+
defi_services/services/dex/pancakeswap_v2_service.py,sha256=ppRruxXHKeY3BQY5DxBQoNDjNIc6kqo3Wjgd6mO9CcA,13098
|
274
|
+
defi_services/services/dex/pancakeswap_v3_service.py,sha256=TR1OjlFeUEoxbYBJuyeshdciHuBmUiTJHMRog5OxwO0,21543
|
275
275
|
defi_services/services/dex/quickswap_v2_service.py,sha256=vpjBNcPlxwOW-WqTuxYKK2coVZhXDjK39nEq8X6awQU,1155
|
276
|
-
defi_services/services/dex/quickswap_v3_service.py,sha256=
|
276
|
+
defi_services/services/dex/quickswap_v3_service.py,sha256=21jGmrwoVrY8N2x0aiNBr8de88Ji2DtQ0xVYbHFw8Mg,11690
|
277
277
|
defi_services/services/dex/spookyswap_v2_service.py,sha256=CBM0_NZTsiqBxkIHm_Ll-oTzlPZsd0TYVh4itcBNBA0,6982
|
278
278
|
defi_services/services/dex/sushiswap_service.py,sha256=1_vCvLjQZmjOK55xUpotAgrQKqywL8txhPpBUQuFHMw,3099
|
279
279
|
defi_services/services/dex/sushiswap_v2_service.py,sha256=QyOVdTv06sWR_SYphxGGxla3eMN3Q8sRjXU6vPPTr4Q,3834
|
280
280
|
defi_services/services/dex/sushiswap_v3_service.py,sha256=fTBJfbyU4nSei_XCWxHKRZxzPRNwLrda3VORgKRAnYo,3141
|
281
|
-
defi_services/services/dex/uniswap_v2_service.py,sha256=
|
282
|
-
defi_services/services/dex/uniswap_v3_service.py,sha256=
|
281
|
+
defi_services/services/dex/uniswap_v2_service.py,sha256=ps8_-JW0ZjqFCLicap1zY0kenBoa3t43hZZNKI33WI0,10476
|
282
|
+
defi_services/services/dex/uniswap_v3_service.py,sha256=R-YbfXeCnGRPWlOY1zefrQ7oT-MsRMQH6Y3wkLE9R0s,18662
|
283
283
|
defi_services/services/dex/dex_info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
284
|
-
defi_services/services/dex/dex_info/pancakeswap_info.py,sha256=
|
284
|
+
defi_services/services/dex/dex_info/pancakeswap_info.py,sha256=dLtYR9_ZpKN3dme5gDZ-Oi7gnYRx2GMRRI1D9eQ3y5w,2075
|
285
285
|
defi_services/services/dex/dex_info/quickswap_info.py,sha256=79ul5xG6rKa2IVj2ptJrQzTyG9A5vweHodU28B1lpro,963
|
286
286
|
defi_services/services/dex/dex_info/spookyswap_info.py,sha256=oNwWsFsXE0R7b72ZDCmrhDOKwN_-T7y3N0sX26TmhIA,535
|
287
287
|
defi_services/services/dex/dex_info/sushiswap_info.py,sha256=VnfZR6c4bsjWTTaTPxO1c1W2fjhspHQfanSP2uCFuu8,4219
|
288
288
|
defi_services/services/dex/dex_info/uniswap_info.py,sha256=RhEXmbERg_k5NsgMKnlrgRHE7LKbyWL0wxHUy3Vt4mM,897
|
289
289
|
defi_services/services/lending/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
290
|
-
defi_services/services/lending/aave_v2_services.py,sha256=
|
291
|
-
defi_services/services/lending/aave_v3_services.py,sha256=
|
292
|
-
defi_services/services/lending/apeswap_services.py,sha256=
|
293
|
-
defi_services/services/lending/compound_service.py,sha256=
|
294
|
-
defi_services/services/lending/compound_v3_services.py,sha256=
|
290
|
+
defi_services/services/lending/aave_v2_services.py,sha256=SiuBz9wKeUfg0rsGdSqt6c9TzElnbv8Xaqu71QN6WQw,21613
|
291
|
+
defi_services/services/lending/aave_v3_services.py,sha256=HKLKJR_x--I5bO-wW5I9_PxA0x-y2HN4K-SFUnhbz8M,16163
|
292
|
+
defi_services/services/lending/apeswap_services.py,sha256=UrLhXVzGvim_xfs54hSJ1qeTH6ber4xh01j5PWFl4C8,4737
|
293
|
+
defi_services/services/lending/compound_service.py,sha256=8r7pAs8KaaakDuHg4BUICW4zLD-ihm_DQETYwnAFc98,21917
|
294
|
+
defi_services/services/lending/compound_v3_services.py,sha256=wsUavP2LAJCxmr8A0MPXLDb_YmANT_3DcSlgEgXuJv4,17128
|
295
295
|
defi_services/services/lending/cream_services.py,sha256=vtah0kMHAxztenWbJp4CxEcBMF0XUBglGRk6p9d-oiU,1644
|
296
|
-
defi_services/services/lending/flux_services.py,sha256=
|
296
|
+
defi_services/services/lending/flux_services.py,sha256=C9WJ2MIBK4xTaXIHF3yBVu52xGCNzO4Ed5DWyxWTTeE,12617
|
297
297
|
defi_services/services/lending/geist_services.py,sha256=UI5D-MbMqplrt7D4krSFdpaREKOT81k8boD_XhGGpUQ,1035
|
298
|
-
defi_services/services/lending/granary_services.py,sha256=
|
299
|
-
defi_services/services/lending/iron_bank_service.py,sha256=
|
300
|
-
defi_services/services/lending/justlend_service.py,sha256=
|
301
|
-
defi_services/services/lending/liqee_service.py,sha256=
|
302
|
-
defi_services/services/lending/morpho_aave_v2_services.py,sha256=
|
303
|
-
defi_services/services/lending/morpho_aave_v3_services.py,sha256=
|
304
|
-
defi_services/services/lending/morpho_compound_services.py,sha256=
|
305
|
-
defi_services/services/lending/onyx_service.py,sha256=
|
298
|
+
defi_services/services/lending/granary_services.py,sha256=kmKaaZA1Poj4EwspijIQ5AQnykUgamvNmz-8gMMD_RI,16463
|
299
|
+
defi_services/services/lending/iron_bank_service.py,sha256=GuXoXEbR4gkkNYfAyFkDtVeI3-knq3kFnLBeWVuUvv8,15585
|
300
|
+
defi_services/services/lending/justlend_service.py,sha256=az1OxDAqDKjT7jZ2CiNS4sfKXjhS04kD6FWB4ZT16mQ,8874
|
301
|
+
defi_services/services/lending/liqee_service.py,sha256=dBMlQpREqSzZY2_JCpJDxnWl9A8fWxa56KhsDNd--as,17140
|
302
|
+
defi_services/services/lending/morpho_aave_v2_services.py,sha256=o1Ke6tS3sSbwN4WAg0s284VOiJlKTxAu_20rNY6NC4Y,8474
|
303
|
+
defi_services/services/lending/morpho_aave_v3_services.py,sha256=bW0TSP-VpMPd0nm-a_gaN1LvaRU_iEbmnaKs7DVkJQw,8270
|
304
|
+
defi_services/services/lending/morpho_compound_services.py,sha256=38AXwi-7yxSrRghS3OCRZrOy9cfJnC3k-yNf1Ep27Ds,14912
|
305
|
+
defi_services/services/lending/onyx_service.py,sha256=CqQcenVidyKYIxNlaTliaYmSI8zV7_zxK_wCQE5s-r4,15401
|
306
306
|
defi_services/services/lending/radiant_v2_services.py,sha256=ywjZ4sb2UQlbc4wBWz7mn9P6y19AvGVsgroDXl46fgc,3021
|
307
|
-
defi_services/services/lending/silo_services.py,sha256=
|
307
|
+
defi_services/services/lending/silo_services.py,sha256=yLw90u_IXEqE3NbfhVAhG1y8qQqo26xSbYXXlh4lL3g,16726
|
308
308
|
defi_services/services/lending/spark_services.py,sha256=68_egY0yOT7YIOVbd8rbHJBJEsL0sOr0zSsTSdw0BUY,1042
|
309
|
-
defi_services/services/lending/strike_service.py,sha256=
|
310
|
-
defi_services/services/lending/trava_services.py,sha256=
|
311
|
-
defi_services/services/lending/uwu_services.py,sha256=
|
312
|
-
defi_services/services/lending/valas_services.py,sha256=
|
313
|
-
defi_services/services/lending/venus_services.py,sha256=
|
314
|
-
defi_services/services/lending/wepiggy_services.py,sha256=
|
309
|
+
defi_services/services/lending/strike_service.py,sha256=ZQ9B6Xngo64njwqABOO3CH-ESFmUmQWbisCgVXYKjak,13797
|
310
|
+
defi_services/services/lending/trava_services.py,sha256=EpCzEweNuq-n38oxWtdPHZstrJf5BlY9rmwUjkMOxSs,19103
|
311
|
+
defi_services/services/lending/uwu_services.py,sha256=lRGQMsDmDrpzOhHqy4ELW7aFe4JUaBoWZbgVb7Yo6mY,13845
|
312
|
+
defi_services/services/lending/valas_services.py,sha256=gz4jgcJpOEbLH5NqPgwfcUlLCoSbjyHqz7B9Qf1rWWI,22447
|
313
|
+
defi_services/services/lending/venus_services.py,sha256=LhSG2H16kZn8AqIS7DAOy0kxP8N2O_ZUAEl9Eho4Ujo,16523
|
314
|
+
defi_services/services/lending/wepiggy_services.py,sha256=x10QkYpn47wgNvmDeMGgmzJxv7WPte6hqR3MCBRgMbM,15684
|
315
315
|
defi_services/services/lending/lending_info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
316
316
|
defi_services/services/lending/lending_info/arbitrum/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
317
317
|
defi_services/services/lending/lending_info/arbitrum/aave_v3_arbitrum.py,sha256=8lpLYjXE2bKijTeWjRQH4XUFhG3s7df3J3r5oZEZcjA,3556
|
@@ -383,7 +383,7 @@ defi_services/services/vault/vault_info/fantom/__init__.py,sha256=47DEQpj8HBSa-_
|
|
383
383
|
defi_services/services/vault/vault_info/fantom/trava_ftm.py,sha256=dy8us4Lt0jrS9ZfaeXD4qz3OA4QwDPMRDkkxyNrJUUU,1165
|
384
384
|
defi_services/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
385
385
|
defi_services/utils/apy.py,sha256=zQ9wrID79uccLj9pJI5Q9KhTDWXeBt9JaEVjNnYmnyg,356
|
386
|
-
defi_services/utils/convert_address.py,sha256=
|
386
|
+
defi_services/utils/convert_address.py,sha256=56u9xFXGKKwEV0Ir8NTdJzSBWmbuNBo9WfufLS-uwG4,1072
|
387
387
|
defi_services/utils/get_fees.py,sha256=L8Xivqev5M73IC2s7FaEP97EDymoazw_YhJBOja73c8,1742
|
388
388
|
defi_services/utils/graph_operations.py,sha256=2-onMqflUqOrbVsy7JGFyeTMOcwTgPoZ3uGWruWMA_k,6271
|
389
389
|
defi_services/utils/init_dex_services.py,sha256=kbSoq4BR8lu8kURUoDOaOS4A-ynv4CgqS0kDA5IcZlA,529
|
@@ -393,8 +393,8 @@ defi_services/utils/market_service.py,sha256=imPtPHBkpEx5JnhqeIWYqbCjsIEm8IKBYHN
|
|
393
393
|
defi_services/utils/memory_storage.py,sha256=BOT8laB0iVSCGE-oDlpWJQLbSC6X2blKX4zuQbs4inc,851
|
394
394
|
defi_services/utils/sqrt_price_math.py,sha256=9lgUeWFT4wjl3Vq3b7-jZ2bGvvZx7dDBSfVnM3lsZ8o,5575
|
395
395
|
defi_services/utils/thread_proxy.py,sha256=5Z8biAyEReUkh3vfJSvEv7GwMe3CsE5M8CbghkQtePw,2951
|
396
|
-
defi_state_querier-0.4.
|
397
|
-
defi_state_querier-0.4.
|
398
|
-
defi_state_querier-0.4.
|
399
|
-
defi_state_querier-0.4.
|
400
|
-
defi_state_querier-0.4.
|
396
|
+
defi_state_querier-0.4.26.dist-info/LICENSE,sha256=6jmfxa8nUIwfKnzZUxAHJSJ_IS7h7mpbJq26cWjoo-o,1063
|
397
|
+
defi_state_querier-0.4.26.dist-info/METADATA,sha256=RWDX0wrAOkLX1vUu62d9bpuM2nFqm-kfqTJTHRp9RSY,4376
|
398
|
+
defi_state_querier-0.4.26.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
399
|
+
defi_state_querier-0.4.26.dist-info/top_level.txt,sha256=C-OTxHK6MknKK-nAbEzCPDUl1M6pktRhgJrmsozdf6g,14
|
400
|
+
defi_state_querier-0.4.26.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|