-
Notifications
You must be signed in to change notification settings - Fork 291
Client Implementation Status
subtly edited this page Mar 18, 2015
·
27 revisions
This page contains a list of major RLPx features and the current status of those features for client implementations.
- Go,C++ uses left128 instead of right128
- whether to update mac state after sending mac digest
- C++ client distance is xor(pubkA,pubkB) instead of sha3(pubkA,pubkB)
- Go [ ] C++ [ ] Py [ ]: discovery performed via 8 bits-per-hop routing
- Go [x] C++ [x] Py [ ]: udp addresses determined by socket address of recvd Ping packets
- Go [x] C++ [x] Py [x]: tcp addresses determined by contents of Ping packet
- Go [ ] C++ [ ] Py [x]: tcp addresses are only updated upon receipt of Pong packet
- Go [x] C++ [x] Py [x]: Signed discovery packets
- Go [x] C++ [ ] Py [x]: idle bucket refresh: for each bucket which, isn't empty or is empty and furthest away, and which hasn't been touched in 3600 seconds, pick a random value in the range of the bucket and perform discovery for that value
- Go [x] C++ [x] Py [x]: perform discovery protocol with a concurrency of 3
- Go [x] C++ [x] Py [x]: timeout any packet operation if response is not received within 300ms
- Go [?] C++ [ ] Py [ ]: distance based on xor(sha3(NodeIdA),sha3(NodeIdB))
Alex WiP:
- peer protocol maintains an ideal peer count
- Go [x] C++ [x] Py [ ]: Initiation and Acknowledge implemented with ECIES std w/AES128-CTR for symmetric cipher
- Go [x] C++ [x] Py [ ]: Initiation, Acknowledgement, and Authentication for unknown node
- Go [x] C++ [x] Py [ ]: Initiation, Acknowledgement, and Authentication for known node
- Go [x] C++ [x] Py [ ]: Derive shared secrets from handshake
- Go [x] C++ [x] Py [ ]: Move capabilities into authentication payload (replaces Hello packet)
- Go [ ] C++ [ ] Py [ ]: basic frame, move protocol-type into frame header (replace magic sequence w/frame header)
- Go [x] C++ [x] Py [ ]: mac of header and frame
- Go [ ] C++ [ ] Py [ ]: chunking with static 1KB frame size (requires fair queueing)
- Go [ ] C++ [ ] Py [ ]: poc9+ sequence-ids for non-chunked packets
- Go [ ] C++ [ ] Py [ ]: poc9+ dynamic framing
- Go [ ] C++ [ ] Py [ ]: fair queueing (required for chunking)
- Go [ ] C++ [ ] Py [ ]: DeltaUpdate packet (required for fair queueing)
- Go [ ] C++ [ ] Py [ ]: poc9+ dynamic framing
- Go [x] C++ [x] Py [ ]: encryption