diff --git a/chaind_eth/filter.py b/chaind_eth/filter.py new file mode 100644 index 0000000..dd0727f --- /dev/null +++ b/chaind_eth/filter.py @@ -0,0 +1,27 @@ +# standard imports +import logging + +# external imports +from chainlib.status import Status +from chainqueue.sql.query import get_tx +from chainqueue.error import NotLocalTxError +from chainqueue.sql.state import set_final + +logg = logging.getLogger(__name__) + + +class StateFilter: + + def __init__(self, chain_spec): + self.chain_spec = chain_spec + + + def filter(self, conn, block, tx, session=None): + otx = None + try: + otx = get_tx(self.chain_spec, tx.hash, session=session) + except NotLocalTxError: + return False + logg.info('finalizing local tx {} with status {}'.format(tx.hash, tx.status)) + status = tx.status != Status.SUCCESS + set_final(self.chain_spec, tx.hash, block=block.number, tx_index=tx.index, fail=status, session=session)