diff --git a/.cargo-deny.toml b/.cargo-deny.toml index 1bdbd0c..426bb9f 100644 --- a/.cargo-deny.toml +++ b/.cargo-deny.toml @@ -14,6 +14,7 @@ ignore = [ "RUSTSEC-2024-0436", # paste unmaintained; upstream dependency "RUSTSEC-2025-0012", # backoff unmaintained; upstream workspace still relies on it "RUSTSEC-2025-0055", # tracing-subscriber ansi escape issue; upstream dependency + "RUSTSEC-2025-0134", # rustls-pemfile unmaintained; transitive via rustls stack ] yanked = "deny" diff --git a/.github/workflows/build-binaries.yml b/.github/workflows/build-binaries.yml index 6fa288c..3424c10 100644 --- a/.github/workflows/build-binaries.yml +++ b/.github/workflows/build-binaries.yml @@ -5,7 +5,7 @@ on: env: CARGO_TERM_COLOR: always - NOMOS_NODE_REV: 2f60a0372c228968c3526c341ebc7e58bbd178dd + NOMOS_NODE_REV: d2dd5a5084e1daef4032562c77d41de5e4d495f8 NOMOS_BUNDLE_VERSION: v4 jobs: @@ -67,17 +67,12 @@ jobs: # Work around flate2 1.1.6 ambiguity issues by pinning to a fixed release. cargo +nightly-2025-09-14 update -p flate2 --precise 1.1.5 cargo +nightly-2025-09-14 build --all-features --bins - - name: Build local runner from workspace - run: | - cd "${GITHUB_WORKSPACE}" - cargo +nightly-2025-09-14 build --all-features -p runner-examples --bin local_runner - name: Package binaries run: | mkdir -p artifacts cp "${CARGO_TARGET_DIR}/debug/nomos-node" artifacts/ cp "${CARGO_TARGET_DIR}/debug/nomos-executor" artifacts/ cp "${CARGO_TARGET_DIR}/debug/nomos-cli" artifacts/ - cp "${CARGO_TARGET_DIR}/debug/local_runner" artifacts/ mkdir -p artifacts/circuits rsync -a "$NOMOS_CIRCUITS"/ artifacts/circuits/ tar -czf nomos-binaries.tar.gz -C artifacts . diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c9b2702..9c22256 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,7 +7,7 @@ on: env: CARGO_TERM_COLOR: always - NOMOS_NODE_REV: 2f60a0372c228968c3526c341ebc7e58bbd178dd + NOMOS_NODE_REV: d2dd5a5084e1daef4032562c77d41de5e4d495f8 NOMOS_BUNDLE_VERSION: v4 permissions: actions: read diff --git a/.gitignore b/.gitignore index 4a35d34..0d7e256 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ ci-artifacts/ tests/kzgrs/circuits_bundle/ NOMOS_RUST_SOURCES_ONLY.txt dump.zsh +testing-framework/assets/stack/bin/ +testing-framework/assets/stack/kzgrs_test_params/ # Local test artifacts (kept when NOMOS_TESTS_KEEP_LOGS=1) tests/workflows/.tmp* diff --git a/Cargo.lock b/Cargo.lock index 08bca06..3b4b774 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -851,7 +851,7 @@ dependencies = [ [[package]] name = "broadcast-service" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "derivative", @@ -990,7 +990,7 @@ dependencies = [ "clap", "groth16", "hex", - "key-management-system", + "key-management-system-service", "nomos-core", "nomos-da-network-core", "nomos-executor", @@ -1014,7 +1014,7 @@ dependencies = [ [[package]] name = "chain-common" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "nomos-core", "serde", @@ -1023,7 +1023,7 @@ dependencies = [ [[package]] name = "chain-leader" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "chain-common", @@ -1051,7 +1051,7 @@ dependencies = [ [[package]] name = "chain-network" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "chain-common", @@ -1080,7 +1080,7 @@ dependencies = [ [[package]] name = "chain-service" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "broadcast-service", @@ -1181,7 +1181,7 @@ dependencies = [ [[package]] name = "circuits-prover" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "circuits-utils", "tempfile", @@ -1190,7 +1190,7 @@ dependencies = [ [[package]] name = "circuits-utils" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "dirs", ] @@ -1260,7 +1260,7 @@ dependencies = [ [[package]] name = "common-http-client" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "broadcast-service", "futures", @@ -1447,7 +1447,7 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "cryptarchia-engine" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "cfg_eval", "nomos-utils", @@ -1462,7 +1462,7 @@ dependencies = [ [[package]] name = "cryptarchia-sync" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "bytes", "cryptarchia-engine", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "executor-http-client" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "common-http-client", "futures", @@ -2358,7 +2358,7 @@ dependencies = [ [[package]] name = "groth16" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "ark-bn254 0.4.0", "ark-ec 0.4.2", @@ -3281,22 +3281,19 @@ dependencies = [ ] [[package]] -name = "key-management-system" +name = "key-management-system-keys" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "bytes", "ed25519-dalek", "groth16", "key-management-system-macros", - "log", - "nomos-blend-message", + "nomos-blend-proofs", "nomos-utils", - "overwatch", - "poq", - "poseidon2", "serde", + "subtle", "thiserror 2.0.17", "tokio", "tracing", @@ -3307,13 +3304,28 @@ dependencies = [ [[package]] name = "key-management-system-macros" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "proc-macro2", "quote", "syn 2.0.111", ] +[[package]] +name = "key-management-system-service" +version = "0.1.0" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" +dependencies = [ + "async-trait", + "key-management-system-keys", + "log", + "overwatch", + "serde", + "thiserror 2.0.17", + "tokio", + "tracing", +] + [[package]] name = "kube" version = "0.87.2" @@ -3408,7 +3420,7 @@ dependencies = [ [[package]] name = "kzgrs" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "ark-bls12-381", "ark-ec 0.4.2", @@ -3427,7 +3439,7 @@ dependencies = [ [[package]] name = "kzgrs-backend" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "ark-ff 0.4.2", "ark-poly 0.4.2", @@ -4066,7 +4078,7 @@ dependencies = [ [[package]] name = "mmr" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "ark-ff 0.4.2", "groth16", @@ -4353,7 +4365,7 @@ dependencies = [ [[package]] name = "nomos-api" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "broadcast-service", @@ -4383,57 +4395,111 @@ dependencies = [ "utoipa-swagger-ui", ] +[[package]] +name = "nomos-blend" +version = "0.1.0" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" +dependencies = [ + "nomos-blend-crypto", + "nomos-blend-message", + "nomos-blend-network", + "nomos-blend-proofs", + "nomos-blend-scheduling", +] + +[[package]] +name = "nomos-blend-crypto" +version = "0.1.0" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" +dependencies = [ + "blake2", + "ed25519-dalek", + "groth16", + "nomos-utils", + "poq", + "poseidon2", + "rs-merkle-tree", + "serde", + "subtle", + "thiserror 1.0.69", + "x25519-dalek", + "zeroize", + "zksign", +] + [[package]] name = "nomos-blend-message" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "blake2", "derivative", "ed25519-dalek", - "generic-array 1.3.5", "groth16", + "hex", "itertools 0.14.0", + "key-management-system-keys", + "nomos-blend-crypto", + "nomos-blend-proofs", "nomos-core", "nomos-utils", - "num-bigint", - "poq", "serde", + "serde-big-array", "serde_with", "thiserror 1.0.69", "tracing", - "x25519-dalek", + "zeroize", ] [[package]] name = "nomos-blend-network" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "either", "futures", "futures-timer", + "key-management-system-keys", "libp2p", + "nomos-blend-crypto", "nomos-blend-message", + "nomos-blend-proofs", "nomos-blend-scheduling", "nomos-core", "nomos-libp2p", "tracing", ] +[[package]] +name = "nomos-blend-proofs" +version = "0.1.0" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" +dependencies = [ + "generic-array 1.3.5", + "groth16", + "nomos-blend-crypto", + "num-bigint", + "poq", + "serde", + "thiserror 1.0.69", +] + [[package]] name = "nomos-blend-scheduling" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "derivative", "fork_stream", "futures", - "hex", + "key-management-system-keys", "multiaddr", + "nomos-blend-crypto", "nomos-blend-message", + "nomos-blend-proofs", "nomos-core", + "nomos-utils", "rand 0.8.5", "serde", "thiserror 1.0.69", @@ -4445,7 +4511,7 @@ dependencies = [ [[package]] name = "nomos-blend-service" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "broadcast-service", @@ -4454,12 +4520,10 @@ dependencies = [ "fork_stream", "futures", "groth16", - "key-management-system", + "key-management-system-service", "libp2p", "libp2p-stream", - "nomos-blend-message", - "nomos-blend-network", - "nomos-blend-scheduling", + "nomos-blend", "nomos-core", "nomos-ledger", "nomos-libp2p", @@ -4469,7 +4533,6 @@ dependencies = [ "overwatch", "poq", "rand 0.8.5", - "rs-merkle-tree", "serde", "serde_with", "services-utils", @@ -4483,7 +4546,7 @@ dependencies = [ [[package]] name = "nomos-core" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "ark-ff 0.4.2", "async-trait", @@ -4500,6 +4563,9 @@ dependencies = [ "hex", "multiaddr", "nom 8.0.0", + "nomos-blend-crypto", + "nomos-blend-proofs", + "nomos-utils", "num-bigint", "pol", "poseidon2", @@ -4514,7 +4580,7 @@ dependencies = [ [[package]] name = "nomos-da-dispersal" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "broadcast-service", @@ -4542,7 +4608,7 @@ dependencies = [ [[package]] name = "nomos-da-messages" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "blake2", "futures", @@ -4555,7 +4621,7 @@ dependencies = [ [[package]] name = "nomos-da-network-core" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "cached", "either", @@ -4583,7 +4649,7 @@ dependencies = [ [[package]] name = "nomos-da-network-service" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "arc-swap", "async-trait", @@ -4620,7 +4686,7 @@ dependencies = [ [[package]] name = "nomos-da-sampling" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "bytes", @@ -4648,7 +4714,7 @@ dependencies = [ [[package]] name = "nomos-da-verifier" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "futures", @@ -4675,7 +4741,7 @@ dependencies = [ [[package]] name = "nomos-executor" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "axum", @@ -4715,7 +4781,7 @@ dependencies = [ [[package]] name = "nomos-http-api-common" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "axum", "governor", @@ -4731,12 +4797,15 @@ dependencies = [ [[package]] name = "nomos-ledger" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "cryptarchia-engine", "ed25519", "groth16", "mmr", + "nomos-blend-crypto", + "nomos-blend-message", + "nomos-blend-proofs", "nomos-core", "nomos-utils", "num-bigint", @@ -4744,6 +4813,7 @@ dependencies = [ "rpds", "serde", "thiserror 1.0.69", + "tracing", "utxotree", "zksign", ] @@ -4751,7 +4821,7 @@ dependencies = [ [[package]] name = "nomos-libp2p" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "backon", @@ -4780,7 +4850,7 @@ dependencies = [ [[package]] name = "nomos-network" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "cryptarchia-sync", @@ -4799,7 +4869,7 @@ dependencies = [ [[package]] name = "nomos-node" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "axum", @@ -4809,16 +4879,16 @@ dependencies = [ "chain-service", "clap", "color-eyre", + "cryptarchia-engine", "derivative", "futures", "groth16", "hex", "http 1.4.0", - "key-management-system", + "key-management-system-service", "kzgrs-backend", "nomos-api", - "nomos-blend-message", - "nomos-blend-scheduling", + "nomos-blend", "nomos-blend-service", "nomos-core", "nomos-da-messages", @@ -4827,6 +4897,7 @@ dependencies = [ "nomos-da-sampling", "nomos-da-verifier", "nomos-http-api-common", + "nomos-ledger", "nomos-libp2p", "nomos-network", "nomos-sdp", @@ -4862,7 +4933,7 @@ dependencies = [ [[package]] name = "nomos-sdp" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "ed25519-dalek", @@ -4881,7 +4952,7 @@ dependencies = [ [[package]] name = "nomos-storage" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "bytes", @@ -4901,7 +4972,7 @@ dependencies = [ [[package]] name = "nomos-system-sig" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-ctrlc", "async-trait", @@ -4912,7 +4983,7 @@ dependencies = [ [[package]] name = "nomos-time" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "cfg_eval", @@ -4934,7 +5005,7 @@ dependencies = [ [[package]] name = "nomos-tracing" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "opentelemetry", "opentelemetry-http", @@ -4957,7 +5028,7 @@ dependencies = [ [[package]] name = "nomos-tracing-service" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "nomos-tracing", @@ -4971,7 +5042,7 @@ dependencies = [ [[package]] name = "nomos-utils" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "blake2", @@ -4988,7 +5059,7 @@ dependencies = [ [[package]] name = "nomos-wallet" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "bytes", @@ -4996,7 +5067,7 @@ dependencies = [ "futures", "groth16", "hex", - "key-management-system", + "key-management-system-service", "nomos-core", "nomos-ledger", "nomos-storage", @@ -5548,7 +5619,7 @@ dependencies = [ [[package]] name = "pol" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "circuits-prover", "circuits-utils", @@ -5578,7 +5649,7 @@ dependencies = [ [[package]] name = "poq" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "circuits-prover", "circuits-utils", @@ -5600,7 +5671,7 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "poseidon2" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "ark-bn254 0.4.0", "ark-ff 0.4.2", @@ -6595,6 +6666,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + [[package]] name = "serde-value" version = "0.7.0" @@ -6729,7 +6809,7 @@ dependencies = [ [[package]] name = "services-utils" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "futures", @@ -6932,7 +7012,7 @@ dependencies = [ [[package]] name = "subnetworks-assignations" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "counter", "libp2p-identity", @@ -7114,9 +7194,8 @@ dependencies = [ "ed25519-dalek", "groth16", "hex", - "key-management-system", + "key-management-system-service", "nomos-api", - "nomos-blend-message", "nomos-blend-service", "nomos-core", "nomos-da-dispersal", @@ -7155,7 +7234,7 @@ dependencies = [ "futures", "groth16", "hex", - "key-management-system", + "key-management-system-service", "kzgrs-backend", "nomos-core", "nomos-da-network-core", @@ -7258,7 +7337,7 @@ dependencies = [ [[package]] name = "tests" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "blst", @@ -7275,10 +7354,10 @@ dependencies = [ "futures-util", "groth16", "hex", - "key-management-system", + "key-management-system-service", "kzgrs-backend", "nomos-api", - "nomos-blend-message", + "nomos-blend", "nomos-blend-service", "nomos-core", "nomos-da-dispersal", @@ -7288,7 +7367,6 @@ dependencies = [ "nomos-da-verifier", "nomos-executor", "nomos-http-api-common", - "nomos-ledger", "nomos-libp2p", "nomos-network", "nomos-node", @@ -7896,7 +7974,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tx-service" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "async-trait", "futures", @@ -8049,7 +8127,7 @@ dependencies = [ [[package]] name = "utxotree" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "ark-ff 0.4.2", "groth16", @@ -8102,7 +8180,7 @@ dependencies = [ [[package]] name = "wallet" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "nomos-core", "nomos-ledger", @@ -8676,7 +8754,7 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "witness-generator" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "circuits-utils", "tempfile", @@ -8706,6 +8784,7 @@ dependencies = [ "curve25519-dalek", "rand_core 0.6.4", "serde", + "zeroize", ] [[package]] @@ -8885,7 +8964,7 @@ dependencies = [ [[package]] name = "zksign" version = "0.1.0" -source = "git+https://github.com/logos-co/nomos-node.git?rev=2f60a0372c228968c3526c341ebc7e58bbd178dd#2f60a0372c228968c3526c341ebc7e58bbd178dd" +source = "git+https://github.com/logos-co/nomos-node.git?rev=d2dd5a5084e1daef4032562c77d41de5e4d495f8#d2dd5a5084e1daef4032562c77d41de5e4d495f8" dependencies = [ "ark-ff 0.4.2", "circuits-prover", diff --git a/Cargo.toml b/Cargo.toml index badb04f..f0afdc4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,50 +37,50 @@ testing-framework-runner-local = { default-features = false, path = "testing-f testing-framework-workflows = { default-features = false, path = "testing-framework/workflows" } # Nomos git dependencies (pinned to latest master) -broadcast-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } +broadcast-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } cfgsync = { default-features = false, path = "testing-framework/tools/cfgsync" } -chain-leader = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd", features = [ +chain-leader = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8", features = [ "pol-dev-mode", ] } -chain-network = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -chain-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -common-http-client = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -cryptarchia-engine = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -cryptarchia-sync = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -executor-http-client = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -groth16 = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -key-management-system = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -kzgrs = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -kzgrs-backend = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-api = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-blend-message = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-blend-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-cli = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-core = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-da-dispersal = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-da-network-core = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-da-network-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-da-sampling = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-da-verifier = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-executor = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-http-api-common = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-ledger = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-libp2p = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-network = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-node = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-sdp = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-time = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-tracing = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-tracing-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-utils = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -nomos-wallet = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -poc = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -pol = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -subnetworks-assignations = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -tests = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -tx-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -wallet = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } -zksign = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "2f60a0372c228968c3526c341ebc7e58bbd178dd" } +chain-network = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +chain-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +common-http-client = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +cryptarchia-engine = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +cryptarchia-sync = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +executor-http-client = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +groth16 = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +key-management-system-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +kzgrs = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +kzgrs-backend = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-api = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-blend-message = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-blend-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-cli = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-core = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-da-dispersal = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-da-network-core = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-da-network-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-da-sampling = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-da-verifier = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-executor = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-http-api-common = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-ledger = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-libp2p = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-network = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-node = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-sdp = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-time = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-tracing = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-tracing-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-utils = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +nomos-wallet = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +poc = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +pol = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +subnetworks-assignations = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +tests = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +tx-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +wallet = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } +zksign = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", rev = "d2dd5a5084e1daef4032562c77d41de5e4d495f8" } # External crates async-trait = { default-features = false, version = "0.1" } diff --git a/book/src/architecture-overview.md b/book/src/architecture-overview.md index a72fc2f..fe54347 100644 --- a/book/src/architecture-overview.md +++ b/book/src/architecture-overview.md @@ -65,8 +65,8 @@ let mut plan = ScenarioBuilder::topology_with(|t| { ``` **Key API Points:** -- Topology uses `.topology().validators(N).executors(M).apply()` pattern (not `with_node_counts`) -- Workloads are configured via extension traits (`ScenarioBuilderExt`, `ChaosBuilderExt`) +- Topology uses `.topology_with(|t| { t.validators(N).executors(M) })` closure pattern +- Workloads are configured via `_with` closures (`transactions_with`, `da_with`, `chaos_with`) - Chaos workloads require `.enable_node_control()` and a compatible runner ## Deployers diff --git a/book/src/dsl-cheat-sheet.md b/book/src/dsl-cheat-sheet.md index 3913fe6..2d60d94 100644 --- a/book/src/dsl-cheat-sheet.md +++ b/book/src/dsl-cheat-sheet.md @@ -52,11 +52,11 @@ ScenarioBuilder::topology_with(|t| { ```rust .enable_node_control() // Enable node control capability .chaos_with(|c| { - c.restart() // Random restart chaos + c.restart() // Random restart chaos .min_delay(Duration::from_secs(30)) // Min time between restarts .max_delay(Duration::from_secs(60)) // Max time between restarts .target_cooldown(Duration::from_secs(45)) // Cooldown after restart - .apply() + .apply() // Required for chaos configuration }) ``` diff --git a/book/src/examples-advanced.md b/book/src/examples-advanced.md index 3c6e3d4..b593ce4 100644 --- a/book/src/examples-advanced.md +++ b/book/src/examples-advanced.md @@ -24,16 +24,16 @@ async fn load_progression_test() -> Result<(), Box Result<(), Box> { - let mut plan = ScenarioBuilder::topology() - .network_star() - .validators(4) - .executors(2) - .apply() + let mut plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(4) + .executors(2) + }) .wallets(100) - .transactions() - .rate(15) - .users(50) - .apply() - .da() - .channel_rate(2) - .blob_rate(3) - .apply() + .transactions_with(|txs| { + txs.rate(15) + .users(50) + }) + .da_with(|da| { + da.channel_rate(2) + .blob_rate(3) + }) .expect_consensus_liveness() .with_run_duration(Duration::from_secs(300)) .build(); @@ -99,23 +99,24 @@ use testing_framework_workflows::{ScenarioBuilderExt, ChaosBuilderExt}; use std::time::Duration; async fn aggressive_chaos_test() -> Result<(), Box> { - let mut plan = ScenarioBuilder::topology() - .network_star() - .validators(4) - .executors(2) - .apply() + let mut plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(4) + .executors(2) + }) .enable_node_control() .wallets(50) - .transactions() - .rate(10) - .users(20) - .apply() - .chaos() - .restart() - .min_delay(Duration::from_secs(10)) - .max_delay(Duration::from_secs(20)) - .target_cooldown(Duration::from_secs(15)) - .apply() + .transactions_with(|txs| { + txs.rate(10) + .users(20) + }) + .chaos_with(|c| { + c.restart() + .min_delay(Duration::from_secs(10)) + .max_delay(Duration::from_secs(20)) + .target_cooldown(Duration::from_secs(15)) + .apply() + }) .expect_consensus_liveness() .with_run_duration(Duration::from_secs(180)) .build(); diff --git a/book/src/examples.md b/book/src/examples.md index 56b4c8c..476d6c2 100644 --- a/book/src/examples.md +++ b/book/src/examples.md @@ -25,11 +25,11 @@ use testing_framework_workflows::ScenarioBuilderExt; use std::time::Duration; async fn simple_consensus() -> Result<(), Box> { - let mut plan = ScenarioBuilder::topology() - .network_star() - .validators(3) - .executors(0) - .apply() + let mut plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(3) + .executors(0) + }) .expect_consensus_liveness() .with_run_duration(Duration::from_secs(30)) .build(); @@ -55,16 +55,16 @@ use testing_framework_workflows::ScenarioBuilderExt; use std::time::Duration; async fn transaction_workload() -> Result<(), Box> { - let mut plan = ScenarioBuilder::topology() - .network_star() - .validators(2) - .executors(0) - .apply() + let mut plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(2) + .executors(0) + }) .wallets(20) - .transactions() - .rate(5) - .users(10) - .apply() + .transactions_with(|txs| { + txs.rate(5) + .users(10) + }) .expect_consensus_liveness() .with_run_duration(Duration::from_secs(60)) .build(); @@ -90,20 +90,20 @@ use testing_framework_workflows::ScenarioBuilderExt; use std::time::Duration; async fn da_and_transactions() -> Result<(), Box> { - let mut plan = ScenarioBuilder::topology() - .network_star() - .validators(3) - .executors(2) - .apply() + let mut plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(3) + .executors(2) + }) .wallets(30) - .transactions() - .rate(5) - .users(15) - .apply() - .da() - .channel_rate(1) - .blob_rate(2) - .apply() + .transactions_with(|txs| { + txs.rate(5) + .users(15) + }) + .da_with(|da| { + da.channel_rate(1) + .blob_rate(2) + }) .expect_consensus_liveness() .with_run_duration(Duration::from_secs(90)) .build(); @@ -129,23 +129,24 @@ use testing_framework_workflows::{ScenarioBuilderExt, ChaosBuilderExt}; use std::time::Duration; async fn chaos_resilience() -> Result<(), Box> { - let mut plan = ScenarioBuilder::topology() - .network_star() - .validators(4) - .executors(2) - .apply() + let mut plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(4) + .executors(2) + }) .enable_node_control() .wallets(20) - .transactions() - .rate(3) - .users(10) - .apply() - .chaos() - .restart() - .min_delay(Duration::from_secs(20)) - .max_delay(Duration::from_secs(40)) - .target_cooldown(Duration::from_secs(30)) - .apply() + .transactions_with(|txs| { + txs.rate(3) + .users(10) + }) + .chaos_with(|c| { + c.restart() + .min_delay(Duration::from_secs(20)) + .max_delay(Duration::from_secs(40)) + .target_cooldown(Duration::from_secs(30)) + .apply() + }) .expect_consensus_liveness() .with_run_duration(Duration::from_secs(120)) .build(); diff --git a/book/src/internal-crate-reference.md b/book/src/internal-crate-reference.md index e8f4cee..1e24856 100644 --- a/book/src/internal-crate-reference.md +++ b/book/src/internal-crate-reference.md @@ -57,13 +57,14 @@ High-level roles of the crates that make up the framework: 3. **Use in examples** in `examples/src/bin/your_scenario.rs`: ```rust - let mut plan = ScenarioBuilder::topology() - .network_star() - .validators(3) - .executors(0) - .apply() - .your_workload() // Your new DSL method - .apply() + let mut plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(3) + .executors(0) + }) + .your_workload_with(|w| { // Your new DSL method with closure + w.some_config() + }) .build(); ``` diff --git a/book/src/quickstart.md b/book/src/quickstart.md index 225bfa1..4d77e18 100644 --- a/book/src/quickstart.md +++ b/book/src/quickstart.md @@ -91,14 +91,14 @@ Provides funded accounts for transaction submission. ### 3. Workloads ```rust -.transactions() - .rate(5) // 5 transactions per block - .users(8) // Use 8 of the 64 wallets - .apply() -.da() - .channel_rate(1) // 1 channel operation per block - .blob_rate(1) // 1 blob dispersal per block - .apply() +.transactions_with(|txs| { + txs.rate(5) // 5 transactions per block + .users(8) // Use 8 of the 64 wallets +}) +.da_with(|da| { + da.channel_rate(1) // 1 channel operation per block + .blob_rate(1) // 1 blob dispersal per block +}) ``` Generates both transaction and DA traffic to stress both subsystems. diff --git a/book/src/testing-philosophy.md b/book/src/testing-philosophy.md index 4169333..56cf3b1 100644 --- a/book/src/testing-philosophy.md +++ b/book/src/testing-philosophy.md @@ -10,14 +10,14 @@ Describe **what** you want to test, not **how** to orchestrate it: ```rust // Good: declarative -ScenarioBuilder::topology() - .network_star() - .validators(2) - .executors(1) - .apply() - .transactions() - .rate(5) // 5 transactions per block - .apply() +ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(2) + .executors(1) + }) + .transactions_with(|txs| { + txs.rate(5) // 5 transactions per block + }) .expect_consensus_liveness() .build(); @@ -40,14 +40,14 @@ Reason in **blocks** and **consensus intervals**, not wall-clock seconds. ```rust // Good: protocol-oriented thinking -let plan = ScenarioBuilder::topology() - .network_star() - .validators(2) - .executors(1) - .apply() - .transactions() - .rate(5) // 5 transactions per block - .apply() +let plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(2) + .executors(1) + }) + .transactions_with(|txs| { + txs.rate(5) // 5 transactions per block + }) .with_run_duration(Duration::from_secs(60)) // Let framework calculate expected blocks .expect_consensus_liveness() // "Did we produce the expected blocks?" .build(); @@ -74,30 +74,34 @@ not "blocks produced in exact wall-clock seconds". **Chaos is opt-in:** ```rust // Separate: functional test (deterministic) -let plan = ScenarioBuilder::topology() - .network_star() - .validators(2) - .executors(1) - .apply() - .transactions() - .rate(5) // 5 transactions per block - .apply() +let plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(2) + .executors(1) + }) + .transactions_with(|txs| { + txs.rate(5) // 5 transactions per block + }) .expect_consensus_liveness() .build(); // Separate: chaos test (introduces randomness) -let chaos_plan = ScenarioBuilder::topology() - .network_star() - .validators(3) - .executors(2) - .apply() +let chaos_plan = ScenarioBuilder::topology_with(|t| { + t.network_star() + .validators(3) + .executors(2) + }) .enable_node_control() - .chaos() - .restart() - .apply() - .transactions() - .rate(5) // 5 transactions per block - .apply() + .chaos_with(|c| { + c.restart() + .min_delay(Duration::from_secs(30)) + .max_delay(Duration::from_secs(60)) + .target_cooldown(Duration::from_secs(45)) + .apply() + }) + .transactions_with(|txs| { + txs.rate(5) // 5 transactions per block + }) .expect_consensus_liveness() .build(); ``` diff --git a/examples/src/bin/local_runner.rs b/examples/src/bin/local_runner.rs index 1e71f08..98e7224 100644 --- a/examples/src/bin/local_runner.rs +++ b/examples/src/bin/local_runner.rs @@ -65,11 +65,12 @@ async fn run_local_case( .expect_consensus_liveness() .build(); - let deployer = LocalDeployer::default(); + let deployer = LocalDeployer::default().with_membership_check(true); info!("deploying local nodes"); let runner: Runner = deployer.deploy(&plan).await?; info!("running scenario"); runner.run(&mut plan).await.map(|_| ())?; + info!("scenario complete"); Ok(()) } diff --git a/scripts/build-linux-binaries.sh b/scripts/build-linux-binaries.sh index d6cca2a..8fc9e76 100755 --- a/scripts/build-linux-binaries.sh +++ b/scripts/build-linux-binaries.sh @@ -5,7 +5,7 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -NOMOS_NODE_REV="${NOMOS_NODE_REV:-2f60a0372c228968c3526c341ebc7e58bbd178dd}" +NOMOS_NODE_REV="${NOMOS_NODE_REV:-d2dd5a5084e1daef4032562c77d41de5e4d495f8}" NOMOS_CIRCUITS_VERSION="${NOMOS_CIRCUITS_VERSION:-v0.3.1}" NOMOS_BIN_PLATFORM="${NOMOS_BIN_PLATFORM:-linux/amd64}" diff --git a/scripts/run-demo.sh b/scripts/run-demo.sh index 180edaa..ce6bcc8 100755 --- a/scripts/run-demo.sh +++ b/scripts/run-demo.sh @@ -15,14 +15,14 @@ set -euo pipefail # NOMOS_TESTNET_IMAGE - image tag (default nomos-testnet:local) # NOMOS_CIRCUITS_PLATFORM - override host platform detection # NOMOS_CIRCUITS_REBUILD_RAPIDSNARK - set to 1 to force rapidsnark rebuild -# NOMOS_NODE_REV - nomos-node git rev for local binaries (default 2f60a0372c228968c3526c341ebc7e58bbd178dd) +# NOMOS_NODE_REV - nomos-node git rev for local binaries (default d2dd5a5084e1daef4032562c77d41de5e4d495f8) ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" MODE="${1:-compose}" RUN_SECS="${2:-60}" VERSION="${VERSION:-v0.3.1}" IMAGE="${NOMOS_TESTNET_IMAGE:-nomos-testnet:local}" -NOMOS_NODE_REV="${NOMOS_NODE_REV:-2f60a0372c228968c3526c341ebc7e58bbd178dd}" +NOMOS_NODE_REV="${NOMOS_NODE_REV:-d2dd5a5084e1daef4032562c77d41de5e4d495f8}" case "$MODE" in compose) BIN="compose_runner" ;; diff --git a/scripts/setup-circuits-stack.sh b/scripts/setup-circuits-stack.sh index 2354ac8..32de0cb 100755 --- a/scripts/setup-circuits-stack.sh +++ b/scripts/setup-circuits-stack.sh @@ -20,7 +20,7 @@ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" VERSION="${1:-v0.3.1}" STACK_DIR="${STACK_DIR:-${ROOT_DIR}/testing-framework/assets/stack/kzgrs_test_params}" HOST_DIR="${HOST_DIR:-${ROOT_DIR}/.tmp/nomos-circuits-host}" -NOMOS_NODE_REV="${NOMOS_NODE_REV:-2f60a0372c228968c3526c341ebc7e58bbd178dd}" +NOMOS_NODE_REV="${NOMOS_NODE_REV:-d2dd5a5084e1daef4032562c77d41de5e4d495f8}" detect_platform() { local os arch diff --git a/scripts/setup-nomos-circuits.sh b/scripts/setup-nomos-circuits.sh index e8a50d3..27db730 100755 --- a/scripts/setup-nomos-circuits.sh +++ b/scripts/setup-nomos-circuits.sh @@ -211,10 +211,12 @@ main() { handle_macos_quarantine fi - if [[ "$rebuild_required" == "1" || "$platform" == *"aarch64" ]]; then + if [[ "$rebuild_required" == "1" ]]; then echo print_info "Rebuilding rapidsnark prover for ${platform}..." "${SCRIPT_DIR}/build-rapidsnark.sh" "$INSTALL_DIR" + else + print_info "Skipping rapidsnark rebuild (set NOMOS_CIRCUITS_REBUILD_RAPIDSNARK=1 to force)." fi echo diff --git a/testing-framework/assets/stack/Dockerfile b/testing-framework/assets/stack/Dockerfile index 14972fc..5dce016 100644 --- a/testing-framework/assets/stack/Dockerfile +++ b/testing-framework/assets/stack/Dockerfile @@ -4,6 +4,7 @@ ARG VERSION=v0.3.1 ARG CIRCUITS_OVERRIDE +ARG NOMOS_NODE_REV=d2dd5a5084e1daef4032562c77d41de5e4d495f8 # =========================== # BUILD IMAGE @@ -13,6 +14,7 @@ FROM rust:1.91.0-slim-bookworm AS builder ARG VERSION ARG CIRCUITS_OVERRIDE +ARG NOMOS_NODE_REV LABEL maintainer="augustinas@status.im" \ source="https://github.com/logos-co/nomos-node" \ @@ -23,6 +25,7 @@ COPY . . # Reduce debug artifact size. ENV CARGO_PROFILE_DEV_DEBUG=0 +ENV NOMOS_NODE_REV=${NOMOS_NODE_REV} # Install dependencies needed for building RocksDB. RUN apt-get update && apt-get install -yq \ @@ -75,11 +78,55 @@ RUN mkdir -p /opt/circuits && \ ENV NOMOS_CIRCUITS=/opt/circuits -# Copy prebuilt runtime binaries (provided by CI) into the build context. -RUN mkdir -p /workspace/artifacts -COPY testing-framework/assets/stack/bin/nomos-node /workspace/artifacts/nomos-node -COPY testing-framework/assets/stack/bin/nomos-executor /workspace/artifacts/nomos-executor -COPY testing-framework/assets/stack/bin/nomos-cli /workspace/artifacts/nomos-cli +# Provide runtime binaries. Prefer prebuilt artifacts (when present) for speed; otherwise build from source. +RUN set -eu; \ + mkdir -p /workspace/artifacts; \ + TARGET_ARCH="$(uname -m)"; \ + expect_arch() { \ + case "$1" in \ + x86_64) echo "x86-64" ;; \ + aarch64|arm64) echo "arm64" ;; \ + *) echo "$1" ;; \ + esac; \ + }; \ + have_prebuilt() { \ + [ -f testing-framework/assets/stack/bin/nomos-node ] && \ + [ -f testing-framework/assets/stack/bin/nomos-executor ] && \ + [ -f testing-framework/assets/stack/bin/nomos-cli ]; \ + }; \ + bin_matches_arch() { \ + BIN_INFO="$(file -b testing-framework/assets/stack/bin/nomos-node 2>/dev/null || true)"; \ + case "$TARGET_ARCH" in \ + x86_64) PATTERN="x86-64|x86_64" ;; \ + aarch64|arm64) PATTERN="arm64|aarch64" ;; \ + *) PATTERN="$(expect_arch "$TARGET_ARCH")" ;; \ + esac; \ + [ -n "$BIN_INFO" ] && echo "$BIN_INFO" | grep -Eqi "$PATTERN"; \ + }; \ + if have_prebuilt; then \ + if bin_matches_arch; then \ + echo "Using prebuilt nomos binaries from testing-framework/assets/stack/bin"; \ + else \ + echo "Using prebuilt nomos binaries from testing-framework/assets/stack/bin (arch check skipped)"; \ + fi; \ + cp testing-framework/assets/stack/bin/nomos-node /workspace/artifacts/nomos-node; \ + cp testing-framework/assets/stack/bin/nomos-executor /workspace/artifacts/nomos-executor; \ + cp testing-framework/assets/stack/bin/nomos-cli /workspace/artifacts/nomos-cli; \ + else \ + echo "Prebuilt nomos binaries missing or wrong architecture; building from source (rev ${NOMOS_NODE_REV})"; \ + git clone https://github.com/logos-co/nomos-node.git /tmp/nomos-node && \ + cd /tmp/nomos-node && \ + git fetch --depth 1 origin "${NOMOS_NODE_REV}" && \ + git checkout "${NOMOS_NODE_REV}" && \ + git reset --hard && git clean -fdx && \ + # Enable pol-dev-mode via cfg to let POL_PROOF_DEV_MODE short-circuit proofs in tests. + RUSTFLAGS='--cfg feature="pol-dev-mode"' NOMOS_CIRCUITS=/opt/circuits cargo build --features "testing" \ + -p nomos-node -p nomos-executor -p nomos-cli; \ + cp /tmp/nomos-node/target/debug/nomos-node /workspace/artifacts/nomos-node; \ + cp /tmp/nomos-node/target/debug/nomos-executor /workspace/artifacts/nomos-executor; \ + cp /tmp/nomos-node/target/debug/nomos-cli /workspace/artifacts/nomos-cli; \ + rm -rf /tmp/nomos-node/target/debug/incremental; \ + fi # Build cfgsync binaries from this workspace. RUN cargo build --all-features --manifest-path /workspace/testing-framework/tools/cfgsync/Cargo.toml --bins diff --git a/testing-framework/assets/stack/cfgsync.yaml b/testing-framework/assets/stack/cfgsync.yaml index a467f05..a975c1b 100644 --- a/testing-framework/assets/stack/cfgsync.yaml +++ b/testing-framework/assets/stack/cfgsync.yaml @@ -13,6 +13,7 @@ num_samples: 1 num_subnets: 2 old_blobs_check_interval: "5.0" blobs_validity_duration: "60.0" +# KZG parameters are mounted into the stack as /kzgrs_test_params. global_params_path: "/kzgrs_test_params/pol/proving_key.zkey" min_dispersal_peers: 1 min_replication_peers: 1 diff --git a/testing-framework/assets/stack/kzgrs_test_params b/testing-framework/assets/stack/kzgrs_test_params deleted file mode 100644 index 0389d61..0000000 Binary files a/testing-framework/assets/stack/kzgrs_test_params and /dev/null differ diff --git a/testing-framework/assets/stack/scripts/build_test_image.sh b/testing-framework/assets/stack/scripts/build_test_image.sh index 63636b7..3ba6379 100755 --- a/testing-framework/assets/stack/scripts/build_test_image.sh +++ b/testing-framework/assets/stack/scripts/build_test_image.sh @@ -10,6 +10,7 @@ DOCKERFILE_PATH="${ROOT_DIR}/testing-framework/assets/stack/Dockerfile" IMAGE_TAG="${IMAGE_TAG:-nomos-testnet:local}" VERSION="${VERSION:-v0.3.1}" CIRCUITS_OVERRIDE="${CIRCUITS_OVERRIDE:-testing-framework/assets/stack/kzgrs_test_params}" +NOMOS_NODE_REV="${NOMOS_NODE_REV:-d2dd5a5084e1daef4032562c77d41de5e4d495f8}" echo "Workspace root: ${ROOT_DIR}" echo "Image tag: ${IMAGE_TAG}" @@ -19,6 +20,7 @@ echo "Circuits version (fallback download): ${VERSION}" build_args=( -f "${DOCKERFILE_PATH}" -t "${IMAGE_TAG}" + --build-arg "NOMOS_NODE_REV=${NOMOS_NODE_REV}" "${ROOT_DIR}" ) diff --git a/testing-framework/assets/stack/scripts/run_nomos_executor.sh b/testing-framework/assets/stack/scripts/run_nomos_executor.sh index 1afa638..a4c89ca 100755 --- a/testing-framework/assets/stack/scripts/run_nomos_executor.sh +++ b/testing-framework/assets/stack/scripts/run_nomos_executor.sh @@ -7,6 +7,7 @@ export CFG_FILE_PATH="/config.yaml" \ CFG_HOST_IP=$(hostname -i) \ CFG_HOST_KIND="${CFG_HOST_KIND:-executor}" \ CFG_HOST_IDENTIFIER="${CFG_HOST_IDENTIFIER:-executor-$(hostname -i)}" \ + NOMOS_KZGRS_PARAMS_PATH="${NOMOS_KZGRS_PARAMS_PATH:-/opt/circuits/pol/proving_key.zkey}" \ LOG_LEVEL="INFO" \ POL_PROOF_DEV_MODE="${POL_PROOF_DEV_MODE:-true}" diff --git a/testing-framework/assets/stack/scripts/run_nomos_node.sh b/testing-framework/assets/stack/scripts/run_nomos_node.sh index 78db3fb..9579ac7 100755 --- a/testing-framework/assets/stack/scripts/run_nomos_node.sh +++ b/testing-framework/assets/stack/scripts/run_nomos_node.sh @@ -7,6 +7,7 @@ export CFG_FILE_PATH="/config.yaml" \ CFG_HOST_IP=$(hostname -i) \ CFG_HOST_KIND="${CFG_HOST_KIND:-validator}" \ CFG_HOST_IDENTIFIER="${CFG_HOST_IDENTIFIER:-validator-$(hostname -i)}" \ + NOMOS_KZGRS_PARAMS_PATH="${NOMOS_KZGRS_PARAMS_PATH:-/opt/circuits/pol/proving_key.zkey}" \ LOG_LEVEL="INFO" \ POL_PROOF_DEV_MODE="${POL_PROOF_DEV_MODE:-true}" diff --git a/testing-framework/configs/Cargo.toml b/testing-framework/configs/Cargo.toml index 3cc8f2f..b8294fc 100644 --- a/testing-framework/configs/Cargo.toml +++ b/testing-framework/configs/Cargo.toml @@ -10,42 +10,41 @@ repository.workspace = true version = "0.1.0" [dependencies] -blst = "0.3.11" -chain-leader = { workspace = true } -chain-network = { workspace = true } -chain-service = { workspace = true } -cryptarchia-engine = { workspace = true, features = ["serde"] } -cryptarchia-sync = { workspace = true } -ed25519-dalek = { version = "2.2.0", features = ["rand_core", "serde"] } -groth16 = { workspace = true } -hex = { version = "0.4.3", default-features = false } -key-management-system = { workspace = true } -nomos-api = { workspace = true } -nomos-blend-message = { workspace = true } -nomos-blend-service = { workspace = true, features = ["libp2p"] } -nomos-core = { workspace = true } -nomos-da-dispersal = { workspace = true } -nomos-da-network-core = { workspace = true } -nomos-da-network-service = { workspace = true } -nomos-da-sampling = { workspace = true } -nomos-da-verifier = { workspace = true } -nomos-executor = { workspace = true, default-features = false, features = ["testing", "tracing"] } -nomos-ledger = { workspace = true, features = ["serde"] } -nomos-libp2p = { workspace = true } -nomos-node = { workspace = true, default-features = false, features = ["testing"] } -nomos-sdp = { workspace = true } -nomos-time = { workspace = true } -nomos-tracing = { workspace = true } -nomos-tracing-service = { workspace = true } -nomos-utils = { workspace = true } -nomos-wallet = { workspace = true } -num-bigint = { version = "0.4", default-features = false } -rand = { workspace = true } -serde = { workspace = true, features = ["derive"] } -subnetworks-assignations = { workspace = true } -time = { version = "0.3", default-features = true } -tracing = { workspace = true } -zksign = { workspace = true } +blst = "0.3.11" +chain-leader = { workspace = true } +chain-network = { workspace = true } +chain-service = { workspace = true } +cryptarchia-engine = { workspace = true, features = ["serde"] } +cryptarchia-sync = { workspace = true } +ed25519-dalek = { version = "2.2.0", features = ["rand_core", "serde"] } +groth16 = { workspace = true } +hex = { version = "0.4.3", default-features = false } +key-management-system-service = { workspace = true } +nomos-api = { workspace = true } +nomos-blend-service = { workspace = true, features = ["libp2p"] } +nomos-core = { workspace = true } +nomos-da-dispersal = { workspace = true } +nomos-da-network-core = { workspace = true } +nomos-da-network-service = { workspace = true } +nomos-da-sampling = { workspace = true } +nomos-da-verifier = { workspace = true } +nomos-executor = { workspace = true, default-features = false, features = ["testing", "tracing"] } +nomos-ledger = { workspace = true, features = ["serde"] } +nomos-libp2p = { workspace = true } +nomos-node = { workspace = true, default-features = false, features = ["testing"] } +nomos-sdp = { workspace = true } +nomos-time = { workspace = true } +nomos-tracing = { workspace = true } +nomos-tracing-service = { workspace = true } +nomos-utils = { workspace = true } +nomos-wallet = { workspace = true } +num-bigint = { version = "0.4", default-features = false } +rand = { workspace = true } +serde = { workspace = true, features = ["derive"] } +subnetworks-assignations = { workspace = true } +time = { version = "0.3", default-features = true } +tracing = { workspace = true } +zksign = { workspace = true } [lints] workspace = true diff --git a/testing-framework/configs/src/common/kms.rs b/testing-framework/configs/src/common/kms.rs index cea5d6a..1316f48 100644 --- a/testing-framework/configs/src/common/kms.rs +++ b/testing-framework/configs/src/common/kms.rs @@ -1,5 +1,5 @@ use groth16::fr_to_bytes; -use key_management_system::{ +use key_management_system_service::{ backend::preload::KeyId, keys::{Key, secured_key::SecuredKey as _}, }; diff --git a/testing-framework/configs/src/nodes/executor.rs b/testing-framework/configs/src/nodes/executor.rs index 334cf29..9a66247 100644 --- a/testing-framework/configs/src/nodes/executor.rs +++ b/testing-framework/configs/src/nodes/executor.rs @@ -5,11 +5,10 @@ use std::{ time::Duration, }; -use chain_leader::LeaderSettings; -use chain_network::{ChainNetworkSettings, OrphanConfig, SyncConfig}; -use chain_service::{CryptarchiaSettings, StartingState}; -use cryptarchia_engine::time::SlotConfig; -use key_management_system::keys::{Key, ZkKey}; +use chain_leader::LeaderConfig as ChainLeaderConfig; +use chain_network::{BootstrapConfig as ChainBootstrapConfig, OrphanConfig, SyncConfig}; +use chain_service::StartingState; +use key_management_system_service::keys::{Key, ZkKey}; use nomos_blend_service::{ core::settings::{CoverTrafficSettings, MessageDelayerSettings, SchedulerSettings, ZkSettings}, settings::TimingSettings, @@ -44,16 +43,26 @@ use nomos_node::{ deployment::{self as blend_deployment}, serde as blend_serde, }, - deployment::{CustomDeployment, Settings as NodeDeploymentSettings}, - mempool::MempoolConfig, + cryptarchia::{ + deployment::{ + SdpConfig as DeploymentSdpConfig, Settings as CryptarchiaDeploymentSettings, + }, + serde::{ + Config as CryptarchiaConfig, LeaderConfig as CryptarchiaLeaderConfig, + NetworkConfig as CryptarchiaNetworkConfig, + ServiceConfig as CryptarchiaServiceConfig, + }, + }, + deployment::DeploymentSettings, + mempool::{ + deployment::Settings as MempoolDeploymentSettings, serde::Config as MempoolConfig, + }, network::deployment::Settings as NetworkDeploymentSettings, + time::{deployment::Settings as TimeDeploymentSettings, serde::Config as TimeConfig}, }, }; use nomos_sdp::SdpSettings; -use nomos_time::{ - TimeServiceSettings, - backends::{NtpTimeBackendSettings, ntp::async_client::NTPClientSettings}, -}; +use nomos_time::backends::{NtpTimeBackendSettings, ntp::async_client::NTPClientSettings}; use nomos_utils::math::NonNegativeF64; use nomos_wallet::WalletServiceSettings; @@ -68,56 +77,79 @@ use crate::{ #[must_use] #[expect(clippy::too_many_lines, reason = "TODO: Address this at some point.")] pub fn create_executor_config(config: GeneralConfig) -> ExecutorConfig { - let (blend_user_config, deployment_settings) = build_blend_service_config(&config.blend_config); + let (blend_user_config, blend_deployment, network_deployment) = + build_blend_service_config(&config.blend_config); + let cryptarchia_deployment = CryptarchiaDeploymentSettings { + epoch_config: config.consensus_config.ledger_config.epoch_config, + consensus_config: config.consensus_config.ledger_config.consensus_config, + sdp_config: DeploymentSdpConfig { + service_params: config + .consensus_config + .ledger_config + .sdp_config + .service_params + .clone(), + min_stake: config.consensus_config.ledger_config.sdp_config.min_stake, + }, + gossipsub_protocol: "/cryptarchia/proto".to_owned(), + }; + let time_deployment = TimeDeploymentSettings { + slot_duration: config.time_config.slot_duration, + }; + let mempool_deployment = MempoolDeploymentSettings { + pubsub_topic: "mantle".to_owned(), + }; + let deployment_settings = DeploymentSettings::new_custom( + blend_deployment, + network_deployment, + cryptarchia_deployment, + time_deployment, + mempool_deployment, + ); ExecutorConfig { network: config.network_config, blend: blend_user_config, deployment: deployment_settings, - cryptarchia: CryptarchiaSettings { - config: config.consensus_config.ledger_config.clone(), - starting_state: StartingState::Genesis { - genesis_tx: config.consensus_config.genesis_tx, - }, - // Disable on-disk recovery in compose tests to avoid serde errors on - // non-string keys and keep services alive. - recovery_file: PathBuf::new(), - bootstrap: chain_service::BootstrapConfig { - prolonged_bootstrap_period: config.bootstrapping_config.prolonged_bootstrap_period, - force_bootstrap: false, - offline_grace_period: chain_service::OfflineGracePeriodConfig { - grace_period: Duration::from_secs(20 * 60), - state_recording_interval: Duration::from_secs(60), + cryptarchia: CryptarchiaConfig { + service: CryptarchiaServiceConfig { + starting_state: StartingState::Genesis { + genesis_tx: config.consensus_config.genesis_tx, + }, + // Disable on-disk recovery in compose tests to avoid serde errors on + // non-string keys and keep services alive. + recovery_file: PathBuf::new(), + bootstrap: chain_service::BootstrapConfig { + prolonged_bootstrap_period: config + .bootstrapping_config + .prolonged_bootstrap_period, + force_bootstrap: false, + offline_grace_period: chain_service::OfflineGracePeriodConfig { + grace_period: Duration::from_secs(20 * 60), + state_recording_interval: Duration::from_secs(60), + }, }, }, - }, - chain_network: ChainNetworkSettings { - config: config.consensus_config.ledger_config.clone(), - network_adapter_settings: - chain_network::network::adapters::libp2p::LibP2pAdapterSettings { - topic: String::from(nomos_node::CONSENSUS_TOPIC), + network: CryptarchiaNetworkConfig { + bootstrap: ChainBootstrapConfig { + ibd: chain_network::IbdConfig { + peers: HashSet::new(), + delay_before_new_download: Duration::from_secs(10), + }, }, - bootstrap: chain_network::BootstrapConfig { - ibd: chain_network::IbdConfig { - peers: HashSet::new(), - delay_before_new_download: Duration::from_secs(10), + sync: SyncConfig { + orphan: OrphanConfig { + max_orphan_cache_size: NonZeroUsize::new(5) + .expect("Max orphan cache size must be non-zero"), + }, }, }, - sync: SyncConfig { - orphan: OrphanConfig { - max_orphan_cache_size: NonZeroUsize::new(5) - .expect("Max orphan cache size must be non-zero"), + leader: CryptarchiaLeaderConfig { + leader: ChainLeaderConfig { + pk: config.consensus_config.leader_config.pk, + sk: config.consensus_config.leader_config.sk.clone(), }, }, }, - cryptarchia_leader: LeaderSettings { - transaction_selector_settings: (), - config: config.consensus_config.ledger_config.clone(), - leader_config: config.consensus_config.leader_config.clone(), - blend_broadcast_settings: - nomos_blend_service::core::network::libp2p::Libp2pBroadcastSettings { - topic: String::from(nomos_node::CONSENSUS_TOPIC), - }, - }, da_network: DaNetworkConfig { backend: DaNetworkExecutorBackendSettings { validator_settings: DaNetworkBackendSettings { @@ -203,24 +235,19 @@ pub fn create_executor_config(config: GeneralConfig) -> ExecutorConfig { retry_limit: 2, }, }, - time: TimeServiceSettings { - backend_settings: NtpTimeBackendSettings { + time: TimeConfig { + backend: NtpTimeBackendSettings { ntp_server: config.time_config.ntp_server, ntp_client_settings: NTPClientSettings { timeout: config.time_config.timeout, listening_interface: config.time_config.interface, }, update_interval: config.time_config.update_interval, - slot_config: SlotConfig { - slot_duration: config.time_config.slot_duration, - chain_start_time: config.time_config.chain_start_time, - }, - epoch_config: config.consensus_config.ledger_config.epoch_config, - base_period_length: config.consensus_config.ledger_config.base_period_length(), }, + chain_start_time: config.time_config.chain_start_time, }, mempool: MempoolConfig { - pool_recovery_path: "./recovery/mempool.json".into(), + recovery_path: "./recovery/mempool.json".into(), }, sdp: SdpSettings { declaration: None }, wallet: WalletServiceSettings { @@ -252,7 +279,11 @@ pub fn create_executor_config(config: GeneralConfig) -> ExecutorConfig { fn build_blend_service_config( config: &TopologyBlendConfig, -) -> (blend_serde::Config, NodeDeploymentSettings) { +) -> ( + blend_serde::Config, + blend_deployment::Settings, + NetworkDeploymentSettings, +) { let zk_key_id = key_id_for_preload_backend(&Key::from(ZkKey::new(config.secret_zk_key.clone()))); @@ -314,17 +345,14 @@ fn build_blend_service_config( }, }; - let deployment = NodeDeploymentSettings::Custom(CustomDeployment { - blend: deployment_settings, - network: NetworkDeploymentSettings { - identify_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new( - "/integration/nomos/identify/1.0.0", - ), - kademlia_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new( - "/integration/nomos/kad/1.0.0", - ), - }, - }); + let network_deployment = NetworkDeploymentSettings { + identify_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new( + "/integration/nomos/identify/1.0.0", + ), + kademlia_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new( + "/integration/nomos/kad/1.0.0", + ), + }; - (user, deployment) + (user, deployment_settings, network_deployment) } diff --git a/testing-framework/configs/src/nodes/validator.rs b/testing-framework/configs/src/nodes/validator.rs index d9440ac..4a9a367 100644 --- a/testing-framework/configs/src/nodes/validator.rs +++ b/testing-framework/configs/src/nodes/validator.rs @@ -5,11 +5,10 @@ use std::{ time::Duration, }; -use chain_leader::LeaderSettings; -use chain_network::{ChainNetworkSettings, OrphanConfig, SyncConfig}; -use chain_service::{CryptarchiaSettings, StartingState}; -use cryptarchia_engine::time::SlotConfig; -use key_management_system::keys::{Key, ZkKey}; +use chain_leader::LeaderConfig as ChainLeaderConfig; +use chain_network::{BootstrapConfig as ChainBootstrapConfig, OrphanConfig, SyncConfig}; +use chain_service::StartingState; +use key_management_system_service::keys::{Key, ZkKey}; use nomos_blend_service::{ core::settings::{CoverTrafficSettings, MessageDelayerSettings, SchedulerSettings, ZkSettings}, settings::TimingSettings, @@ -38,16 +37,26 @@ use nomos_node::{ deployment::{self as blend_deployment}, serde as blend_serde, }, - deployment::{CustomDeployment, Settings as NodeDeploymentSettings}, - mempool::MempoolConfig, + cryptarchia::{ + deployment::{ + SdpConfig as DeploymentSdpConfig, Settings as CryptarchiaDeploymentSettings, + }, + serde::{ + Config as CryptarchiaConfig, LeaderConfig as CryptarchiaLeaderConfig, + NetworkConfig as CryptarchiaNetworkConfig, + ServiceConfig as CryptarchiaServiceConfig, + }, + }, + deployment::DeploymentSettings, + mempool::{ + deployment::Settings as MempoolDeploymentSettings, serde::Config as MempoolConfig, + }, network::deployment::Settings as NetworkDeploymentSettings, + time::{deployment::Settings as TimeDeploymentSettings, serde::Config as TimeConfig}, }, }; use nomos_sdp::SdpSettings; -use nomos_time::{ - TimeServiceSettings, - backends::{NtpTimeBackendSettings, ntp::async_client::NTPClientSettings}, -}; +use nomos_time::backends::{NtpTimeBackendSettings, ntp::async_client::NTPClientSettings}; use nomos_utils::math::NonNegativeF64; use nomos_wallet::WalletServiceSettings; @@ -66,56 +75,79 @@ use crate::{ )] pub fn create_validator_config(config: GeneralConfig) -> ValidatorConfig { let da_policy_settings = config.da_config.policy_settings; - let (blend_user_config, deployment_settings) = build_blend_service_config(&config.blend_config); + let (blend_user_config, blend_deployment, network_deployment) = + build_blend_service_config(&config.blend_config); + let cryptarchia_deployment = CryptarchiaDeploymentSettings { + epoch_config: config.consensus_config.ledger_config.epoch_config, + consensus_config: config.consensus_config.ledger_config.consensus_config, + sdp_config: DeploymentSdpConfig { + service_params: config + .consensus_config + .ledger_config + .sdp_config + .service_params + .clone(), + min_stake: config.consensus_config.ledger_config.sdp_config.min_stake, + }, + gossipsub_protocol: "/cryptarchia/proto".to_owned(), + }; + let time_deployment = TimeDeploymentSettings { + slot_duration: config.time_config.slot_duration, + }; + let mempool_deployment = MempoolDeploymentSettings { + pubsub_topic: "mantle".to_owned(), + }; + let deployment_settings = DeploymentSettings::new_custom( + blend_deployment, + network_deployment, + cryptarchia_deployment, + time_deployment, + mempool_deployment, + ); ValidatorConfig { network: config.network_config, blend: blend_user_config, deployment: deployment_settings, - cryptarchia: CryptarchiaSettings { - config: config.consensus_config.ledger_config.clone(), - starting_state: StartingState::Genesis { - genesis_tx: config.consensus_config.genesis_tx, - }, - // Disable on-disk recovery in compose tests to avoid serde errors on - // non-string keys and keep services alive. - recovery_file: PathBuf::new(), - bootstrap: chain_service::BootstrapConfig { - prolonged_bootstrap_period: config.bootstrapping_config.prolonged_bootstrap_period, - force_bootstrap: false, - offline_grace_period: chain_service::OfflineGracePeriodConfig { - grace_period: Duration::from_secs(20 * 60), - state_recording_interval: Duration::from_secs(60), + cryptarchia: CryptarchiaConfig { + service: CryptarchiaServiceConfig { + starting_state: StartingState::Genesis { + genesis_tx: config.consensus_config.genesis_tx, + }, + // Disable on-disk recovery in compose tests to avoid serde errors on + // non-string keys and keep services alive. + recovery_file: PathBuf::new(), + bootstrap: chain_service::BootstrapConfig { + prolonged_bootstrap_period: config + .bootstrapping_config + .prolonged_bootstrap_period, + force_bootstrap: false, + offline_grace_period: chain_service::OfflineGracePeriodConfig { + grace_period: Duration::from_secs(20 * 60), + state_recording_interval: Duration::from_secs(60), + }, }, }, - }, - chain_network: ChainNetworkSettings { - config: config.consensus_config.ledger_config.clone(), - network_adapter_settings: - chain_network::network::adapters::libp2p::LibP2pAdapterSettings { - topic: String::from(nomos_node::CONSENSUS_TOPIC), + network: CryptarchiaNetworkConfig { + bootstrap: ChainBootstrapConfig { + ibd: chain_network::IbdConfig { + peers: HashSet::new(), + delay_before_new_download: Duration::from_secs(10), + }, }, - bootstrap: chain_network::BootstrapConfig { - ibd: chain_network::IbdConfig { - peers: HashSet::new(), - delay_before_new_download: Duration::from_secs(10), + sync: SyncConfig { + orphan: OrphanConfig { + max_orphan_cache_size: NonZeroUsize::new(5) + .expect("Max orphan cache size must be non-zero"), + }, }, }, - sync: SyncConfig { - orphan: OrphanConfig { - max_orphan_cache_size: NonZeroUsize::new(5) - .expect("Max orphan cache size must be non-zero"), + leader: CryptarchiaLeaderConfig { + leader: ChainLeaderConfig { + pk: config.consensus_config.leader_config.pk, + sk: config.consensus_config.leader_config.sk.clone(), }, }, }, - cryptarchia_leader: LeaderSettings { - transaction_selector_settings: (), - config: config.consensus_config.ledger_config.clone(), - leader_config: config.consensus_config.leader_config.clone(), - blend_broadcast_settings: - nomos_blend_service::core::network::libp2p::Libp2pBroadcastSettings { - topic: String::from(nomos_node::CONSENSUS_TOPIC), - }, - }, da_network: DaNetworkConfig { backend: DaNetworkBackendSettings { node_key: config.da_config.node_key, @@ -193,24 +225,19 @@ pub fn create_validator_config(config: GeneralConfig) -> ValidatorConfig { read_only: false, column_family: Some("blocks".into()), }, - time: TimeServiceSettings { - backend_settings: NtpTimeBackendSettings { + time: TimeConfig { + backend: NtpTimeBackendSettings { ntp_server: config.time_config.ntp_server, ntp_client_settings: NTPClientSettings { timeout: config.time_config.timeout, listening_interface: config.time_config.interface, }, update_interval: config.time_config.update_interval, - slot_config: SlotConfig { - slot_duration: config.time_config.slot_duration, - chain_start_time: config.time_config.chain_start_time, - }, - epoch_config: config.consensus_config.ledger_config.epoch_config, - base_period_length: config.consensus_config.ledger_config.base_period_length(), }, + chain_start_time: config.time_config.chain_start_time, }, mempool: MempoolConfig { - pool_recovery_path: "./recovery/mempool.json".into(), + recovery_path: "./recovery/mempool.json".into(), }, sdp: SdpSettings { declaration: None }, wallet: WalletServiceSettings { @@ -241,7 +268,11 @@ pub fn create_validator_config(config: GeneralConfig) -> ValidatorConfig { fn build_blend_service_config( config: &TopologyBlendConfig, -) -> (blend_serde::Config, NodeDeploymentSettings) { +) -> ( + blend_serde::Config, + blend_deployment::Settings, + NetworkDeploymentSettings, +) { let zk_key_id = key_id_for_preload_backend(&Key::from(ZkKey::new(config.secret_zk_key.clone()))); @@ -303,17 +334,14 @@ fn build_blend_service_config( }, }; - let deployment = NodeDeploymentSettings::Custom(CustomDeployment { - blend: deployment_settings, - network: NetworkDeploymentSettings { - identify_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new( - "/integration/nomos/identify/1.0.0", - ), - kademlia_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new( - "/integration/nomos/kad/1.0.0", - ), - }, - }); + let network_deployment = NetworkDeploymentSettings { + identify_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new( + "/integration/nomos/identify/1.0.0", + ), + kademlia_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new( + "/integration/nomos/kad/1.0.0", + ), + }; - (user, deployment) + (user, deployment_settings, network_deployment) } diff --git a/testing-framework/configs/src/topology/configs/blend.rs b/testing-framework/configs/src/topology/configs/blend.rs index 2d1e0ea..5d6d797 100644 --- a/testing-framework/configs/src/topology/configs/blend.rs +++ b/testing-framework/configs/src/topology/configs/blend.rs @@ -2,7 +2,7 @@ use core::time::Duration; use std::{num::NonZeroU64, str::FromStr as _}; use ed25519_dalek::SigningKey; -use nomos_blend_message::crypto::keys::Ed25519PrivateKey; +use key_management_system_service::keys::UnsecuredEd25519Key; use nomos_blend_service::{ core::backends::libp2p::Libp2pBlendBackendSettings as Libp2pCoreBlendBackendSettings, edge::backends::libp2p::Libp2pBlendBackendSettings as Libp2pEdgeBlendBackendSettings, @@ -15,7 +15,7 @@ use zksign::SecretKey; pub struct GeneralBlendConfig { pub backend_core: Libp2pCoreBlendBackendSettings, pub backend_edge: Libp2pEdgeBlendBackendSettings, - pub private_key: Ed25519PrivateKey, + pub private_key: UnsecuredEd25519Key, pub secret_zk_key: SecretKey, pub signer: SigningKey, } @@ -34,12 +34,13 @@ pub fn create_blend_configs(ids: &[[u8; 32]], ports: &[u16]) -> Vec Result<(), ReadinessError> { info!("waiting for local network readiness"); topology.wait_network_ready().await?; - if !skip_membership { - info!("waiting for membership readiness"); - topology.wait_membership_ready().await?; + if skip_membership { + // Allow callers to bypass deeper readiness for lightweight demos. + return Ok(()); } + info!("waiting for membership readiness"); + topology.wait_membership_ready().await?; info!("waiting for DA balancer readiness"); topology.wait_da_balancer_ready().await } diff --git a/testing-framework/tools/cfgsync/Cargo.toml b/testing-framework/tools/cfgsync/Cargo.toml index 554d8f4..79532cf 100644 --- a/testing-framework/tools/cfgsync/Cargo.toml +++ b/testing-framework/tools/cfgsync/Cargo.toml @@ -13,26 +13,26 @@ version = { workspace = true } workspace = true [dependencies] -axum = { default-features = false, features = ["http1", "http2", "json", "tokio"], version = "0.7.5" } -clap = { default-features = false, version = "4" } -groth16 = { workspace = true } -hex = { workspace = true } -key-management-system = { workspace = true } -nomos-core = { workspace = true } -nomos-da-network-core = { workspace = true } -nomos-executor = { workspace = true } -nomos-libp2p = { workspace = true } -nomos-node = { workspace = true } -nomos-tracing-service = { workspace = true } -nomos-utils = { workspace = true } -rand = { workspace = true } -reqwest = { workspace = true } -serde = { default-features = false, version = "1" } -serde_json = { default-features = false, version = "1.0" } -serde_path_to_error = "0.1" -serde_with = { workspace = true } -serde_yaml = "0.9" -subnetworks-assignations = { workspace = true } -testing-framework-config = { workspace = true } -tokio = { default-features = false, features = ["macros", "net", "rt-multi-thread"], version = "1" } -tracing = { workspace = true } +axum = { default-features = false, features = ["http1", "http2", "json", "tokio"], version = "0.7.5" } +clap = { default-features = false, version = "4" } +groth16 = { workspace = true } +hex = { workspace = true } +key-management-system-service = { workspace = true } +nomos-core = { workspace = true } +nomos-da-network-core = { workspace = true } +nomos-executor = { workspace = true } +nomos-libp2p = { workspace = true } +nomos-node = { workspace = true } +nomos-tracing-service = { workspace = true } +nomos-utils = { workspace = true } +rand = { workspace = true } +reqwest = { workspace = true } +serde = { default-features = false, version = "1" } +serde_json = { default-features = false, version = "1.0" } +serde_path_to_error = "0.1" +serde_with = { workspace = true } +serde_yaml = "0.9" +subnetworks-assignations = { workspace = true } +testing-framework-config = { workspace = true } +tokio = { default-features = false, features = ["macros", "net", "rt-multi-thread"], version = "1" } +tracing = { workspace = true } diff --git a/testing-framework/tools/cfgsync/src/config.rs b/testing-framework/tools/cfgsync/src/config.rs index 26269bf..db392f8 100644 --- a/testing-framework/tools/cfgsync/src/config.rs +++ b/testing-framework/tools/cfgsync/src/config.rs @@ -2,7 +2,7 @@ use std::{collections::HashMap, net::Ipv4Addr, str::FromStr as _}; use groth16::fr_to_bytes; use hex; -use key_management_system::{ +use key_management_system_service::{ backend::preload::PreloadKMSBackendSettings, keys::{Ed25519Key, Key, ZkKey}, };