Commit Graph

1584 Commits

Author SHA1 Message Date
65bc3cb7b8 RPC Admin namespace implementation (#685)
* AdminApi first draft

* Implement add_trusted_peer and remove_trusted_peer

* Fix tests

* Refactoring NetworkHandle peer related methods

* Refactoring add_discovered_node in PeersManager

* Change record type from String to NodeRecord

* Adding NetworkHandleMessage::RemovePeer command
2023-01-03 14:02:05 +01:00
debf21d34e feat: add SyncState traits (#693)
* feat: add SyncState traits

* docs: clarify execution stage
2023-01-03 14:56:50 +02:00
a7f8d4fc39 feat(download): body downloader tracing (#691)
* feat(download): body downloader tracing

* rm unused import

* add request & response len
2023-01-03 13:28:56 +02:00
346d50ebf4 feat: test trusted peers functionality (#687)
* Add test for trusted_peer prioritization

* Add test for connect_trusted_nodes_only flag
2023-01-02 18:36:50 +01:00
e73b0019fa Add admin_(add|remove)TrustedPeer on admin rpc (#678) 2023-01-02 12:15:50 +01:00
05cb56788d Change terminal_block_number type to U64 (#677) 2023-01-02 02:47:25 -08:00
dafc01dde7 feat(net): add eth66 to default caps (#673) 2023-01-01 18:32:35 +02:00
efac887e30 chore: add serde feature to network crate (#653)
* Add serde feature and support for PeersConfig

* Add Duration fields and Weights

* Add serde for ConnectionInfo field
2023-01-01 18:27:55 +02:00
ed55c2bf2b docs(net): update best_unconnected docs (#670) 2023-01-01 17:16:30 +02:00
1f6a9436ac feat(net): enforce trusted_nodes_only setting (#660)
* Add PeerKind and enforce trusted_only setting

* Don't remove trusted peer on graceful close

* Don't remove trusted nodes on PeerCommand::Remove

* Rename PeerKind::NonTrusted to Basic

* Move PeerKind::is_trusted to Peer impl

* Add trusted peer prioritization
2023-01-01 12:14:10 +01:00
4efb7b92b8 fix(discv4): ignore self-entry on neighbours response (#664) 2022-12-30 06:09:22 -08:00
a7d8059357 test(engine): consensus engine tests (#648) 2022-12-30 13:17:27 +02:00
f5ae970e63 feat(cli): add --disable-discovery (#597)
* redo add disable_discovery cli flag

* incorporate option into discovery test

* smol touch up

* rustmft

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-30 10:56:59 +01:00
75ebfcf0d6 chore: add RLP encoding support for IpAddr (#659)
* Add rlp encoding support for IpAddr

* Lock support behind std feature

* Replace Octets with IpAddr

* Derive Rlp traits for NodeEndpoint

* Derive Rlp traits for NodeRecord
2022-12-29 22:27:51 +01:00
bec1937f63 chore: rm rpc type imports (#645) 2022-12-29 17:08:41 +01:00
3ab6c278e8 fix(net): improve error propagation (#620)
* fix(net): improve error propagation

* refactor: unify on closed session

* add noop helpers

* add noop helpers

* test setup

* test: add dropped connection test

* rename mock --> test-utils
2022-12-29 16:05:56 +01:00
de6630a121 feat(network): get peer info (#603)
* Create struct PeerInfo

* Add GetPeerInfo command

* Minor changes

* Use oneshot::sender

* Add GetPeerInfoById

* Use async/await

* Add client_id to establish connection

* Add method calls

* Add test_get_peer

* Add test_get_peer_by_id

* fmt changes

* clippy changes

* chore: rustfmt

* smol touch ups

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-12-29 14:20:17 +01:00
565a0aa90b feat(engine): new payload execution (#631)
* feat(engine): new payload execution

* address PR comments

* rm unused dev deps

* add comment about lru

* remove par_iter
2022-12-29 02:36:56 -08:00
76e76bb651 feat: add trusted nodes configuration (#569)
* Add preferred nodes to config

* Add preferred nodes on boot

* Add flag in config for trusted only mode

* Add preferred nodes configuration to config

* Fix comment

* Add preferred nodes to config file

* Rename preferred_nodes to trusted_nodes

* Change preferred to trusted

I renamed preferred_nodes to trusted_nodes in various places.
Seems I missed quite a bit of them.

* Pull trusted_only from config

* Rename DiscoveryConfig to PeersConfig

* Fix last commit

Now actually renamed DiscoveryConfig

* Rename trusted_only to connect_trusted_nodes_only

* Add helper function

* Use HashSet for boot_nodes and trusted_nodes

* Change trusted nodes functions in ConfigBuilder

* Move trusted peers from discv4 to network config

* Add trusted nodes to peers on Manager creation

* Use NodeRecord in trusted_nodes config

* Fix comment

* Move trusted_nodes config to PeersConfig

* Add trusted nodes directly to peers

* Move network_config to Config impl

* Move start_network to NetworkConfig impl
2022-12-28 21:48:11 +01:00
d9d0ba14c4 docs: add outgoing request diagram (#630) 2022-12-28 20:36:53 +01:00
525f28a67d feat(net): integrate external public ip auto discovery (#632)
* feat(net): integrate external public ip auto discovery

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

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

* rename var

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-12-28 16:14:07 +01:00
c3432bc284 feat(rpc): add rpc builder support (#635) 2022-12-28 15:55:30 +02:00
1ba81191f6 perf(net): backoff on IO error (#633) 2022-12-28 12:43:02 +01:00
d4d8a8c882 Moves code walkthrough book chapters to docs (#629)
* replaced template blocks with code blocks in stages chapter

* replaced template blocks with code blocks in network chapter

* moved book sections to docs

* fix indentation in recover_signer codeblock

* remove unnecessary TODO comment in network.md
2022-12-28 10:24:39 +01:00
a51fa4fd63 docs(book): start book chapter for network crate (#445)
* WIP FOR DRAFT PR

* WIP draft, walking through usage in pipeline

* diving deeper into instantiation of NetworkHandle & FetchClient

* WIP network management task & eth requests task done (ish)

* address pr comments: networkmanager as standalone task, networkconfig as main entrypoint for setup

* complete draft of the  crate docs

* restructured, starts w/ expl of

* added more snippets/anchors

* using ignore flag on code blocks, brief explanation of  struct

* typos addressed
2022-12-27 14:53:15 -08:00
dcd3923d19 Add serde support for NodeRecord primitive type (#617)
* Add serde support to NodeRecord

* Move NodeRecord to primitives

along with NodeKey and Octets

* Reexport NodeRecord from discv4

* Move NodeKey and kad_key back to discv4::node

Also, move NodeRecord::key functionality to a helper function: discv4::node::record_key.
This avoids the discv5 dependency in the primitives crate.

* Fix NodeRecord (de)serializing

The default derive macros work with a dictionary like display.
Changed that to serde_with macros, that use Display and FromStr traits.

* Add some tests for NodeRecord (de)serializing

* Hide NodeKey struct

* Move Octets after NodeRecord

* Replace record_key with From trait

* Fix clippy error

unnecessary into()
2022-12-27 18:03:54 +01:00
a2c1cdb399 refactor(net): deduplicate error variants (#619) 2022-12-26 23:29:26 +01:00
410a1f9cfe perf: allocate responses capacity (#618) 2022-12-26 21:38:00 +02:00
ebd686a407 refactor(net): rename and restructure wire error types (#614) 2022-12-26 16:33:59 +02:00
8779000460 test(net): add test for dropped pending no response (#613) 2022-12-26 15:51:14 +02:00
f1c1fb85ff fix(net): add no response to backoff check (#610) 2022-12-26 14:00:01 +02:00
3a07eb930f feat(net): add nat external ip crate (#605) 2022-12-25 18:22:31 +02:00
73e12341c4 feat(net): Make PeerManager emit peerevents for admin rpc (#602)
* Make PeerManager emit peerevents for admin rpc

* Fix tests to include new peer events
2022-12-25 10:00:10 +01:00
5affa67805 refactor(net): unify closed incoming session handling (#600) 2022-12-24 12:38:21 +01:00
43008b7b07 feat: Add PeerEvent to NetworkEvent enum (#574)
* Add peerAdded and peerRemoved events to NetworkEvent enum

* Remove unnecessary todo macros
2022-12-24 10:25:09 +01:00
7c80dde0ec fix(net): check for handshake disconnect (#596) 2022-12-24 00:58:43 +01:00
4e677b5993 refactor(net): unify dropped connection handling (#595) 2022-12-23 21:46:44 +01:00
562e895f21 ci: unused dependencies sanity check (#590)
* ci: add unused deps sanity check

* ci: fix unused deps issue template title

* ci: rename udeps job

* chore: formatting

* chore: make `cargo-udeps` ignore `aquamarine`

* deps: resolve unused deps

* ci: check every feature and target in udeps job
2022-12-23 13:19:50 +01:00
cb58759e66 feat(net): validate discovered enr forkid (#586) 2022-12-23 12:15:07 +01:00
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
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
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
8f40c8bb93 chore(docs): update engine api links (#576) 2022-12-22 11:41:31 +01:00
c2ed3b2b52 feat(rpc): add some bindings for admin namespace (#561) 2022-12-21 15:43:58 +01:00
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
d84eb9d93c fix(net): add capacity check on ping (#558) 2022-12-21 15:41:14 +02:00
151420df58 fix(net): encode ping pong as snappy (#555) 2022-12-21 15:24:41 +02:00
b2abcddeda fix(net): temporarily backoff busy peers (#548)
* fix(net): temporarily backoff busy peers

* chore: rustfmt
2022-12-20 22:19:06 +01:00
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
7184e4df3f fix(net): ban peer on fatal error (#543) 2022-12-20 18:04:33 +01:00