mirror of
git://holbrook.no/eth-monitor.git
synced 2024-11-21 12:06:45 +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
|
- 0.7.3
|
||||||
* Upgrade deps
|
* Upgrade deps
|
||||||
- 0.7.2
|
- 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]
|
[metadata]
|
||||||
name = eth-monitor
|
name = eth-monitor
|
||||||
version = 0.7.4
|
version = 0.7.5
|
||||||
description = Monitor and cache transactions using match filters
|
description = Monitor and cache transactions using match filters
|
||||||
author = Louis Holbrook
|
author = Louis Holbrook
|
||||||
author_email = dev@holbrook.no
|
author_email = dev@holbrook.no
|
||||||
|
6
setup.py
6
setup.py
@ -21,6 +21,10 @@ while True:
|
|||||||
test_requirements.append(l.rstrip())
|
test_requirements.append(l.rstrip())
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
f = open('README.md', 'r')
|
||||||
|
description = f.read()
|
||||||
|
f.close()
|
||||||
|
|
||||||
man_dir = 'man/build'
|
man_dir = 'man/build'
|
||||||
setup(
|
setup(
|
||||||
install_requires=requirements,
|
install_requires=requirements,
|
||||||
@ -30,4 +34,6 @@ setup(
|
|||||||
os.path.join(man_dir, 'eth-monitor-sync.1'),
|
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