test: rs encoding resistance to manipulation

This commit is contained in:
Roman 2025-06-20 13:38:45 +08:00
parent 5d7c5d3120
commit 5900c11e80
No known key found for this signature in database
GPG Key ID: 583BDF43C238B83E
3 changed files with 27 additions and 1 deletions

View File

@ -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)

View File

@ -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"],

View File

@ -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"