commit 82e02a06ec39bc2830f0043704789474ebcb3b76
Author: lash <dev@holbrook.no>
Date: Sat, 13 Aug 2022 20:53:37 +0000
Basic syncer example
Diffstat:
2 files changed, 55 insertions(+), 0 deletions(-)
diff --git a/requirements.txt b/requirements.txt
@@ -0,0 +1,2 @@
+chainlib-eth==0.3.1
+shep==0.2.9
diff --git a/syncer/basic.py b/syncer/basic.py
@@ -0,0 +1,53 @@
+# standard imports
+import logging
+
+# external imports
+from chainlib.interface import ChainInterface
+from chainlib.eth.block import (
+ block_latest,
+ block_by_number,
+ Block,
+ )
+from chainlib.eth.tx import (
+ receipt,
+ Tx,
+ )
+from chainlib.eth.connection import (
+ EthHTTPConnection,
+ )
+from chainsyncer.driver.chain_interface import ChainInterfaceDriver
+from chainsyncer.store.mem import SyncMemStore
+from chainsyncer.filter import SyncFilter
+
+logging.basicConfig(level=logging.INFO)
+logg = logging.getLogger()
+
+
+class EthChainInterface(ChainInterface):
+
+ def __init__(self):
+ self._block_latest = block_latest
+ self._block_by_number = block_by_number
+ self._block_from_src = Block.from_src
+ self._tx_receipt = receipt
+ self._src_normalize = Tx.src_normalize
+
+
+class BasicFilter(SyncFilter):
+
+ def filter(self, conn, block, tx):
+ logg.info('tx {}'.format(tx))
+
+
+ifc = EthChainInterface()
+store = SyncMemStore()
+store.register(BasicFilter())
+conn = EthHTTPConnection(url='http://localhost:8545')
+
+drv = ChainInterfaceDriver(
+ store,
+ ifc,
+ offset=0,
+ target=-1,
+ )
+drv.run(conn)