From 4667916d80ed348a25a5f402869edcdc79d45807 Mon Sep 17 00:00:00 2001 From: nolash Date: Wed, 12 May 2021 08:48:50 +0200 Subject: [PATCH] Catch bogus transfers where token address is no contract --- .../cic_eth/runnable/daemons/filters/callback.py | 12 ++++++++---- .../scripts/cic_eth/import_balance.py | 7 ++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/cic-eth/cic_eth/runnable/daemons/filters/callback.py b/apps/cic-eth/cic_eth/runnable/daemons/filters/callback.py index 4fb6b543..84b61671 100644 --- a/apps/cic-eth/cic_eth/runnable/daemons/filters/callback.py +++ b/apps/cic-eth/cic_eth/runnable/daemons/filters/callback.py @@ -3,7 +3,10 @@ import logging # external imports import celery -from cic_eth_registry.error import UnknownContractError +from cic_eth_registry.error import ( + UnknownContractError, + NotAContractError, + ) from chainlib.status import Status as TxStatus from chainlib.eth.address import to_checksum_address from chainlib.eth.error import RequestMismatchException @@ -124,8 +127,7 @@ class CallbackFilter(SyncFilter): (transfer_type, transfer_data) = parser(tx, conn) if transfer_type == None: continue - else: - pass + break except RequestMismatchException: continue @@ -168,7 +170,9 @@ class CallbackFilter(SyncFilter): t = self.call_back(transfer_type, result) logg.info('callback success task id {} tx {} queue {}'.format(t, tx.hash, t.queue)) except UnknownContractError: - logg.debug('callback filter {}:{} skipping "transfer" method on unknown contract {} tx {}'.format(tx.queue, tx.method, transfer_data['to'], tx.hash)) + logg.debug('callback filter {}:{} skipping "transfer" method on unknown contract {} tx {}'.format(self.queue, self.method, transfer_data['to'], tx.hash)) + except NotAContractError: + logg.debug('callback filter {}:{} skipping "transfer" on non-contract address {} tx {}'.format(self.queue, self.method, transfer_data['to'], tx.hash)) def __str__(self): diff --git a/apps/contract-migration/scripts/cic_eth/import_balance.py b/apps/contract-migration/scripts/cic_eth/import_balance.py index b3fb1112..97c75d60 100644 --- a/apps/contract-migration/scripts/cic_eth/import_balance.py +++ b/apps/contract-migration/scripts/cic_eth/import_balance.py @@ -33,6 +33,7 @@ from chainlib.eth.tx import TxFactory from chainlib.jsonrpc import jsonrpc_template from chainlib.eth.error import EthException from chainlib.chain import ChainSpec +from chainlib.eth.constant import ZERO_ADDRESS from crypto_dev_signer.eth.signer import ReferenceSigner as EIP155Signer from crypto_dev_signer.keystore.dict import DictKeystore from cic_types.models.person import Person @@ -51,7 +52,7 @@ argparser.add_argument('-c', type=str, default=config_dir, help='config root to argparser.add_argument('--old-chain-spec', type=str, dest='old_chain_spec', default='evm:oldchain:1', help='chain spec') argparser.add_argument('-i', '--chain-spec', type=str, dest='i', help='chain spec') argparser.add_argument('-r', '--registry-address', type=str, dest='r', help='CIC Registry address') -argparser.add_argument('--token-symbol', default='SRF', type=str, dest='token_symbol', help='Token symbol to use for trnsactions') +argparser.add_argument('--token-symbol', default='GFT', type=str, dest='token_symbol', help='Token symbol to use for trnsactions') argparser.add_argument('--head', action='store_true', help='start at current block height (overrides --offset)') argparser.add_argument('--env-prefix', default=os.environ.get('CONFINI_ENV_PREFIX'), dest='env_prefix', type=str, help='environment prefix for variables to overwrite configuration') argparser.add_argument('-q', type=str, default='cic-eth', help='celery queue to submit transaction tasks to') @@ -252,6 +253,10 @@ def main(): except ValueError as e: logg.critical('lookup failed for token {}: {}'.format(token_symbol, e)) sys.exit(1) + + if sarafu_token_address == ZERO_ADDRESS: + raise KeyError('token address for symbol {} is zero'.format(token_symbol)) + logg.info('found token address {}'.format(sarafu_token_address)) syncer_backend = MemBackend(chain_str, 0)