diff --git a/apps/cic-eth/cic_eth/api/api_admin.py b/apps/cic-eth/cic_eth/api/api_admin.py index bcc6174e..aaf7b299 100644 --- a/apps/cic-eth/cic_eth/api/api_admin.py +++ b/apps/cic-eth/cic_eth/api/api_admin.py @@ -134,7 +134,8 @@ class AdminApi: return s_have.apply_async() - def resend(self, tx_hash_hex, chain_str, in_place=True, unlock=False): + def resend(self, tx_hash_hex, chain_spec, in_place=True, unlock=False): + logg.debug('resend {}'.format(tx_hash_hex)) s_get_tx_cache = celery.signature( 'cic_eth.queue.tx.get_tx_cache', @@ -156,7 +157,7 @@ class AdminApi: s = celery.signature( 'cic_eth.eth.tx.resend_with_higher_gas', [ - chain_str, + chain_spec.asdict(), None, 1.01, ], @@ -176,7 +177,7 @@ class AdminApi: s_gas = celery.signature( 'cic_eth.admin.ctrl.unlock_send', [ - chain_str, + chain_spec.asdict(), tx_dict['sender'], ], queue=self.queue, @@ -486,9 +487,10 @@ class AdminApi: try: o = transaction(tx_hash) r = self.rpc.do(o) + if r != None: + tx['network_status'] = 'Mempool' except Exception as e: logg.warning('(too permissive exception handler, please fix!) {}'.format(e)) - tx['network_status'] = 'Mempool' if r != None: try: diff --git a/apps/cic-eth/cic_eth/runnable/resend.py b/apps/cic-eth/cic_eth/runnable/resend.py index 77faf95a..7198b8ac 100644 --- a/apps/cic-eth/cic_eth/runnable/resend.py +++ b/apps/cic-eth/cic_eth/runnable/resend.py @@ -7,13 +7,10 @@ import os # third-party imports import celery import confini -import web3 -from cic_registry import CICRegistry -from cic_registry.chain import ChainSpec -from cic_registry.chain import ChainRegistry +from chainlib.chain import ChainSpec +from chainlib.eth.connection import EthHTTPConnection # local imports -from cic_eth.eth.rpc import RpcClient from cic_eth.api.api_admin import AdminApi logging.basicConfig(level=logging.WARNING) @@ -55,41 +52,20 @@ args_override = { config.censor('PASSWORD', 'DATABASE') config.censor('PASSWORD', 'SSL') logg.debug('config loaded from {}:\n{}'.format(config_dir, config)) +config.add(args.tx_hash, '_TX_HASH', True) +config.add(args.unlock, '_UNLOCK', True) chain_spec = ChainSpec.from_chain_str(args.i) -chain_str = str(chain_spec) -re_websocket = re.compile('^wss?://') -re_http = re.compile('^https?://') -blockchain_provider = config.get('ETH_PROVIDER') -if re.match(re_websocket, blockchain_provider) != None: - blockchain_provider = web3.Web3.WebsocketProvider(blockchain_provider) -elif re.match(re_http, blockchain_provider) != None: - blockchain_provider = web3.Web3.HTTPProvider(blockchain_provider) -else: - raise ValueError('unknown provider url {}'.format(blockchain_provider)) - -def web3_constructor(): - w3 = web3.Web3(blockchain_provider) - return (blockchain_provider, w3) -RpcClient.set_constructor(web3_constructor) +rpc = EthHTTPConnection(config.get('ETH_PROVIDER')) celery_app = celery.Celery(broker=config.get('CELERY_BROKER_URL'), backend=config.get('CELERY_RESULT_URL')) -c = RpcClient(chain_spec) - -CICRegistry.init(c.w3, config.get('CIC_REGISTRY_ADDRESS'), chain_spec) -chain_registry = ChainRegistry(chain_spec) -CICRegistry.add_chain_registry(chain_registry) -CICRegistry.add_path(config.get('ETH_ABI_DIR')) -CICRegistry.load_for(chain_spec) - - def main(): - api = AdminApi(c) + api = AdminApi(rpc) tx_details = api.tx(chain_spec, args.tx_hash) - t = api.resend(args.tx_hash, chain_str, unlock=True) - + t = api.resend(args.tx_hash, chain_spec, unlock=config.get('_UNLOCK')) + print(t.get_leaf()) if __name__ == '__main__': main() diff --git a/apps/cic-eth/cic_eth/runnable/view.py b/apps/cic-eth/cic_eth/runnable/view.py index 66e08a01..50adce37 100644 --- a/apps/cic-eth/cic_eth/runnable/view.py +++ b/apps/cic-eth/cic_eth/runnable/view.py @@ -14,8 +14,6 @@ import datetime # external imports import confini import celery -from cic_eth_registry import CICRegistry -from cic_eth_registry.lookup.declarator import AddressDeclaratorLookup from chainlib.chain import ChainSpec from chainlib.eth.connection import EthHTTPConnection from hexathon import add_0x @@ -27,6 +25,7 @@ from cic_eth.db.enum import ( status_str, LockEnum, ) +from cic_eth.registry import connect as connect_registry logging.basicConfig(level=logging.WARNING) logg = logging.getLogger() @@ -147,28 +146,19 @@ def render_lock(o, **kwargs): return s -def connect_registry(registry_address, chain_spec, rpc): - CICRegistry.address = registry_address - registry = CICRegistry(chain_spec, rpc) - declarator_address = registry.by_name('AddressDeclarator') - lookup = AddressDeclaratorLookup(declarator_address, trusted_addresses) - registry.add_lookup(lookup) - return registry - - # TODO: move each command to submodule def main(): txs = [] renderer = render_tx if len(config.get('_QUERY')) > 66: - registry = connect_registry(registry_address, chain_spec, rpc) + registry = connect_registry(rpc, chain_spec, registry_address) admin_api.tx(chain_spec, tx_raw=config.get('_QUERY'), registry=registry, renderer=renderer) elif len(config.get('_QUERY')) > 42: - registry = connect_registry(registry_address, chain_spec, rpc) + registry = connect_registry(rpc, chain_spec, registry_address) admin_api.tx(chain_spec, tx_hash=config.get('_QUERY'), registry=registry, renderer=renderer) elif len(config.get('_QUERY')) == 42: - registry = connect_registry(registry_address, chain_spec, rpc) + registry = connect_registry(rpc, chain_spec, registry_address) txs = admin_api.account(chain_spec, config.get('_QUERY'), include_recipient=False, renderer=render_account) renderer = render_account elif len(config.get('_QUERY')) >= 4 and config.get('_QUERY')[:4] == 'lock':