Commit Graph

1584 Commits

Author SHA1 Message Date
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
c117d4b44f docs(net): add example docs and fix links (#375) 2022-12-10 09:19:25 -08:00
9eebd141b7 chore(txpool): update TransactionPool trait bounds (#376) 2022-12-10 09:16:26 -08:00
e014eaad33 feat(db): Refactor storage libraries (#371) 2022-12-09 23:14:07 -08:00
4318a54f59 feat(net): integrate TaskExecutor (#369) 2022-12-09 09:47:18 -08:00
b0149f0b9f fix(net): prevent bad loop if no peers available (#359)
* fix(net): prevent bad loop if no peers available

* test: add poll fetcher test
2022-12-09 12:39:08 +01:00
2f73345696 misc(net): unify naming (#358) 2022-12-08 09:12:58 -08:00
70635b7282 feat(rpc): add eth_pubsub skeleton (#354) 2022-12-08 13:55:56 +01:00
ba758c5f54 chore(sync): remove timeout from downloader (#356) 2022-12-08 04:53:56 -08:00
4d718bbf33 s/foundry-rs/paradigmxyz 2022-12-07 00:00:45 -08:00
6c91322251 feat(eth-wire): derive serde traits for eth-wire types (#348)
* wip: start adding serde to stuff

* add serde traits to NewBlockHashes

* derive serde traits for the rest of the types

* derive serde traits for p2p subprotocol messages

* cargo fmt
2022-12-06 18:05:22 -08:00
925001e1ee move tokio utils to dev dep (#345) 2022-12-06 18:02:04 -08:00
9628d03871 feat(sync): headers commit threshold (#296)
* headers stream init

* fix tests

* return header if available regardless of control flow

* proper stream termination & docs

* upd headers stage to consume stream

* adjust response validation for stream

* use cursor.insert for headers

* wrap poll_next in a loop to bypass poking waker

* fix typo

* fix last td lookup

* Apply suggestions from code review

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

* misc

* remove waker ref

* dedup response handling logic

* clippy

* add docs to poll

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-12-06 18:02:04 -08:00
4643f840d7 chore(deps): get rid of unused deps (#339) 2022-12-06 18:02:04 -08:00
5e37ef8226 style(net): use pin_project on eceis stream (#338) 2022-12-06 18:02:04 -08:00
0b8d50127c refactor(net): box ecies error (#337) 2022-12-06 18:02:04 -08:00
b40546b999 refactor(net): misc P2Pstream refactor (#336)
* refactor(net): misc P2Pstream refactor

* update note
2022-12-06 18:02:04 -08:00
074e69cafb chore(net): remove unused function (#335) 2022-12-06 18:02:04 -08:00
a4472ca1c6 chore(clippy): make clippy happy (#334) 2022-12-06 18:02:04 -08:00
75879b2027 chore(ecies): remove body size check (#328)
* remove body size check

* cargo fmt
2022-12-06 18:02:04 -08:00
f65969e90f perf(net): exclude bootnodes from update stream (#319) 2022-12-06 18:02:04 -08:00
2b6ef0afcf fix(eth-wire): encode p2p message id as valid rlp (#324) 2022-12-06 18:02:04 -08:00
1668313d55 perf(disc): instantly lookup self in DHT (#314)
* perf(disc): instantly lookup self in DHT

* Update crates/net/discv4/src/lib.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-12-06 18:02:04 -08:00
12212ec91a fix(disc): set trace target correctly (#315) 2022-12-06 18:02:04 -08:00
5300c83a50 feat(net): send full transactions to fraction of all peers (#272)
* refactor(net): use shared objects on a per peer basis

* feat(net): send full transactions to fraction of all peers

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-12-02 04:21:23 -08:00
debc87177c fix(eth-wire): handle 0x80 for DisconnectReason and P2PMessageID (#313)
* fix disconnect reason encoding

* move disconnect to own file

* add encoding test for 0x80 in list

 * rlp([0u8]) is a good test case to have because it is the RLP encoding
   of a DisconnectRequested p2p message

* fix disconnect encoding and decoding

 * directly decode the disconnect id to handle the 0x80 case of
   DisconnectRequested
 * the previous manual snappy encoding / decoding was incorrect - a
   snappy encoded disconnect message is 4 bytes, not 3 bytes. The tests
   and implementation are changed to reflect this.

* fix p2p message decoding

 * had a similar issue to disconnect reason decoding where it would not
   handle a 0x80 message id

* make invalid rlp header case more explicit

* cargo fmt
2022-12-02 04:21:00 -08:00
04105ec82b test: add mainnet connection test (#306) 2022-12-01 17:59:52 +01:00
a0c35f1f48 refactor: replace reverse with HeadersDirection (#305) 2022-12-01 17:59:33 +01:00
3355b0c605 test(net): add e2e request body test (#304)
* test(net): add e2e request body test

* test(net): add e2e request header test
2022-12-01 15:35:14 +01:00
480097a7ca feat(net): add eth request handler (#293)
* feat(net): add block request manager

* refactor: change ommers type to Header

* feat: impl handlers

* rename to EthRequestHandler

* impl checks

* fix: skip as step

* chore: rustfmt
2022-11-30 21:19:50 +01:00
7879389059 chore(net): deny unused and cleanup (#289) 2022-11-29 20:57:40 +01:00