{"id":17495414,"url":"https://github.com/ethereum/ethshadow","last_synced_at":"2025-04-22T23:20:44.444Z","repository":{"id":122591709,"uuid":"587165894","full_name":"ethereum/ethshadow","owner":"ethereum","description":"Simulate a full Ethereum network using Shadow","archived":false,"fork":false,"pushed_at":"2025-03-12T08:40:12.000Z","size":266,"stargazers_count":44,"open_issues_count":4,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-13T14:03:33.290Z","etag":null,"topics":["cryptocurrency","ethereum","network","p2p","simulation","web3"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethereum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported-clients.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-10T05:32:15.000Z","updated_at":"2025-04-13T14:03:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"06eee34a-3ca8-49d8-9818-400f72271644","html_url":"https://github.com/ethereum/ethshadow","commit_stats":null,"previous_names":["ethereum/ethshadow"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fethshadow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fethshadow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fethshadow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fethshadow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethereum","download_url":"https://codeload.github.com/ethereum/ethshadow/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250338436,"owners_count":21414180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptocurrency","ethereum","network","p2p","simulation","web3"],"created_at":"2024-10-19T14:05:54.673Z","updated_at":"2025-04-22T23:20:44.439Z","avatar_url":"https://github.com/ethereum.png","language":"Rust","funding_links":[],"categories":["Analytics"],"sub_categories":["Other"],"readme":"# Ethshadow: Discrete-event Ethereum network simulator\n\n\u003c!--- ANCHOR: overview (for mdbook) --\u003e\n\nEthshadow is a tool to easily configure and run simulated Ethereum networks. Under the hood, it uses\n[Shadow](https://shadow.github.io/), a discrete-event network simulator that enables us to run simulations with actual\nEthereum clients instead of specifically written simulation code.\n\nThe advantages of using Ethshadow are as follows.\n\n1. It already includes everything in the simulation (e.g. libp2p, discv5, etc).\n2. It uses the same software as the mainnet and the public testnets.\n3. If there is any upgades in the supported clients, we can integrate those upgrades easily in the simulation.\n\nIf you want to simulate a new Ethereum protocol, what you need to do is just to implement it in supported clients and\nrun it using this simulator.\n\n\u003c!--- ANCHOR_END: overview (for mdbook) --\u003e\n\n## Quickstart\n\nWe assume that you already have Go, Rust, and Docker installed.\n\nInstall Lighthouse and Geth.\n```sh\n# Lighthouse\nsudo apt update \u0026\u0026 sudo apt install -y git gcc g++ make cmake pkg-config llvm-dev libclang-dev clang\ngit clone https://github.com/sigp/lighthouse.git\ncd lighthouse\ngit checkout v5.3.0 # The latest tested version\nmake\nmake install-lcli\ncd ..\n\n# Geth\ngit clone https://github.com/ethereum/go-ethereum.git\ncd go-ethereum\ngit checkout v1.14.11 # The latest tested version\nmake all\nsudo cp build/bin/geth /usr/local/bin/geth # Make it globally accessible\nsudo cp build/bin/bootnode /usr/local/bin/bootnode # Make it globally accessible\ncd ..\n```\n\nInstall Shadow\n```sh\nsudo apt-get install -y cmake findutils libclang-dev libc-dbg libglib2.0-0 libglib2.0-dev make netbase python3 python3-networkx xz-utils util-linux gcc g++\ngit clone https://github.com/shadow/shadow.git\ncd shadow\n./setup build --clean\n./setup install\necho 'export PATH=\"${PATH}:/home/${USER}/.local/bin\"' \u003e\u003e ~/.bashrc \u0026\u0026 source ~/.bashrc\ncd ..\n```\n\nInstall Ethshadow.\n```sh\ngit clone https://github.com/ethereum/ethshadow.git\ncd ethshadow\ncargo install --path .\ncd ..\n```\n\nSave the following file to a config file `myfirstsim.yaml`.\n\n```yaml\ngeneral:\n  # How much time should we simulate?\n  stop_time: 10 min\n  # Display a progress indicator?\n  progress: true\n\nethereum:\n  # Distribute this many validators evenly across all nodes\n  validators: 30\n  # Create this many nodes with Geth, Lighthouse and a Validator client.\n  # Additionally, a host with one boot node for CL and EL each is added.\n  nodes: 10\n```\n\nRun the simulation.\n```sh\nethshadow myfirstsim.yaml\n```\n\nCheck out `./data/shadow/hosts` which contains the stdout and stderr of every process (including geth and lighthouse)\nof every node.\n\n## Supported clients\n\n\u003c!--- ANCHOR: supported-clients (for mdbook) --\u003e\n\n✅ = Available, works out-of-the-box with latest release\n\n🚧 = Available, works with modifications (see subpage for details)\n\n❌ = Unavailable, does not currently work\n\n❔ = Unavailable, not yet tested\n\nA client is considered to work if it can follow the chain and perform the necessary duties for validating. Other\nfeatures might not work.\n\n### Execution Layer\n\n| Name                         | Node | Boot Node | Latest tested version |\n|------------------------------|:----:|:---------:|:---------------------:|\n| Besu                         |  ❌  |     ❔    |                       |\n| Erigon                       |  ❔  |     ❔    |                       |\n| EthereumJS                   |  ❔  |     ❔    |                       |\n| [Geth](docs/clients/geth.md) |  ✅  |     ✅    | v1.14.11              |\n| Nethermind                   |  ❌  |     ❔    |                       |\n| Reth                         |  🚧  |     ❔    |                       |\n\n\n### Consensus Layer\n\n| Name                                     | Node | Boot Node | Validator Client | Latest tested version |\n|------------------------------------------|:----:|:---------:|:----------------:|:---------------------:|\n| Grandine                                 |  ❔  |    ❔     |        ❔        |                       |\n| [Lighthouse](docs/clients/lighthouse.md) |  ✅  |    ✅     |        ✅        | v5.3.0                |\n| Lodestar                                 |  ❔  |    ❔     |        ❔        |                       |\n| Nimbus                                   |  ❔  |    ❔     |        ❔        |                       |\n| [Prysm](docs/clients/prysm.md)           |  ✅  |    ❔     |        ✅        | v5.3.0                |\n| Teku                                     |  ❌  |    ❔     |        ❔        |                       |\n\n\u003c!--- ANCHOR_END: supported-clients (for mdbook) --\u003e\n\n## More Information\n\nSee https://ethereum.github.io/ethshadow for the documentation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fethshadow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethereum%2Fethshadow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fethshadow/lists"}