# Gas-lighting thoughts We have 5 large efforts reusing similar infra, what does each need? - Gas limit testing (@Kamil) - State growth testing (@CPerezz) - State/Gas Benchmarks (@Jochem) - Gas repricing (@Maria) - zkEVM (@Ignacio) #### Shared infra and tooling: - EEST/STEEL for test definitions (@) - PandaOps for snapshots - Nethermind for gas-benchmark tooling + infra - Nethermind DB for data aggregation - PandaOps for visualization - PandaOps for perfnets - PandaOps for sync tests ### Workflows: ### Gas limit testing: **Sequence of events:** - clients push changes to `performance` or `performance-modexp` branch - github runner for gas-benchmarks picks up change and runs benchmarks - pushes results to Nethermind DB - visualized results on grafana dashboard - Update client, Update EEST and repeat **Tools used:** - EEST - nethermind gas-benchmarks - nethermind DB - grafana **Questions:** - How can I specify or modify the version/fork of EEST used? - What is the entry point to add new tests? - Where are the docs to setup the full stack currently? **Current bottlenecks:** - ### State growth testing: **Sequence of events:** - Bloat state on perf-devnet-2 using `performance` branches - Run sync tests against perf-devnet-2 - Run state tests (or variation of state tests?) against perf-devnet-2 - Gather metrics on grafana - repeat **Tools used:** - perf-devnet-2 - Grafana - spamoor **Questions:** - What tests are run against bloatnets? Where are the definitions? **Current bottlenecks:** - Client support for shadowfork peer filtering -> reth/erigon sync tests fail to find peers ### State/Gas Benchmarks: **Sequence of events:** - Download snapshot/provision state benchmark machine - ??? **Tools used:** - gas-benchmarks with overlayFS - snapshotter - EEST **Questions:** - Where are the docs for running the stack? - What is the entrypoint for writing tests? - Where are the test outputs visualized? **Current bottlenecks:** - Test/Runner setup ### Gas repricing: **Sequence of events:** - Come up with initial pricing to test - Get STEEL to generate tests using said gas price - Get client fork under `repricing` branch to make changes and activate it under `amsterdamForkTime` - Run gas-benchmarks against `repricing` branch using custom test fixtures - Iterate on gas costs and repeat **Tools used:** - Nethermind gas-benchmarks - EEST - Nethermind DB - Grafana **Questions:** **Current bottlenecks:** ### zkEVM: **Sequence of events:** - New relevant benchmark tests are added to EEST - Use it accordingly depending on execution mode. - If can be run locally: - Run the new JSON fixtures in [workload](https://github.com/eth-applied-research-group/zkevm-benchmark-workload) (zkVM team tool) to run the benchmark in zkVMs. i.e., no need for devops infra - If can only be meaningfully run remotely (e.g. bloatnet setup related): - Execute the test remotely to trigger the scenario in bloatnet - Use a Reth RPC connected to bloatnet to call `debug_executionWitness` (i.e., need devops infra) - Use [workload](https://github.com/eth-act/zkevm-benchmark-workload) to generate stateless inputs for zkVM (it can connect to any RPC endpoint, so I would call the Reth bloatnet/devnet/perfnet one to get what I need) **Tools used:** - EEST - Devnet/Perfnet/Bloatnet Reth RPCs **Questions:** Not for now. **Current bottlenecks:** Not for now.