Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
963eb7f
Squash merge protofire/v7.3.0
ElvisKrop Aug 11, 2025
b69bbce
Add addresses 1.3.0 for chain ETHEREAL_TESTNET (#1855)
github-actions[bot] Jul 30, 2025
b8532b5
Add addresses 1.3.0 for chain ETHEREAL_TESTNET (#1856)
github-actions[bot] Jul 30, 2025
bbdbe42
Add addresses 1.4.1 for chain ETHEREAL_TESTNET (#1857)
github-actions[bot] Jul 30, 2025
4b0d55e
Add addresses 1.3.0 for chain METAL_L2 (#1858)
github-actions[bot] Jul 30, 2025
691191c
Add addresses 1.3.0 for chain OPBNB_MAINNET (#1862)
github-actions[bot] Jul 31, 2025
fa2d747
Add addresses 1.3.0 for chain OPBNB_MAINNET (#1863)
github-actions[bot] Jul 31, 2025
0529f5b
Add addresses 1.4.1 for chain OPBNB_MAINNET (#1864)
github-actions[bot] Jul 31, 2025
37bbb79
Fix Blockscout API client response. (#1886)
falvaradorodriguez Aug 20, 2025
38678f8
Add addresses 1.4.1 for chain POLYNOMIAL (#1894)
github-actions[bot] Aug 21, 2025
08fef99
Add addresses 1.4.1 for chain ENI_MAINNET (#1895)
github-actions[bot] Aug 21, 2025
61bd478
Add addresses 1.3.0 for chain VANA (#1896)
github-actions[bot] Aug 21, 2025
5b5f2c9
Add addresses 1.3.0 for chain ZIRCUIT_GARFIELD_TESTNET (#1897)
github-actions[bot] Aug 21, 2025
3a324d5
Add addresses 1.4.1 for chain ZIRCUIT_GARFIELD_TESTNET (#1898)
github-actions[bot] Aug 21, 2025
03f5a76
Add addresses 1.3.0 for chain PHAROS_TESTNET (#1899)
github-actions[bot] Aug 21, 2025
37010a3
Add addresses 1.4.1 for chain PHAROS_TESTNET (#1900)
github-actions[bot] Aug 21, 2025
b401e3c
Add addresses 1.3.0 for chain ZIRCUIT_GARFIELD_TESTNET (#1901)
github-actions[bot] Aug 21, 2025
412837e
chore: update EXPCHAIN_TESTNET block number after redeployment
ajimeno04 Sep 8, 2025
4a8733a
chore: update EXPCHAIN_TESTNET block numbers for addresses 1.4.1
ajimeno04 Sep 8, 2025
622ead0
Update Multicall3 address for EXPCHAIN_TESTNET
ElvisKrop Sep 10, 2025
321ca7a
Add support for Autonomys Chronos Testnet
ElvisKrop Sep 16, 2025
95ac348
Add MantraChain Testnet support in BlockScout client and addresses
ElvisKrop Sep 23, 2025
fd8c97a
Add support for MantraChain Mainnet
ElvisKrop Sep 23, 2025
61700d9
Add Mantra Mainnet addresses for versions 1.3.0 and 1.4.1
ElvisKrop Sep 29, 2025
3beaa69
Add Pharos Atlantic Testnet addresses for version 1.3.0 and 1.4.1 (#43)
sistemico Nov 13, 2025
e8060f3
feat: add Morph Hoodi Testnet addresses for v1.3.0 and v1.4.1 (#44)
Emosaddd Nov 21, 2025
d5f72d6
feat: add Protofire network addresses for v1.3.0 and v1.4.1
Emosaddd Dec 2, 2025
e1f0d46
Merge pull request #46 from protofire/feat/add-protofire-network
Emosaddd Dec 2, 2025
fd82e13
Add DogeOS Chikyū Testnet addresses for version 1.3.0 canonical (#47)
sistemico Dec 4, 2025
34bebe9
feat: add Moca Chain Testnet addresses for v1.3.0 and v1.4.1
Emosaddd Dec 10, 2025
df3a749
Merge pull request #48 from protofire/feat/add-moca-testnet
Emosaddd Dec 10, 2025
933d1b1
feat: add Plasma Mainnet
Emosaddd Dec 15, 2025
06ec135
Merge pull request #49 from protofire/feat/add-plasma-mainnet
Emosaddd Dec 15, 2025
f247cf0
Update DogeOS Chikyū Testnet addresses for versions 1.3.0 (eip155, ca…
sistemico Dec 17, 2025
5fe180f
Add Blockscout API URL for DogeOS Chikyū Testnet
sistemico Dec 17, 2025
afe56a7
feat: add new network
Emosaddd Dec 22, 2025
7db3dec
Merge pull request #51 from protofire/feat/add-mistery-network
Emosaddd Dec 22, 2025
e697f52
feat: add Moca
Emosaddd Dec 24, 2025
90b1cfa
Merge pull request #52 from protofire/feat/add-moca
Emosaddd Dec 24, 2025
6dbe0e4
Add Alpen Testnet addresses for version 1.3.0 and 1.4.1
sistemico Jan 7, 2026
6d072ff
Add Blockscout API URL for Alpen Testnet
sistemico Jan 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 28 additions & 3 deletions safe_eth/eth/clients/blockscout_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,22 @@ class BlockScoutConfigurationProblem(BlockscoutClientException):

class BlockscoutClient:
NETWORK_WITH_URL = {
EthereumNetwork.METIS_ANDROMEDA_MAINNET: "https://andromeda-explorer.metis.io/api/v2/",
EthereumNetwork.FUSE_MAINNET: "https://explorer.fuse.io/api/v2/",
EthereumNetwork.UNREAL_OLD: "https://unreal.blockscout.com/api/v2/",
EthereumNetwork.STRATIS_MAINNET: "https://explorer.stratisevm.com/api/v2/",
EthereumNetwork.SHIMMEREVM: "https://explorer.evm.shimmer.network/api/v2/",
EthereumNetwork.BITROCK_MAINNET: "https://explorer.bit-rock.io/api/v2/",
EthereumNetwork.RSS3_VSL_SEPOLIA_TESTNET: "https://scan.testnet.rss3.io/api/v2/",
EthereumNetwork.RSS3_VSL_MAINNET: "https://scan.rss3.io/api/v2/",
EthereumNetwork.GARNET_HOLESKY: "https://explorer.garnetchain.com/api/v2/",
EthereumNetwork.UNREAL: "https://unreal.blockscout.com/api/v2/",
EthereumNetwork.EDU_CHAIN_TESTNET: "https://edu-chain-testnet.blockscout.com/api/v2/",
EthereumNetwork.ETHERLINK_TESTNET: "https://testnet.explorer.etherlink.com/api/v2/",
EthereumNetwork.CITREA_TESTNET: "https://explorer.testnet.citrea.xyz/api/v2/",
EthereumNetwork.EDU_CHAIN: "https://educhain.blockscout.com/api/v2/",
EthereumNetwork.FILECOIN_MAINNET: "https://filecoin.blockscout.com/api/v2/",
EthereumNetwork.FILECOIN_CALIBRATION_TESTNET: "https://filecoin-testnet.blockscout.com/api/v2/",
EthereumNetwork.ACALA_NETWORK: "https://blockscout.acala.network/api/v2/",
EthereumNetwork.ALEPH_ZERO_EVM: "https://evm-explorer.alephzero.org/api/v2/",
EthereumNetwork.ARBITRUM_BLUEBERRY: "https://arb-blueberry.gelatoscout.com/api/v2/",
Expand Down Expand Up @@ -63,7 +79,6 @@ class BlockscoutClient:
EthereumNetwork.MANTLE: "https://explorer.mantle.xyz/api/v2/",
EthereumNetwork.MANTLE_SEPOLIA_TESTNET: "https://explorer.sepolia.mantle.xyz/api/v2/",
EthereumNetwork.MANTLE_TESTNET: "https://explorer.testnet.mantle.xyz/api/v2/",
EthereumNetwork.MANTLE_TESTNET: "https://explorer.testnet.mantle.xyz/api/v2/",
EthereumNetwork.MANTA_PACIFIC_MAINNET: "https://pacific-explorer.manta.network/api/v2/",
EthereumNetwork.METER_MAINNET: "https://scan.meter.io/api/v2/",
EthereumNetwork.METER_TESTNET: "https://scan-warringstakes.meter.io/api/v2/",
Expand Down Expand Up @@ -101,7 +116,6 @@ class BlockscoutClient:
EthereumNetwork.TAC_TURIN: "https://turin.explorer.tac.build/api/v2",
EthereumNetwork.ALEPH_ZERO: "https://evm-explorer-testnet.alephzero.org/api/v2/",
EthereumNetwork.AUTONOMYS_TAURUS_TESTNET: "https://explorer.auto-evm.taurus.autonomys.xyz/api/v2/",
EthereumNetwork.STORY_AENEID_TESTNET: "https://aeneid.storyscan.xyz/api/v2/",
EthereumNetwork.STORY: "https://mainnet.storyscan.xyz/api/v2/",
EthereumNetwork.AUTONITY_PICCADILLY_TIBER_TESTNET: "https://piccadilly.autonity.org/api/v2",
EthereumNetwork.SONEIUM_TESTNET_MINATO: "https://soneium-minato.blockscout.com/api/v2/",
Expand All @@ -113,6 +127,17 @@ class BlockscoutClient:
EthereumNetwork.SHAPE: "https://shapescan.xyz/api/v2",
EthereumNetwork.SHAPE_SEPOLIA_TESTNET: "https://sepolia.shapescan.xyz/api/v2/",
EthereumNetwork.STORY_AENEID_TESTNET: "https://aeneid.storyscan.io/api/v2/",
EthereumNetwork.EXPCHAIN_TESTNET: "https://blockscout-testnet.expchain.ai/api/v2",
EthereumNetwork.ETHEREUM_HOODI: "https://eth-hoodi.blockscout.com/api/v2/",
EthereumNetwork.ETHEREAL_TESTNET: "https://explorer-ethereal-testnet.t.conduit.xyz/api/v2/",
EthereumNetwork.ENI_MAINNET: "https://scan.eniac.network/api/v2",
EthereumNetwork.VANA: "https://vanascan.io/api/v2/",
EthereumNetwork.AUTONOMYS_CHRONOS_TESTNET: "https://explorer.auto-evm.chronos.autonomys.xyz/api/v2/",
EthereumNetwork.MANTRACHAIN_TESTNET: "https://explorer.dukong.io/api/v2/",
EthereumNetwork.MANTRACHAIN_MAINNET: "https://blockscout.mantrascan.io/api/v2/",
EthereumNetwork.MORPH_HOODI: "https://explorer-api-hoodi.morphl2.io/api/v2",
EthereumNetwork.DOGEOS_CHIKYU_TESTNET: "https://blockscout.testnet.dogeos.com/api/v2/",
EthereumNetwork.ALPEN_TESTNET: "https://explorer.pectra-testnet.alpenlabs.io/api/v2/",
}

def __init__(
Expand Down Expand Up @@ -158,7 +183,7 @@ def _process_contract_metadata(
name,
abi,
False,
implementations[0]["address"] if implementations else None,
implementations[0]["address_hash"] if implementations else None,
)
return None

Expand Down
5 changes: 5 additions & 0 deletions safe_eth/eth/clients/etherscan_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ class EtherscanClient:
EthereumNetwork.BASE_SEPOLIA_TESTNET: "https://sepolia.basescan.org",
EthereumNetwork.HOLESKY: "https://holesky.etherscan.io",
EthereumNetwork.LINEA_SEPOLIA: "https://sepolia.lineascan.build",
EthereumNetwork.ABSTRACT: "https://abscan.org",
EthereumNetwork.ABSTRACT_SEPOLIA_TESTNET: "https://sepolia.abscan.org",
EthereumNetwork.METIS_ANDROMEDA_MAINNET: "https://explorer.metis.io",
EthereumNetwork.DOGECHAIN_MAINNET: "https://explorer.dogechain.dog",
EthereumNetwork.FUSE_SPARKNET: "https://explorer.fusespark.io",
Expand Down Expand Up @@ -233,6 +235,8 @@ class EtherscanClient:
EthereumNetwork.BASE_SEPOLIA_TESTNET: "https://api-sepolia.basescan.org",
EthereumNetwork.HOLESKY: "https://api-holesky.etherscan.io",
EthereumNetwork.LINEA_SEPOLIA: "https://api-sepolia.lineascan.build",
EthereumNetwork.ABSTRACT: "https://api.abscan.org",
EthereumNetwork.ABSTRACT_SEPOLIA_TESTNET: "https://api-testnet.abscan.org",
EthereumNetwork.METIS_ANDROMEDA_MAINNET: "https://api.routescan.io/v2/network/mainnet/evm/1088/etherscan",
EthereumNetwork.DOGECHAIN_MAINNET: "https://explorer.dogechain.dog",
EthereumNetwork.FUSE_SPARKNET: "https://explorer.fusespark.io",
Expand Down Expand Up @@ -350,6 +354,7 @@ class EtherscanClient:
EthereumNetwork.AVALANCHE_FUJI_TESTNET: "https://api-testnet.snowtrace.io",
EthereumNetwork.ODYSSEY_TESTNET: "https://odyssey-explorer.ithaca.xyz",
EthereumNetwork.PLUME_MAINNET: "https://explorer.plume.org",
EthereumNetwork.ETHEREUM_HOODI: "https://api-hoodi.etherscan.io",
}
HTTP_HEADERS: MutableMapping[str, Union[str, bytes]] = {
"User-Agent": "curl/7.77.0",
Expand Down
20 changes: 19 additions & 1 deletion safe_eth/eth/ethereum_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ class EthereumNetwork(Enum):
HOO_SMART_CHAIN_TESTNET = 170
CO2E_LEDGER = 171
LATAM_BLOCKCHAIN_RESIL_TESTNET = 172
ENI_MAINNET = 173
OTC = 175
DC_MAINNET = 176
HASHKEY_CHAIN = 177
Expand Down Expand Up @@ -426,6 +427,7 @@ class EthereumNetwork(Enum):
HONGKONG_MAINNET = 852
ZEETH_CHAIN_DEV = 859
FANTASIA_CHAIN_MAINNET = 868
AUTONOMYS_MAINNET = 870
BANDAI_NAMCO_RESEARCH_VERSE_MAINNET = 876
DEXIT_NETWORK = 877
AMBROS_CHAIN_MAINNET = 880
Expand Down Expand Up @@ -468,7 +470,8 @@ class EthereumNetwork(Enum):
BIFROST_POLKADOT_MAINNET = 996
_5IRECHAIN_THUNDER_TESTNET = 997
LUCKY_NETWORK = 998
WANCHAIN_TESTNET = 999
# WANCHAIN_TESTNET = 999
HYPEREVM = 999
GTON_MAINNET = 1000
KAIA_KAIROS_TESTNET = 1001
TECTUM_EMISSION_TOKEN = 1003
Expand Down Expand Up @@ -615,6 +618,7 @@ class EthereumNetwork(Enum):
BTACHAIN = 1657
LIQUICHAIN = 1662
HORIZEN_GOBI_TESTNET = 1663
MISTERY_PS_MAINNET = 1672
MINT_TESTNET = 1686
MINT_SEPOLIA_TESTNET = 1687
LUDAN_MAINNET = 1688
Expand Down Expand Up @@ -802,6 +806,7 @@ class EthereumNetwork(Enum):
BOBA_NETWORK_GOERLI_TESTNET = 2888
AARMA_MAINNET = 2889
ELUX_CHAIN = 2907
MORPH_HOODI = 2910
HYCHAIN = 2911
XENON_CHAIN_TESTNET = 2941
BITYUAN_MAINNET = 2999
Expand Down Expand Up @@ -882,6 +887,7 @@ class EthereumNetwork(Enum):
BITINDI_TESTNET = 4096
BITINDI_MAINNET = 4099
AIOZ_NETWORK_TESTNET = 4102
PROTOFIRE_MISTERY = 4114
HUMANS_AI_TESTNET = 4139
TIPBOXCOIN_TESTNET = 4141
CROSSFI_TESTNET = 4157
Expand Down Expand Up @@ -977,6 +983,8 @@ class EthereumNetwork(Enum):
ONTOLOGY_TESTNET = 5851
CHANG_CHAIN_FOUNDATION_MAINNET = 5858
WEGOCHAIN_RUBIDIUM_MAINNET = 5869
MANTRACHAIN_TESTNET = 5887
MANTRACHAIN_MAINNET = 5888
BOUNCEBIT_TESTNET = 6000
BOUNCEBIT_MAINNET = 6001
BC_HYPER_CHAIN_TESTNET = 6060
Expand Down Expand Up @@ -1086,6 +1094,7 @@ class EthereumNetwork(Enum):
AMANA = 8134
FLANA = 8135
MIZANA = 8136
ALPEN_TESTNET = 8150
TESTNET_BEONE_CHAIN = 8181
TORUS_MAINNET = 8192
TORUS_TESTNET = 8194
Expand All @@ -1103,6 +1112,7 @@ class EthereumNetwork(Enum):
TOKI_NETWORK = 8654
TOKI_TESTNET = 8655
HELA_OFFICIAL_RUNTIME_MAINNET = 8668
AUTONOMYS_CHRONOS_TESTNET = 8700
TOOL_GLOBAL_MAINNET = 8723
TOOL_GLOBAL_TESTNET = 8724
STORAGECHAIN_MAINNET = 8726
Expand Down Expand Up @@ -1156,6 +1166,7 @@ class EthereumNetwork(Enum):
NEONLINK_TESTNET = 9559
OORT_MAINNETDEV = 9700
BOBA_BNB_TESTNET = 9728
PLASMA_MAINNET = 9745
PLASMA_TESTNET = 9746
MAINNETZ_TESTNET = 9768
PEPENETWORK_MAINNET = 9779
Expand Down Expand Up @@ -1592,6 +1603,7 @@ class EthereumNetwork(Enum):
CONDUIT_SUBNET = 78432
VANGUARD = 78600
GOLD_SMART_CHAIN_TESTNET = 79879
BERACHAIN_CARTIO = 80000
MUMBAI = 80001
AMOY = 80002
POLYNOMIA_SEPOLIA = 80008
Expand Down Expand Up @@ -1769,6 +1781,8 @@ class EthereumNetwork(Enum):
HYDRADX = 222222
DEEPL_MAINNET = 222555
DEEPL_TESTNET = 222666
MOCA_CHAIN_TESTNET = 222888
MOCA_CHAIN_MAINNET = 2288
TAF_ECO_CHAIN_MAINNET = 224168
CONET_SEBOLIA_TESTNET = 224422
CONET_HOLESKY = 224433
Expand Down Expand Up @@ -1862,10 +1876,13 @@ class EthereumNetwork(Enum):
BEAR_NETWORK_CHAIN_MAINNET = 641230
ALL_MAINNET = 651940
EDU_CHAIN_TESTNET = 656476
ETHEREAL_TESTNET = 657468
XAI_MAINNET = 660279
VISION_VPIONEER_TEST_CHAIN = 666666
HELA_OFFICIAL_RUNTIME_TESTNET = 666888
WON_NETWORK = 686868
PHAROS_TESTNET = 688688
PHAROS_ATLANTIC_TESTNET = 688689
PYROPE_TESTNET = 695569
GALADRIEL_DEVNET = 696969
TILTYARD_MAINNET_SUBNET = 710420
Expand Down Expand Up @@ -1964,6 +1981,7 @@ class EthereumNetwork(Enum):
IMVERSED_MAINNET = 5555555
IMVERSED_TESTNET = 5555558
ASTAR_ZKYOTO = 6038361
DOGEOS_CHIKYU_TESTNET = 6281971
SAFE_ANWANG_MAINNET = 6666665
SAFE_ANWANG_TESTNET = 6666666
COTI_TESTNET = 7082400
Expand Down
6 changes: 5 additions & 1 deletion safe_eth/eth/multicall.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ class Multicall(ContractBase):
EthereumNetwork.LINEA: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.CONFLUX_ESPACE_TESTNET: "0xEFf0078910f638cd81996cc117bccD3eDf2B072F",
EthereumNetwork.BITTORRENT_CHAIN_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.WANCHAIN_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11",
# EthereumNetwork.WANCHAIN_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.EXPCHAIN_TESTNET: "0x6fCf308FCb5216F8Fc1d752ba591dd49d3FF5E46",
EthereumNetwork.THE_ROOT_NETWORK_MAINNET: "0xc9C2E2429AeC354916c476B30d729deDdC94988d",
EthereumNetwork.RSS3_VSL_SEPOLIA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.BOB: "0xcA11bde05977b3631167028862bE2a173976CA11",
Expand Down Expand Up @@ -336,6 +337,9 @@ class Multicall(ContractBase):
EthereumNetwork.INK_SEPOLIA: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.PLUME_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.STATUS_NETWORK_SEPOLIA: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.PLASMA_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.PLASMA_TESTNET: "0xcA11bde05977b3631167028862bE2a173976CA11",
EthereumNetwork.MISTERY_PS_MAINNET: "0xcA11bde05977b3631167028862bE2a173976CA11",
}

def __init__(
Expand Down
Loading