diff --git a/docs/5.advanced/6.evm-networks.md b/docs/5.advanced/6.evm-networks.md index 29ae5dbfa..b25202032 100644 --- a/docs/5.advanced/6.evm-networks.md +++ b/docs/5.advanced/6.evm-networks.md @@ -162,8 +162,8 @@ Explorer: [Beratrail](https://artio.beratrail.io/) | datasource | supported | URLs | | -----------------:|:------------- | --------------------------------------------------------------------- | -| **evm.subsquid** | 🤔 not tested | `https://v2.archive.subsquid.io/network/berachain-artio` | -| **abi.etherscan** | 🤔 not tested | `https://api.routescan.io/v2/network/testnet/evm/43114/etherscan/api` | +| **evm.subsquid** | 🟢 yes | `https://v2.archive.subsquid.io/network/berachain-artio` | +| **abi.etherscan** | 🟢 yes | `https://api.routescan.io/v2/network/testnet/evm/80085/etherscan/api` | | **evm.node** | 🤔 not tested | | ### Binance Smart Chain @@ -509,8 +509,8 @@ Explorer: [Scrollscan](https://scrollscan.com/) | datasource | supported | URLs | | -----------------:|:------------- | -------------------------------- | | **evm.subsquid** | 🔴 no API | N/A | -| **abi.etherscan** | 🤔 not tested | `https://api.scrollscan.com/api` | -| **evm.node** | 🤔 not tested | `https://rpc.scroll.io` | +| **abi.etherscan** | 🟢 yes | `https://api.scrollscan.com/api` | +| **evm.node** | 🟡 HTTP only | `https://rpc.scroll.io` | ### Shibuya Testnet diff --git a/src/dipdup/datasources/abi_etherscan.py b/src/dipdup/datasources/abi_etherscan.py index ecead4f1b..322256742 100644 --- a/src/dipdup/datasources/abi_etherscan.py +++ b/src/dipdup/datasources/abi_etherscan.py @@ -43,6 +43,10 @@ async def get_abi(self, address: str) -> dict[str, Any]: self._logger.warning('Ratelimited; sleeping %s seconds', self._http_config.ratelimit_sleep) await asyncio.sleep(self._http_config.retry_sleep) continue + if isinstance(result, str) and 'Contract source code not verified' in result: + raise DatasourceError( + 'ABI is not verified in the etherscan, please put ABI manually; message: %s' % result, self.name + ) return cast(dict[str, Any], orjson.loads(result))