bd9896bf4b
This request implements the insertion of Bor ephemeral transactions into snapshot indexes. I does this by taking the block hash from the header index and passing it to the transaction indexer to add an additional index entry per block into the transaction hash -> block index. The passed entries are currently contained in an in memory array which is (32 * number of blocks / sprint size) bytes. In addition to the functional code there is also an update to the `dump_test.go` so that it runs `DumpBlocks` to exercise the indexing code. To facilitate this the `InsertChain` method in `mock_sentry` has been modified so that it can process >128 blocks. The code in this request also includes additional bor/consensus code with the following functions: `CalculateSprint` `CalculateSprintCount` The first function is a modification of the code in erigon-lib so that the sprints are numerically rather than lexically ordered. This code should be migrated to erigon-lib and should have its sprint set calculated once from its underlying map rather than this process being repeated every calculation. --------- Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro-2.local> Co-authored-by: ledgerwatch <akhounov@gmail.com> Co-authored-by: Enrique Jose Avila Asapche <eavilaasapche@gmail.com> Co-authored-by: Giulio <giulio.rebuffo@gmail.com> |
||
---|---|---|
.. | ||
sentry | ||
main.go | ||
README.md |
Sentry - component to
In the root of Erigon
project, use this command to build the sentry:
make sentry
There are two modes in which the program can be run - with external p2p sentry, or with internal p2p sentry (also called combined). Ethereum mainnet configuration is currently hard-coded.
Running with an external p2p sentry
./buid/bin/sentry
./buid/bin/sentry --datadir=<sentry_datadir>
The command above specifies --datadir
option - directory where the database files will be written (it doesn't need access to Erion's datadir). These two options
will need to be specified regardless of the mode the program is run. This specific command above assumes and external
p2p sentry running on the same computer listening to the port 9091
. In order to use a p2p sentry on a different
computer, or a different port (or both), the option --sentry.api.addr
can be used. For example:
./buid/bin/sentry --datadir=<sentry1_datadir> --sentry.api.addr=localhost:9091
./buid/bin/sentry --datadir=<sentry2_datadir> --sentry.api.addr=localhost:9191
./build/bin/erigon --sentry.api.addr="localhost:9091,localhost:9191"
The command above will expect the p2p sentry running on the same computer, but on the port 9091
Options --nat
, --port
, --staticpeers
, --netrestrict
, --discovery
are also available.
We are currently testing against two implementations of the p2p sentry - one internal to Erigon
, and another - written
in Rust as a part of rust-ethereum
: https://github.com/rust-ethereum/sentry
In order to run the internal sentry, use the following command: