From c85b3ea38dd62fb6b77568342438c8d59dfa1aa8 Mon Sep 17 00:00:00 2001 From: agatha Date: Sat, 8 Jun 2024 21:08:02 -0400 Subject: [PATCH] use fallback ERC-20 ABI --- main.py | 4 +++- util.py | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 48ade5d..1e644a6 100644 --- a/main.py +++ b/main.py @@ -11,7 +11,8 @@ from util import load_config def init_logger(): - logger.add(sys.stdout, level="DEBUG") + logger.remove() + logger.add(sys.stdout, level="INFO") async def main(): @@ -47,4 +48,5 @@ async def main(): if __name__ == '__main__': + init_logger() asyncio.get_event_loop().run_until_complete(main()) diff --git a/util.py b/util.py index 9ee33f0..5fe6ad9 100644 --- a/util.py +++ b/util.py @@ -4,6 +4,36 @@ from loguru import logger from typing import Any, Optional, Dict from web3.types import ChecksumAddress +STANDARD_ERC20_ABI = [ + { + "constant": True, + "inputs": [], + "name": "name", + "outputs": [{"name": "", "type": "string"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "symbol", + "outputs": [{"name": "", "type": "string"}], + "payable": False, + "stateMutability": "view", + "type": "function", + }, + { + "constant": True, + "inputs": [], + "name": "totalSupply", + "outputs": [{"name": "", "type": "uint256"}], + "payable": False, + "stateMutability": "view", + "type": "function", + } +] + def fetch_abi(address: ChecksumAddress, headers: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None, key: Optional[str] = None) -> Optional[Dict[str, Any]]: @@ -15,7 +45,8 @@ def fetch_abi(address: ChecksumAddress, headers: Optional[Dict[str, Any]] = None # Check for error in the response if data['status'] == '0': logger.error(f"Error fetching ABI: {data.get('result')}") - return None + logger.warning(f"Using fallback ABI.") + return STANDARD_ERC20_ABI return json.loads(data['result'])