diff --git a/README.md b/README.md index 5c2d5d8..c2a8b11 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,15 @@ Blockchain networks in the wild are subject to a lot of real life variances that have historically been difficult to capture in local or controlled tests. Chaos testing is a disciplined approach to testing a system by proactively simulating and identifying failures. Attacknet is a tool that allows you to simulate these real life variances in a controlled environment. -Examples would include adding network latency between nodes, killing nodes at random, filesystem errors being returned. +Examples would include adding network latency between nodes, killing nodes at random, or filesystem latency. The overall architecture of Attacknet relies on Kubernetes to run the workloads, [Kurtosis](https://github.com/kurtosis-tech/kurtosis) to orchestrate a blockchain network and -[Chaos Mesh](https://chaos-mesh.org/) to inject faults into it. Attacknet can then be configured to run healthchecks and +[Chaos Mesh](https://chaos-mesh.org/) to inject faults into nodes. Attacknet can then be configured to run healthchecks and reports back the state of the network at the end of a test. ![docs/attacknet.svg](docs/attacknet.svg) -### TLDR; Capabilities -Attacknet can be used in the following ways: -- Manually creating test suites/network configs -- Manually running single tests against a network -- Using the planner feature to define a matrix of faults and targets to auto generate test files -- Running the test suites -- (WIP) Exploratory testing +### Capabilities The faults supported by Attacknet include: - Time based: Clock skew @@ -27,6 +21,14 @@ The faults supported by Attacknet include: - Stress based: CPU stress, Memory stress - (WIP) Kernel based: Kernel faults +Attacknet can be used in the following ways: +- Manually creating specific faults that target nodes matching a criteria +- Genesis devnets of specific topologies using [Kurtosis](https://www.kurtosis.com/), then run faults against them. +- Use the planner to define a matrix of faults and targets, automatically generating the network topology and fault configuration. +- (WIP) Exploratory testing. Dynamically generate various faults/targeting criterion and run faults continuously. + +See [DOCUMENTATION.MD](docs/DOCUMENTATION.MD) for specific usage examples. + ## Getting started ### Installation/Building @@ -49,177 +51,28 @@ The faults supported by Attacknet include: 7. In a separate terminal, run `kurtosis engine start` 8. In a separate terminal, run `kurtosis gateway`. This process needs to stay alive during all attacknet testing and cannot be started via SDK. -## Usage guides -## Manually creating/configuring test suites - -Attacknet is configured using "test suites". These are yaml files found under `./test-suites` that define everything -Attacknet needs to genesis a network, test the network, and determine the health of the network. You may have to manually add/remove -targeting criteria from these configs depending on the network being tested. - -Test suite configuration is broken into 3 sections: -- Attacknet configuration. -- Harness configuration. This is used to configure the Kurtosis package that will be used to genesis the network. -- Test configuration. This is used to determine which tests should be run against the devnet and how those tests - should be configured. - -Here is an annotated test suite configuration that explains what each bit is for: -```yaml -attacknetConfig: - grafanaPodName: grafana # the name of the pod that grafana will be deployed to. - grafanaPodPort: 3000 # the port grafana is listening to in the pod - waitBeforeInjectionSeconds: 10 - # the number of seconds to wait between the genesis of the network and the injection of faults. To wait for finality, use 25 mins (1500 secs) - reuseDevnetBetweenRuns: true # Whether attacknet should skip enclave deletion after the fault concludes. Defaults to false. - existingDevnetNamespace: kt-ethereum # Omit field for random namespace geneartion. If you want to reuse a running network, you can specify an existing namespace that contains a Kurtosis enclave and run tests against it. - allowPostFaultInspection: true # When set to true, Attacknet will maintain the port-forward connection to Grafana once the fault has concluded to allow the operator to inspect metrics. Default: true - -harnessConfig: - networkPackage: github.com/crytic/ethereum-package # The Kurtosis package to deploy to instrument the devnet. - networkConfig: default.yaml # The configuration to use for the Kurtosis package. These live in ./network-configs and are referenced by their filename. - networkType: ethereum # no touchy - -# The list of tests to be run before termination -testConfig: - tests: - - testName: packetdrop-1 # Name of the test. Used for logging/artifacts. - health: - enableChecks: true # whether health checks should be run after the test concludes - gracePeriod: 2m0s # how long the health checks will attempt to pass before marking the test a failure - planSteps: # the list of steps to facilitate the test, executed in order - - stepType: injectFault # this step injects a fault, the continues to the next step without waiting for the fault to terminate - description: "inject fault" - chaosFaultSpec: # The chaosFaultSpec is basically a pass-thru object for Chaos Mesh fault resources. This means we can support every possible fault out-of-the-box. To determine the schema for each fault type, check the Chaos Mesh docs: https://chaos-mesh.org/docs/simulate-network-chaos-on-kubernetes/. One issue with this method is that Attacknet can't verify whether your faultSpec is valid until it tries to create the resource in Kubernetes, and that comes after genesis which takes a long time on its own. If you run into schema validation issues, try creating these objects directly in Kubernetes to hasten the debug cycle. - kind: NetworkChaos - apiVersion: chaos-mesh.org/v1alpha1 - spec: - selector: - labelSelectors: - kurtosistech.com/id: cl-1-lighthouse-geth-validator - mode: all - action: loss - duration: 1m - loss: - loss: '10' - correlation: '0' - direction: to - - stepType: waitForFaultCompletion # this step waits for all previous running faults to complete before continuing - description: wait for faults to terminate -``` - -Over the long term, expect manual fault configuration to be deprecated in favor of the fault planner and other automatic test -generation tools. - -## Automatically creating test suites/network configs using the planner - -Attacknet can automatically create test suites based off a pre-defined test plan. This can be used to create large, comprehensive test suites that test against a variety of different client combos. This feature is highly experimental at this time. - -An example test plan can be found in the `planner-configs/` directory -Here's an annotated version: - -```yaml -execution: # list of execution clients that will be used in the network topology - - name: geth - image: ethereum/client-go:latest - - name: reth - image: ghcr.io/paradigmxyz/reth:latest -consensus: # list of consensus clients that will be used in the network topology - - name: lighthouse - image: sigp/lighthouse:latest - has_sidecar: true - - name: prysm - image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest - has_sidecar: true -network_params: - num_validator_keys_per_node: 32 # required. -kurtosis_package: "github.com/kurtosis-tech/ethereum-package" -kubernetes_namespace: kt-ethereum -topology: - bootnode_el: geth # self explanatory - bootnode_cl: prysm - targets_as_percent_of_network: 0.25 # [optional] defines what percentage of the network contains the target client. 0.25 means only 25% of nodes will contain the client defined in the fault spec. Warning: low percentages may lead to massive networks. - target_node_multiplier: 2 # optional, default:1. Adds duplicate el/cl combinations based on the multiplier. Useful for testing weird edge cases in consensus -fault_config: - fault_type: ClockSkew # which fault to use. A list of faults currently supported by the planner can be found in pkg/plan/suite/types.go in FaultTypeEnum - target_client: reth # which client to test. this can be an exec client or a consensus client. must show up in the client definitions above. - wait_before_first_test: 300s # how long to wait before running the first test. Set this to 25 minutes to test against a finalized network. - fault_config_dimensions: # the different fault configurations to use when creating tests. At least one config dimension is required. - - skew: -2m # these configs differ for each fault - duration: 1m - grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed - - skew: 2m - duration: 1m - grace_period: 1800s - fault_targeting_dimensions: # Defines how we want to impact the targets. We can inject faults into the client and only the client, or we can inject faults into the node (injects into cl, el, validator) - - MatchingNode - - MatchingClient - fault_attack_size_dimensions: # Defines how many of the matching targets we actually want to attack. - - AttackOneMatching # attacks only one matching target - - AttackMinorityMatching # attacks <33% - - AttackSuperminorityMatching # attacks >33% but <50% - - AttackMajorityMatching # attacks >50% but <66% - - AttackSupermajorityMatching # attacks >66% - - AttackAllMatching # attacks all -``` - -The total number of tests generated by a plan is equal to `len(fault_config_dimensions) * len(fault_targeting_dimensions) * len(fault_attack_size_dimensions)` - -You can create a test plan by invoking `attacknet plan ` - -The suite plan will be written to `./test-suites/plan/.yaml` - -The network config will be written to `./network-configs/plan/.yaml` +## Usage/Configuration -and can be executed by attacknet using `attacknet start plan/suitename` +See [DOCUMENTATION.MD](docs/DOCUMENTATION.MD) -### Faults supported by planner - -#### ClockSkew -Config: -```yaml - - skew: -2m # how far to skew the clock. can be positive or negative - duration: 1m # how long to skew the clock for - grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed -``` - -#### RestartContainers -Config: -```yaml - - grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed -``` - -#### IOLatency -Config: -```yaml - - grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed - delay: 1000ms # how long the i/o delay should be - duration: 1m # how long the fault should last - percent: 50 # the percentage of i/o requests impacted. -``` - - -## Running test suites - -Once you've got your configuration set up, you can run Attacknet: - -`attacknet start ` - -If your suite config is located at `./test-suites/suite.yaml`, you would run `attacknet start suite`. This will -probably be changed. - -Depending on the state of the Kurtosis package and tons of other variables, a lot of the example test suites/networks might not work out of the box. -If you're just trying to test things out, use `attacknet start suite`. This refers to a demo test suite that was tested on Jan 30. - -## Contribution +## Contributing This tool was developed as a collaboration between [Trail of Bits](https://www.trailofbits.com/) and the [Ethereum Foundation](https://github.com/ethereum/). Thank you for considering helping out with the source code! We welcome contributions from anyone on the internet, and are grateful for even the smallest of fixes! -If this tool was used for finding bugs, please do ensure that the bug is reported to the relevant project maintainers or to the +If you use this tool for finding bugs, please do ensure that the bug is reported to the relevant project maintainers or to the [Ethereum foundation Bug bounty program](https://ethereum.org/en/bug-bounty/). Please feel free to reach out to the tool maintainers on Discord, Email or Twitter for any feature requests. +If you want to contribute to Attacknet, we recommend running pre-commit before making changes: + +1. Install pre-commit +2. Run `pre-commit install` + +When making pull requests, **please target the `develop` branch, not main.** + ## Changelog -**TBD** +**March 18, 2024 version v0.4** First public release! @@ -236,6 +89,7 @@ First public release! - Fixed an issue where the test planner's resultant network topology was non-deterministic - Fixed an issue where a dropped port-forwarding connection to a pod may result in a panic - Fixed an issue where Chaos Mesh would fail to find targets in networks with more than 10 nodes +- Updated for Kurtosis SDK v0.88.5 **Jan 30, 2024 version v0.3 (internal)** - Fixed the demo example suite @@ -256,11 +110,3 @@ First public release! **Dec 15, 2023 version v0.1 (internal)** - Initial internal release - -## Developing (wip) - -1. Install pre-commit - - `brew install pre-commit` - - `pre-commit install` - -When making pull requests, target the `develop` branch, not main. diff --git a/docs/DOCUMENTATION.md b/docs/DOCUMENTATION.md new file mode 100644 index 0000000..7abe9ba --- /dev/null +++ b/docs/DOCUMENTATION.md @@ -0,0 +1,283 @@ +# Documentation + +## Overview + +Fundamentally, Attacknet is an orchestration tool for performing Chaos Testing. It can be used for multiple different testing workflows ranging from simply injecting faults into a Kubernetes pod to orchestrating a barrage of tests against a dynamically defined network topology. + +To understand its capabilities and how to use it, we've documented a set of "testing workflows", ranging from simple to more complicated, along with accompanying docs on how to use the workflow and what kind of testing it should be used for. + +### Workflow #1, Inject fault into an existing pod, then quit + +For this workflow, we want Attacknet to inject a fault into a pre-existing pod in a pre-existing namespace, then quit. +We need to specify a [Test Suite configuration](#test-suites) file that can provide Attacknet with the information needed to run the workflow. + +Note that if there isn't a Kurtosis enclave running in the `pre-existing-namespace` namespace below, Attacknet will try to genesis a network in the namespace. + +If the config file below is located at `test-suites/suite.yaml`, you would run it using Attacknet by invoking `attacknet start suite` +```yaml +attacknetConfig: + grafanaPodName: grafana + grafanaPodPort: "3000" + allowPostFaultInspection: true + waitBeforeInjectionSeconds: 0 + reuseDevnetBetweenRuns: true + existingDevnetNamespace: pre-existing-namespace + +harnessConfig: # even though we're not creating a network, these still need to be defined. just a quirk that will be fixed eventually + networkType: ethereum + networkPackage: github.com/kurtosis-tech/ethereum-package + networkConfig: plan/default.yaml +testConfig: + tests: + - testName: Restart geth/lighthouse node + planSteps: + - stepType: injectFault + description: 'Restart geth/lighthouse node' + chaosFaultSpec: + apiVersion: chaos-mesh.org/v1alpha1 + kind: PodChaos + spec: + action: pod-failure + duration: 5s + mode: all + selector: + expressionSelectors: + - key: kurtosistech.com/id + operator: In + values: + - el-1-geth-lighthouse + health: + enableChecks: false +``` + +### Workflow #2, Genesis a network, inject fault into a node, ensure the node recovers, then quit + +This workflow requires two config files,a [test suite configuration](#test-suites) and a [network configuration](#network-configs). The test suite config can be found below, and the network config that it points to in [../network-configs/default.yaml](../network-configs/default.yaml) + +We've several changes to the test suite from workflow 1, each is annotated with a comment. +```yaml +attacknetConfig: + grafanaPodName: grafana + grafanaPodPort: "3000" + allowPostFaultInspection: true + waitBeforeInjectionSeconds: 600 # we want to wait until all the nodes are synced and emitting attestations + reuseDevnetBetweenRuns: true + existingDevnetNamespace: pre-existing-namespace + +harnessConfig: + networkType: ethereum + networkPackage: github.com/kurtosis-tech/ethereum-package + networkConfig: plan/default.yaml +testConfig: + tests: + - testName: Restart geth/lighthouse node + planSteps: + - stepType: injectFault + description: 'Restart geth/lighthouse node' + chaosFaultSpec: + apiVersion: chaos-mesh.org/v1alpha1 + kind: PodChaos + spec: + action: pod-failure + duration: 5s + mode: all + selector: + expressionSelectors: + - key: kurtosistech.com/id + operator: In + values: + - el-1-geth-lighthouse + health: + enableChecks: true # we want attacknet to run health checks against EL/CL clients + gracePeriod: 5m0s # How long Attacknet should wait for the network to stabilize before considering the test a failure. +``` + +Since health checks are enabled now, Attacknet will emit a health check artifact once the test concludes (successful or not). These health artifacts can be found in the `./artifacts` directory. + +Note: when Attacknet is run using `start suite`, it's going to check whether a network is already running in the `existingDevnetNamespace` namespace. If no network is running, it will genesis a network using the specified network config. + +### Workflow #3, use the planner to build a test suite for exhaustively testing a single client, then run the test suite + +This workflow is useful for exhaustively testing a specific EL or CL client against a specific fault with various intensities/client combinations. This workflow consumes a [planner config file](#planner-configs) and emits a network config and test suite config that can be run by Attacknet. + +Using the example planner config in the [planner configs docs](#planner-configs), we can use `attacknet plan ` to generate a test suite/network config. The suite plan will be written to `./test-suites/plan/.yaml`, and the network config will be written to `./network-configs/plan/.yaml`. + +The test suite can then be run using `attacknet run plan/`. + +It should be noted that the number of tests generated will be equal to `len(fault_config_dimensions) * len(fault_targeting_dimensions) * len(fault_attack_size_dimensions)`, so budget your testing dimensions accordingly. + +Note that not all faults are supported in the test planner at this time, see the planner config docs for more info. + +## Configuration Files +### Test Suites +Test suites are configuration files that tell Attacknet: +1. Which namespace faults/tests should be injected into in Kubernetes +2. Whether a network should be genesis'ed using Kurtosis, and if so, what that network topology should be. +3. The lifecycle rules for the devnet & whether it should be terminated after the suite concludes. +4. The actual tests to run against the devnet. + +These config files are stored as yaml and are found under `./test-suites`. You can manually create new test suites, or use the planner to generate test suites. + +Test suite configuration is broken into 3 sections: +- Attacknet configuration. +- Harness configuration. This is used to configure the Kurtosis package that will be used to genesis the network. +- Test configuration. This is used to determine which tests should be run against the devnet and how those tests + should be configured. + +Here is an annotated test suite configuration that explains what each bit is for: +```yaml +attacknetConfig: + grafanaPodName: grafana # the name of the pod that grafana will be deployed to. + grafanaPodPort: 3000 # the port grafana is listening to in the pod + waitBeforeInjectionSeconds: 10 + # the number of seconds to wait between the genesis of the network and the injection of faults. To wait for finality, use 25 mins (1500 secs) + reuseDevnetBetweenRuns: true # Whether attacknet should skip enclave deletion after the fault concludes. Defaults to true. + existingDevnetNamespace: kt-ethereum # If you want to reuse a running network, you can specify an existing namespace that contains a Kurtosis enclave and run tests against it. If this field is defined and no Kurtosis enclave is present, the network defined in the harness configuration will be deployed to it. + allowPostFaultInspection: true # When set to true, Attacknet will maintain the port-forward connection to Grafana once the fault has concluded to allow the operator to inspect metrics. Default: true + +harnessConfig: + networkPackage: github.com/kurtosis/ethereum-package # The Kurtosis package to deploy to instrument the devnet. + networkConfig: default.yaml # The configuration to use for the Kurtosis package. These live in ./network-configs and are referenced by their filename. + networkType: ethereum # no touchy + +# The list of tests to be run before termination +testConfig: + tests: + - testName: packetdrop-1 # Name of the test. Used for logging/artifacts. + health: + enableChecks: true # whether health checks should be run after the test concludes + gracePeriod: 2m0s # how long the health checks will attempt to pass before marking the test a failure + planSteps: # the list of steps to facilitate the test, executed in order + - stepType: injectFault # this step injects a fault, the continues to the next step without waiting for the fault to terminate + description: "inject fault" + chaosFaultSpec: # The chaosFaultSpec is basically a pass-thru object for Chaos Mesh fault resources. This means we can support every possible fault out-of-the-box. To determine the schema for each fault type, check the Chaos Mesh docs: https://chaos-mesh.org/docs/simulate-network-chaos-on-kubernetes/. One issue with this method is that Attacknet can't verify whether your faultSpec is valid until it tries to create the resource in Kubernetes, and that comes after genesis which takes a long time on its own. If you run into schema validation issues, try creating these objects directly in Kubernetes to hasten the debug cycle. + kind: NetworkChaos + apiVersion: chaos-mesh.org/v1alpha1 + spec: + selector: + labelSelectors: + kurtosistech.com/id: cl-1-lighthouse-geth-validator + mode: all + action: loss + duration: 1m + loss: + loss: '10' + correlation: '0' + direction: to + - stepType: waitForFaultCompletion # this step waits for all previous running faults to complete before continuing + description: wait for faults to terminate +``` + +#### Plan Steps + +In the above example, we use two planSteps, `injectFault` and `waitForFaultCompletion`. + +The `injectFault` planStep provides a pass-through to Chaos Mesh, where the manifest under `chaosFaultSpec` is directly written to Kubernetes as a manifest. When Attacknet runs an `injectFault` planStep, it waits until Chaos Mesh has confirmed the fault to be injected into the target pod, then proceeds to the next step. Information on how to configure different kinds of faults can be found in the [Chaos Mesh documentation](https://chaos-mesh.org/docs/simulate-pod-chaos-on-kubernetes/). Some examples can be found in the `test-suites/` directory as well. + +The `waitForFaultCompletion` planStep does exactly what it says. Attacknet determines when currently running faults are expected to terminate by checking their manifest's `duration` field, then holds up the test suite execution for the longest expected `duration`. Once the `duration` has elapsed, it checks all outstanding fault manifests and verifies Chaos Mesh was able to turn off the fault properly. + +The `waitForDuration` planStep isn't in the above suite, but it exists. See [pkg/test_executor/types.go](../pkg/test_executor/types.go) for how to configure it. + +### Network Configs +These files define the network topology and configuration of a network to be deployed by Kurtosis. You can create them manually or using the planner tool. + +They are stored under the `network-configs` directory, and are directly passed through to the Kurtosis package when deploying a devnet. +When referencing a network config in a test suite, you don't have to include `network-configs` in the path. + +Since these files are entirely passthrough to the Kurtosis package, see the [Ethereum Kurtosis package](https://github.com/kurtosis-tech/ethereum-package) for further documentation. + +### Planner Configs +These files are used by the test planner feature to generate network configs and test suites. They are found in the `planner-configs/` directory. + +Here's an annotated test plan: + +```yaml +execution: # list of execution clients that will be used in the network topology + - name: geth + image: ethereum/client-go:latest + - name: reth + image: ghcr.io/paradigmxyz/reth:latest +consensus: # list of consensus clients that will be used in the network topology + - name: lighthouse + image: sigp/lighthouse:latest + has_sidecar: true + - name: prysm + image: prysmaticlabs/prysm-beacon-chain:latest + has_sidecar: true +network_params: + num_validator_keys_per_node: 32 # required. +kurtosis_package: "github.com/kurtosis-tech/ethereum-package" +kubernetes_namespace: kt-ethereum +topology: + bootnode_el: geth # self explanatory + bootnode_cl: prysm + targets_as_percent_of_network: 0.25 # [optional] defines what percentage of the network contains the target client. 0.25 means only 25% of nodes will contain the client defined in the fault spec. Warning: low percentages may lead to massive networks. + target_node_multiplier: 2 # optional, default:1. Adds duplicate el/cl combinations based on the multiplier. Useful for testing weird edge cases in consensus +fault_config: + fault_type: ClockSkew # which fault to use. A list of faults currently supported by the planner can be found in pkg/plan/suite/types.go in FaultTypeEnum + target_client: reth # which client to test. this can be an exec client or a consensus client. must show up in the client definitions above. + wait_before_first_test: 300s # how long to wait before running the first test. Set this to 25 minutes to test against a finalized network. + fault_config_dimensions: # the different fault configurations to use when creating tests. At least one config dimension is required. + - skew: -2m # these configs differ for each fault + duration: 1m + grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed + - skew: 2m + duration: 1m + grace_period: 1800s + fault_targeting_dimensions: # Defines how we want to impact the targets. We can inject faults into the client and only the client, or we can inject faults into the node (injects into cl, el, validator) + - MatchingNode + - MatchingClient + fault_attack_size_dimensions: # Defines how many of the matching targets we actually want to attack. + - AttackOneMatching # attacks only one matching target + - AttackMinorityMatching # attacks <33% + - AttackSuperminorityMatching # attacks >33% but <50% + - AttackMajorityMatching # attacks >50% but <66% + - AttackSupermajorityMatching # attacks >66% + - AttackAllMatching # attacks all +``` + +#### Faults supported by planner + +##### ClockSkew +Config: +```yaml + - skew: -2m # how far to skew the clock. can be positive or negative + duration: 1m # how long to skew the clock for + grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed +``` + +##### RestartContainers +Config: +```yaml + - grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed +``` + +##### IOLatency +Config: +```yaml + - grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed + delay: 1000ms # how long the i/o delay should be + duration: 1m # how long the fault should last + percent: 50 # the percentage of i/o requests impacted. +``` + +##### Network Latency +Config: +```yaml + - grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed + delay: 500ms # how long the latency delay should be, on average + jitter: 50ms # the amount of jitter + duration: 5m # how long the fault should last + correlation: 50 # 0 - 100 +``` + +##### Packet Loss +Config: +```yaml + - grace_period: 1800s # how long to wait for health checks to pass before marking the test as failed + loss_percent: 75% # the pct of packets to drop + direction: to # may be to, from, or both + duration: 5m # how long the fault should last +``` + + diff --git a/go.mod b/go.mod index 3af5dc1..84d7255 100644 --- a/go.mod +++ b/go.mod @@ -8,14 +8,12 @@ require ( github.com/alecthomas/kong v0.8.1 github.com/attestantio/go-eth2-client v0.19.10 github.com/chaos-mesh/chaos-mesh/api v0.0.0-20240104130649-f55576898805 - github.com/disgoorg/disgo v0.17.2 github.com/ethereum/go-ethereum v1.13.8 github.com/grafana-tools/sdk v0.0.0-20220919052116-6562121319fc - github.com/kurtosis-tech/kurtosis/api/golang v0.86.1 + github.com/kurtosis-tech/kurtosis/api/golang v0.88.5 github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409 github.com/rs/zerolog v1.29.1 github.com/sirupsen/logrus v1.9.3 - golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.29.0 k8s.io/apimachinery v0.29.0 @@ -38,8 +36,6 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect - github.com/disgoorg/json v1.1.0 // indirect - github.com/disgoorg/snowflake/v2 v2.0.1 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect github.com/emicklei/go-restful/v3 v3.11.1 // indirect @@ -79,7 +75,7 @@ require ( github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20231031173452-349f1ec9a443 // indirect github.com/kurtosis-tech/kurtosis/contexts-config-store v0.0.0-20240109102239-4ba41ce90af0 // indirect github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20240109102239-4ba41ce90af0 // indirect - github.com/kurtosis-tech/kurtosis/utils v0.0.0-20240109102239-4ba41ce90af0 // indirect + github.com/kurtosis-tech/kurtosis/path-compression v0.0.0-20240307154559-64d2929cd265 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -104,7 +100,6 @@ require ( github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 // indirect github.com/r3labs/sse/v2 v2.10.0 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect - github.com/sasha-s/go-csync v0.0.0-20240107134140-fcbab37b09ad // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.1 // indirect @@ -121,6 +116,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.18.0 // indirect + golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.20.0 // indirect golang.org/x/oauth2 v0.16.0 // indirect diff --git a/go.sum b/go.sum index 1d9b533..c83bcaf 100644 --- a/go.sum +++ b/go.sum @@ -73,12 +73,6 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= -github.com/disgoorg/disgo v0.17.2 h1:RxiLq8guMtk+9tArFwve02iya2APQ9yZVtV30ySKNtw= -github.com/disgoorg/disgo v0.17.2/go.mod h1:8r3h9fXSz7BbACxLPsPbtB6LX8gaQFUETgPKV/0gAKQ= -github.com/disgoorg/json v1.1.0 h1:7xigHvomlVA9PQw9bMGO02PHGJJPqvX5AnwlYg/Tnys= -github.com/disgoorg/json v1.1.0/go.mod h1:BHDwdde0rpQFDVsRLKhma6Y7fTbQKub/zdGO5O9NqqA= -github.com/disgoorg/snowflake/v2 v2.0.1 h1:CuUxGLwggUxEswZOmZ+mZ5i0xSumQdXW9tXW7uGqe+0= -github.com/disgoorg/snowflake/v2 v2.0.1/go.mod h1:SPU9c2CNn5DSyb86QcKtdZgix9osEtKrHLW4rMhfLCs= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY= @@ -226,14 +220,14 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20231031173452-349f1ec9a443 h1:jqFVT4FcZU+wG+y5FV+Xz9+IwNqSyredbcFKHfK2Kh8= github.com/kurtosis-tech/kurtosis-portal/api/golang v0.0.0-20231031173452-349f1ec9a443/go.mod h1:bWSMQK3WHVTGHX9CjxPAb/LtzcmfOxID2wdzakSWQxo= -github.com/kurtosis-tech/kurtosis/api/golang v0.86.1 h1:Lz3nFRulFHLlCykTrv5et01gTGPvU07b68iyayFrsZo= -github.com/kurtosis-tech/kurtosis/api/golang v0.86.1/go.mod h1:eT43r9WAooqDCpIs0+QlyUFR/fqAaqpSKcYPNKD2Zcg= +github.com/kurtosis-tech/kurtosis/api/golang v0.88.5 h1:Bp0YLBb6RyvDx1B5XCR73HHLDj+Ez7h4boRV0wC8IkU= +github.com/kurtosis-tech/kurtosis/api/golang v0.88.5/go.mod h1:9T22P7Vv3j5g6sbm78DxHQ4s9C4Cj3s9JjFQ7DFyYpM= github.com/kurtosis-tech/kurtosis/contexts-config-store v0.0.0-20240109102239-4ba41ce90af0 h1:/anRCavLbkzCdRMRovtZAx6Dg6di5CgqLciWiQUdNLY= github.com/kurtosis-tech/kurtosis/contexts-config-store v0.0.0-20240109102239-4ba41ce90af0/go.mod h1:bm+jMBhirwvfuXG99TDZFuvmSwDfeziVJPobRvHgafc= github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20240109102239-4ba41ce90af0 h1:Er0K/PnwBWI+PgKf5KWRjaHccveJwIW4wrM1ebvWMg8= github.com/kurtosis-tech/kurtosis/grpc-file-transfer/golang v0.0.0-20240109102239-4ba41ce90af0/go.mod h1:XWnZw30gs8O8ySajNTQubyOOmwkKxxwCzDKuJ7YzZYk= -github.com/kurtosis-tech/kurtosis/utils v0.0.0-20240109102239-4ba41ce90af0 h1:EkPhst4mcaWgLJWXn0lwIhpmStl3KYi7HlaSeXxz4iY= -github.com/kurtosis-tech/kurtosis/utils v0.0.0-20240109102239-4ba41ce90af0/go.mod h1:Wswa+3L2+lvd62qFKgjlb4Q+kgTNL5Tk9rUK+naBku4= +github.com/kurtosis-tech/kurtosis/path-compression v0.0.0-20240307154559-64d2929cd265 h1:uSDftcGStwuAjHv8fV2TleNCKSWPvUKe7EaplFG3yBI= +github.com/kurtosis-tech/kurtosis/path-compression v0.0.0-20240307154559-64d2929cd265/go.mod h1:aDMrPeS7Gii8W6SDKSKyrBNgEQAUYidriyeKGf+Ml3I= github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409 h1:YQTATifMUwZEtZYb0LVA7DK2pj8s71iY8rzweuUQ5+g= github.com/kurtosis-tech/stacktrace v0.0.0-20211028211901-1c67a77b5409/go.mod h1:y5weVs5d9wXXHcDA1awRxkIhhHC1xxYJN8a7aXnE6S8= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= @@ -319,8 +313,6 @@ github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sasha-s/go-csync v0.0.0-20240107134140-fcbab37b09ad h1:qIQkSlF5vAUHxEmTbaqt1hkJ/t6skqEGYiMag343ucI= -github.com/sasha-s/go-csync v0.0.0-20240107134140-fcbab37b09ad/go.mod h1:/pA7k3zsXKdjjAiUhB5CjuKib9KJGCaLvZwtxGC8U0s= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= diff --git a/network-configs/default.yaml b/network-configs/default.yaml index 6ade76a..8c85145 100644 --- a/network-configs/default.yaml +++ b/network-configs/default.yaml @@ -1,37 +1,37 @@ participants: - - el_client_type: geth - el_client_image: ethereum/client-go:latest - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:latest + - el_type: geth + el_image: ethereum/client-go:latest + cl_type: lighthouse + cl_image: sigp/lighthouse:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:latest - cl_client_type: prysm - cl_client_image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + - el_type: geth + el_image: ethereum/client-go:latest + cl_type: prysm + cl_image: prysmaticlabs/prysm-beacon-chain:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 network_params: diff --git a/network-configs/devnet-12.yaml b/network-configs/devnet-12.yaml index 55f5ab3..18eacb7 100644 --- a/network-configs/devnet-12.yaml +++ b/network-configs/devnet-12.yaml @@ -1,63 +1,63 @@ participants: - - el_client_type: geth - el_client_image: ethereum/client-go:v1.13.13 + - el_type: geth + el_image: ethereum/client-go:v1.13.13 el_extra_labels: {"ethereum-package.partition": "partA"} - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:v5.0.0 + cl_type: lighthouse + cl_image: sigp/lighthouse:v5.0.0 beacon_extra_labels: {"ethereum-package.partition": "partA"} validator_extra_labels: {"ethereum-package.partition": "partA"} el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: nethermind - el_client_image: nethermind/nethermind:1.25.4 + - el_type: nethermind + el_image: nethermind/nethermind:1.25.4 el_extra_labels: {"ethereum-package.partition": "partA"} - cl_client_type: teku - cl_client_image: consensys/teku:24.2.0-amd64 + cl_type: teku + cl_image: consensys/teku:24.2.0-amd64 beacon_extra_labels: {"ethereum-package.partition": "partA"} validator_extra_labels: {"ethereum-package.partition": "partA"} el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 el_extra_labels: {"ethereum-package.partition": "partB"} - cl_client_type: prysm - cl_client_image: gcr.io/prysmaticlabs/prysm/beacon-chain:v5.0.0,gcr.io/prysmaticlabs/prysm/validator:v5.0.0 + cl_type: prysm + cl_image: gcr.io/prysmaticlabs/prysm/beacon-chain:v5.0.0,gcr.io/prysmaticlabs/prysm/validator:v5.0.0 beacon_extra_labels: {"ethereum-package.partition": "partB"} validator_extra_labels: {"ethereum-package.partition": "partB"} el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 network_params: deneb_fork_epoch: 1 diff --git a/network-configs/plan/network-latency-reth.yaml b/network-configs/plan/network-latency-reth.yaml index ee3455b..f7b891e 100644 --- a/network-configs/plan/network-latency-reth.yaml +++ b/network-configs/plan/network-latency-reth.yaml @@ -1,200 +1,197 @@ participants: - - el_client_type: geth - el_client_image: ethereum/client-go:v1.13.11 - cl_client_type: prysm - cl_client_image: gcr.io/prysmaticlabs/prysm/beacon-chain:v4.2.1,gcr.io/prysmaticlabs/prysm/validator:v4.2.1 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 500 - v_max_cpu: 500 - v_min_mem: 512 - v_max_mem: 512 - count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.17 - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:v4.6.0 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 500 - v_max_cpu: 500 - v_min_mem: 512 - v_max_mem: 512 - count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.17 - cl_client_type: prysm - cl_client_image: gcr.io/prysmaticlabs/prysm/beacon-chain:v4.2.1,gcr.io/prysmaticlabs/prysm/validator:v4.2.1 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 500 - v_max_cpu: 500 - v_min_mem: 512 - v_max_mem: 512 - count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.17 - cl_client_type: teku - cl_client_image: consensys/teku:24.1.1-amd64 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 3072 - bn_max_mem: 3072 - count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.17 - cl_client_type: lodestar - cl_client_image: chainsafe/lodestar:v1.15.1 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 500 - v_max_cpu: 500 - v_min_mem: 512 - v_max_mem: 512 - count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.17 - cl_client_type: nimbus - cl_client_image: ethpandaops/nimbus:unstable - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:v1.13.11 - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:v4.6.0 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 500 - v_max_cpu: 500 - v_min_mem: 512 - v_max_mem: 512 - count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:v1.13.11 - cl_client_type: prysm - cl_client_image: gcr.io/prysmaticlabs/prysm/beacon-chain:v4.2.1,gcr.io/prysmaticlabs/prysm/validator:v4.2.1 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 500 - v_max_cpu: 500 - v_min_mem: 512 - v_max_mem: 512 - count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:v1.13.11 - cl_client_type: teku - cl_client_image: consensys/teku:24.1.1-amd64 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 3072 - bn_max_mem: 3072 - count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:v1.13.11 - cl_client_type: lodestar - cl_client_image: chainsafe/lodestar:v1.15.1 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 500 - v_max_cpu: 500 - v_min_mem: 512 - v_max_mem: 512 - count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:v1.13.11 - cl_client_type: nimbus - cl_client_image: ethpandaops/nimbus:unstable - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - count: 1 - - el_client_type: erigon - el_client_image: thorax/erigon:v2.57.3 - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:v4.6.0 - el_min_cpu: 768 - el_max_cpu: 768 - el_min_mem: 1024 - el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 500 - v_max_cpu: 500 - v_min_mem: 512 - v_max_mem: 512 - count: 1 + - el_type: geth + el_image: ethereum/client-go:v1.13.11 + cl_type: prysm + cl_image: gcr.io/prysmaticlabs/prysm/beacon-chain:v4.2.1 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + vc_min_cpu: 500 + vc_max_cpu: 500 + vc_min_mem: 512 + vc_max_mem: 512 + count: 1 + - el_type: reth + el_image: parithoshj/reth:main-1a8440a-debug + cl_type: lighthouse + cl_image: sigp/lighthouse:v4.6.0 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + vc_min_cpu: 500 + vc_max_cpu: 500 + vc_min_mem: 512 + vc_max_mem: 512 + count: 1 + - el_type: reth + el_image: parithoshj/reth:main-1a8440a-debug + cl_type: prysm + cl_image: gcr.io/prysmaticlabs/prysm/beacon-chain:v4.2.1 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + vc_min_cpu: 500 + vc_max_cpu: 500 + vc_min_mem: 512 + vc_max_mem: 512 + count: 1 + - el_type: reth + el_image: parithoshj/reth:main-1a8440a-debug + cl_type: teku + cl_image: consensys/teku:24.1.1-amd64 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + count: 1 + - el_type: reth + el_image: parithoshj/reth:main-1a8440a-debug + cl_type: lodestar + cl_image: chainsafe/lodestar:v1.15.0 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + vc_min_cpu: 500 + vc_max_cpu: 500 + vc_min_mem: 512 + vc_max_mem: 512 + count: 1 + - el_type: reth + el_image: parithoshj/reth:main-1a8440a-debug + cl_type: nimbus + cl_image: ethpandaops/nimbus:unstable + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + count: 1 + - el_type: geth + el_image: ethereum/client-go:v1.13.11 + cl_type: lighthouse + cl_image: sigp/lighthouse:v4.6.0 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + vc_min_cpu: 500 + vc_max_cpu: 500 + vc_min_mem: 512 + vc_max_mem: 512 + count: 1 + - el_type: geth + el_image: ethereum/client-go:v1.13.11 + cl_type: prysm + cl_image: gcr.io/prysmaticlabs/prysm/beacon-chain:v4.2.1 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + vc_min_cpu: 500 + vc_max_cpu: 500 + vc_min_mem: 512 + vc_max_mem: 512 + count: 1 + - el_type: geth + el_image: ethereum/client-go:v1.13.11 + cl_type: teku + cl_image: consensys/teku:24.1.1-amd64 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + count: 1 + - el_type: geth + el_image: ethereum/client-go:v1.13.11 + cl_type: lodestar + cl_image: chainsafe/lodestar:v1.15.0 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + vc_min_cpu: 500 + vc_max_cpu: 500 + vc_min_mem: 512 + vc_max_mem: 512 + count: 1 + - el_type: geth + el_image: ethereum/client-go:v1.13.11 + cl_type: nimbus + cl_image: ethpandaops/nimbus:unstable + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + count: 1 + - el_type: erigon + el_image: thorax/erigon:v2.57.3 + cl_type: lighthouse + cl_image: sigp/lighthouse:v4.6.0 + el_min_cpu: 768 + el_max_cpu: 768 + el_min_mem: 1024 + el_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 1536 + cl_max_mem: 1536 + vc_min_cpu: 500 + vc_max_cpu: 500 + vc_min_mem: 512 + vc_max_mem: 512 + count: 1 network_params: - num_validator_keys_per_node: 32 - deneb_fork_epoch: 5 + num_validator_keys_per_node: 32 additional_services: - - prometheus_grafana - - dora - - tx_spammer - - blob_spammer + - prometheus_grafana + - dora parallel_keystore_generation: false persistent: false disable_peer_scoring: true diff --git a/network-configs/plan/restart-resillience-reth.yaml b/network-configs/plan/restart-resillience-reth.yaml index 35e5087..860fb7f 100644 --- a/network-configs/plan/restart-resillience-reth.yaml +++ b/network-configs/plan/restart-resillience-reth.yaml @@ -1,207 +1,207 @@ participants: - - el_client_type: nethermind - el_client_image: nethermind/nethermind:1.25.1 - cl_client_type: prysm - cl_client_image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + - el_type: nethermind + el_image: nethermind/nethermind:1.25.1 + cl_type: prysm + cl_image: prysmaticlabs/prysm-beacon-chain:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.13 - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:latest + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.13 + cl_type: lighthouse + cl_image: sigp/lighthouse:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.13 - cl_client_type: prysm - cl_client_image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.13 + cl_type: prysm + cl_image: prysmaticlabs/prysm-beacon-chain:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.13 - cl_client_type: lodestar - cl_client_image: chainsafe/lodestar:v1.12.1 + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.13 + cl_type: lodestar + cl_image: chainsafe/lodestar:v1.12.1 el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:latest - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:latest + - el_type: geth + el_image: ethereum/client-go:latest + cl_type: lighthouse + cl_image: sigp/lighthouse:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: erigon - el_client_image: thorax/erigon:v2.53.4 - cl_client_type: prysm - cl_client_image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + - el_type: erigon + el_image: thorax/erigon:v2.53.4 + cl_type: prysm + cl_image: prysmaticlabs/prysm-beacon-chain:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: nethermind - el_client_image: nethermind/nethermind:1.25.1 - cl_client_type: lodestar - cl_client_image: chainsafe/lodestar:v1.12.1 + - el_type: nethermind + el_image: nethermind/nethermind:1.25.1 + cl_type: lodestar + cl_image: chainsafe/lodestar:v1.12.1 el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:latest - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:latest + - el_type: geth + el_image: ethereum/client-go:latest + cl_type: lighthouse + cl_image: sigp/lighthouse:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: erigon - el_client_image: thorax/erigon:v2.53.4 - cl_client_type: prysm - cl_client_image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + - el_type: erigon + el_image: thorax/erigon:v2.53.4 + cl_type: prysm + cl_image: prysmaticlabs/prysm-beacon-chain:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: nethermind - el_client_image: nethermind/nethermind:1.25.1 - cl_client_type: lodestar - cl_client_image: chainsafe/lodestar:v1.12.1 + - el_type: nethermind + el_image: nethermind/nethermind:1.25.1 + cl_type: lodestar + cl_image: chainsafe/lodestar:v1.12.1 el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:latest - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:latest + - el_type: geth + el_image: ethereum/client-go:latest + cl_type: lighthouse + cl_image: sigp/lighthouse:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 - - el_client_type: erigon - el_client_image: thorax/erigon:v2.53.4 - cl_client_type: prysm - cl_client_image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + - el_type: erigon + el_image: thorax/erigon:v2.53.4 + cl_type: prysm + cl_image: prysmaticlabs/prysm-beacon-chain:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 1000 - bn_max_cpu: 1000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1024 - v_max_mem: 1024 + cl_min_cpu: 1000 + cl_max_cpu: 1000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1024 + vc_max_mem: 1024 count: 1 network_params: num_validator_keys_per_node: 32 diff --git a/network-configs/reth.yaml b/network-configs/reth.yaml index f00aa98..f45915c 100644 --- a/network-configs/reth.yaml +++ b/network-configs/reth.yaml @@ -1,122 +1,122 @@ participants: - - el_client_type: geth - el_client_image: ethereum/client-go:latest - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:latest + - el_type: geth + el_image: ethereum/client-go:latest + cl_type: lighthouse + cl_image: sigp/lighthouse:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:latest - cl_client_type: prysm - cl_client_image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + - el_type: geth + el_image: ethereum/client-go:latest + cl_type: prysm + cl_image: prysmaticlabs/prysm-beacon-chain:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: geth - el_client_image: ethereum/client-go:latest - cl_client_type: teku - cl_client_image: consensys/teku:24.2.0 + - el_type: geth + el_image: ethereum/client-go:latest + cl_type: teku + cl_image: consensys/teku:24.2.0 el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 - cl_client_type: prysm - cl_client_image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 + cl_type: prysm + cl_image: prysmaticlabs/prysm-beacon-chain:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 - cl_client_type: lighthouse - cl_client_image: sigp/lighthouse:latest + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 + cl_type: lighthouse + cl_image: sigp/lighthouse:latest el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 - cl_client_type: teku - cl_client_image: consensys/teku:24.2.0 + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 + cl_type: teku + cl_image: consensys/teku:24.2.0 el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 - - el_client_type: reth - el_client_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 - cl_client_type: lodestar - cl_client_image: chainsafe/lodestar:v1.16.0 + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth:v0.1.0-alpha.19 + cl_type: lodestar + cl_image: chainsafe/lodestar:v1.16.0 el_min_cpu: 1000 el_max_cpu: 1000 el_min_mem: 1024 el_max_mem: 1024 - bn_min_cpu: 2000 - bn_max_cpu: 3000 - bn_min_mem: 2048 - bn_max_mem: 2048 - v_min_cpu: 1000 - v_max_cpu: 1000 - v_min_mem: 1028 - v_max_mem: 1028 + cl_min_cpu: 2000 + cl_max_cpu: 3000 + cl_min_mem: 2048 + cl_max_mem: 2048 + vc_min_cpu: 1000 + vc_max_cpu: 1000 + vc_min_mem: 1028 + vc_max_mem: 1028 count: 1 network_params: diff --git a/pkg/plan/serialization.go b/pkg/plan/serialization.go index 554a982..c25d567 100644 --- a/pkg/plan/serialization.go +++ b/pkg/plan/serialization.go @@ -2,7 +2,6 @@ package plan import ( "attacknet/cmd/pkg/plan/network" - "fmt" "github.com/kurtosis-tech/stacktrace" "gopkg.in/yaml.v3" "strings" @@ -46,6 +45,7 @@ func DeserializeNetworkTopology(conf []byte) ([]*network.Node, error) { validatorImage := "" if participant.ValMaxCpu != 0 { hasSidecar = true + // todo: remove this if strings.Contains(consensusImage, ",") { images := strings.Split(consensusImage, ",") consensusImage = images[0] @@ -90,9 +90,9 @@ func serializeNodes(nodes []*network.Node) []*Participant { consensusImage := node.Consensus.Image // prysm contingency - if node.Consensus.HasValidatorSidecar && node.Consensus.ValidatorImage != "" { - consensusImage = consensusImage + fmt.Sprintf(",%s", node.Consensus.ValidatorImage) - } + //if node.Consensus.HasValidatorSidecar && node.Consensus.ValidatorImage != "" { + // consensusImage = consensusImage + fmt.Sprintf(",%s", node.Consensus.ValidatorImage) + //} p := &Participant{ ElClientType: node.Execution.Type, diff --git a/pkg/plan/suite/step_builder.go b/pkg/plan/suite/step_builder.go index e9e1927..c9f4bca 100644 --- a/pkg/plan/suite/step_builder.go +++ b/pkg/plan/suite/step_builder.go @@ -34,7 +34,7 @@ func ConvertToNodeIdTag(networkNodeCount int, node *network.Node, client clientT case Consensus: return fmt.Sprintf("cl-%s-%s-%s", nodeNumStr, node.Consensus.Type, node.Execution.Type) case Validator: - return fmt.Sprintf("cl-%s-%s-%s-validator", nodeNumStr, node.Consensus.Type, node.Execution.Type) + return fmt.Sprintf("val-%s-%s-%s", nodeNumStr, node.Consensus.Type, node.Execution.Type) default: log.Errorf("Unrecognized node type %s", client) return "" diff --git a/pkg/plan/types.go b/pkg/plan/types.go index ec651e8..b5eea86 100644 --- a/pkg/plan/types.go +++ b/pkg/plan/types.go @@ -43,26 +43,26 @@ type EthKurtosisConfig struct { } type Participant struct { - ElClientType string `yaml:"el_client_type"` - ElClientImage string `yaml:"el_client_image"` + ElClientType string `yaml:"el_type"` + ElClientImage string `yaml:"el_image"` - ClClientType string `yaml:"cl_client_type"` - ClClientImage string `yaml:"cl_client_image"` + ClClientType string `yaml:"cl_type"` + ClClientImage string `yaml:"cl_image"` ElMinCpu int `yaml:"el_min_cpu"` ElMaxCpu int `yaml:"el_max_cpu"` ElMinMemory int `yaml:"el_min_mem"` ElMaxMemory int `yaml:"el_max_mem"` - ClMinCpu int `yaml:"bn_min_cpu"` - ClMaxCpu int `yaml:"bn_max_cpu"` - ClMinMemory int `yaml:"bn_min_mem"` - ClMaxMemory int `yaml:"bn_max_mem"` + ClMinCpu int `yaml:"cl_min_cpu"` + ClMaxCpu int `yaml:"cl_max_cpu"` + ClMinMemory int `yaml:"cl_min_mem"` + ClMaxMemory int `yaml:"cl_max_mem"` - ValMinCpu int `yaml:"v_min_cpu,omitempty"` - ValMaxCpu int `yaml:"v_max_cpu,omitempty"` - ValMinMemory int `yaml:"v_min_mem,omitempty"` - ValMaxMemory int `yaml:"v_max_mem,omitempty"` + ValMinCpu int `yaml:"vc_min_cpu,omitempty"` + ValMaxCpu int `yaml:"vc_max_cpu,omitempty"` + ValMinMemory int `yaml:"vc_min_mem,omitempty"` + ValMaxMemory int `yaml:"vc_max_mem,omitempty"` Count int `yaml:"count"` } diff --git a/pkg/project/config.go b/pkg/project/config.go index b251040..543ebc1 100644 --- a/pkg/project/config.go +++ b/pkg/project/config.go @@ -14,7 +14,7 @@ func defaultConfig() *types.Config { AttacknetConfig: types.AttacknetConfig{ WaitBeforeInjectionSeconds: 0, ExistingDevnetNamespace: "", - ReuseDevnetBetweenRuns: false, + ReuseDevnetBetweenRuns: true, AllowPostFaultInspection: true, }, } diff --git a/planner-configs/clock-skew-nethermind.yaml b/planner-configs/clock-skew-nethermind.yaml index b6f9be2..7c9dcbd 100644 --- a/planner-configs/clock-skew-nethermind.yaml +++ b/planner-configs/clock-skew-nethermind.yaml @@ -14,7 +14,7 @@ consensus: image: sigp/lighthouse:latest has_sidecar: true - name: prysm - image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + image: prysmaticlabs/prysm-beacon-chain:latest has_sidecar: true #- name: teku # image: consensys/teku:23.12.0 diff --git a/planner-configs/clock-skew-reth.yaml b/planner-configs/clock-skew-reth.yaml index 06c5951..7f9c144 100644 --- a/planner-configs/clock-skew-reth.yaml +++ b/planner-configs/clock-skew-reth.yaml @@ -14,7 +14,7 @@ consensus: image: sigp/lighthouse:latest has_sidecar: true - name: prysm - image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + image: prysmaticlabs/prysm-beacon-chain:latest has_sidecar: true #- name: teku # image: consensys/teku:23.12.0 diff --git a/planner-configs/io-latency-reth.yaml b/planner-configs/io-latency-reth.yaml index 5a004f2..5f0aad2 100644 --- a/planner-configs/io-latency-reth.yaml +++ b/planner-configs/io-latency-reth.yaml @@ -14,7 +14,7 @@ consensus: image: sigp/lighthouse:latest has_sidecar: true - name: prysm - image: prysmaticlabs/prysm-beacon-chain:latest,prysmaticlabs/prysm-validator:latest + image: prysmaticlabs/prysm-beacon-chain:latest has_sidecar: true #- name: teku # image: consensys/teku:23.12.0 diff --git a/test-suites/plan/network-latency-reth.yaml b/test-suites/plan/network-latency-reth.yaml index 149f04d..bf6407d 100644 --- a/test-suites/plan/network-latency-reth.yaml +++ b/test-suites/plan/network-latency-reth.yaml @@ -2,7 +2,7 @@ attacknetConfig: grafanaPodName: grafana grafanaPodPort: "3000" allowPostFaultInspection: false - waitBeforeInjectionSeconds: 300 + waitBeforeInjectionSeconds: 0 reuseDevnetBetweenRuns: true existingDevnetNamespace: kt-restart-reth harnessConfig: diff --git a/test-suites/plan/test-lodestar-reth.yaml b/test-suites/plan/test-lodestar-reth.yaml deleted file mode 100644 index 3b23ffa..0000000 --- a/test-suites/plan/test-lodestar-reth.yaml +++ /dev/null @@ -1,13 +0,0 @@ -attacknetConfig: - grafanaPodName: grafana - grafanaPodPort: "3000" - allowPostFaultInspection: false - waitBeforeInjectionSeconds: 300 - reuseDevnetBetweenRuns: true - existingDevnetNamespace: kt-lodestar-reth -harnessConfig: - networkType: ethereum - networkPackage: github.com/kurtosis-tech/ethereum-package - networkConfig: plan/test-lodestar-reth.yaml -testConfig: - tests: []