From 0cf545a2006276a8a6e83ca93b0baa6991ac86b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Piwo=C5=84ski?= Date: Wed, 8 Nov 2023 12:30:31 +0100 Subject: [PATCH 1/9] Add broadcaster --- main.star | 27 ++++++++++++++++++++++++--- src/broadcaster/broadcaster.star | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 src/broadcaster/broadcaster.star diff --git a/main.star b/main.star index e721354ab..8194b81e6 100644 --- a/main.star +++ b/main.star @@ -36,6 +36,9 @@ mev_custom_flood = import_module( eip4788_deployment = import_module( "./src/eip4788_deployment/eip4788_deployment_launcher.star" ) +el_client_context = import_module("./src/el/el_client_context.star") +broadcaster = import_module("./src/broadcaster/broadcaster.star") + GRAFANA_USER = "admin" GRAFANA_PASSWORD = "admin" GRAFANA_DASHBOARD_PATH_URL = "/d/QdTOwy-nz/eth2-merge-kurtosis-module-dashboard?orgId=1" @@ -127,6 +130,24 @@ def run(plan, args={}): el_uri, ) + fuzz_target = all_el_client_contexts[0] + + if "broadcaster" in args_with_right_defaults.additional_services: + args_with_right_defaults.additional_services.remove("broadcaster") + broadcaster_service = broadcaster.launch_broadcaster(plan, all_el_client_contexts) + fuzz_target = el_client_context.new_el_client_context( + None, + None, + None, + broadcaster_service.ip_address, + 8545, + None, + None, + None, + None, + None, + ) + mev_endpoints = [] # passed external relays get priority # perhaps add mev_type External or remove this @@ -166,7 +187,7 @@ def run(plan, args={}): and args_with_right_defaults.mev_type == FULL_MEV_TYPE ): el_uri = "http://{0}:{1}".format( - all_el_client_contexts[0].ip_addr, all_el_client_contexts[0].rpc_port_num + fuzz_target.ip_addr, fuzz_target.rpc_port_num ) builder_uri = "http://{0}:{1}".format( all_el_client_contexts[-1].ip_addr, all_el_client_contexts[-1].rpc_port_num @@ -254,7 +275,7 @@ def run(plan, args={}): transaction_spammer.launch_transaction_spammer( plan, genesis_constants.PRE_FUNDED_ACCOUNTS, - all_el_client_contexts[0], + fuzz_target, tx_spammer_params, ) plan.print("Successfully launched transaction spammer") @@ -263,7 +284,7 @@ def run(plan, args={}): blob_spammer.launch_blob_spammer( plan, genesis_constants.PRE_FUNDED_ACCOUNTS, - all_el_client_contexts[0], + fuzz_target, all_cl_client_contexts[0], network_params.deneb_fork_epoch, network_params.seconds_per_slot, diff --git a/src/broadcaster/broadcaster.star b/src/broadcaster/broadcaster.star new file mode 100644 index 000000000..cfb73c686 --- /dev/null +++ b/src/broadcaster/broadcaster.star @@ -0,0 +1,18 @@ +IMAGE_NAME = "nethermind/broadcaster:latest" +SERVICE_NAME = "broadcaster" + + +def launch_broadcaster(plan, all_el_client_contexts): + config = get_config(all_el_client_contexts) + return plan.add_service(SERVICE_NAME, config) + + +def get_config(all_el_client_contexts): + return ServiceConfig( + image=IMAGE_NAME, + cmd=[ + "http://{0}:{1}".format(context.ip_addr, context.rpc_port_num) + for context in all_el_client_contexts + ], + + ) From 405aa987dab915f071747863c7f4a85b8fd1147f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Piwo=C5=84ski?= Date: Wed, 8 Nov 2023 12:44:40 +0100 Subject: [PATCH 2/9] Fix indentation --- main.star | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/main.star b/main.star index 8194b81e6..8f2e6a5d5 100644 --- a/main.star +++ b/main.star @@ -134,19 +134,19 @@ def run(plan, args={}): if "broadcaster" in args_with_right_defaults.additional_services: args_with_right_defaults.additional_services.remove("broadcaster") - broadcaster_service = broadcaster.launch_broadcaster(plan, all_el_client_contexts) - fuzz_target = el_client_context.new_el_client_context( - None, - None, - None, - broadcaster_service.ip_address, - 8545, - None, - None, - None, - None, - None, - ) + broadcaster_service = broadcaster.launch_broadcaster(plan, all_el_client_contexts) + fuzz_target = el_client_context.new_el_client_context( + None, + None, + None, + broadcaster_service.ip_address, + 8545, + None, + None, + None, + None, + None, + ) mev_endpoints = [] # passed external relays get priority From f7c44b99f3b319fc58b03cc03599795b0ef0e66b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Piwo=C5=84ski?= Date: Wed, 8 Nov 2023 12:57:53 +0100 Subject: [PATCH 3/9] Lint --- main.star | 10 +++++----- src/broadcaster/broadcaster.star | 9 ++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/main.star b/main.star index 8f2e6a5d5..b7a9ce4e6 100644 --- a/main.star +++ b/main.star @@ -132,9 +132,11 @@ def run(plan, args={}): fuzz_target = all_el_client_contexts[0] - if "broadcaster" in args_with_right_defaults.additional_services: + if "broadcaster" in args_with_right_defaults.additional_services: args_with_right_defaults.additional_services.remove("broadcaster") - broadcaster_service = broadcaster.launch_broadcaster(plan, all_el_client_contexts) + broadcaster_service = broadcaster.launch_broadcaster( + plan, all_el_client_contexts + ) fuzz_target = el_client_context.new_el_client_context( None, None, @@ -186,9 +188,7 @@ def run(plan, args={}): args_with_right_defaults.mev_type and args_with_right_defaults.mev_type == FULL_MEV_TYPE ): - el_uri = "http://{0}:{1}".format( - fuzz_target.ip_addr, fuzz_target.rpc_port_num - ) + el_uri = "http://{0}:{1}".format(fuzz_target.ip_addr, fuzz_target.rpc_port_num) builder_uri = "http://{0}:{1}".format( all_el_client_contexts[-1].ip_addr, all_el_client_contexts[-1].rpc_port_num ) diff --git a/src/broadcaster/broadcaster.star b/src/broadcaster/broadcaster.star index cfb73c686..1fc87f11e 100644 --- a/src/broadcaster/broadcaster.star +++ b/src/broadcaster/broadcaster.star @@ -10,9 +10,8 @@ def launch_broadcaster(plan, all_el_client_contexts): def get_config(all_el_client_contexts): return ServiceConfig( image=IMAGE_NAME, - cmd=[ - "http://{0}:{1}".format(context.ip_addr, context.rpc_port_num) - for context in all_el_client_contexts - ], - + cmd=[ + "http://{0}:{1}".format(context.ip_addr, context.rpc_port_num) + for context in all_el_client_contexts + ], ) From a998f5089c4bfff23108bf4dd206f733e520d857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Piwo=C5=84ski?= Date: Wed, 8 Nov 2023 15:26:09 +0100 Subject: [PATCH 4/9] Modify transaction/blob spammer to accept el uri instead of context. Set port as constant --- main.star | 20 +++++-------------- src/blob_spammer/blob_spammer.star | 11 +++++----- src/broadcaster/broadcaster.star | 1 + .../transaction_spammer.star | 10 ++++------ 4 files changed, 15 insertions(+), 27 deletions(-) diff --git a/main.star b/main.star index b7a9ce4e6..9fe8a629a 100644 --- a/main.star +++ b/main.star @@ -36,7 +36,6 @@ mev_custom_flood = import_module( eip4788_deployment = import_module( "./src/eip4788_deployment/eip4788_deployment_launcher.star" ) -el_client_context = import_module("./src/el/el_client_context.star") broadcaster = import_module("./src/broadcaster/broadcaster.star") GRAFANA_USER = "admin" @@ -137,17 +136,9 @@ def run(plan, args={}): broadcaster_service = broadcaster.launch_broadcaster( plan, all_el_client_contexts ) - fuzz_target = el_client_context.new_el_client_context( - None, - None, - None, + fuzz_target = "http://{0}:{1}".format( broadcaster_service.ip_address, - 8545, - None, - None, - None, - None, - None, + broadcaster.PORT, ) mev_endpoints = [] @@ -188,7 +179,6 @@ def run(plan, args={}): args_with_right_defaults.mev_type and args_with_right_defaults.mev_type == FULL_MEV_TYPE ): - el_uri = "http://{0}:{1}".format(fuzz_target.ip_addr, fuzz_target.rpc_port_num) builder_uri = "http://{0}:{1}".format( all_el_client_contexts[-1].ip_addr, all_el_client_contexts[-1].rpc_port_num ) @@ -204,7 +194,7 @@ def run(plan, args={}): mev_flood.launch_mev_flood( plan, mev_params.mev_flood_image, - el_uri, + fuzz_target, genesis_constants.PRE_FUNDED_ACCOUNTS, ) epoch_recipe = GetHttpRequestRecipe( @@ -231,7 +221,7 @@ def run(plan, args={}): ) mev_flood.spam_in_background( plan, - el_uri, + fuzz_target, mev_params.mev_flood_extra_args, mev_params.mev_flood_seconds_per_bundle, genesis_constants.PRE_FUNDED_ACCOUNTS, @@ -359,7 +349,7 @@ def run(plan, args={}): plan, genesis_constants.PRE_FUNDED_ACCOUNTS[-1].private_key, genesis_constants.PRE_FUNDED_ACCOUNTS[0].address, - el_uri, + fuzz_target, args_with_right_defaults.custom_flood_params, ) else: diff --git a/src/blob_spammer/blob_spammer.star b/src/blob_spammer/blob_spammer.star index 8c9f5d7eb..83f344346 100644 --- a/src/blob_spammer/blob_spammer.star +++ b/src/blob_spammer/blob_spammer.star @@ -7,7 +7,7 @@ ENTRYPOINT_ARGS = ["/bin/sh", "-c"] def launch_blob_spammer( plan, prefunded_addresses, - el_client_context, + el_uri, cl_client_context, deneb_fork_epoch, seconds_per_slot, @@ -15,7 +15,7 @@ def launch_blob_spammer( ): config = get_config( prefunded_addresses, - el_client_context, + el_uri, cl_client_context, deneb_fork_epoch, seconds_per_slot, @@ -26,7 +26,7 @@ def launch_blob_spammer( def get_config( prefunded_addresses, - el_client_context, + el_uri, cl_client_context, deneb_fork_epoch, seconds_per_slot, @@ -51,9 +51,8 @@ def get_config( seconds_per_slot, ), 'echo "sleep is over, starting to send blob transactions"', - "/tx-fuzz.bin blobs --rpc=http://{0}:{1} --sk={2}".format( - el_client_context.ip_addr, - el_client_context.rpc_port_num, + "/tx-fuzz.bin blobs --rpc={1} --sk={2}".format( + el_uri, prefunded_addresses[1].private_key, ), ] diff --git a/src/broadcaster/broadcaster.star b/src/broadcaster/broadcaster.star index 1fc87f11e..2a901c8df 100644 --- a/src/broadcaster/broadcaster.star +++ b/src/broadcaster/broadcaster.star @@ -1,5 +1,6 @@ IMAGE_NAME = "nethermind/broadcaster:latest" SERVICE_NAME = "broadcaster" +PORT = 8545 def launch_broadcaster(plan, all_el_client_contexts): diff --git a/src/transaction_spammer/transaction_spammer.star b/src/transaction_spammer/transaction_spammer.star index 7a46b67ae..7591e536e 100644 --- a/src/transaction_spammer/transaction_spammer.star +++ b/src/transaction_spammer/transaction_spammer.star @@ -3,22 +3,20 @@ SERVICE_NAME = "transaction-spammer" def launch_transaction_spammer( - plan, prefunded_addresses, el_client_context, tx_spammer_params + plan, prefunded_addresses, el_uri, tx_spammer_params ): config = get_config( - prefunded_addresses, el_client_context, tx_spammer_params.tx_spammer_extra_args + prefunded_addresses, el_uri, tx_spammer_params.tx_spammer_extra_args ) plan.add_service(SERVICE_NAME, config) -def get_config(prefunded_addresses, el_client_context, tx_spammer_extra_args): +def get_config(prefunded_addresses, el_uri, tx_spammer_extra_args): return ServiceConfig( image=IMAGE_NAME, cmd=[ "spam", - "--rpc=http://{0}:{1}".format( - el_client_context.ip_addr, el_client_context.rpc_port_num - ), + "--rpc={}".format(el_uri), "--sk={0}".format(prefunded_addresses[3].private_key), "{0}".format(" ".join(tx_spammer_extra_args)), ], From 3326f8011fa2f5640bad7d4398b84f0b02bd3409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Piwo=C5=84ski?= Date: Wed, 8 Nov 2023 15:28:24 +0100 Subject: [PATCH 5/9] Fix format --- src/blob_spammer/blob_spammer.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blob_spammer/blob_spammer.star b/src/blob_spammer/blob_spammer.star index 83f344346..7abd5a862 100644 --- a/src/blob_spammer/blob_spammer.star +++ b/src/blob_spammer/blob_spammer.star @@ -51,7 +51,7 @@ def get_config( seconds_per_slot, ), 'echo "sleep is over, starting to send blob transactions"', - "/tx-fuzz.bin blobs --rpc={1} --sk={2}".format( + "/tx-fuzz.bin blobs --rpc={} --sk={}".format( el_uri, prefunded_addresses[1].private_key, ), From ccafb5d1e71e9d33b65969d9c5510a9f9a468551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Piwo=C5=84ski?= Date: Wed, 8 Nov 2023 15:39:36 +0100 Subject: [PATCH 6/9] Fix fuzz target when broadcaster is off --- main.star | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/main.star b/main.star index 9fe8a629a..e6f09e32d 100644 --- a/main.star +++ b/main.star @@ -129,7 +129,10 @@ def run(plan, args={}): el_uri, ) - fuzz_target = all_el_client_contexts[0] + fuzz_target = "http://{0}:{1}".format( + all_el_client_contexts[0].ip_addr, + all_el_client_contexts[0].rpc_port_num, + ) if "broadcaster" in args_with_right_defaults.additional_services: args_with_right_defaults.additional_services.remove("broadcaster") From 0156df3694d9681887999d1dd3fd929035ff8496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Piwo=C5=84ski?= Date: Wed, 8 Nov 2023 16:17:56 +0100 Subject: [PATCH 7/9] Lint --- main.star | 6 +++--- src/transaction_spammer/transaction_spammer.star | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/main.star b/main.star index e6f09e32d..cfff63731 100644 --- a/main.star +++ b/main.star @@ -130,9 +130,9 @@ def run(plan, args={}): ) fuzz_target = "http://{0}:{1}".format( - all_el_client_contexts[0].ip_addr, - all_el_client_contexts[0].rpc_port_num, - ) + all_el_client_contexts[0].ip_addr, + all_el_client_contexts[0].rpc_port_num, + ) if "broadcaster" in args_with_right_defaults.additional_services: args_with_right_defaults.additional_services.remove("broadcaster") diff --git a/src/transaction_spammer/transaction_spammer.star b/src/transaction_spammer/transaction_spammer.star index 7591e536e..e339e0042 100644 --- a/src/transaction_spammer/transaction_spammer.star +++ b/src/transaction_spammer/transaction_spammer.star @@ -2,9 +2,7 @@ IMAGE_NAME = "ethpandaops/tx-fuzz:master" SERVICE_NAME = "transaction-spammer" -def launch_transaction_spammer( - plan, prefunded_addresses, el_uri, tx_spammer_params -): +def launch_transaction_spammer(plan, prefunded_addresses, el_uri, tx_spammer_params): config = get_config( prefunded_addresses, el_uri, tx_spammer_params.tx_spammer_extra_args ) From 9dd18a123d2a494ede3067a24a6d980ae1d2e5b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Piwo=C5=84ski?= Date: Wed, 8 Nov 2023 17:34:26 +0100 Subject: [PATCH 8/9] Add broadcaster documentation --- README.md | 1 + main.star | 1 + network_params.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/README.md b/README.md index 55a2bc1bc..26edb6f7c 100644 --- a/README.md +++ b/README.md @@ -252,6 +252,7 @@ goomy_blob_params: # - A light beacon chain explorer will be launched # - Default: ["tx_spammer", "blob_spammer", "el_forkmon", "beacon_metrics_gazer", "dora"," "prometheus_grafana"] additional_services: + - broadcaster - tx_spammer - blob_spammer - custom_flood diff --git a/main.star b/main.star index cfff63731..b3f413107 100644 --- a/main.star +++ b/main.star @@ -134,6 +134,7 @@ def run(plan, args={}): all_el_client_contexts[0].rpc_port_num, ) + # Broadcaster forwards requests, sent to it, to all nodes in parallel if "broadcaster" in args_with_right_defaults.additional_services: args_with_right_defaults.additional_services.remove("broadcaster") broadcaster_service = broadcaster.launch_broadcaster( diff --git a/network_params.yaml b/network_params.yaml index e5c6c2322..992b7b0e4 100644 --- a/network_params.yaml +++ b/network_params.yaml @@ -40,6 +40,7 @@ network_params: deneb_fork_epoch: 4 electra_fork_epoch: null additional_services: + - broadcaster - tx_spammer - blob_spammer - el_forkmon From ed66b20a6f81cb6559a77decef184d4f76c66be1 Mon Sep 17 00:00:00 2001 From: Gyanendra Mishra Date: Wed, 8 Nov 2023 16:43:24 +0000 Subject: [PATCH 9/9] remove broadcaster from network_params.yaml --- network_params.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/network_params.yaml b/network_params.yaml index 992b7b0e4..e5c6c2322 100644 --- a/network_params.yaml +++ b/network_params.yaml @@ -40,7 +40,6 @@ network_params: deneb_fork_epoch: 4 electra_fork_epoch: null additional_services: - - broadcaster - tx_spammer - blob_spammer - el_forkmon