f65562e2e4
refactor(sync): remove require_tip ( #528 )
...
`require_tip` could only be determined by the headers stage,
and it signalled that we have all of the headers to sync all
the way to the chain tip. Some stages may wait to execute
until the tip is reached, e.g. the stage that checks the
stage root, but there are a few problems:
- On initial sync, `reached_tip` would be `true`, but by
the time we reach the hashing stage, this would actually
no longer be the case: the other stages have spent
enough time for us to be "out of sync". This means
that the optimization here is lost, and the additional
logic is added for nothing.
- When we are not doing our initial sync, `reached_tip` would
always be `true` for each subsequent block we sync.
The same logic applies as above, i.e. the extra logic
is there for nothing.
In other words, `reached_tip` would *always* be `true` once
we leave the header stage, making the extra logic entirely
redundant.
2022-12-19 22:04:42 +01:00
13bb41517d
feat: config ( #496 )
...
* feat: default reth dirs
* docs: clarify txpool config docs
* feat: `serde` feature for `reth-consensus`
* feat: add missing hardforks
* feat: full chain specification
* feat: `DbPath` type
* feat: custom chain specs
* feat: `--debug.tip` option
* feat: basic stage config
* fix: resize db geometry
* refactor: don't commit in headers stage
* chore: remove headers dl timeout
* feat: loading of config
* refactor(config): `stage` -> `stages`
2022-12-19 21:27:26 +01:00
516d744bdd
test: run geth tests in serial ( #527 )
2022-12-19 19:12:14 +01:00
a2849cd81e
chore(net): improve ecies error for unreadable stream ( #514 )
...
* chore(net): improve ecies error for unreadable stream
* Update crates/net/ecies/src/error.rs
Co-authored-by: Bjerg <onbjerg@users.noreply.github.com >
Co-authored-by: Bjerg <onbjerg@users.noreply.github.com >
2022-12-19 19:07:19 +01:00
8a63ef4025
chore: remove unnecessary step ( #525 )
2022-12-19 18:59:47 +01:00
6a36a6a58c
chore(sync): remove unused timeout from LinearDownloadBuilder ( #524 )
...
* chore(sync): remove timeout from linear download builder
* rm unused import
2022-12-19 18:40:45 +01:00
40579bf233
test: decrease test timeout for keep alive ( #523 )
2022-12-19 18:03:50 +01:00
e713b0c015
fix(net): poll after starting disconnect ( #522 )
2022-12-19 18:03:36 +01:00
aac078a132
fix(net): add already connected check ( #521 )
...
* fix(net): add already connected check
* fix: get events before adding peer
2022-12-19 18:03:10 +01:00
5758c297b3
fix(eth-wire): fix disconnect reason rlp decoding ( #502 )
...
* add trace in DisconnectReason Decodable impl
* add trace for decoding p2p hello
* add traces to p2p and eth stream
* refactor P2PMessage decoding
* improve disconnect tracing
* s/Hello/first
* add geth disconnect test
* add disconnectreason test cases
* add known failing disconnect messages
* add trace when disconnect reason decoding fails
* cargo fmt
* add more examples
* adding more as they appear in traces
* will add the rest since they can be exhaustively enumerated
* add every other possible encoding
* fix disconnect decoding
* the four possible formats for a disconnect message (rlp list (y/n) x
snappy (y/n)):
* encoded as a single rlp byte
* with snappy
* without snappy
* encoded as a rlp list
* with snappy
* without snappy
* fix the type for decoding in the test_decode_known_reasons test
* sort reasons by length in test
* remove printlns
* use one call to advance
* simplify decode impl to strip last byte
* todo: comment explaining the different formats being parsed?
* explicitly remove geth as a peer
* style: traces
* add another disconnect code from geth
* fix: add check for DisconnectRequested
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de >
2022-12-19 11:19:08 -05:00
f8b719e04c
refactor(disc): use KBucekt entry API ( #518 )
...
* refactor(disc): use entry API
* refactor(disc): cleanup
* chore: rustfmt
2022-12-19 16:54:03 +01:00
dc85695d0d
fix(net): set disconnect status ( #520 )
2022-12-19 16:22:55 +01:00
a5f01238b9
feat(net): allow disconnect with reason ( #519 )
2022-12-19 16:22:24 +01:00
c1a863d067
test(download): header downloader request attempts & remove duplicates ( #517 )
...
* test(download): header downloader request attempts
* fix comment
2022-12-19 16:18:38 +01:00
1dca4b58df
test(sync): sender recovery single tx ( #516 )
2022-12-19 16:08:07 +01:00
bdec2357d2
fix: properly convert unknown error codes ( #510 )
2022-12-19 11:31:18 +02:00
e62b1cca10
meta(license): add years and authors ( #512 )
2022-12-19 10:54:21 +02:00
bffc829bcb
perf(net): increase udp channel buffers ( #508 )
...
* perf(net): increase channel buffers
* Update crates/net/discv4/src/config.rs
Co-authored-by: Bjerg <onbjerg@users.noreply.github.com >
Co-authored-by: Bjerg <onbjerg@users.noreply.github.com >
2022-12-18 15:22:19 +01:00
ddc78ef733
chore(deps): bump ethers ( #507 )
2022-12-18 15:09:43 +02:00
1e8098cd30
chore: add self to codeowners for all pkgs
2022-12-18 14:22:41 +02:00
75fb90be9a
refactor: move metrics endpoint to node cmd ( #505 )
...
* refactor: move metrics endpoint to node cmd
* feat: value names
* refactor: simplify db path parsing
2022-12-18 13:57:37 +02:00
2b06d43465
chore: add codeowners ( #504 )
...
* chore: add codeowners
* chore: add @onbjerg as owner of `bin`
2022-12-18 00:26:43 +01:00
253aae5ea9
RLP decoding error tracing ( #499 )
...
* Add tracing to ProtocolMessage::decode errors
* Change trace message formatting
Now it prints the bytes as a hex string.
Also changed trace level to WARN and added 'handshake' to one of the traces to differentiate between them
* Add prefix to raw message bytes
* Specify 'eth' in trace message
to differentiate it from other handshakes
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com >
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com >
2022-12-16 20:57:48 -05:00
0a4bf67c32
chore: complete StageDB -> Transaction renaming ( #497 )
2022-12-16 23:16:31 +01:00
4da574df84
feat: add prometheus support ( #474 )
2022-12-16 20:21:26 +01:00
c1f124d3e3
feat(net): temporarily ban bad peers ( #492 )
...
* feat(net): temporarily ban bad peers
* use half duration interval
* Update crates/net/network/src/peers/manager.rs
Co-authored-by: Bjerg <onbjerg@users.noreply.github.com >
* fix bad test
Co-authored-by: Bjerg <onbjerg@users.noreply.github.com >
2022-12-16 18:22:25 +01:00
3989d5d3e0
feat: add more tables to db list ( #491 )
...
* feat: add more tables to db list
* feat: table macro for db command
* feat: lowercase table arg in db cmd
* chore: fix some rustdocs
2022-12-16 18:00:15 +01:00
daaf039fbf
feat(sync): state transition indexes ( #449 )
...
* introduce state transitions and revert/modify block bodies table
* init refactor
* revamp transaction iteration based on bodies and add state transition mappings
* change expected return on empty db execution
* interim commit
* fix body downloader & stage
* refactor(bodies/dl): make fetch bodies fn more clear
* chore: disable unused vars/fns temporarily until exec is back
* chore: fmt
* test: fix tests
* use transitions in execution stage
* clarify empty unwind test
* remove last_tx_index fn
* rename fn and var names
* fix full block response comment
* rename fetcher`s get_block_body to get_block_bodies
* Update crates/stages/src/db.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* fmt
* fix index overlap check error
* uncomment eth chain command
* fix doc comment
* typos
* cleanup
* any_last_tx_index -> last_tx_index
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
Co-authored-by: Oliver Nordbjerg <hi@notbjerg.me >
2022-12-16 08:37:49 -08:00
345b2c35b9
fix: apply reputation ( #487 )
...
* fix: apply reputation
* add note
2022-12-16 13:36:58 +01:00
635203759b
feat(discv4): support eth entries ( #447 )
...
* add ENRRequest and ENRResponse messages
* todo: encode and decode impls
* scaffold enrrequest and enrresponse msgs
* implement encodable and decodable for enr
* cargo fmt
* impl sending enr requests
* silence clippy for now
* add todos for enrrequest and response in mocks
* make payload length fold more explicit
* feat: add enr support to ping pong
* integrate enr
* add update methods
* add enr handling
* feat: add enr handling
* integrate fork id
* fix: set frontier forkid
* disable eip868 by default
* address comments
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de >
2022-12-16 14:14:19 +02:00
864e6481da
fix: set forkfilter correctly ( #486 )
...
* fix: set forkfilter correctly
* fix types
* update tests
2022-12-16 14:14:07 +02:00
8e4a35ae31
chore: clean up traces ( #481 )
...
* chore: clean up traces
* fix: typo in error
2022-12-16 11:24:46 +02:00
ca204a346d
chore: use later block ( #480 )
...
The block we chose for testing sync previously did not include
any transactions.
2022-12-16 11:18:27 +02:00
617ae3604d
feat(doc): Changeid table design ( #430 )
...
* Table design
* v2
* v3
* Update database.md
* Update docs/design/database.md
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
2022-12-16 10:20:43 +02:00
e9ec6c2847
fix(sync): remove redundant error ( #476 )
2022-12-16 10:08:49 +02:00
6a70494612
fix(net): use frontier forkid as default ( #478 )
2022-12-16 10:08:16 +02:00
f89fb4b453
fix(sync): database integrity header error message ( #475 )
2022-12-15 23:00:56 +01:00
b1ce398dff
feat(net): add Status to session established event ( #473 )
2022-12-15 22:37:03 +01:00
2b0f5316f9
fix(sync): headers stage progress ( #467 )
...
* fix(sync): headers stage progress
* add tests to head/tip and split suite
* fix(sync): headers stage progress
* add tests to head/tip and split suite
* fix local tip and address comments
* rename error
2022-12-15 10:41:32 -08:00
789dc3bc87
feat: request multiple bodies per request ( #468 )
2022-12-15 18:39:47 +01:00
9cd5824f35
chore: rename StageDB to Transaction ( #470 )
...
* chore: rename StageDB to Transaction
* chore: cargo fmt
* chore: add note about potentially removing this in the future
2022-12-15 18:14:14 +02:00
c10bdb5830
feat: add flag for displaying log target ( #469 )
2022-12-15 18:08:29 +02:00
6e577c6e5f
feat(net): request peer by id through PeersHandle ( #464 )
2022-12-15 17:10:21 +02:00
f509213cb4
refactor: clean up reth node ( #450 )
...
* feat: parse genesis block from a json spec
* refactor: clean up `init_genesis`
2022-12-15 17:09:31 +02:00
9208f2fd9b
test(execution): execution test runner ( #426 )
...
* wip run chain test
* dump pre test state
* bug: fix casting to revm spec
* wip move execution to std thread
* wip scoped thread execution
* fmt clippy
* Update crates/stages/src/stages/execution.rs
* Update bin/reth/Cargo.toml
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* Update bin/reth/src/test_eth_chain/models.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* Correct models for chain tests
Co-authored-by: rakita <dragan0rakita@gmail.com >
Co-authored-by: rakita <rakita@users.noreply.github.com >
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
2022-12-15 13:39:55 +01:00
4c298ac022
docs: macos install steps ( #460 )
...
* Add MacOS installatin docs
* move installatio instruction to book
* move installatio instruction to book
* fix installation link in readme
* Remove installation link from docs, add link to installation in book summary
Co-authored-by: Satoshi Okamoto <satoshi@butcher73.com >
2022-12-15 12:55:59 +01:00
48fadbdf2e
fix: missing import
2022-12-15 13:53:20 +02:00
f8b4251886
feat: don't stop the pipeline on internal stage errs ( #453 )
...
* feat: don't stop the pipeline on internal stage errs
* test: add tests for pipeline err handling
* chore: few notes
* refactor: stage error fatal/recoverable variants
* refactor: use recoverable errors in headers stage
* test: adjust tests
* chore: nits
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
2022-12-15 12:48:41 +01:00
9dbf280bfb
docs(net): add bird's eye view docs ( #456 )
2022-12-15 11:36:58 +02:00
22dc50e5f6
feat(sync): download peer penalization ( #427 )
...
* feat(sync): download peer penalization
* peer penalization
* add tracing on penalization
* add trace on request
* rename consensus back
* clippy
* fix tests
* nit: download result
* nit: fix comment
* rename penalize() to report_bad_message() and move DownloadError
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
2022-12-15 10:42:18 +02:00