eth-monitor

Monitor and cache ethereum transactions with match filters
git clone git://git.defalsify.org/eth-monitor.git
Log | Files | Refs | README | LICENSE

commit 39ee38b0dc9f36467c09397dc33852c37de2ad71
parent 270a35badada9b7fccfeb5c342849d18c9c54411
Author: lash <dev@holbrook.no>
Date:   Sun,  6 Aug 2023 19:32:10 +0100

Implement syncer context

Diffstat:
MCHANGELOG | 3+++
AWAIVER | 17+++++++++++++++++
AWAIVER.asc | 29+++++++++++++++++++++++++++++
Meth_monitor/cli/arg.py | 3+++
Meth_monitor/cli/config.py | 2++
Meth_monitor/data/config/monitor.ini | 1+
Meth_monitor/runnable/sync.py | 6++++--
Meth_monitor/settings.py | 14++++++++++++++
Mrequirements.txt | 2+-
Msetup.cfg | 2+-
10 files changed, 75 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG @@ -1,3 +1,6 @@ +- 0.8.1 + * Implement syncer context + * Add key-value parameter for cli, environment, config to pass to syncer context - 0.8.0 * Implement RPC batch limits for syncer - 0.7.6 diff --git a/WAIVER b/WAIVER @@ -0,0 +1,17 @@ +# Copyright waiver for the python package "eth-monitor" + +I dedicate any and all copyright interest in this software to the +public domain. I make this dedication for the benefit of the public at +large and to the detriment of my heirs and successors. I intend this +dedication to be an overt act of relinquishment in perpetuity of all +present and future rights to this software under copyright law. + +To the best of my knowledge and belief, my contributions are either +originally authored by me or are derived from prior works which I have +verified are also in the public domain and are not subject to claims +of copyright by other parties. + +To the best of my knowledge and belief, no individual, business, +organization, government, or other entity has any copyright interest +in my contributions, and I affirm that I will not make contributions +that are otherwise encumbered. diff --git a/WAIVER.asc b/WAIVER.asc @@ -0,0 +1,29 @@ +-----BEGIN PGP MESSAGE----- + +owGVU39QFFUc58fFwHYYYvwq0cfPoO6umsoEJgMJ4wQVGn7IiMje3ru7B7e7d/vj +rmMwS7iwMPImp8LUIGdATWgsHamjyYCQPGZkYEIkQ7QcEobRVIYGTXu7B2r1V3/c +zO2+7/fz8+2uYH+fQN+YwQn3jq7WNb5t/rwuoDhDW5T1GmW96YwDmazFwSGjSQB2 +EtkgBwwsBwQTBBaHYGIZYCGpStIIQSwUTGqaZZDAcrEEoQV6qEcUKUBAMg780wPS +bAbUPTTECJCDvPQHwyEe8KxBsJMcBAIr4RMWUWdGFNCzNIkYDdACmqyE3tF5aITp +F9ToIAMNSACswSvOu0wKhJnkjFDm9+LiZYFDNGTkWdoBTBBxvDzAixQFeZ7leIlO +EihtYULiAUKMopPwAIvDEABJyTgcNCPGKiLeJCNjTxbIWaAgIsEhnWPvhAXblQ4l +KoMoiNiqHAXvVfZgBCKjx0nfD8tM2jUEUcDOW+UXtFcyrN0M9fMGdVgENKikA4pl +sEudKEnG5jAkRHiXI1gMiBgsB3ci4gI5iPccgIYABynNYWJcM1bIsTSwcAi/trNc +JQ/sJkSZcC4m0gYJ7B0ZEB6TVkgzz3prvBe8tzVv7XiCYQWcrq4C4rSwWcpMIpon +sIf7FrEIVlKILxQnIMj/D7+MxK5HNqQXSbMK6EQeMbhHFTZrJBlUJRenAkapMUbq +RyWZ9bLhJ6kiE8nL9/S/95PANv4dqEqm1wLSYEAcjUWSAn6yI3zBJafyRf3HAiGP +SEnIrHbE40IYSqR1mEOvId7xe07h4xvoEx0eowhMnG62qJfV9V6qy1/4LB/ykz5G +HyIoZOFNd90jtxQHErIvnUw+crf7TkR7+uXvTo3EF1TtnJoq72mEuYl96unSuZCI +8zDj9Ppjm3unPFlP3bg9Xp7KbOskM5OuG/6ccl17V/vsiLt4Q8qXnujZjceO1Mwe +3fHm1pOhqc6WU+uvDpS8Yu+mF/kPLEkqVuZuGdwY3DFdv51uSPg0Mj8kq93xbQfV +8Jerv+tVpXbvocLG1LSKQ+1Lgt8W7dd+y94VUNZ6Tlml73um+pfhbfqBmR/O1nKj +YQH7xjTllr7C1V2LfdTDdfFXnwbWE4teyEmfW5wUalwXPe23O/r7nJXvryrpWD4G +n3j8p6HkweaalIuPOXO+2fTh5pSgioo97tKZccVeNTFX+YHxRubnEVHK30d2Hld0 +Dm1tWXewv35Prtv3eJNr7mNdUUZV650y99qm/ZdbHK9PehJXwpnJ0WXh8KP86pzc +ULfTj7bF6iOjFNn7mtq+GA8vS9mdN7G6wDX86IraTav+CANKD3K+cdD/4X5Tz+TR +puaCHyeH2p8nn7yotqTF5sc3xrV+0tOpGdgf1G1962bRr4eXj4vp9FiYx2rz+FWt +Ma14ObL5q3Mp57dUO/NqPjszd/tKEGcLnTibfCu9ovGMUFLa67owU852LVXWD96d +bLii2B7cdjhG8+KGn8vFAy+9N+tKczgzHa64wrxGd28XuzQ1avpEWu7Xa1NrL4Se +TrDqRq//DQ== +=yHWM +-----END PGP MESSAGE----- diff --git a/eth_monitor/cli/arg.py b/eth_monitor/cli/arg.py @@ -30,3 +30,6 @@ def process_args(argparser, args, flags): argparser.add_argument('--store-tx-data', action='store_true', dest='store_tx_data', help='Store tx data in cache store') argparser.add_argument('--store-block-data', action='store_true', dest='store_block_data', help='Store block data in cache store') argparser.add_argument('--fresh', action='store_true', help='Do not read block and tx data from cache, even if available') + + # misc flags + argparser.add_argument('-k', '--context-key', dest='context_key', action='append', type=str, help='Add a key-value pair to be added to the context') diff --git a/eth_monitor/cli/config.py b/eth_monitor/cli/config.py @@ -38,6 +38,8 @@ def process_config(config, arg, args, flags): arg_override['ETHMONITOR_STATE_DIR'] = getattr(args, 'state_dir') + arg_override['ETHMONITOR_CONTEXT_KEY'] = getattr(args, 'context_key') + arg_override['ETHCACHE_STORE_BLOCK'] = getattr(args, 'store_block_data') arg_override['ETHCACHE_STORE_TX'] = getattr(args, 'store_tx_data') diff --git a/eth_monitor/data/config/monitor.ini b/eth_monitor/data/config/monitor.ini @@ -18,3 +18,4 @@ filter = block_filter = include_default = 0 state_dir = ./.eth-monitor +context_key = diff --git a/eth_monitor/runnable/sync.py b/eth_monitor/runnable/sync.py @@ -85,6 +85,7 @@ config.add_schema_dir(chainsyncer_config_dir) config = process_config(config, arg, args, flags) config = process_config_sync(config, arg, args, flags) config = eth_monitor.cli.process_config(config, arg, args, flags) +logg.debug('loaded config:\n{}'.format(config)) settings = ChainSettings() settings = process_settings(settings, config) @@ -95,6 +96,7 @@ logg.debug('loaded settings:\n{}'.format(settings)) def main(): logg.info('session is {}'.format(settings.get('SESSION_ID'))) + drv = ChainInterfaceDriver( settings.get('SYNC_STORE'), settings.get('SYNCER_INTERFACE'), @@ -104,9 +106,9 @@ def main(): post_callback=post_callback, block_callback=settings.get('BLOCK_HANDLER').filter, ) - + try: - r = drv.run(settings.get('CONN')) + r = drv.run(settings.get('CONN'), ctx=settings.get('SYNCER_CONTEXT')) except SyncDone as e: sys.stderr.write("sync {} done at block {}\n".format(drv, e)) diff --git a/eth_monitor/settings.py b/eth_monitor/settings.py @@ -380,11 +380,25 @@ def process_cache(settings, config): return settings +def process_user_context(settings, config): + ctx_usr = {} + for kv in config.get('ETHMONITOR_CONTEXT_KEY'): + (k, v) = kv.split('=', 1) + ctx_usr[k] = v + ctx = { + 'driver': 'eth-monitor', + 'usr': ctx_usr, + } + settings.set('SYNCER_CONTEXT', ctx) + return settings + + def process_settings(settings, config): settings = process_monitor_session(settings, config) settings = process_monitor_session_dir(settings, config) settings = process_arg_rules(settings, config) settings = process_sync(settings, config) settings = process_cache(settings, config) + settings = process_user_context(settings, config) settings = process_filter(settings, config) return settings diff --git a/requirements.txt b/requirements.txt @@ -1,6 +1,6 @@ chainlib-eth~=0.5.0 chainlib~=0.5.0 -chainsyncer~=0.8.0 +chainsyncer~=0.8.1 leveldir~=0.3.0 eth-cache~=0.3.0 confini~=0.6.3 diff --git a/setup.cfg b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-monitor -version = 0.8.0 +version = 0.8.1 description = Monitor and cache transactions using match filters author = Louis Holbrook author_email = dev@holbrook.no