Commit Graph

424 Commits

Author SHA1 Message Date
Matthias Seitz
b2abcddeda fix(net): temporarily backoff busy peers (#548)
* fix(net): temporarily backoff busy peers

* chore: rustfmt
2022-12-20 22:19:06 +01:00
Bjerg
ed4213fdff ci: speed up fuzz tests (#544)
* ci: run fuzz tests in matrix

* ci: fail if fuzzing fails

* ci: rename fuzz step

* ci: clean up env

* ci: fix fuzz test target matching

* ci: prebuild fuzz corpus

* ci: collect coverage while running tests

Instead of running tests twice, we can just run them
once while collecting coverage data.

* ci: temporarily disable `reth-eth-wire` fuzzing

* ci: collect fuzz coverage data

* ci: fix fuzz coverage collection

* ci: re-enable `reth-eth-wire`
2022-12-20 22:18:53 +01:00
Dan Cline
21564b43a2 feat(eth-wire): enforce test-fuzz traits pre-fuzz (#545)
* directs types we generate fuzz tests for to a method that is more
   restrictive in the traits each input type should implement, so if any
   type does not implement the test-fuzz required traits it will fail to
   compile instead of fail to autogenerate a fuzz test at runtime.
2022-12-20 20:32:17 +01:00
Tomás
2dc5b80ef0 feat: verbose flag (#541) 2022-12-20 18:41:04 +01:00
Matthias Seitz
7184e4df3f fix(net): ban peer on fatal error (#543) 2022-12-20 18:04:33 +01:00
Matthias Seitz
63406d5a6d perf(net): put timeout check behind interval (#537) 2022-12-20 18:02:35 +01:00
Matthias Seitz
f5c9064b44 test(net): add e2e test for already connected (#538) 2022-12-20 18:02:16 +01:00
Matthias Seitz
7a13cf6688 feat(net): add ForkTransition type (#542) 2022-12-20 18:01:54 +01:00
Matthias Seitz
80b34a961e chore: rm some clippy lints (#540) 2022-12-20 15:25:32 +01:00
Matthias Seitz
c2ad7b1b06 chore(disc): unify duration settings and naming (#539) 2022-12-20 13:35:22 +01:00
Dan Cline
aab385c84a feat(eth-wire): RLP encode then compress (#535) 2022-12-20 14:33:47 +02:00
Matthias Seitz
3df86187d1 chore(deps): remove discv5 fork dep (#536)
* chore(deps): remove discv5 fork dep

* bump deps
2022-12-20 12:13:51 +01:00
Roman Krasiuk
0995ac2777 meta(sync): tracing (#455)
* meta(sync): tracing

* Apply suggestions from code review

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* apply comments

* upd discv5 dep

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>
2022-12-20 03:00:59 -08:00
Roman Krasiuk
c68a850c70 chore(db): modify state transition docs (#515) 2022-12-20 11:31:23 +02:00
Bjerg
82cd84eca7 test: fix emits_bodies_in_order test (#534)
* feat(test-utils): make body tx count configurable

* test: fix `emits_bodies_in_order` test
2022-12-20 01:29:04 +01:00
Matthias Seitz
5c1f97cbf7 test: create events handler before interacting with network mngr (#532) 2022-12-20 00:38:23 +01:00
Dan Cline
fc11443b97 feat(net): create enr to peerid helper (#533)
* set network enr dev-dep to 0.7.0 instead of git - ethers and each
   other crate uses 0.7.0 and not git
2022-12-19 18:32:19 -05:00
Dan Cline
c53b2bcccb feat(net): use NodeRecord instead of enode format (#530)
* feat(eth-wire): add timeouts to tests using Geth

* feat(net): use NodeRecord instead of enode format

 * make NodeRecord::new pub instead of pub(crate)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-19 17:57:02 -05:00
Dan Cline
ac1c0419d2 feat(eth-wire): add timeouts to tests using Geth (#529) 2022-12-19 23:35:06 +01:00
Matthias Seitz
3db7455eca fix(net): fix disconnect edge case on remove from discovery (#479)
* fix(net): fix disconnect edge case on remove from discovery

* test: add disconnect test
2022-12-19 22:27:01 +01:00
Bjerg
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
Bjerg
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
Matthias Seitz
516d744bdd test: run geth tests in serial (#527) 2022-12-19 19:12:14 +01:00
Matthias Seitz
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
Bjerg
8a63ef4025 chore: remove unnecessary step (#525) 2022-12-19 18:59:47 +01:00
Roman Krasiuk
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
Matthias Seitz
40579bf233 test: decrease test timeout for keep alive (#523) 2022-12-19 18:03:50 +01:00
Matthias Seitz
e713b0c015 fix(net): poll after starting disconnect (#522) 2022-12-19 18:03:36 +01:00
Matthias Seitz
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
Dan Cline
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
Matthias Seitz
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
Matthias Seitz
dc85695d0d fix(net): set disconnect status (#520) 2022-12-19 16:22:55 +01:00
Matthias Seitz
a5f01238b9 feat(net): allow disconnect with reason (#519) 2022-12-19 16:22:24 +01:00
Roman Krasiuk
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
Roman Krasiuk
1dca4b58df test(sync): sender recovery single tx (#516) 2022-12-19 16:08:07 +01:00
Bjerg
bdec2357d2 fix: properly convert unknown error codes (#510) 2022-12-19 11:31:18 +02:00
Michael Sproul
e62b1cca10 meta(license): add years and authors (#512) 2022-12-19 10:54:21 +02:00
Matthias Seitz
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
Matthias Seitz
ddc78ef733 chore(deps): bump ethers (#507) 2022-12-18 15:09:43 +02:00
Georgios Konstantopoulos
1e8098cd30 chore: add self to codeowners for all pkgs 2022-12-18 14:22:41 +02:00
Bjerg
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
Bjerg
2b06d43465 chore: add codeowners (#504)
* chore: add codeowners

* chore: add @onbjerg as owner of `bin`
2022-12-18 00:26:43 +01:00
Tomás
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
0xYami
0a4bf67c32 chore: complete StageDB -> Transaction renaming (#497) 2022-12-16 23:16:31 +01:00
Mariano A. Nicolini
4da574df84 feat: add prometheus support (#474) 2022-12-16 20:21:26 +01:00
Matthias Seitz
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
Bjerg
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
Roman Krasiuk
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
Matthias Seitz
345b2c35b9 fix: apply reputation (#487)
* fix: apply reputation

* add note
2022-12-16 13:36:58 +01:00
Dan Cline
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