mirror of
git://holbrook.no/eth-monitor.git
synced 2024-11-23 04:16:46 +01:00
Add readme
This commit is contained in:
parent
705bdc9471
commit
f72b1740d6
@ -1,3 +1,8 @@
|
||||
- 0.7.5
|
||||
* Add readme (from man page)
|
||||
* Add package descriptino (from man page)
|
||||
- 0.7.4
|
||||
* Add man pages to package
|
||||
- 0.7.3
|
||||
* Upgrade deps
|
||||
- 0.7.2
|
||||
|
@ -1 +1 @@
|
||||
include *requirements.txt LICENSE CHANGELOG WAIVER WAIVER.asc eth_monitor/data/config/* man/build/*.1
|
||||
include *requirements.txt LICENSE CHANGELOG WAIVER WAIVER.asc eth_monitor/data/config/* man/build/*.1 README*
|
||||
|
284
README.md
Normal file
284
README.md
Normal file
@ -0,0 +1,284 @@
|
||||
# NAME
|
||||
|
||||
eth-monitor - Cache, index and monitor transactions with an EVM node rpc
|
||||
|
||||
# SYNOPSIS
|
||||
|
||||
**eth-monitor** \[ --skip-history \] \[ --single \] \[ p *eth_provider*
|
||||
\] \[ --includes-file *file* \] \[ -i chain_spec \] **eth-monitor** \[
|
||||
--skip-history \] \[ --single \] \[ p *eth_provider* \] \[
|
||||
--excludes-file *file* \] \[ --include-default \] \[ -i chain_spec \]
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
The **eth-monitor** has fulfills three distinct but related functions:
|
||||
|
||||
> 1\. A customizable view of on transactions of interest.
|
||||
>
|
||||
> 2\. A block and transaction cache.
|
||||
>
|
||||
> 3\. Arbitrary code executions using a transaction (and its block) as
|
||||
> input.
|
||||
|
||||
Using an EVM RPC endpoint, the **eth-monitor** tool will retrieve blocks
|
||||
within a given range and provides arbitrary processing of each
|
||||
transaction.
|
||||
|
||||
A collection of options is provided to control the behavior of which
|
||||
block ranges to sync, which criteria to use for display and cache, and
|
||||
what code to execute for matching transactions. Details on each topic
|
||||
can be found in the **SYNCING**, **MATCHING ADDRESSES** and **DEFINING
|
||||
FILTERS** sections below, respectively.
|
||||
|
||||
Example executions of the tool can be found in the **EXAMPLES** section.
|
||||
|
||||
## OPTIONS
|
||||
|
||||
**-0**
|
||||
Omit newline to output
|
||||
|
||||
**--address ***address*
|
||||
Add an address of interest to match any role. Complements
|
||||
**--address-file***.*
|
||||
|
||||
**-c ***config_dir, ***--config ***config_dir*
|
||||
Load configuration files from given directory. All files with an .ini
|
||||
extension will be loaded, of which all must contain valid ini file data.
|
||||
|
||||
**--dumpconfig ***format*
|
||||
Output configuration settings rendered from environment and inputs.
|
||||
Valid arguments are *ini for ini file output, and env for environment
|
||||
variable output. See ***CONFIGURATION***.*
|
||||
|
||||
**--env-prefix**
|
||||
Environment prefix for variables to overwrite configuration. Example: If
|
||||
**--env-prefix*** is set to ***FOO*** then configuration variable
|
||||
***BAR_BAZ*** would be set by environment variable ***FOO_BAZ_BAR***.
|
||||
Also see ***ENVIRONMENT***.*
|
||||
|
||||
**--excludes-file ***file*
|
||||
Load address exclude matching rules from file. See **MATCHING
|
||||
ADDRESSES***.*
|
||||
|
||||
**--exec ***address*
|
||||
Add an address of interest to executable address array. Complements
|
||||
**--address-file***.*
|
||||
|
||||
**--filter ***module*
|
||||
Add code execution filter to all matched transactions. The argument must
|
||||
be a python module path. Several filters may be added by supplying the
|
||||
option multiple times. Filters will be executed in the order the options
|
||||
are given. See **DEFINING FILTERS*** section of ***eth-monitor (1)***
|
||||
for more details.*
|
||||
|
||||
**--height**
|
||||
Block height at which to query state for. Does not apply to
|
||||
transactions.
|
||||
|
||||
**-i ***chain_spec, ***--chain-spec ***chain_spec*
|
||||
Chain specification string, in the format
|
||||
\<engine\>:\<fork\>:\<chain_id\>:\<common_name\>. Example:
|
||||
"evm:london:1:ethereum". Overrides the *RPC_CREDENTIALS configuration
|
||||
setting.*
|
||||
|
||||
**--include-default **
|
||||
Match all addresses by default. Addresses may be excluded using
|
||||
--excludes-file. If this is set, --input, --output, --exec and
|
||||
--includes-file will have no effect.
|
||||
|
||||
**--includes-file ***file*
|
||||
Load address include matching rules from file. See **MATCHING
|
||||
ADDRESSES***.*
|
||||
|
||||
**--input ***address*
|
||||
Add an address of interest to inputs (recipients) array. Complements
|
||||
**--address-file***.*
|
||||
|
||||
**-n ***namespace, ***--namespace ***namespace*
|
||||
Load given configuration namespace. Configuration will be loaded from
|
||||
the immediate configuration subdirectory with the same name.
|
||||
|
||||
**--no-logs**
|
||||
Turn of logging completely. Negates **-v*** and ***-vv**
|
||||
|
||||
**--output ***address*
|
||||
Add an address of interest to outputs (sender) array. Complements
|
||||
**--address-file***.*
|
||||
|
||||
**-p***, ***--rpc-provider**
|
||||
Fully-qualified URL of RPC provider. Overrides the *RPC_PROVIDER
|
||||
configuration setting.*
|
||||
|
||||
**--raw**
|
||||
Produce output most optimized for machines.
|
||||
|
||||
**--renderer ***module*
|
||||
Add output renderer filter to all matched transactions. The argument
|
||||
must be a python module path. Several renderers may be added by
|
||||
supplying the option multiple times. See **RENDERERS*** section of
|
||||
***eth-monitor (1)*** for more details.*
|
||||
|
||||
**--rpc-dialect**
|
||||
RPC backend dialect. If specified it *may help with encoding and
|
||||
decoding issues. Overrides the RPC_DIALECT configuration setting.*
|
||||
|
||||
**--store-block-data **
|
||||
Store block data in cache for matching transactions. Requires
|
||||
**--cache-dir***.*
|
||||
|
||||
**--store-tx-data **
|
||||
Store transaction data in cache for matching transactions. Requires
|
||||
**--cache-dir***.*
|
||||
|
||||
**-u***, ***--unsafe**
|
||||
Allow addresses that do not pass checksum.
|
||||
|
||||
**-v**
|
||||
Verbose. Show logs for important state changes.
|
||||
|
||||
**-vv**
|
||||
Very verbose. Show logs with debugging information.
|
||||
|
||||
**--x-address ***address*
|
||||
Add an address of interest to match any role.
|
||||
|
||||
**--x-exec ***address*
|
||||
Add an address of disinterest to executable address array.
|
||||
|
||||
**--x-input ***address*
|
||||
Add an address of disinterest to inputs (recipients) array.
|
||||
|
||||
**--x-output ***address*
|
||||
Add an address of disinterest to outputs (sender) array.
|
||||
|
||||
# CONFIGURATION
|
||||
|
||||
All configuration settings may be overriden both by environment
|
||||
variables, or by overriding settings with the contents of ini-files in
|
||||
the directory defined by the **-c*** option.*
|
||||
|
||||
The active configuration, with values assigned from environment and
|
||||
arguments, can be output using the **--dumpconfig*** format option. Note
|
||||
that entries having keys prefixed with underscore (e.g. \_SEQ) are not
|
||||
actual configuration settings, and thus cannot be overridden with
|
||||
environment variables.*
|
||||
|
||||
To refer to a configuration setting by environment variables, the
|
||||
*section and key are concatenated together with an underscore, and
|
||||
transformed to upper-case. For example, the configuration variable
|
||||
FOO_BAZ_BAR refers to an ini-file entry as follows:*
|
||||
|
||||
[foo]
|
||||
bar_baz = xyzzy
|
||||
|
||||
In the **ENVIRONMENT*** section below, the relevant configuration
|
||||
settings for this tool is listed along with a short description of its
|
||||
meaning.*
|
||||
|
||||
Some configuration settings may also be overriden by command line
|
||||
options. Also note that the use of the **-n*** and ***--env-prefix***
|
||||
options affect how environment and configuration is read. The effects of
|
||||
options on how configuration settings are affective is described in the
|
||||
respective ***OPTIONS*** section.*
|
||||
|
||||
# MATCHING ADDRESSES
|
||||
|
||||
By default, addresses to match against transactions need to be
|
||||
explicitly specified. This behavior can be reversed with the
|
||||
**--include-default*** option. Addresses to match are defined using the
|
||||
***--input***, ***--output*** and ***--exec*** options. Addresses
|
||||
specified multiple times will be deduplicated.*
|
||||
|
||||
Inclusion rules may also be loaded from file by specifying the
|
||||
**--includes-file*** and ***--excludes-file*** options. Each file must
|
||||
specify the outputs, inputs and exec addresses as comma separated lists
|
||||
respectively, separated by tabs.*
|
||||
|
||||
In the current state of this tool, address matching will affect all
|
||||
parts of the processing; cache, code execution and rendering.
|
||||
|
||||
# SYNCING
|
||||
|
||||
When a sync is initiated, the state of this sync is persisted. This way,
|
||||
previous syncs that did not complete for some reason will be resumed
|
||||
where they left off.
|
||||
|
||||
A special sync type **--head*** starts syncing at the current head of
|
||||
the chain, and continue to sync until interrupted. When resuming sync, a
|
||||
new sync range between the current block head and the block height at
|
||||
which the previous ***--head*** sync left off will automatically be
|
||||
created.*
|
||||
|
||||
Syncs can be forced to (re)run for ranges regardless of previous state
|
||||
by using the **--single*** option. However, there is no protection in
|
||||
place from preventing code filters from being executed again on the same
|
||||
transaction when this is done. See ***DEFINING FILTERS*** below.*
|
||||
|
||||
# CACHE
|
||||
|
||||
When syncing, the hash of a block and transaction matching the address
|
||||
criteria will be stored in the cache. The hashes can be used for future
|
||||
data lookups.
|
||||
|
||||
If **--store-block-data*** and/or ***--store-tx-data*** is set, a copy
|
||||
of the block and/or transaction data will also be stored, respectively.*
|
||||
|
||||
# RENDERING
|
||||
|
||||
Rendering in the context of **eth-monitor*** refers to a formatted
|
||||
output stream that occurs independently of caching and code execution.*
|
||||
|
||||
Filters for rendering may be specified by specifying python modules to
|
||||
the **--renderer*** option. This option may be specified multiple
|
||||
times.*
|
||||
|
||||
Rendering filters will be executed in order, and the first filter to
|
||||
return *False*
|
||||
|
||||
# DEFINING FILTERS
|
||||
|
||||
A python module used for filter must fulfill two conditions:
|
||||
|
||||
> 1\. It must provide a class named *Filter in the package base
|
||||
> namespace.*
|
||||
>
|
||||
> 2\. The *Filter class must include a method named filter with the
|
||||
> signature def filter(self, conn, block, tx, db_session=None). *
|
||||
|
||||
Filters will strictly be executed in the order which they are defined on
|
||||
the command line.
|
||||
|
||||
# FURTHER READING
|
||||
|
||||
Refer to the **chainsyncer*** chapter n info chaintool for in-depth
|
||||
information on the subjects of syncing and filtering.*
|
||||
|
||||
# ENVIRONMENT
|
||||
|
||||
*CHAIN_SPEC*
|
||||
String specifying the type of chain connected to, in the format
|
||||
*\<engine\>:\<fork\>:\<network_id\>:\<common_name\>. For EVM nodes the
|
||||
engine value will always be evm.*
|
||||
|
||||
*RPC_DIALECT*
|
||||
Enables translations of EVM node specific formatting and response codes.
|
||||
|
||||
*RPC_PROVIDER*
|
||||
Fully-qualified URL to the RPC endpoint of the blockchain node.
|
||||
|
||||
# LICENSE
|
||||
|
||||
This documentation and its source is licensed under the Creative Commons
|
||||
Attribution-Sharealike 4.0 International license.
|
||||
|
||||
The source code of the tool this documentation describes is licensed
|
||||
under the GNU General Public License 3.0.
|
||||
|
||||
# COPYRIGHT
|
||||
|
||||
Louis Holbrook \<dev@holbrook.no\> (https://holbrook.no) PGP:
|
||||
59A844A484AC11253D3A3E9DCDCBD24DD1D0E001
|
||||
|
||||
# SOURCE CODE
|
||||
|
||||
https://git.defalsify.org
|
@ -1,6 +1,6 @@
|
||||
[metadata]
|
||||
name = eth-monitor
|
||||
version = 0.7.4
|
||||
version = 0.7.5
|
||||
description = Monitor and cache transactions using match filters
|
||||
author = Louis Holbrook
|
||||
author_email = dev@holbrook.no
|
||||
|
6
setup.py
6
setup.py
@ -21,6 +21,10 @@ while True:
|
||||
test_requirements.append(l.rstrip())
|
||||
f.close()
|
||||
|
||||
f = open('README.md', 'r')
|
||||
description = f.read()
|
||||
f.close()
|
||||
|
||||
man_dir = 'man/build'
|
||||
setup(
|
||||
install_requires=requirements,
|
||||
@ -30,4 +34,6 @@ setup(
|
||||
os.path.join(man_dir, 'eth-monitor-sync.1'),
|
||||
]
|
||||
)],
|
||||
long_description=description,
|
||||
long_description_content_type='text/markdown',
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user