feat: add chain in csv - closes #27 (#28)

* feat: add chain in csv - closes #27

Signed-off-by: Arthurim <arthurbdauphine@gmail.com>

* feat: add chain in csv - closes #27

Signed-off-by: Arthurim <arthurbdauphine@gmail.com>

Signed-off-by: Arthurim <arthurbdauphine@gmail.com>
This commit is contained in:
Eru Ilúvatar 2023-01-18 19:20:51 +01:00 committed by GitHub
parent 30895e5694
commit 221b5aa6b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 103 additions and 51 deletions

View File

@ -40,13 +40,14 @@ def analyze_profit(inspect_db_session, block_from, block_to, save_to_csv=False):
profit = read_profit_from_to(inspect_db_session, block_from, block_to)
w3 = create_web3()
profit = add_block_timestamp(w3, profit)
profit = add_cg_ids(profit)
profit = get_usd_profit(profit, save_to_csv)
chain = get_chain_from_url(w3.provider.endpoint_uri)
profit = add_cg_ids(profit, chain)
profit = get_usd_profit(profit, chain, save_to_csv)
print(profit)
return profit
def get_usd_profit(profit, save_to_csv=False):
def get_usd_profit(profit, chain, save_to_csv=False):
"""
For each token involved in mev transactions, will get its price at the time of the transaction and
compute the profit of each mev transaction.
@ -54,6 +55,7 @@ def get_usd_profit(profit, save_to_csv=False):
:param profit: pd.DataFrame, with columns = ['block_number', 'timestamp', 'transaction_hash',
'token_debt', 'amount_debt', 'cg_id_debt',
'token_received', 'amount_received', 'cg_id_received']
:param chain: str, the blockchain
:param save_to_csv: bool, whether to save the analysed profits to csv or not
:return: pd.DataFrame, with columns = ['block_number', 'timestamp', 'date', 'transaction_hash',
'amount_received', 'token_received', 'price_received',
@ -61,7 +63,7 @@ def get_usd_profit(profit, save_to_csv=False):
'profit_usd' ]
"""
tokens = profit[CG_ID_RECEIVED_KEY].unique()
mapping = get_address_to_coingecko_ids_mapping()
mapping = get_address_to_coingecko_ids_mapping(chain)
profit_with_price_tokens = pd.DataFrame()
failures = {}
for token in tokens:
@ -93,7 +95,7 @@ def get_usd_profit(profit, save_to_csv=False):
# get received token decimals
decimals = get_decimals(
profit_by_received_token[TOKEN_RECEIVED_KEY].values[0]
profit_by_received_token[TOKEN_RECEIVED_KEY].values[0], chain
)
# get debt tokens prices
@ -125,7 +127,7 @@ def get_usd_profit(profit, save_to_csv=False):
profit_by_received_token[TOKEN_DEBT_KEY].astype(str).unique().tolist()
):
if debt_token != "":
debt_token_decimals = get_decimals(debt_token)
debt_token_decimals = get_decimals(debt_token, chain)
debt_tokens_decimals = pd.concat(
[
debt_tokens_decimals,
@ -260,3 +262,16 @@ def create_web3():
return w3_provider
else:
raise Exception("Failed to connect")
def get_chain_from_url(url):
if "ether" in url:
return "ethereum"
elif "poly" in url:
return "polygon"
elif "arb" in url:
return "arbitrum"
elif "opti" in url:
return "optimism"
else:
raise Exception(f"Could not determine blockchain from url: {url}")

View File

@ -15,8 +15,9 @@ from profit_analysis.constants import DATA_PATH
TRAILING_ZEROS = "000000000000000000000000"
def get_address_to_coingecko_ids_mapping():
def get_address_to_coingecko_ids_mapping(chain):
token_cg_ids = pd.read_csv(DATA_PATH + "address_to_coingecko_ids.csv")
token_cg_ids = token_cg_ids.loc[token_cg_ids["chain"] == chain]
token_cg_ids[TOKEN_DEBT_KEY] = token_cg_ids[TOKEN_KEY].astype(str)
token_cg_ids[CG_ID_RECEIVED_KEY] = token_cg_ids[CG_ID_KEY]
token_cg_ids[CG_ID_DEBT_KEY] = token_cg_ids[CG_ID_KEY]
@ -24,8 +25,8 @@ def get_address_to_coingecko_ids_mapping():
return token_cg_ids
def add_cg_ids(profit_by_block):
token_cg_ids = get_address_to_coingecko_ids_mapping()
def add_cg_ids(profit_by_block, chain):
token_cg_ids = get_address_to_coingecko_ids_mapping(chain)
token_cg_ids[TOKEN_DEBT_KEY] = token_cg_ids[TOKEN_DEBT_KEY].str.lower()
token_cg_ids[TOKEN_RECEIVED_KEY] = token_cg_ids[TOKEN_RECEIVED_KEY].str.lower()
profit_by_block[TOKEN_RECEIVED_KEY] = (

View File

@ -3,8 +3,9 @@ from profit_analysis.column_names import TOKEN_KEY
from profit_analysis.constants import DATA_PATH
def get_decimals(token_address):
def get_decimals(token_address, chain):
decimals_mapping = pd.read_csv(DATA_PATH + "address_to_decimals.csv")
decimals_mapping = decimals_mapping.loc[decimals_mapping["chain"] == chain]
decimals_mapping[TOKEN_KEY] = decimals_mapping[TOKEN_KEY].str.lower()
decimals = decimals_mapping.loc[
decimals_mapping[TOKEN_KEY] == token_address.lower(), "decimals"

View File

@ -1,23 +1,38 @@
token,cg_id
0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619,weth
0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,ethereum
0x2260fac5e5542a773aa44fbcfedf7c193bc2c599,wrapped-bitcoin
0x514910771af9ca656af840dff83e8264ecf986ca,chainlink
0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e,yearn-finance
0xD6DF932A45C0f255f85145f286eA0b292B21C90B,aave
0x1f9840a85d5af5bf1d1762f925bdaddc4201f984,uniswap
0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174,usd-coin
0x6b175474e89094c44da98b954eedeac495271d0f,dai
0x408e41876cccdc0f92210600ef50372656052a38,republic-protocol
0x39aa39c021dfbae8fac545936693ac917d5e7563,compound-usd-coin
0x5d3a536e4d6dbd6114cc1ead35777bab948e3643,cdai
0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5,compound-ether
0xc11b1268c1a384e55c48c2391d8d480264a3a7f4,compound-wrapped-btc
0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270,matic-network
0x430EF9263E76DAE63c84292C3409D61c598E9682,vulcan-forged
0xc2132D05D31c914a87C6611C10748AEb04B58e8F,tether
0x22a31bD4cB694433B6de19e0aCC2899E553e9481,mmfinance
0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59,terrausd-wormhole
0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec,shiba-inu
0x831753DD7087CaC61aB5644b308642cc1c33Dc13,quick
0x723b17718289a91af252d616de2c77944962d122,gaia-everworld
chain,token,cg_id
ethereum,0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,ethereum
ethereum,0x2260fac5e5542a773aa44fbcfedf7c193bc2c599,wrapped-bitcoin
ethereum,0x514910771af9ca656af840dff83e8264ecf986ca,chainlink
ethereum,0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e,yearn-finance
ethereum,0x6b175474e89094c44da98b954eedeac495271d0f,dai
ethereum,0xdAC17F958D2ee523a2206206994597C13D831ec7,tether
ethereum,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,usd-coin
ethereum,0xB8c77482e45F1F44dE1745F52C74426C631bDD52,binancecoin
ethereum,0x4Fabb145d64652a948d72533023f6E7A623C7C53,binance-usd
ethereum,0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0,matic-network
ethereum,0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84,staked-ether
ethereum,0x408e41876cccdc0f92210600ef50372656052a38,republic-protocol
ethereum,0x39aa39c021dfbae8fac545936693ac917d5e7563,compound-usd-coin
ethereum,0x5d3a536e4d6dbd6114cc1ead35777bab948e3643,cdai
ethereum,0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5,compound-ether
ethereum,0xc11b1268c1a384e55c48c2391d8d480264a3a7f4,compound-wrapped-btc
ethereum,0x430EF9263E76DAE63c84292C3409D61c598E9682,vulcan-forged
ethereum,0x1f9840a85d5af5bf1d1762f925bdaddc4201f984,uniswap
polygon,0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619,weth
polygon,0xD6DF932A45C0f255f85145f286eA0b292B21C90B,aave
polygon,0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174,usd-coin
polygon,0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270,matic-network
polygon,0x430EF9263E76DAE63c84292C3409D61c598E9682,vulcan-forged
polygon,0xc2132D05D31c914a87C6611C10748AEb04B58e8F,tether
polygon,0x3BA4c387f786bFEE076A58914F5Bd38d668B42c3,binancecoin
polygon,0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7,binance-usd
polygon,0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063,dai
polygon,0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b,avalanche-2
polygon,0xb33EaAd8d922B1083446DC23f610c2567fB5180f,uniswap
polygon,0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6,wrapped-bitcoin
polygon,0xb0897686c545045aFc77CF20eC7A532E3120E0F1,chainlink
polygon,0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39,chainlink
polygon,0x22a31bD4cB694433B6de19e0aCC2899E553e9481,mmfinance
polygon,0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59,terrausd-wormhole
polygon,0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec,shiba-inu
polygon,0x831753DD7087CaC61aB5644b308642cc1c33Dc13,quick
polygon,0x723b17718289a91af252d616de2c77944962d122,gaia-everworld
1 chain token cg_id
2 ethereum 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee weth ethereum
3 ethereum 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 ethereum wrapped-bitcoin
4 ethereum 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 0x514910771af9ca656af840dff83e8264ecf986ca wrapped-bitcoin chainlink
5 ethereum 0x514910771af9ca656af840dff83e8264ecf986ca 0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e chainlink yearn-finance
6 ethereum 0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e 0x6b175474e89094c44da98b954eedeac495271d0f yearn-finance dai
7 ethereum 0xD6DF932A45C0f255f85145f286eA0b292B21C90B 0xdAC17F958D2ee523a2206206994597C13D831ec7 aave tether
8 ethereum 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 uniswap usd-coin
9 ethereum 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 0xB8c77482e45F1F44dE1745F52C74426C631bDD52 usd-coin binancecoin
10 ethereum 0x6b175474e89094c44da98b954eedeac495271d0f 0x4Fabb145d64652a948d72533023f6E7A623C7C53 dai binance-usd
11 ethereum 0x408e41876cccdc0f92210600ef50372656052a38 0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0 republic-protocol matic-network
12 ethereum 0x39aa39c021dfbae8fac545936693ac917d5e7563 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 compound-usd-coin staked-ether
13 ethereum 0x5d3a536e4d6dbd6114cc1ead35777bab948e3643 0x408e41876cccdc0f92210600ef50372656052a38 cdai republic-protocol
14 ethereum 0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5 0x39aa39c021dfbae8fac545936693ac917d5e7563 compound-ether compound-usd-coin
15 ethereum 0xc11b1268c1a384e55c48c2391d8d480264a3a7f4 0x5d3a536e4d6dbd6114cc1ead35777bab948e3643 compound-wrapped-btc cdai
16 ethereum 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270 0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5 matic-network compound-ether
17 ethereum 0x430EF9263E76DAE63c84292C3409D61c598E9682 0xc11b1268c1a384e55c48c2391d8d480264a3a7f4 vulcan-forged compound-wrapped-btc
18 ethereum 0xc2132D05D31c914a87C6611C10748AEb04B58e8F 0x430EF9263E76DAE63c84292C3409D61c598E9682 tether vulcan-forged
19 ethereum 0x22a31bD4cB694433B6de19e0aCC2899E553e9481 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 mmfinance uniswap
20 polygon 0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619 terrausd-wormhole weth
21 polygon 0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec 0xD6DF932A45C0f255f85145f286eA0b292B21C90B shiba-inu aave
22 polygon 0x831753DD7087CaC61aB5644b308642cc1c33Dc13 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 quick usd-coin
23 polygon 0x723b17718289a91af252d616de2c77944962d122 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270 gaia-everworld matic-network
24 polygon 0x430EF9263E76DAE63c84292C3409D61c598E9682 vulcan-forged
25 polygon 0xc2132D05D31c914a87C6611C10748AEb04B58e8F tether
26 polygon 0x3BA4c387f786bFEE076A58914F5Bd38d668B42c3 binancecoin
27 polygon 0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7 binance-usd
28 polygon 0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063 dai
29 polygon 0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b avalanche-2
30 polygon 0xb33EaAd8d922B1083446DC23f610c2567fB5180f uniswap
31 polygon 0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6 wrapped-bitcoin
32 polygon 0xb0897686c545045aFc77CF20eC7A532E3120E0F1 chainlink
33 polygon 0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39 chainlink
34 polygon 0x22a31bD4cB694433B6de19e0aCC2899E553e9481 mmfinance
35 polygon 0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59 terrausd-wormhole
36 polygon 0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec shiba-inu
37 polygon 0x831753DD7087CaC61aB5644b308642cc1c33Dc13 quick
38 polygon 0x723b17718289a91af252d616de2c77944962d122 gaia-everworld

View File

@ -1,18 +1,38 @@
token,decimals
0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619,18
0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,18
0x2260fac5e5542a773aa44fbcfedf7c193bc2c599,18
0x514910771af9ca656af840dff83e8264ecf986ca,18
0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e,18
0xD6DF932A45C0f255f85145f286eA0b292B21C90B,18
0x1f9840a85d5af5bf1d1762f925bdaddc4201f984,18
0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174,6
0x39aa39c021dfbae8fac545936693ac917d5e7563,8
0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270,18
0x430EF9263E76DAE63c84292C3409D61c598E9682,18
0xc2132D05D31c914a87C6611C10748AEb04B58e8F,6
0x22a31bD4cB694433B6de19e0aCC2899E553e9481,18
0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59,6
0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec,18
0x831753DD7087CaC61aB5644b308642cc1c33Dc13,18
0x723b17718289a91af252d616de2c77944962d122,18
chain,token,decimals
ethereum,0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,18
ethereum,0x2260fac5e5542a773aa44fbcfedf7c193bc2c599,18
ethereum,0x514910771af9ca656af840dff83e8264ecf986ca,18
ethereum,0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e,18
ethereum,0x6b175474e89094c44da98b954eedeac495271d0f,18
ethereum,0xdAC17F958D2ee523a2206206994597C13D831ec7,6
ethereum,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,6
ethereum,0xB8c77482e45F1F44dE1745F52C74426C631bDD52,18
ethereum,0x4Fabb145d64652a948d72533023f6E7A623C7C53,18
ethereum,0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0,18
ethereum,0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84,18
ethereum,0x408e41876cccdc0f92210600ef50372656052a38,18
ethereum,0x39aa39c021dfbae8fac545936693ac917d5e7563,8
ethereum,0x5d3a536e4d6dbd6114cc1ead35777bab948e3643,8
ethereum,0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5,8
ethereum,0xc11b1268c1a384e55c48c2391d8d480264a3a7f4,8
ethereum,0x430EF9263E76DAE63c84292C3409D61c598E9682,18
ethereum,0x1f9840a85d5af5bf1d1762f925bdaddc4201f984,18
polygon,0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619,18
polygon,0xD6DF932A45C0f255f85145f286eA0b292B21C90B,18
polygon,0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174,6
polygon,0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270,18
polygon,0x430EF9263E76DAE63c84292C3409D61c598E9682,18
polygon,0xc2132D05D31c914a87C6611C10748AEb04B58e8F,6
polygon,0x3BA4c387f786bFEE076A58914F5Bd38d668B42c3,18
polygon,0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7,18
polygon,0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063,18
polygon,0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b,18
polygon,0xb33EaAd8d922B1083446DC23f610c2567fB5180f,18
polygon,0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6,8
polygon,0xb0897686c545045aFc77CF20eC7A532E3120E0F1,18
polygon,0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39,18
polygon,0x22a31bD4cB694433B6de19e0aCC2899E553e9481,18
polygon,0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59,6
polygon,0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec,18
polygon,0x831753DD7087CaC61aB5644b308642cc1c33Dc13,18
polygon,0x723b17718289a91af252d616de2c77944962d122,18
1 chain token decimals
2 ethereum 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 18
3 ethereum 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 18
4 ethereum 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 0x514910771af9ca656af840dff83e8264ecf986ca 18
5 ethereum 0x514910771af9ca656af840dff83e8264ecf986ca 0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e 18
6 ethereum 0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e 0x6b175474e89094c44da98b954eedeac495271d0f 18
7 ethereum 0xD6DF932A45C0f255f85145f286eA0b292B21C90B 0xdAC17F958D2ee523a2206206994597C13D831ec7 18 6
8 ethereum 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 18 6
9 ethereum 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 0xB8c77482e45F1F44dE1745F52C74426C631bDD52 6 18
10 ethereum 0x39aa39c021dfbae8fac545936693ac917d5e7563 0x4Fabb145d64652a948d72533023f6E7A623C7C53 8 18
11 ethereum 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270 0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0 18
12 ethereum 0x430EF9263E76DAE63c84292C3409D61c598E9682 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 18
13 ethereum 0xc2132D05D31c914a87C6611C10748AEb04B58e8F 0x408e41876cccdc0f92210600ef50372656052a38 6 18
14 ethereum 0x22a31bD4cB694433B6de19e0aCC2899E553e9481 0x39aa39c021dfbae8fac545936693ac917d5e7563 18 8
15 ethereum 0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59 0x5d3a536e4d6dbd6114cc1ead35777bab948e3643 6 8
16 ethereum 0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec 0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5 18 8
17 ethereum 0x831753DD7087CaC61aB5644b308642cc1c33Dc13 0xc11b1268c1a384e55c48c2391d8d480264a3a7f4 18 8
18 ethereum 0x723b17718289a91af252d616de2c77944962d122 0x430EF9263E76DAE63c84292C3409D61c598E9682 18
19 ethereum 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 18
20 polygon 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619 18
21 polygon 0xD6DF932A45C0f255f85145f286eA0b292B21C90B 18
22 polygon 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 6
23 polygon 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270 18
24 polygon 0x430EF9263E76DAE63c84292C3409D61c598E9682 18
25 polygon 0xc2132D05D31c914a87C6611C10748AEb04B58e8F 6
26 polygon 0x3BA4c387f786bFEE076A58914F5Bd38d668B42c3 18
27 polygon 0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7 18
28 polygon 0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063 18
29 polygon 0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b 18
30 polygon 0xb33EaAd8d922B1083446DC23f610c2567fB5180f 18
31 polygon 0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6 8
32 polygon 0xb0897686c545045aFc77CF20eC7A532E3120E0F1 18
33 polygon 0x53E0bca35eC356BD5ddDFebbD1Fc0fD03FaBad39 18
34 polygon 0x22a31bD4cB694433B6de19e0aCC2899E553e9481 18
35 polygon 0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59 6
36 polygon 0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec 18
37 polygon 0x831753DD7087CaC61aB5644b308642cc1c33Dc13 18
38 polygon 0x723b17718289a91af252d616de2c77944962d122 18