diff --git a/src/env_vars.py b/src/env_vars.py index a44a73d..47c334f 100644 --- a/src/env_vars.py +++ b/src/env_vars.py @@ -20,6 +20,7 @@ NOMOS_IMAGE = get_env_var("NOMOS_IMAGE", DEFAULT_NOMOS_IMAGE) NOMOS_MOD_DA_IMAGE = "nomos-mod-da:testnet" NOMOS_EXECUTOR_MOD_DA_IMAGE = "nomos-executor-mod-da:testnet" NOMOS_EXECUTOR_MOD_DA_IMAGE_25d781e = "nomos-executor-mod-da-25d781e:testnet" +NOMOS_EXECUTOR_MOD_DA_IMAGE_0a01ddb = "nomos-executor-mod-da-0a01ddb:testnet" DEFAULT_PROXY_IMAGE = "bitnami/configurable-http-proxy:latest" HTTP_PROXY_IMAGE = get_env_var("HTTP_PROXY_IMAGE", DEFAULT_PROXY_IMAGE) @@ -31,6 +32,7 @@ CFGSYNC = "cfgsync" NOMOS_MOD_DA = "nomos_mod_da" NOMOS_EXECUTOR_MOD_DA = "nomos_executor_mod_da" NOMOS_EXECUTOR_MOD_DA_25d781e = "nomos_executor_mod_da_25d781e" +NOMOS_EXECUTOR_MOD_DA_0a01ddb = "nomos_executor_mod_da_0a01ddb" NODE_1 = get_env_var("NODE_1", NOMOS) NODE_2 = get_env_var("NODE_2", NOMOS_EXECUTOR) diff --git a/src/node/node_vars.py b/src/node/node_vars.py index 8ed0215..4da8077 100644 --- a/src/node/node_vars.py +++ b/src/node/node_vars.py @@ -1,4 +1,10 @@ -from src.env_vars import NOMOS_IMAGE, NOMOS_MOD_DA_IMAGE, NOMOS_EXECUTOR_MOD_DA_IMAGE, NOMOS_EXECUTOR_MOD_DA_IMAGE_25d781e +from src.env_vars import ( + NOMOS_IMAGE, + NOMOS_MOD_DA_IMAGE, + NOMOS_EXECUTOR_MOD_DA_IMAGE, + NOMOS_EXECUTOR_MOD_DA_IMAGE_25d781e, + NOMOS_EXECUTOR_MOD_DA_IMAGE_0a01ddb, +) nomos_nodes = { "nomos_mod_da": { @@ -19,6 +25,12 @@ nomos_nodes = { "ports": ["3000/udp", "18080/tcp"], "entrypoint": "/etc/nomos/scripts/run_nomos_executor_debug.sh", }, + "nomos_executor_mod_da_0a01ddb": { + "image": NOMOS_EXECUTOR_MOD_DA_IMAGE_0a01ddb, + "volumes": ["cluster_config:/etc/nomos", "./kzgrs/kzgrs_test_params:/kzgrs_test_params:z"], + "ports": ["3000/udp", "18080/tcp"], + "entrypoint": "/etc/nomos/scripts/run_nomos_executor_debug.sh", + }, "nomos_custom": { "image": NOMOS_IMAGE, "volumes": ["cluster_config:/etc/nomos", "./kzgrs/kzgrs_test_params:/kzgrs_test_params:z"], diff --git a/tests/dispersal_resilience/test_dispersal_resilience.py b/tests/dispersal_resilience/test_dispersal_resilience.py index e72b97a..e8d6de8 100644 --- a/tests/dispersal_resilience/test_dispersal_resilience.py +++ b/tests/dispersal_resilience/test_dispersal_resilience.py @@ -35,3 +35,15 @@ class TestDispersalResilience(StepsDataAvailability): return assert False, "Send dispersal request should fail" + + @pytest.mark.usefixtures("setup_2_node_mod_da_cluster") + @pytest.mark.parametrize("setup_2_node_mod_da_cluster", [{"executor_version": "0a01ddb"}], indirect=True) + def test_rs_encoding_resistance_to_manipulation(self): + # Confirm validator node has rejected dispersal request from executor with inconsistent RS encoding + try: + self.disperse_data(DATA_TO_DISPERSE[5], to_app_id(1), to_index(0), timeout_duration=0) + except Exception as e: + assert "does not match destination slice length" in str(e), "Send dispersal request should fail" + return + + assert False, "Send dispersal request with inconsistent RS encoding should fail"