Skip to content

Commit

Permalink
fix: replace goomy with spamoor (#860)
Browse files Browse the repository at this point in the history
This PR replaces [goomy](https://github.com/ethpandaops/goomy-blob) with
[spamoor](https://github.com/ethpandaops/spamoor).

The spamoor project is based on goomy, but was improved a lot to handle
high transaction throughput reliably.
It supports all features that goomy provides, but blob scenarios are
prefixed with `blob-`.

As spamoor works much better by now, it makes sense to deprecate goomy
and replace it with spamoor.
  • Loading branch information
pk910 authored Dec 18, 2024
1 parent e60afbe commit 28f7b7d
Show file tree
Hide file tree
Showing 14 changed files with 169 additions and 129 deletions.
2 changes: 1 addition & 1 deletion .github/tests/geth-all.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ participants:
- el_type: geth
cl_type: grandine
additional_services:
- goomy_blob
- spamoor_blob
- dora
2 changes: 1 addition & 1 deletion .github/tests/mev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ additional_services:
- tx_spammer
- blob_spammer
- custom_flood
- goomy_blob
- spamoor_blob
- beacon_metrics_gazer
- dora
- prometheus_grafana
Expand Down
2 changes: 1 addition & 1 deletion .github/tests/mix-with-tools-mev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ additional_services:
- beacon_metrics_gazer
- dora
- prometheus_grafana
- goomy_blob
- spamoor_blob
- custom_flood
- blobscan
- blockscout
Expand Down
2 changes: 1 addition & 1 deletion .github/tests/mix-with-tools-minimal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ additional_services:
- beacon_metrics_gazer
- dora
- prometheus_grafana
- goomy_blob
- spamoor_blob
- custom_flood
- blobscan
- blockscout
Expand Down
2 changes: 1 addition & 1 deletion .github/tests/mix-with-tools.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ additional_services:
- beacon_metrics_gazer
- dora
- prometheus_grafana
- goomy_blob
- spamoor_blob
- custom_flood
- blobscan
- blockscout
Expand Down
2 changes: 1 addition & 1 deletion .github/tests/peerdas-fulu.yaml.norun
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ snooper_enabled: true
global_log_level: debug
additional_services:
- dora
- goomy_blob
- spamoor_blob
- prometheus_grafana
- assertoor
ethereum_metrics_exporter_enabled: true
Expand Down
50 changes: 36 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -644,7 +644,8 @@ additional_services:
- tx_spammer
- blob_spammer
- custom_flood
- goomy_blob
- spamoor
- spamoor_blob
- el_forkmon
- blockscout
- beacon_metrics_gazer
Expand Down Expand Up @@ -686,14 +687,6 @@ tx_spammer_params:
# A list of optional extra params that will be passed to the TX Spammer container for modifying its behaviour
tx_spammer_extra_args: []

# Configuration place for goomy the blob spammer - https://github.com/ethpandaops/goomy-blob
goomy_blob_params:
# Goomy Blob docker image to use
# Defaults to the latest
image: "ethpandaops/goomy-blob:latest"
# A list of optional params that will be passed to the blob-spammer comamnd for modifying its behaviour
goomy_blob_args: []

# Configuration place for prometheus
prometheus_params:
storage_tsdb_retention_time: "1d"
Expand Down Expand Up @@ -936,14 +929,15 @@ checkpoint_sync_enabled: false
# Global flag to set checkpoint sync url
checkpoint_sync_url: ""

# Spamoor params
# Configuration place for spamoor as transaction spammer
spamoor_params:
# The image to use for spamoor
image: ethpandaops/spamoor:latest
# The type of transactions to send
# Valid values are eoatx, erctx, deploytx, depoy-destruct, blobs, gasburnertx
# The spamoor scenario to use (see https://github.com/ethpandaops/spamoor)
# Valid scenarios are:
# eoatx, erctx, deploytx, depoy-destruct, blobs, gasburnertx
# Defaults to eoatx
tx_type: eoatx
scenario: eoatx
# Throughput of spamoor
# Defaults to 1000
throughput: 1000
Expand All @@ -957,6 +951,34 @@ spamoor_params:
# Defaults to empty
spamoor_extra_args: []

# Configuration place for spammor as blob spammer
spamoor_blob_params:
# spamoor docker image to use
# Defaults to the latest
image: "ethpandaops/spamoor:latest"
# The spamoor blob scenario to use (see https://github.com/ethpandaops/spamoor)
# Valid blob scenarios are:
# - blobs (normal blob transactions only)
# - blob-combined (normal & special blobs with replacements)
# - blob-conflicting (conflicting blob & dynfee transactions)
# - blob-replacements (normal blobs with replacement blob transactions)
# Defaults to blob-combined
scenario: blob-combined
# Throughput of spamoor
# Defaults to 3
throughput: 3
# Maximum number of blobs per transaction
# Defaults to 2
max_blobs: 2
# Max pending blob transactions for spamoor
# Defaults to 6
max_pending: 6
# Max wallets for spamoor
# Defaults to 20
max_wallets: 20
# A list of optional params that will be passed to the spamoor comamnd for modifying its behaviour
spamoor_extra_args: []

# Ethereum genesis generator params
ethereum_genesis_generator_params:
# The image to use for ethereum genesis generator
Expand Down Expand Up @@ -1195,7 +1217,7 @@ Here's a table of where the keys are used
| 0 | mev_custom_flood | | ✅ | As the receiver of balance |
| 1 | blob_spammer | ✅ | | As the sender of blobs |
| 3 | transaction_spammer | ✅ | | To spam transactions with |
| 4 | goomy_blob | ✅ | | As the sender of blobs |
| 4 | spamoor_blob | ✅ | | As the sender of blobs |
| 6 | mev_flood | ✅ | | As the contract owner |
| 7 | mev_flood | ✅ | | As the user_key |
| 8 | assertoor | ✅ | ✅ | As the funding for tests |
Expand Down
24 changes: 10 additions & 14 deletions main.star
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ transaction_spammer = import_module(
"./src/transaction_spammer/transaction_spammer.star"
)
blob_spammer = import_module("./src/blob_spammer/blob_spammer.star")
goomy_blob = import_module("./src/goomy_blob/goomy_blob.star")
spamoor_blob = import_module("./src/spamoor_blob/spamoor_blob.star")
el_forkmon = import_module("./src/el_forkmon/el_forkmon_launcher.star")
beacon_metrics_gazer = import_module(
"./src/beacon_metrics_gazer/beacon_metrics_gazer_launcher.star"
Expand Down Expand Up @@ -462,19 +462,6 @@ def run(plan, args={}):
args_with_right_defaults.tx_spammer_params,
)
plan.print("Successfully launched blob spammer")
elif additional_service == "goomy_blob":
plan.print("Launching Goomy the blob spammer")
goomy_blob_params = args_with_right_defaults.goomy_blob_params
goomy_blob.launch_goomy_blob(
plan,
prefunded_accounts,
all_el_contexts,
all_cl_contexts[0],
network_params.seconds_per_slot,
goomy_blob_params,
global_node_selectors,
)
plan.print("Successfully launched goomy the blob spammer")
# We need a way to do time.sleep
# TODO add code that waits for CL genesis
elif additional_service == "el_forkmon":
Expand Down Expand Up @@ -696,6 +683,15 @@ def run(plan, args={}):
args_with_right_defaults.spamoor_params,
global_node_selectors,
)
elif additional_service == "spamoor_blob":
plan.print("Launching spamoor as blob spammer")
spamoor_blob.launch_spamoor_blob(
plan,
prefunded_accounts,
all_el_contexts,
args_with_right_defaults.spamoor_blob_params,
global_node_selectors,
)
else:
fail("Invalid additional service %s" % (additional_service))
if launch_prometheus_grafana:
Expand Down
4 changes: 2 additions & 2 deletions network_params.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,8 @@ dora_params:
image: ""
tx_spammer_params:
tx_spammer_extra_args: []
goomy_blob_params:
goomy_blob_args: []
spamoor_blob_params:
spamoor_extra_args: []
prometheus_params:
storage_tsdb_retention_time: "1d"
storage_tsdb_retention_size: "512MB"
Expand Down
67 changes: 0 additions & 67 deletions src/goomy_blob/goomy_blob.star

This file was deleted.

Loading

0 comments on commit 28f7b7d

Please sign in to comment.