commit acbbebd8dabd1db889fa618590c80cef70eb7e92
parent 96f58c5f4163c6ab5f350a3ad77a8acaaa19f936
Author: lash <dev@holbrook.no>
Date: Fri, 13 May 2022 10:32:28 +0000
WIP implement chaind-eth on chainlib 0.3.0 structure
Diffstat:
5 files changed, 88 insertions(+), 34 deletions(-)
diff --git a/chaind/eth/data/config/config.ini b/chaind/eth/data/config/config.ini
@@ -4,3 +4,6 @@ runtime_dir =
id =
data_dir =
dispatch_delay = 0.01
+
+[tx]
+digest_size = 32
diff --git a/chaind/eth/runnable/syncer.py b/chaind/eth/runnable/syncer.py
@@ -4,6 +4,7 @@ import logging
# external imports
import chainlib.cli
+import chainlib.eth.cli
import chainsyncer.cli
import chaind.cli
from chaind.setup import Environment
@@ -13,13 +14,32 @@ from hexathon import strip_0x
from chainsyncer.store.fs import SyncFsStore
from chainsyncer.driver.chain_interface import ChainInterfaceDriver
from chainsyncer.error import SyncDone
-
-# local imports
-from chaind.eth.settings import ChaindEthSettings
-
+from chainlib.eth.cli.arg import (
+ Arg,
+ ArgFlag,
+ process_args,
+ )
+from chainlib.eth.cli.config import (
+ Config,
+ process_config,
+ )
+from chainsyncer.cli.arg import (
+ apply_arg as apply_arg_sync,
+ apply_flag as apply_flag_sync,
+ )
+from chainsyncer.data import config_dir as chainsyncer_config_dir
+from chaind.data import config_dir as chaind_config_dir
+from chaind.cli.arg import (
+ apply_arg,
+ apply_flag,
+ )
+from chainlib.eth.cli.log import process_log
+from chaind.settings import ChaindSettings
# local imports
from chaind.eth.cache import EthCacheTx
+from chaind.eth.settings import process_settings
+
logging.basicConfig(level=logging.WARNING)
logg = logging.getLogger()
@@ -29,33 +49,38 @@ config_dir = os.path.join(script_dir, '..', 'data', 'config')
env = Environment(domain='eth', env=os.environ)
-arg_flags = chainlib.cli.argflag_std_base | chainlib.cli.Flag.CHAIN_SPEC
-argparser = chainlib.cli.ArgumentParser(arg_flags)
+arg_flags = ArgFlag()
+arg_flags = apply_flag_sync(arg_flags)
+arg_flags = apply_flag(arg_flags)
-local_arg_flags = chaind.cli.argflag_local_base
-chaind.cli.process_flags(argparser, local_arg_flags)
+arg = Arg(arg_flags)
+arg = apply_arg_sync(arg)
+arg = apply_arg(arg)
-sync_flags = chainsyncer.cli.SyncFlag.RANGE | chainsyncer.cli.SyncFlag.HEAD
-chainsyncer.cli.process_flags(argparser, sync_flags)
+flags = arg_flags.STD_BASE | arg_flags.CHAIN_SPEC | arg_flags.PROVIDER
+flags = arg_flags.more(flags, arg_flags.SYNC_RANGE_EXT)
+flags = arg_flags.more(flags, arg_flags.CHAIND_BASE)
+argparser = chainlib.eth.cli.ArgumentParser()
+argparser = process_args(argparser, arg, flags)
args = argparser.parse_args()
-base_config_dir = [
- chainsyncer.cli.config_dir,
- chaind.cli.config_dir,
- ]
-config = chainlib.cli.Config.from_args(args, arg_flags, base_config_dir=base_config_dir)
-config = chainsyncer.cli.process_config(config, args, sync_flags)
-config = chaind.cli.process_config(config, args, local_arg_flags)
+logg = process_log(args, logg)
+
+config = Config()
+config.add_schema_dir(chainsyncer_config_dir)
+config.add_schema_dir(chaind_config_dir)
+config = process_config(config, arg, args, flags)
+#config = process_config_local(config, arg, args, flags)
config.add('eth', 'CHAIND_ENGINE', False)
config.add('sync', 'CHAIND_COMPONENT', False)
logg.debug('config loaded:\n{}'.format(config))
-settings = ChaindEthSettings(include_sync=True)
-settings.process(config)
-
-logg.debug('settings:\n{}'.format(settings))
+settings = ChaindSettings()
+settings = process_settings(settings, config)
+logg.debug('settings loaded:\n{}'.format(settings))
+sys.exit(0)
def main():
fltr = StateFilter(settings.get('CHAIN_SPEC'), settings.dir_for('queue'), EthCacheTx)
diff --git a/chaind/eth/settings.py b/chaind/eth/settings.py
@@ -1,18 +1,44 @@
# external imports
from chainlib.eth.connection import EthHTTPConnection
-from chaind.settings import ChaindSettings
+from chainlib.settings import process_settings as base_process_settings
from chaind.eth.chain import EthChainInterface
+from chaind.settings import *
-class ChaindEthSettings(ChaindSettings):
+def process_sync_interface(settings, config):
+ settings.set('SYNCER_INTERFACE', EthChainInterface())
+ return settings
- def process_sync_interface(self, config):
- self.o['SYNCER_INTERFACE'] = EthChainInterface()
+def process_common(settings, config):
+ rpc_provider = config.get('RPC_PROVIDER')
+ if rpc_provider == None:
+ rpc_provider = 'http://localhost:8545'
+ conn = EthHTTPConnection(url=rpc_provider, chain_spec=settings.get('CHAIN_SPEC'))
+ settings.set('RPC', conn)
+ return settings
- def process_common(self, config):
- super(ChaindEthSettings, self).process_common(config)
- rpc_provider = config.get('RPC_PROVIDER')
- if rpc_provider == None:
- rpc_provider = 'http://localhost:8545'
- self.o['RPC'] = EthHTTPConnection(url=rpc_provider, chain_spec=self.o['CHAIN_SPEC'])
+
+def process_settings(settings, config):
+ settings = base_process_settings(settings, config)
+ settings = process_common(settings, config)
+ settings = process_sync_interface(settings, config)
+
+ if settings.include_queue:
+ settings = process_queue_backend(settings, config)
+ if settings.include_sync:
+ settings = process_sync_backend(settings, config)
+
+ settings = process_backend(settings, config)
+ settings = process_session(settings, config)
+
+ if settings.include_sync:
+ settings = process_sync(settings, config)
+ if settings.include_queue:
+ settings = process_chaind_queue(settings, config)
+ settings = process_dispatch(settings, config)
+ settings = process_token(settings, config)
+
+ settings = process_socket(settings, config)
+
+ return settings
diff --git a/erc20_requirements.txt b/erc20_requirements.txt
@@ -1 +1 @@
-eth-erc20~=0.3.1
+eth-erc20~=0.3.2
diff --git a/requirements.txt b/requirements.txt
@@ -1,5 +1,5 @@
-chaind~=0.2.12
+chaind~=0.2.13
hexathon~=0.1.7
-chainlib-eth~=0.2.0
+chainlib-eth~=0.3.0
pyxdg~=0.27
funga-eth~=0.6.1