Commit Graph

447 Commits

Author SHA1 Message Date
Oliver Nordbjerg
affead471d ci: fix sanity job 2022-12-23 12:30:06 +01:00
Bjerg
9e2ef7e48c ci: add sanity check workflow (#588)
* ci: add sanity check workflow

Adds a workflow that performs on-demand and scheduled
checks to ensure reth crates are consumeable.

* chore: adjust issue template

* ci: rename sanity check job
2022-12-23 12:27:19 +01:00
Matthias Seitz
cb58759e66 feat(net): validate discovered enr forkid (#586) 2022-12-23 12:15:07 +01:00
mempirate
e549b29cce feat(net): increase session command buffer (#585)
* refactor: unnecessary return

* feat: increase session command buffer to 32
2022-12-23 11:24:04 +01:00
Matthias Seitz
ecbbb8835c docs(txpool): clarify validate_transaction (#582) 2022-12-23 05:43:13 +01:00
Sanket Shanbhag
c9958a4d13 Remove unwind priority. (#577)
* Remove unwind_priority from QueuedStage

* Remove unnecessary test for unwind_priority

* Update pipeline.rs based on code review
2022-12-22 07:15:07 -08:00
Mariano A. Nicolini
b12939db47 feat: add stagedsync headers metrics (#498)
* add dockerfile for reth

* Add docker compose for prometheus

* Add some metrics

* Add p2p connection errors metric

* Add dependency caching for dockerfile

This reduces image build times by ~50% after the first one.

Uses cargo-chef inside the image.
More info in: https://morioh.com/p/987a2bda4526

* Add --metrics flag to docker-compose config file

* add Cargo.lock

* Move docker-compose.yml to docker directory

* Apply formatting

* Remove docker folder

* Remove .dockerignore file

* Add 'reth' prefix to metric names

* Add headers errors and request time metrics

* Modularize metrics exporter functionality and describe metrics

* Format files

* Add metrics documentation in metrics.md

* Fix metrics doc title

* Commit changes after rebase

* Solve conflict

* Modularize metrics describers

* Add stages_metrics_describer

* Rearrange header error metrics

* Add update_headers_metrics function

* Add one-line docs to describers

* Remove commented line

* Refactor metrics describer

* Update metrics doc

* Fix import

* Add header metrics struct

* add new metrics format in the headers execute method

* Add default implementation for HeaderMetrics

* Fix typo

* Fix another typo

* Fix more typos

* Move new HeaderMetrics meathod to default

* Solve conflicts

* Fix test

Co-authored-by: Tomás <tomas.gruner@lambdaclass.com>
2022-12-22 15:45:57 +01:00
Matthias Seitz
7ce22fd186 fix: SealedBlock rename (#583) 2022-12-22 15:19:40 +01:00
Satoshi Okamoto
4b18eb8467 Update the document by adding information on how to install Geth and Lighthouse. (#568)
* Update the document by adding information on how to install Geth and Lighthouse.

* Include links to the installation pages for Geth and Lighthouse in the document.

* Change the link to the installation documentation to point to the Geth installation documentation at this link: https://geth.ethereum.org/docs/install-and-build/installing-geth.

Co-authored-by: Satoshi Okamoto <satoshi@butcher73.com>
2022-12-22 14:49:48 +02:00
Genysys
0b1b5368e6 chore: Rename BlockLocked to SealedBlock (#573)
* chore: Rename BlockLocked to SealedBlock

* chore: fmt

Co-authored-by: Genysys <112424909+samtvlabs@users.noreply.github.com>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-12-22 14:45:36 +02:00
Roman Krasiuk
a85793cd9b feat(rpc): basic engine api (#551)
* feat(rpc): engine api

* change transition config exchange

* payload block construction

* pull out engine api logic

* linter

* clippy

* clippy

* Apply suggestions from code review

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* import & map_err for RecvError

* move result

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-22 12:38:28 +01:00
Bjerg
6f6c4f61e0 refactor: rename EthConsensus (#572)
Closes #566
2022-12-22 12:05:49 +01:00
Roman Krasiuk
8f40c8bb93 chore(docs): update engine api links (#576) 2022-12-22 11:41:31 +01:00
DaniPopes
c070e77524 chore(primitives): Update keccak256 implementation (#563)
* chore(primitives): Update keccak256 implementation

* chore(primitives): Update keccak256 implementation

* revert BytesMut

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-21 21:22:18 +01:00
Matthias Seitz
c2ed3b2b52 feat(rpc): add some bindings for admin namespace (#561) 2022-12-21 15:43:58 +01:00
Roman Krasiuk
82197d08c6 fix(consensus): block reward check (#556) 2022-12-21 15:45:51 +02:00
Matthias Seitz
1400e51495 chore(net): add more active session traces (#557)
* chore(net): add more active session traces

* Update crates/net/network/src/session/active.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-12-21 15:44:39 +02:00
Georgios Konstantopoulos
0864193031 ci: disable fuzzing jobs (#559) 2022-12-21 15:41:28 +02:00
Matthias Seitz
d84eb9d93c fix(net): add capacity check on ping (#558) 2022-12-21 15:41:14 +02:00
Roman Krasiuk
276be27310 chore(sync): rename senders stage (#554) 2022-12-21 05:34:18 -08:00
Matthias Seitz
151420df58 fix(net): encode ping pong as snappy (#555) 2022-12-21 15:24:41 +02:00
Matthias Seitz
f3c79ff61c chore(deps): bump rustversion (#553) 2022-12-21 12:03:09 +02:00
Sanket Shanbhag
d926c75da2 Sync project layout docs (#550) 2022-12-21 11:17:14 +02:00
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