Skip to content

The realization of Ethereum execution layer client (only devp2p) in Python

License

Notifications You must be signed in to change notification settings

XiaoHuiHui233/ETHFinder

Repository files navigation

ETHFinder

Simple Ethereum client developed with python 3.10. The project provides the basic implementation of Ethereum devp2p network, including node discovery protocol (v4/v5), rlpx protocol and eth protocol (62/63/64/65/66/67). Concurrency is achieved using asyncio and multiprocessing.

中文 | English

Install

Run the following commands to install the required dependencies (recommended to work with a virtual environment, such as virtualenv/conda):

pip install -r requirements.txt

Usage

Use the dnsdisc service to parse the DNS information discovered by the ETH node.
Example: tests/dns_resolver.py

from dnsdisc import resolver

# test for get 200 enrs
enrs = resolver.get_enrs(
    "enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@all.mainnet.ethdisco.net",  # url to resolve
    200  # number of iterations
)

Use nodedisc to participate in node discovery.
Example:
tests/discv4.py

Use nodedisc to participate in node discovery, and test using IPC to get ENR.
Example:
tests/node_ipc.py

Use rlpx and eth to run the RLPx protocol and the Ethereum wire protocol, note that rlpx requires nodedisc as a dependency.
Example:
tests/rlpx_eth.py

Protocols list

  • Node Discovery Protocol v4
  • EIP-778: Ethereum Node Record (ENR)
  • ENR "eth" entry
  • EIP-868: Node Discovery v4 ENR Extension
  • EIP-1459: Discover nodes via DNS
  • EIP-2124: Fork identifier for chain compatibility checks
  • Node Discovery Protocol v5
  • RLPx Protocol
  • Ethereum Wire Protocol 62
  • Ethereum Wire Protocol 63
  • EIP-2364: eth/64: forkid-extended protocol handshake
  • EIP-2464: eth/65: transaction announcements and retrievals
  • EIP-2976: Typed Transactions over Gossip
  • EIP-2481: eth/66: request identifier
  • EIP-4938: eth/67: Removal of GetNodeData

Basic Architecture

image

Modules List

dnsdisc The DNS discovery protocol module implements the resolution of the Ethereum DNS service according to the EIP-1459 specification.
enr ENR module, which provides the data structure of Ethereum node records.
eth The core Ethereum control module controls the behavior and messages of the Ethereum protocol, caches blocks, and records the mempool.
nodedisc The node discovery protocol module includes protocol communication and DPT, among which the node discovery protocol v4 is currently implemented.
rlpx rThe lpx protocol module provides a basic network communication interface based on RLPx, and currently implements the Ethernet line protocol.
tests Test module, with some unit test cases.

Author

XiaoHuiHui

About

The realization of Ethereum execution layer client (only devp2p) in Python

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages