{"id":14958567,"url":"https://github.com/ethereum/retesteth","last_synced_at":"2025-04-04T06:09:40.000Z","repository":{"id":29646347,"uuid":"122337656","full_name":"ethereum/retesteth","owner":"ethereum","description":"testeth via RPC. Test run, generation by t8ntool protocol","archived":false,"fork":false,"pushed_at":"2025-03-11T11:37:08.000Z","size":3972,"stargazers_count":126,"open_issues_count":9,"forks_count":77,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-13T07:02:07.321Z","etag":null,"topics":["ethereum","evm","tests"],"latest_commit_sha":null,"homepage":"http://retesteth.ethdevops.io/","language":"C++","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":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-21T13:07:55.000Z","updated_at":"2025-03-10T15:43:40.000Z","dependencies_parsed_at":"2024-04-15T12:47:13.123Z","dependency_job_id":"3d9e1a54-c538-49bb-bdcd-d1da00aef1cd","html_url":"https://github.com/ethereum/retesteth","commit_stats":{"total_commits":1215,"total_committers":19,"mean_commits":63.94736842105263,"dds":0.05102880658436215,"last_synced_commit":"fa5fe40627b0b4914295d5d0fe120dd0b053cd15"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fretesteth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fretesteth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fretesteth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fretesteth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethereum","download_url":"https://codeload.github.com/ethereum/retesteth/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247128752,"owners_count":20888235,"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":["ethereum","evm","tests"],"created_at":"2024-09-24T13:17:25.066Z","updated_at":"2025-04-04T06:09:39.964Z","avatar_url":"https://github.com/ethereum.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# retesteth\n\nA test generation tool for the test fillers https://github.com/ethereum/tests/tree/develop/src  \nUsing state transition tool [t8n](https://ethereum-tests.readthedocs.io/en/latest/t8ntool-ref.html)  \nMore t8n spec docs: https://github.com/ethereum/go-ethereum/tree/master/cmd/evm  \nExecution stats: http://retesteth.ethdevops.io/  \nWeb interface: http://retesteth.ethdevops.io/web/\n\n# Supported clients / evm's\n- [geth](https://github.com/ethereum/go-ethereum)   \n- [besu](https://github.com/hyperledger/besu)   \n- [nimbus](https://github.com/status-im/nimbus-eth1)  \n- [evmone](https://github.com/ethereum/evmone.git)  \n- [ethereumjs](https://github.com/ethereumjs/ethereumjs-monorepo.git)  \n- [coregeth](https://github.com/etclabscore/core-geth) (etc | etctranslate configs)  \n\n# Docker Instructions\n\n1. Download docker scripts: \n   - [`Dockerfile`](https://raw.githubusercontent.com/ethereum/retesteth/develop/Dockerfile)\n   - [`dretesteth.sh`](https://raw.githubusercontent.com/ethereum/retesteth/develop/dretesteth.sh)\n\n   To use [the pyspec tf generator]() instead of retesteth in the docker, rename the `dretesteth.sh` to `dtf.sh`.\n   \n   **Note:** It is best to put these files in their own directory.\n   The reason is that any files in the same directory, including subdirectories, will be added to the docker container, slowing things down.\n\n1. To setup the clients required, edit the args in Dockerfile script.\n   Setup github repo and branch/commit hash to build from. Leaving an empty `\"\"` field will disable the client build in the Docker\n\n   ```\n   ARG BESU_SRC=\"https://github.com/hyperledger/besu.git\"\n   ARG PYSPECS_SRC=\"https://github.com/ethereum/execution-spec-tests\"\n   ARG ETEREUMJS_SRC=\"https://github.com/ethereumjs/ethereumjs-monorepo.git\"\n   ARG RETESTETH_SRC=\"https://github.com/ethereum/retesteth.git\"\n   ARG GETH_SRC=\"https://github.com/ethereum/go-ethereum.git\"\n   ARG NIMBUS_SRC=\"https://github.com/status-im/nimbus-eth1.git\"\n   ARG EVMONE_SRC=\"https://github.com/ethereum/evmone.git\"\n\n   # Leave empty to disable the build, can point to commit hash as well\n   ARG BESU=\"main\"\n   ARG GETH=\"master\"\n   ARG NIMBUS=\"master\"\n   ARG ETHEREUMJS=\"master\"\n   ARG RETESTETH=\"develop\"\n   ARG PYSPECS=\"main\"\n   ARG EVMONE=\"master\"\n   ```\n\n1. Build docker locally (if building all clients, ~10 gb space required):\n\n   ```\n   chmod +x ./dretesteth.sh\n   ./dretesteth.sh build\n   ./dretesteth.sh install\n   ```\n\n1. Edit `dretesteth.sh` and setup local path to the [test](https://github.com/ethereum/tests) repo so not to type `--testpath`.  \n   Navigate to the testpath folder test. And use retesteth normally (`dr` will be linked to `dretesteth.sh` after `dretesteth.sh install` command):\n\n   ```\n   dr test.json\n   dr testFiller.json --filltests --clients besu|evmone|ethereumjs|nimbus|t8ntool(default)\n   dr testfolder\n   dr -t GeneralStateTest\n   dr -t BlockchainTests\n   dretesteth.sh --help\n   ```\n\n   The command will run retesteth and clients from the docker container but using local tests.\n   Useful options (see `--help`):\n\n   ```\n   --statediff\n   --poststate\n   --vmtraceraw | --vmtrace\n   --singlenet\n   ```\n\n   See the [usage tutorial](https://ethereum-tests.readthedocs.io/en/latest/retesteth-tutorial.html)\n\n# Building locally\n\n## Basic deps\ng++-11 / g++-9 required  \nMake sure `cmake` version is higher than VERSION 3.9.3, otherwise install `cmake` from a different source\n\n```sh\nsudo apt-cache policy cmake\nsudo apt-get update\nsudo apt-get install git g++ build-essential cmake\n```\n\n## Retesteth\n\n```sh\ngit clone https://github.com/ethereum/retesteth.git\ncd retesteth \u0026\u0026 git checkout develop\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake -j4\n```\n\nYou should see the successful build files generation result after (`cmake ..` command): \n```\nConfiguring done\n-- Generating done\n-- Build files have been written \n```\n\n\n## Test clients\n\nSetup at least one client (default is `geth`).\nCompile required clients locally.\nUse [Dockerfile](https://github.com/ethereum/retesteth/blob/develop/Dockerfile) as a hint to setup the clients or visit official page for instructions.\n\nRetesteth is looking for client's t8n aliases in the PATH, copy or link them in the system:\n```\ncp /geth/build/bin/evm /bin/evm\ncp /nimbus/tools/t8n/t8n /bin/evm_nimbus\nln -s /besu/ethereum/evmtool/build/install/evmtool/bin/evm /usr/bin/besuevm\nln -s /evmone/build/bin/evmone-t8n /usr/bin/evmone\n```\n\nSetup evn vars: \n```\nETHEREUMJS_PATH env var is required for ethereumjs client\nPYSPECS_PATH env var to generate .py test fillers (https://github.com/ethereum/execution-spec-tests)\nETHEREUM_TEST_PATH env to setup default path to the test repo (so not to type --testpath)\n```\n\n## LLLC to compile LLL basic code in the test fillers\n\n`lllc` compiles [Lisp Like Language](https://media.consensys.net/an-introduction-to-lll-for-ethereum-smart-contract-development-e26e38ea6c23), an old Ethereum smart contract language that is still in use in tests.\n\n```\napt-get install --yes libboost-filesystem-dev libboost-system-dev libboost-program-options-dev libboost-test-dev\ngit clone --depth 1 -b master https://github.com/winsvega/solidity.git /solidity\nmkdir /build \u0026\u0026 cd /build\ncmake /solidity -DCMAKE_BUILD_TYPE=Release -DLLL=1 \u0026\u0026 make lllc\ncp /build/lllc/lllc /bin/lllc\n```\n\nOptionally clean the cache:\n```\nrm -rf /build /solidity /var/cache/* /root/.hunter/*  \n```\n\n## Solidity to compile solidity and yul code in the test fillers\n```\nwget https://github.com/ethereum/solidity/releases/download/v0.8.17/solc-static-linux\ncp solc-static-linux /usr/bin/solc\nchmod +x /usr/bin/solc\n```\n\n# Installing on MacOS\nSee https://github.com/ethereum/retesteth/blob/develop/circle.yml file as a hint.  \nuse `cmake .. -DLOCALDEPS=BOOST` to disable hunter boost autoinstall to use locally installed version of BOOST (if there are issues with boost)\n\n# Contact if any question:\nTelegram: @wdimitry\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fretesteth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethereum%2Fretesteth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fretesteth/lists"}