Open
Milestone
started on Apr 7, 2025
Safer P2P: battle-testing and UX
See High-level plan.
Work breakdown:
-
octez-p2p-node:-
write a simple node starting the P2P layer from src/lib_p2p/p2p.mli (some of these steps might be shortcut by reusing a previous implementation of such a node) -
Add a skeleton of a binary doing nothing (a simple node supporting the classical --version). -
Instantiate the p2p layer, supporting plain string (or bytes) messages. -
Simple RPC server: -
inject messages to the network -
retrieve some metadata (peers, seen messages since start, etc) -
ban, force disconnection or whiteliste peers.
-
-
-
simple tezt tests -
check nodes can connect to themselves. -
check nodes can send a message and other nodes are receiving them. -
check ban / force disconnection / whitelisting
-
-
-
test scenarios -
Simple document explaining test scenarios from libp2p, and extract relevant scenarios -
Decide if libp2p tests can be reused as is, or -
implement similar scenarios in tezt-cloud, iteratively.
-
-
src/lib_p2p: addOpenTelemetryprofiling.-
add traces for authentication (P2p_connect_handler). -
add traces for message propagation.
-
-
NAT-PMP / UPNP:-
Simple document explaining the specification of the Internet Gateway Protocol and either: - if reasonably simple
-
Design its implementation in Octez -
Implement it in octez
-
- if complex
-
Bind idx-next, the implementation used by rust-libp2p
-
- if reasonably simple
- extract libp2p test scenarios about nat traversal.
-
-
AutoNAT:-
Document and design the feature in the context of octez-p2p -
implement the dialing feature in octez-p2p -
implement the right UX to warn users -
improve the documentation for users when their node warns them about NAT (redirect port from router, open the port in their firewall, etc).
-
Loading
Loading
Loading
Loading