refactor(p2p): move rlpx into separate package #21464#2435
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Refactors the devp2p networking stack by extracting the RLPx transport implementation into a dedicated p2p/rlpx package, and adjusts p2p server/transport glue and tests accordingly. It also adds a devp2p rlpx ping command to perform an RLPx handshake for protocol/testing purposes.
Changes:
- Introduces
p2p/rlpx.Connas a standalone RLPx connection type with handshake + frame read/write APIs. - Adds a
p2p-levelrlpxTransportwrapper (p2p/transport.go) that handles deadlines/locking/metrics on top ofp2p/rlpx.Conn. - Adds
cmd/devp2p rlpx pingcommand and updates test suites to use the new package layout.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| p2p/transport.go | New p2p transport wrapper around p2p/rlpx.Conn plus protocol-handshake helpers. |
| p2p/transport_test.go | New tests covering encryption + protocol handshake flows via the new transport wrapper. |
| p2p/server.go | Updates transport hook signature and handshake call sites to use the refactored transport API. |
| p2p/server_test.go | Updates server tests to work with the new rlpxTransport wrapper + new p2p/rlpx.Secrets init. |
| p2p/peer_test.go | Adjusts peer test setup to use updated test transport constructor/signature. |
| p2p/message_test.go | Removes local unhex helper (moved to RLPx test package). |
| p2p/rlpx/rlpx.go | Moves RLPx implementation into new p2p/rlpx package and exposes Conn, Secrets, and frame read/write. |
| p2p/rlpx/rlpx_test.go | Updates/rewrites tests to target p2p/rlpx.Conn and related helpers directly. |
| cmd/devp2p/rlpxcmd.go | Adds devp2p rlpx ping CLI for performing an RLPx handshake and reading the first devp2p message. |
| cmd/devp2p/main.go | Registers the new rlpx command. |
This change moves the RLPx protocol implementation into a separate package, p2p/rlpx. The new package can be used to establish RLPx connections for protocol testing purposes. Co-authored-by: Felix Lange <fjl@twurst.com>
Proposed changes
This change moves the RLPx protocol implementation into a separate package, p2p/rlpx. The new package can be used to establish RLPx connections for protocol testing purposes.
Ref: ethereum#21464
Types of changes
What types of changes does your code introduce to XDC network?
Put an
✅in the boxes that applyImpacted Components
Which parts of the codebase does this PR touch?
Put an
✅in the boxes that applyChecklist
Put an
✅in the boxes once you have confirmed below actions (or provide reasons on not doing so) that