From 94a6c789533f789800c9fbcf98c654bca0c83b71 Mon Sep 17 00:00:00 2001 From: Felipe Alvarado Date: Thu, 10 Oct 2024 13:16:09 +0200 Subject: [PATCH] Fix retrieve viem info script and update multicall addresses --- safe_eth/eth/clients/etherscan_client.py | 16 +- safe_eth/eth/ethereum_network.py | 5 + safe_eth/eth/multicall.py | 171 +++++++++--------- safe_eth/eth/tests/test_multicall.py | 8 + .../generate_chains_info_from_viem.py | 4 +- 5 files changed, 119 insertions(+), 85 deletions(-) diff --git a/safe_eth/eth/clients/etherscan_client.py b/safe_eth/eth/clients/etherscan_client.py index 2262c9fe..f17e2adc 100644 --- a/safe_eth/eth/clients/etherscan_client.py +++ b/safe_eth/eth/clients/etherscan_client.py @@ -104,7 +104,7 @@ class EtherscanClient: EthereumNetwork.ROLLUX_MAINNET: "https://explorer.rollux.com", EthereumNetwork.ZKSYNC_SEPOLIA_TESTNET: "https://sepolia-era.zksync.network/", EthereumNetwork.ATLETA_OLYMPIA: "https://blockscout.atleta.network", - EthereumNetwork.CELO_ALFAJORES_TESTNET: "https://explorer.celo.org/alfajores", + EthereumNetwork.CELO_ALFAJORES_TESTNET: "https://celo-alfajores.blockscout.com", EthereumNetwork.GRAVITY_ALPHA_MAINNET: "https://explorer.gravity.xyz", EthereumNetwork.ANCIENT8: "https://scan.ancient8.gg", EthereumNetwork.DCHAIN_TESTNET: "https://dchaintestnet-2713017997578000-1.testnet.sagaexplorer.io", @@ -152,6 +152,11 @@ class EtherscanClient: EthereumNetwork.EOS_EVM_NETWORK: "https://explorer.evm.eosnetwork.com", EthereumNetwork.SHAPE_SEPOLIA_TESTNET: "https://explorer-sepolia.shape.network", EthereumNetwork.SHAPE: "https://shapescan.xyz", + EthereumNetwork.FASTEX_CHAIN_BAHAMUT_OASIS_TESTNET: "https://oasis.ftnscan.com", + EthereumNetwork.ASSET_CHAIN_MAINNET: "https://scan.assetchain.org", + EthereumNetwork.PHOENIX_MAINNET: "https://phoenixplorer.com", + EthereumNetwork.SNAXCHAIN: "https://explorer.snaxchain.io", + EthereumNetwork.ZKFAIR_MAINNET: "https://scan.zkfair.io", } NETWORK_WITH_API_URL = { @@ -219,7 +224,7 @@ class EtherscanClient: EthereumNetwork.ASSET_CHAIN_TESTNET: "https://scan-testnet.assetchain.org", EthereumNetwork.LISK: "https://blockscout.lisk.com", EthereumNetwork.NEXI_MAINNET: "https://www.nexiscan.com", - EthereumNetwork.MINATO: "https://explorer-testnet.soneium.org/api/", + EthereumNetwork.MINATO: "https://explorer-testnet.soneium.org", EthereumNetwork.EOS_EVM_NETWORK_TESTNET: "https://explorer.testnet.evm.eosnetwork.com", EthereumNetwork.BITTORRENT_CHAIN_MAINNET: "https://api.bttcscan.com", EthereumNetwork.RSS3_VSL_SEPOLIA_TESTNET: "https://scan.testnet.rss3.io", @@ -237,7 +242,7 @@ class EtherscanClient: EthereumNetwork.ROLLUX_MAINNET: "https://explorer.rollux.com", EthereumNetwork.ZKSYNC_SEPOLIA_TESTNET: "https://api-sepolia-era.zksync.network", EthereumNetwork.ATLETA_OLYMPIA: "https://blockscout.atleta.network", - EthereumNetwork.CELO_ALFAJORES_TESTNET: "https://explorer.celo.org", + EthereumNetwork.CELO_ALFAJORES_TESTNET: "https://celo-alfajores.blockscout.com", EthereumNetwork.GRAVITY_ALPHA_MAINNET: "https://explorer.gravity.xyz", EthereumNetwork.ANCIENT8: "https://scan.ancient8.gg", EthereumNetwork.DCHAIN_TESTNET: "https://api-dchaintestnet-2713017997578000-1.testnet.sagaexplorer.io", @@ -284,6 +289,11 @@ class EtherscanClient: EthereumNetwork.EOS_EVM_NETWORK: "https://explorer.evm.eosnetwork.com", EthereumNetwork.SHAPE_SEPOLIA_TESTNET: "https://explorer-sepolia.shape.network", EthereumNetwork.SHAPE: "https://shapescan.xyz", + EthereumNetwork.FASTEX_CHAIN_BAHAMUT_OASIS_TESTNET: "https://oasis.ftnscan.com", + EthereumNetwork.ASSET_CHAIN_MAINNET: "https://scan.assetchain.org", + EthereumNetwork.PHOENIX_MAINNET: "https://phoenixplorer.com", + EthereumNetwork.SNAXCHAIN: "https://explorer.snaxchain.io", + EthereumNetwork.ZKFAIR_MAINNET: "https://scan.zkfair.io", } HTTP_HEADERS: MutableMapping[str, Union[str, bytes]] = { "User-Agent": "curl/7.77.0", diff --git a/safe_eth/eth/ethereum_network.py b/safe_eth/eth/ethereum_network.py index 250532fb..d9c70419 100644 --- a/safe_eth/eth/ethereum_network.py +++ b/safe_eth/eth/ethereum_network.py @@ -354,6 +354,8 @@ class EthereumNetwork(Enum): JUNCACHAIN_TESTNET = 669 KARURA_NETWORK = 686 REDSTONE = 690 + MATCHAIN = 698 + MATCHAIN_TESTNET = 699 STAR_SOCIAL_TESTNET = 700 DARWINIA_KOI_TESTNET = 701 BLOCKCHAIN_STATION_MAINNET = 707 @@ -961,6 +963,7 @@ class EthereumNetwork(Enum): LORENZO = 8329 B3 = 8333 DRACONES_FINANCIAL_SERVICES = 8387 + ZENCHAIN_TESTNET = 8408 BASE = 8453 CHAKRA_TESTNET = 8545 TOKI_NETWORK = 8654 @@ -1092,6 +1095,7 @@ class EthereumNetwork(Enum): SPS = 13000 CREDIT_SMART_CHAIN = 13308 BEAM_TESTNET = 13337 + CANNON_TESTNET = 13370 IMMUTABLE_ZKEVM = 13371 PHOENIX_MAINNET = 13381 MASA = 13396 @@ -1246,6 +1250,7 @@ class EthereumNetwork(Enum): OASIS_EMERALD_TESTNET = 42261 OASIS_EMERALD = 42262 GOLDXCHAIN_MAINNET = 42355 + ASSET_CHAIN_MAINNET = 42420 ASSET_CHAIN_TESTNET = 42421 ZKFAIR_MAINNET = 42766 ETHERLINK_MAINNET = 42793 diff --git a/safe_eth/eth/multicall.py b/safe_eth/eth/multicall.py index da0feb89..b222e2e4 100644 --- a/safe_eth/eth/multicall.py +++ b/safe_eth/eth/multicall.py @@ -42,69 +42,69 @@ class Multicall(ContractBase): # https://github.com/mds1/multicall#deployments ADDRESSES = { EthereumNetwork.MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.GOERLI: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.SEPOLIA: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.OPTIMISM: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.OPTIMISM_GOERLI_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.ARBITRUM_ONE: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.ARBITRUM_NOVA: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.ARBITRUM_GOERLI: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.POLYGON: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.MUMBAI: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.POLYGON_ZKEVM: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.POLYGON_ZKEVM_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.GNOSIS: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.AVALANCHE_C_CHAIN: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.AVALANCHE_FUJI_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.FANTOM_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.FANTOM_OPERA: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.BNB_SMART_CHAIN_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.BNB_SMART_CHAIN_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.GOERLI: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.SEPOLIA: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.OPTIMISM: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.OPTIMISM_GOERLI_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.ARBITRUM_ONE: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.ARBITRUM_NOVA: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.ARBITRUM_GOERLI: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.POLYGON: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.MUMBAI: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.POLYGON_ZKEVM: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.POLYGON_ZKEVM_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.GNOSIS: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.AVALANCHE_C_CHAIN: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.AVALANCHE_FUJI_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.FANTOM_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.FANTOM_OPERA: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.BNB_SMART_CHAIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.BNB_SMART_CHAIN_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.RINKEBY: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.KCC_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.KCC_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.KCC_TESTNET: "0x665683D9bd41C09cF38c3956c926D9924F1ADa97", EthereumNetwork.ROPSTEN: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.CELO_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.CELO_ALFAJORES_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.AURORA_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.BASE_GOERLI_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.METIS_ANDROMEDA_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.AURORA_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.BASE_GOERLI_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.METIS_ANDROMEDA_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.DOGECHAIN_MAINNET: "0x68a8609a60a008EFA633dfdec592c03B030cC508", EthereumNetwork.ZKSYNC_MAINNET: "0xF9cda624FBC7e059355ce98a31693d299FACd963", EthereumNetwork.IMMUTABLE_ZKEVM_TESTNET: "0x2CC787Ed364600B0222361C4188308Fa8E68bA60", EthereumNetwork.PLINGA_MAINNET: "0x0989576160f2e7092908BB9479631b901060b6e4", EthereumNetwork.ABSTRACT_TESTNET: "0xF9cda624FBC7e059355ce98a31693d299FACd963", - EthereumNetwork.MEVERSE_CHAIN_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.DFK_CHAIN: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.MEVERSE_CHAIN_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.DFK_CHAIN: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.CRONOS_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.GNOSIS_CHIADO_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.AMOY: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.AMOY: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SEI_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.HARMONY_MAINNET_SHARD_0: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.BASE: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.BLAST_SEPOLIA_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.HARMONY_MAINNET_SHARD_0: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.BASE: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.BLAST_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.PGN_PUBLIC_GOODS_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.EDGEWARE_EDGEEVM_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.EDGEWARE_EDGEEVM_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.THAICHAIN: "0x0DaD6130e832c21719C5CE3bae93454E16A84826", - EthereumNetwork.FUSE_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.OKXCHAIN_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.PULSECHAIN: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.PULSECHAIN_TESTNET_V4: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.FUSE_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.OKXCHAIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.PULSECHAIN: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.PULSECHAIN_TESTNET_V4: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.IMMUTABLE_ZKEVM: "0x236bdA4589e44e6850f5aC6a74BfCa398a86c6c0", EthereumNetwork.IOTEX_NETWORK_TESTNET: "0xb5cecD6894c6f473Ec726A176f1512399A2e355d", - EthereumNetwork.PALM_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.PALM_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.UNREAL: "0x8b6B0e60D8CD84898Ea8b981065A12F876eA5677", EthereumNetwork.ASSET_CHAIN_TESTNET: "0x989F832D35988cb5e3eB001Fa2Fe789469EC31Ea", EthereumNetwork.KAIA_TESTNET_KAIROS: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.CANTO: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.CANTO: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.LISK: "0xA9d71E1dd7ca26F26e656E66d6AA81ed7f745bf0", EthereumNetwork.PHOENIX_MAINNET: "0x498cF757a575cFF2c2Ed9f532f56Efa797f86442", - EthereumNetwork.SCROLL_SEPOLIA_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.SCROLL_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.NEXI_MAINNET: "0x0277A46Cc69A57eE3A6C8c158bA874832F718B8E", - EthereumNetwork.BEAM: "0x4956f15efdc3dc16645e90cc356eafa65ffc65ec", + EthereumNetwork.BEAM: "0x4956F15eFdc3dC16645e90Cc356eAFA65fFC65Ec", EthereumNetwork.TAIKO_MAINNET: "0xcb2436774C3e191c85056d248EF4260ce5f27A9D", EthereumNetwork.MINATO: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.EOS_EVM_NETWORK_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.EOS_EVM_NETWORK_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.KAVA_TESTNET: "0xDf1D724A7166261eEB015418fe8c7679BBEa7fd6", EthereumNetwork.IOTEX_NETWORK_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.FILECOIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", @@ -113,109 +113,109 @@ class Multicall(ContractBase): EthereumNetwork.BITTORRENT_CHAIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.WANCHAIN_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.THE_ROOT_NETWORK_MAINNET: "0xc9C2E2429AeC354916c476B30d729deDdC94988d", - EthereumNetwork.RSS3_VSL_SEPOLIA_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.RSS3_VSL_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.BOB: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.PREVIEWNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.PREVIEWNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.BLAST: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.FORMA: "0xd53C6FFB123F7349A32980F87faeD8FfDc9ef079", - EthereumNetwork.XDC_NETWORK: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.XDC_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.METAL_L2: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.BOB_SEPOLIA: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.X_LAYER_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.ZKFAIR_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.ZKFAIR_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.OASIS_SAPPHIRE: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.LINEA_GOERLI: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.LINEA_GOERLI: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MANTA_PACIFIC_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.XAI_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.NEON_EVM_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.ASTAR: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.XAI_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.NEON_EVM_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.ASTAR: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.WANCHAIN: "0xcDF6A1566e78EB4594c86Fe73Fcdc82429e97fbB", - EthereumNetwork.FRAXTAL_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.X_LAYER_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.FUNKI_SEPOLIA_SANDBOX: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.FRAXTAL_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.X_LAYER_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.FUNKI_SEPOLIA_SANDBOX: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.BERACHAIN_BARTIO: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.BASE_SEPOLIA_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.BASE_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.CRONOS_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.GARNET_HOLESKY: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.GARNET_HOLESKY: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.PUPPYNET_SHIBARIUM: "0xA4029b74FBA366c926eDFA7Dd10B21C621170a4c", EthereumNetwork.ROLLUX_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ZIRCUIT_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ZKSYNC_SEPOLIA_TESTNET: "0xF9cda624FBC7e059355ce98a31693d299FACd963", EthereumNetwork.ATLETA_OLYMPIA: "0x1472ec6392180fb84F345d2455bCC75B26577115", EthereumNetwork.KAIA_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SHIBARIUM: "0x864Bf681ADD6052395188A89101A1B37d3B4C961", - EthereumNetwork.ASTAR_ZKEVM: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.INEVM_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.ASTAR_ZKEVM: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.INEVM_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.GRAVITY_ALPHA_MAINNET: "0xf8ac4BEB2F75d2cFFb588c63251347fdD629B92c", EthereumNetwork.SYSCOIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.JIBCHAIN_L1: "0xc0C8C486D1466C57Efe13C2bf000d4c56F47CBdC", - EthereumNetwork.MODE: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.MODE: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ROOTSTOCK_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.METACHAIN_MAINNET: "0x0000000000000000000000000000000000003001", EthereumNetwork.CYBER_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.MEVERSE_CHAIN_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.MEVERSE_CHAIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.DEFICHAIN_EVM_NETWORK_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.POLYGON_ZKEVM_CARDONA_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.POLYGON_ZKEVM_CARDONA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ROLLUX_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.SHAPE_SEPOLIA_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.SHAPE_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MANTA_PACIFIC_TESTNET: "0x211B1643b95Fe76f11eD8880EE810ABD9A4cf56C", EthereumNetwork.RE_AL: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.TELOS_EVM_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SEPOLIA_PGN_PUBLIC_GOODS_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.LISK_SEPOLIA_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.LISK_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.OPBNB_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ZORA: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MANTLE_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.CYBER_TESTNET: "0xffc391F0018269d4758AEA1a144772E8FB99545E", - EthereumNetwork.KAVA: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.KAVA: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ZORA_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.OP_SEPOLIA_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.OP_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MOONBASE_ALPHA: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.LUKSO_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.SCROLL: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.SCROLL: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.OPBNB_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.FRAXTAL: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.FRAXTAL: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.CROSSBELL: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.REDSTONE: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.REDSTONE: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.LUKSO_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.TAIKO_JOLNIR_L2: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.DARWINIA_NETWORK: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.DARWINIA_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SOPHON_TESTNET: "0x83c04d112adedA2C6D9037bb6ecb42E7f0b108Af", - EthereumNetwork.XDC_APOTHEM_NETWORK: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.XDC_APOTHEM_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MOONBEAM: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.RSS3_VSL_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.METIS_GOERLI_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.RSS3_VSL_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.METIS_GOERLI_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SYSCOIN_TANENBAUM_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.LYRA_CHAIN: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.LYRA_CHAIN: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.METACHAIN_ISTANBUL: "0x0000000000000000000000000000000000003001", EthereumNetwork.PLAYFI_ALBIREO_TESTNET: "0xF9cda624FBC7e059355ce98a31693d299FACd963", - EthereumNetwork.NEON_EVM_DEVNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.NEON_EVM_DEVNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.CONFLUX_ESPACE: "0xEFf0078910f638cd81996cc117bccD3eDf2B072F", - EthereumNetwork.BEAM_TESTNET: "0x9bf49b704ee2a095b95c1f2d4eb9010510c41c9e", - EthereumNetwork.PUBLICMINT_MAINNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.BEAM_TESTNET: "0x9BF49b704EE2A095b95c1f2D4EB9010510c41C9E", + EthereumNetwork.PUBLICMINT_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MOONRIVER: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MANTA_PACIFIC_SEPOLIA_TESTNET: "0xca54918f7B525C8df894668846506767412b53E3", - EthereumNetwork.CRAB_NETWORK: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.PALM: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.CRAB_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.PALM: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MANTLE_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ZETACHAIN_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.APEX_TESTNET: "0xf7642be33a6b18D16a995657adb5a68CD0438aE2", - EthereumNetwork.ASTAR_ZKYOTO: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.ASTAR_ZKYOTO: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MODE_TESTNET: "0xBAba8373113Fb7a68f195deF18732e01aF8eDfCF", - EthereumNetwork.ARBITRUM_SEPOLIA: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.ARBITRUM_SEPOLIA: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.CORE_BLOCKCHAIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.MANTLE: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.HOLESKY: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.HOLESKY: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ETHERLINK_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.ZETACHAIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.DEFICHAIN_EVM_NETWORK_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", - EthereumNetwork.LINEA_SEPOLIA: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.BOBA_NETWORK: "0xca11bde05977b3631167028862be2a173976ca11", - EthereumNetwork.DARWINIA_KOI_TESTNET: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.LINEA_SEPOLIA: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.BOBA_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.DARWINIA_KOI_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.THE_ROOT_NETWORK_PORCINI_TESTNET: "0xc9C2E2429AeC354916c476B30d729deDdC94988d", EthereumNetwork.ARTELA_TESTNET: "0xd07c8635f76e8745Ee7092fbb6e8fbc5FeF09DD7", - EthereumNetwork.EOS_EVM_NETWORK: "0xca11bde05977b3631167028862be2a173976ca11", + EthereumNetwork.EOS_EVM_NETWORK: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SKALE_NEBULA_HUB: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SKALE_CALYPSO_HUB: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SKALE_TITAN_HUB: "0xcA11bde05977b3631167028862bE2a173976CA11", @@ -224,6 +224,15 @@ class Multicall(ContractBase): EthereumNetwork.SKALE_CALYPSO_HUB_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SKALE_NEBULA_HUB_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", EthereumNetwork.SKALE_TITAN_HUB_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.ZENCHAIN_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.SNAXCHAIN: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.SHAPE: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.FUSION_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.VICTION_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.ZIRCUIT_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.FUSION_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.AREON_NETWORK_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", + EthereumNetwork.FLARE_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11", } def __init__( diff --git a/safe_eth/eth/tests/test_multicall.py b/safe_eth/eth/tests/test_multicall.py index a4179b1b..092ce966 100644 --- a/safe_eth/eth/tests/test_multicall.py +++ b/safe_eth/eth/tests/test_multicall.py @@ -10,10 +10,18 @@ from ..contracts import get_erc20_contract from ..exceptions import BatchCallFunctionFailed from ..multicall import Multicall, MulticallDecodedResult +from ..utils import fast_is_checksum_address from .ethereum_test_case import EthereumTestCaseMixin from .utils import just_test_if_mainnet_node +class TestMulticallAddresses(TestCase): + def test_addresses_are_checksum_address(self): + addresses = Multicall.ADDRESSES + for _, address in addresses.items(): + self.assertTrue(fast_is_checksum_address(address)) + + class TestMulticallGanache(EthereumTestCaseMixin, TestCase): """ Test Multicall using ganache diff --git a/scripts/generators/generate_chains_info_from_viem.py b/scripts/generators/generate_chains_info_from_viem.py index bab87b63..20d93af1 100644 --- a/scripts/generators/generate_chains_info_from_viem.py +++ b/scripts/generators/generate_chains_info_from_viem.py @@ -6,6 +6,8 @@ import requests from git import Repo +from safe_eth.eth.utils import fast_to_checksum_address + # GitHub repository config GIT_URL = "https://github.com/wevm/viem.git" LOCAL_REPO_DIR = "sources" @@ -279,7 +281,7 @@ def process_chains() -> None: if chain_info.get(VIEM_ATTR_MULTICALL_ADDRESS): upsert_chain_info_enum_based( chain_enum_name, - chain_info[VIEM_ATTR_MULTICALL_ADDRESS], + fast_to_checksum_address(chain_info[VIEM_ATTR_MULTICALL_ADDRESS]), "safe_eth/eth/multicall.py", CONFIG_ENUM_ATTR_ADDRESSES, )