Commit Graph

164 Commits

Author SHA1 Message Date
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
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
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
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
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
6a70494612 fix(net): use frontier forkid as default (#478) 2022-12-16 10:08:16 +02: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
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
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
f2707d32b5 fix(net): kick useless peers (#451) 2022-12-15 10:04:22 +02:00
c23c65fc3b feat(net): draft for sending status updates through NetworkHandle (#436)
* feat(net): draft for sending status updates through `NetworkHandle`

* feat(net): draft for sending status updates through `NetworkHandle`

* fix(net): remove unused import

* feat(net): implement getters for status update sender half

* docs(net): document methods

* chore: cargo fmt

* feat(net): move status updating logic to NetworkManager and NetworkHandle

* feat(net): move status updating logic to NetworkManager and NetworkHandle

* fix(net): fix headers stage testing

* fix: derive default

* fix: remove StatusUpdate struct

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-15 08:59:28 +01:00
43f6bb9127 feat(net): integrate discovery banlist (#442)
* feat(net): integrate discovery banlist

* fix typos
2022-12-14 19:47:11 +02:00
c2719ec27e chore(deps): bump secp256k1 from 0.24.1 to 0.24.2 (#440)
Bumps [secp256k1](https://github.com/rust-bitcoin/rust-secp256k1) from 0.24.1 to 0.24.2.
- [Release notes](https://github.com/rust-bitcoin/rust-secp256k1/releases)
- [Changelog](https://github.com/rust-bitcoin/rust-secp256k1/blob/secp256k1-0.24.2/CHANGELOG.md)
- [Commits](https://github.com/rust-bitcoin/rust-secp256k1/compare/secp256k1-0.24.1...secp256k1-0.24.2)

---
updated-dependencies:
- dependency-name: secp256k1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-14 16:40:16 +02:00
4430089b71 fix(download): header download stream (#438)
* fix(downloader): rewrite header stream

* rm unused import

* add comment

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-12-14 16:38:10 +02:00
35a41a29f9 style: unify slice access and bytes (#437) 2022-12-14 16:26:08 +02:00
d5d876b286 fix(headers-stage): do not exit stage on downloader error (#439)
* fix: return ctrl to pipeline on header dl error

* chore: adjust log levels

* ecies: improve tag check error granularity

* chore: instrument read_ack/read_auth

Co-authored-by: Oliver Nordbjerg <hi@notbjerg.me>
2022-12-14 16:25:54 +02:00
83c89a85e9 Add additional logs for P2P debugging (#434)
* feat: make logs on network manager more granular

* feat: log error on session disconnect

* temp: manual peer

* temp: manual peer

* feat(linear-dl): make BadResponse error more descriptive

* feat(linear-dl): log retries on future

* chore: add target

* chore: add target

* chore: remove unused var

* chore: remove manual peer override

Co-authored-by: Oliver Nordbjerg <hi@notbjerg.me>
2022-12-14 13:53:49 +02:00
9946f232a7 chore(net): improve session error traces (#435) 2022-12-14 13:48:28 +02:00
601bdc5022 feat: wire components together in reth node (#416)
* feat: naively wire up components

* chore: clippy lints

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-12-14 12:51:56 +02:00
12e7f0acbc feat(net): make Status and Hello configurable (#431)
* feat(net): make Status and Hello configurable

* set port
2022-12-14 11:39:09 +01:00
ac5efc0749 fix(download): stream loop (#433) 2022-12-14 11:39:02 +01:00
500f98c9a3 fix(net): use adjust correct counters (#429) 2022-12-14 10:55:26 +02:00
cbbdac2701 chore(disc): log channel errors (#428) 2022-12-14 09:06:16 +01:00
10d960c5d6 refactor(disc): use discv4 as log target (#423) 2022-12-13 21:56:20 +01:00
24bc633bbd feat(net): add NetworkBuilder type (#421) 2022-12-13 21:38:12 +01:00
2537f14567 feat(network): add geth connection test (#352)
* wip: geth connection test

* set port until disabling discovery sets port

 * ignore test until it is complete

* check that first geth event is SessionEstablished

 * fix endpoint string for the geth instance

* force an incoming connection

 * we should also test establishing a session on an outgoing connections

* use NetworkEventStream helper in connect test

* create outgoing test

* make geth tests use different ports and datadirs

* update geth options

* cargo fmt

* s/geth_socket/reth_socket

* cargo fmt

* fix disc port collisions and re-add incoming test

 * should add test utilities for getting unused disc/p2p ports

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-13 14:29:44 -05:00
02be8121e0 fix(disc): also emit discovered node when buckets are full (#414) 2022-12-13 19:53:53 +02:00
8e5e7ff5b6 fix(net): improve dropped connection handling (#412) 2022-12-13 19:26:48 +02:00
95d99c4317 chore(disc): update discv5 and tracing (#408)
* chore(disc): update discv5 and tracing

* ignore
2022-12-13 19:12:59 +02:00
1e38ffa5ad feat(eth-wire): fuzzing wire encoding roundtrip (#350)
* move hello to separate file

* cargo fmt

* wip: actual fuzz test

 * should probably also take advantage of test-fuzz to generate
   benchmarks like impl_fuzzer_with_input

* impl generic roundtrip method

* generate test with macro

* change testname to fuzzname

* add reth-eth-wire to fuzz in ci

* add other message types to fuzz

* remove unused_crate_dependencies

 * was causing test issues, may want to revisit whether or not we can
   include this warning and still use test_fuzz

* more afl debugging ci

* use more explicit imports in fuzz_rlp

* impl Default for types and fuzz ping/pong

 * Default is necessary for test-fuzz to auto generate a corpus for each
   type we are fuzz testing

* enable AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES

 * not sure if we should do this in the workflow instead:
   echo core >/proc/sys/kernel/core_pattern

   we may miss crashes if we keep this enabled?

* remove reth-interfaces from fuzzing

* add secp256k1 to reth-db dev deps
2022-12-13 19:10:52 +02:00
5057e8ec0a feat(p2p): refactor downloaders and add peer id to the result (#410)
* feat(p2p): refactor downloaders and add peer id to the result

* rm unused import

* fix tests

* clean up deps

* Update crates/interfaces/src/p2p/error.rs

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

* add split fn

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-13 17:14:45 +01:00
aeca7ddaab fix(eth-wire): remove inaccurate status doc (#396) 2022-12-13 08:33:22 +01:00
705e6f79dc feat(p2p): remove p2p crate (#397) 2022-12-13 08:28:38 +01:00
6aa2daee0f fix(net): outgoing requsts (#398)
* remove inpossible case

* fix(net): outgoing requests stopping
2022-12-13 08:25:41 +01:00
2534aa85ac feat(rpc): net namespace (#363)
* feat(rpc): net namespace

* add network_id field to debug

* is_listening flag & peer count as hex

* eth api trait

* fix errors

* Update crates/net/rpc/src/net/mod.rs

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

* add trait bounds directly

* fmt

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-12 19:53:56 +02:00
452a81e0d3 feat(net): expose message module (#390)
* feat(net): expose message module

* feat(net): expose `PeerRequest`, allow missing docs
2022-12-12 18:34:54 +02:00
db7608e3b5 feat(net): expose config settings (#386)
* expose transaction origin

* feat(net): fill peer config builder
2022-12-12 18:29:20 +02:00
da5545157a feat(disc): support discport query and add display impl (#385)
* feat(disc): support discport query and add display impl

* chore: rustfmt
2022-12-12 01:08:32 +01:00
fecdc3f0f2 feat(net): add peer_id/ip blacklist (#366) 2022-12-11 02:05:07 -08:00