Merge branch 'lash/catch-no-contract-crash' into 'master'
cic-eth-tracker: Catch bogus transfers where token address is no contract See merge request grassrootseconomics/cic-internal-integration!141
This commit is contained in:
		
						commit
						b252fab018
					
				@ -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):
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user