chore: merge dev into master (#29)

* Add node config overrides (#14)

* chore: merge master into dev and update configs after merge (#17)

* Sdp config structs from logos blockchain (#15)

* Update configs after main repo merge

---------

Co-authored-by: gusto <bacv@users.noreply.github.com>

* Local deployer allows to stop and restart nodes (#16)

* Unify local node control and restart support

* Add local stop-node support

* Use node names for restart/stop control

* merge

---------

Co-authored-by: hansieodendaal <hansie.odendaal@gmail.com>

* Add orphan manual cluster test utilities

* Update node rev and align consensus/wallet config

* Update node rev and align wallet/KMS configs

* Update main repo ref (#23)

* Fix genesis utxos and scale leader stake

* Document leader stake constants

* feat: add custom persistent dir option for working files (#26)

* chore: config and naming updates (#27)

* Update config and crate naming

- Updated configs to the lates main repo configs.
- Updated all main repo crate namings to be same as the main repo.
- Added `create_dir_all` to `pub(crate) fn create_tempdir(custom_work_dir: Option<PathBuf>) -> std::io::Result<TempDir> {`.
- Wired in optional `persist_dir` when using the local deployer.
- Update `time` vulnerability

**Note:** Unsure about the `service_params` mapping in `pub(crate) fn cryptarchia_deployment(config: &GeneralConfig) -> CryptarchiaDeploymentSettings {`

* fix ntp server config

---------

Co-authored-by: Andrus Salumets <andrus@status.im>
Co-authored-by: gusto <bacv@users.noreply.github.com>
Co-authored-by: andrussal <salumets.andrus@gmail.com>
This commit is contained in:
Hansie Odendaal 2026-02-09 14:12:26 +02:00 committed by GitHub
parent 59697f0830
commit b3d54125ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
90 changed files with 634 additions and 773 deletions

View File

@ -239,7 +239,6 @@ jobs:
host_smoke:
runs-on: ubuntu-latest
env:
POL_PROOF_DEV_MODE: true
LOCAL_DEMO_RUN_SECS: 120
LOCAL_DEMO_VALIDATORS: 1
LOGOS_BLOCKCHAIN_CIRCUITS: ${{ github.workspace }}/.tmp/logos-blockchain-circuits
@ -500,7 +499,6 @@ jobs:
- name: Run compose mixed workload binary
env:
POL_PROOF_DEV_MODE: "true"
COMPOSE_NODE_PAIRS: "1x1"
LOGOS_BLOCKCHAIN_TESTNET_IMAGE: ${{ env.LOGOS_BLOCKCHAIN_TESTNET_IMAGE }}
COMPOSE_RUNNER_HOST: "127.0.0.1"

224
Cargo.lock generated
View File

@ -601,7 +601,6 @@ dependencies = [
"tower 0.5.3",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
@ -622,7 +621,6 @@ dependencies = [
"sync_wrapper",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
@ -1218,19 +1216,6 @@ dependencies = [
"syn 2.0.114",
]
[[package]]
name = "dashmap"
version = "5.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
dependencies = [
"cfg-if",
"hashbrown 0.14.5",
"lock_api",
"once_cell",
"parking_lot_core",
]
[[package]]
name = "data-encoding"
version = "2.10.0"
@ -1685,16 +1670,6 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "forwarded-header-value"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8835f84f38484cc86f110a805655697908257fb9a7af005234060891557198e9"
dependencies = [
"nonempty",
"thiserror 1.0.69",
]
[[package]]
name = "futures"
version = "0.3.31"
@ -1919,26 +1894,6 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "governor"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b"
dependencies = [
"cfg-if",
"dashmap",
"futures",
"futures-timer",
"no-std-compat",
"nonzero_ext",
"parking_lot",
"portable-atomic",
"quanta",
"rand 0.8.5",
"smallvec",
"spinning_top",
]
[[package]]
name = "group"
version = "0.13.0"
@ -3389,12 +3344,13 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
[[package]]
name = "logos-blockchain-api-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"bytes",
"futures",
"logos-blockchain-chain-broadcast-service",
"logos-blockchain-chain-leader-service",
"logos-blockchain-chain-service",
"logos-blockchain-core",
"logos-blockchain-network-service",
@ -3415,7 +3371,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-blend"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"logos-blockchain-blend-crypto",
"logos-blockchain-blend-message",
@ -3427,7 +3383,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-blend-crypto"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"blake2",
"logos-blockchain-groth16",
@ -3441,7 +3397,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-blend-message"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"blake2",
"derivative",
@ -3463,7 +3419,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-blend-network"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"either",
"futures",
@ -3481,7 +3437,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-blend-proofs"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"ed25519-dalek",
"generic-array 1.3.5",
@ -3496,7 +3452,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-blend-scheduling"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"derivative",
@ -3513,13 +3469,14 @@ dependencies = [
"thiserror 1.0.69",
"tokio",
"tokio-stream",
"tokio-util",
"tracing",
]
[[package]]
name = "logos-blockchain-blend-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"fork_stream",
@ -3554,7 +3511,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-chain-broadcast-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"derivative",
@ -3570,7 +3527,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-chain-leader-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"futures",
@ -3598,7 +3555,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-chain-network-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"futures",
@ -3626,7 +3583,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-chain-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"bytes",
@ -3656,7 +3613,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-chain-service-common"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"logos-blockchain-core",
"serde",
@ -3665,7 +3622,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-circuits-prover"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"logos-blockchain-circuits-utils",
"tempfile",
@ -3674,7 +3631,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-circuits-utils"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"dirs",
]
@ -3682,13 +3639,16 @@ dependencies = [
[[package]]
name = "logos-blockchain-common-http-client"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"futures",
"hex",
"logos-blockchain-chain-broadcast-service",
"logos-blockchain-chain-service",
"logos-blockchain-core",
"logos-blockchain-groth16",
"logos-blockchain-http-api-common",
"logos-blockchain-key-management-system-keys",
"reqwest",
"serde",
"serde_json",
@ -3699,7 +3659,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-core"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"ark-ff 0.4.2",
"bincode",
@ -3729,7 +3689,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-cryptarchia-engine"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"cfg_eval",
"logos-blockchain-utils",
@ -3744,7 +3704,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-cryptarchia-sync"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"bytes",
"futures",
@ -3763,7 +3723,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-groth16"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"ark-bn254 0.4.0",
"ark-ec 0.4.2",
@ -3781,22 +3741,20 @@ dependencies = [
[[package]]
name = "logos-blockchain-http-api-common"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"axum",
"governor",
"logos-blockchain-core",
"logos-blockchain-key-management-system-keys",
"serde",
"serde_json",
"serde_with",
"tower_governor",
]
[[package]]
name = "logos-blockchain-key-management-system-keys"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"bytes",
@ -3821,7 +3779,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-key-management-system-macros"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"proc-macro2",
"quote",
@ -3831,7 +3789,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-key-management-system-operators"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"logos-blockchain-blend-proofs",
@ -3847,7 +3805,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-key-management-system-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"log",
@ -3863,7 +3821,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-ledger"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"derivative",
"logos-blockchain-blend-crypto",
@ -3887,7 +3845,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-libp2p"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"backon",
@ -3916,7 +3874,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-network-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"futures",
@ -3935,7 +3893,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-node"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"axum",
@ -3991,7 +3949,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-poc"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"logos-blockchain-circuits-prover",
"logos-blockchain-circuits-utils",
@ -4006,7 +3964,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-pol"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"logos-blockchain-circuits-prover",
"logos-blockchain-circuits-utils",
@ -4022,7 +3980,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-poq"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"logos-blockchain-circuits-prover",
"logos-blockchain-circuits-utils",
@ -4038,7 +3996,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-poseidon2"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"ark-bn254 0.4.0",
"ark-ff 0.4.2",
@ -4049,7 +4007,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-sdp-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"futures",
@ -4065,7 +4023,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-services-utils"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"futures",
@ -4080,7 +4038,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-storage-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"bytes",
@ -4098,7 +4056,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-system-sig-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-ctrlc",
"async-trait",
@ -4109,7 +4067,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-time-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"cfg_eval",
@ -4131,7 +4089,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-tracing"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"opentelemetry",
"opentelemetry-http",
@ -4154,7 +4112,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-tracing-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"logos-blockchain-tracing",
@ -4168,7 +4126,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-tx-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"futures",
@ -4190,7 +4148,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-utils"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"blake2",
@ -4207,7 +4165,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-utxotree"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"ark-ff 0.4.2",
"logos-blockchain-groth16",
@ -4221,7 +4179,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-wallet"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"logos-blockchain-core",
"logos-blockchain-key-management-system-keys",
@ -4236,7 +4194,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-wallet-service"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"async-trait",
"bytes",
@ -4261,7 +4219,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-witness-generator"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"tempfile",
]
@ -4269,7 +4227,7 @@ dependencies = [
[[package]]
name = "logos-blockchain-zksign"
version = "0.1.0"
source = "git+https://github.com/logos-co/nomos-node.git?rev=2392190d88e8ae8271fa9321014ea33324be7c28#2392190d88e8ae8271fa9321014ea33324be7c28"
source = "git+https://github.com/logos-co/nomos-node.git?rev=a075fdf3209947572069e7b7b2ff6250576c8831#a075fdf3209947572069e7b7b2ff6250576c8831"
dependencies = [
"logos-blockchain-circuits-prover",
"logos-blockchain-circuits-utils",
@ -4644,12 +4602,6 @@ dependencies = [
"libc",
]
[[package]]
name = "no-std-compat"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
[[package]]
name = "nom"
version = "7.1.3"
@ -4669,18 +4621,6 @@ dependencies = [
"memchr",
]
[[package]]
name = "nonempty"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9e591e719385e6ebaeb5ce5d3887f7d5676fceca6411d1925ccc95745f3d6f7"
[[package]]
name = "nonzero_ext"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
[[package]]
name = "nu-ansi-term"
version = "0.50.3"
@ -5351,21 +5291,6 @@ dependencies = [
"prost",
]
[[package]]
name = "quanta"
version = "0.12.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7"
dependencies = [
"crossbeam-utils",
"libc",
"once_cell",
"raw-cpuid",
"wasi",
"web-sys",
"winapi",
]
[[package]]
name = "quick-protobuf"
version = "0.8.1"
@ -5527,15 +5452,6 @@ dependencies = [
"rand_core 0.9.5",
]
[[package]]
name = "raw-cpuid"
version = "11.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186"
dependencies = [
"bitflags 2.10.0",
]
[[package]]
name = "rcgen"
version = "0.13.2"
@ -6262,15 +6178,6 @@ dependencies = [
"windows-sys 0.60.2",
]
[[package]]
name = "spinning_top"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300"
dependencies = [
"lock_api",
]
[[package]]
name = "spki"
version = "0.7.3"
@ -6458,6 +6365,7 @@ dependencies = [
"hex",
"logos-blockchain-api-service",
"logos-blockchain-blend-service",
"logos-blockchain-chain-leader-service",
"logos-blockchain-chain-network-service",
"logos-blockchain-chain-service",
"logos-blockchain-core",
@ -6597,7 +6505,6 @@ name = "testing-framework-workflows"
version = "0.1.0"
dependencies = [
"async-trait",
"logos-blockchain-chain-service",
"logos-blockchain-core",
"logos-blockchain-key-management-system-service",
"rand 0.8.5",
@ -6660,9 +6567,9 @@ dependencies = [
[[package]]
name = "time"
version = "0.3.46"
version = "0.3.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5"
checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
dependencies = [
"deranged",
"itoa",
@ -6681,9 +6588,9 @@ checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
[[package]]
name = "time-macros"
version = "0.2.26"
version = "0.2.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4"
checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
dependencies = [
"num-conv",
"time-core",
@ -6910,7 +6817,6 @@ dependencies = [
"tokio",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
@ -6982,22 +6888,6 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
[[package]]
name = "tower_governor"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3790eac6ad3fb8d9d96c2b040ae06e2517aa24b067545d1078b96ae72f7bb9a7"
dependencies = [
"axum",
"forwarded-header-value",
"governor",
"http 1.4.0",
"pin-project",
"thiserror 1.0.69",
"tower 0.4.13",
"tracing",
]
[[package]]
name = "tracing"
version = "0.1.44"

View File

@ -40,37 +40,37 @@ testing-framework-runner-local = { default-features = false, path = "testing-f
testing-framework-workflows = { default-features = false, path = "testing-framework/workflows" }
# Logos git dependencies (pinned to latest master)
broadcast-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-chain-broadcast-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
cfgsync_tf = { default-features = false, path = "testing-framework/tools/cfgsync_tf" }
chain-leader = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-chain-leader-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
chain-network = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-chain-network-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
chain-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-chain-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
common-http-client = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-common-http-client", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
cryptarchia-engine = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-cryptarchia-engine", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
cryptarchia-sync = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-cryptarchia-sync", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
groth16 = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-groth16", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
key-management-system-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-key-management-system-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-api = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-api-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-blend-message = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-blend-message", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-blend-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-blend-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-core = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-core", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-http-api-common = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-http-api-common", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-ledger = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-ledger", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-libp2p = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-libp2p", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-network = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-network-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-node = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-node", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-sdp = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-sdp-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-time = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-time-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-tracing = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-tracing", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-tracing-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-tracing-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-utils = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-utils", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
nomos-wallet = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-wallet-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
poc = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-poc", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
pol = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-pol", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
tests = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-tests", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
tx-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-tx-service", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
wallet = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-wallet", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
zksign = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-zksign", rev = "2392190d88e8ae8271fa9321014ea33324be7c28" }
cfgsync_tf = { default-features = false, path = "testing-framework/tools/cfgsync_tf" }
lb-api-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-api-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-blend-message = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-blend-message", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-blend-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-blend-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-chain-broadcast-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-chain-broadcast-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-chain-leader-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-chain-leader-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-chain-network = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-chain-network-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-chain-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-chain-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-common-http-client = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-common-http-client", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-core = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-core", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-cryptarchia-engine = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-cryptarchia-engine", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-cryptarchia-sync = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-cryptarchia-sync", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-groth16 = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-groth16", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-http-api-common = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-http-api-common", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-key-management-system-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-key-management-system-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-ledger = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-ledger", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-libp2p = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-libp2p", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-network-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-network-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-node = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-node", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-poc = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-poc", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-pol = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-pol", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-sdp-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-sdp-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-tests = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-tests", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-time-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-time-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-tracing = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-tracing", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-tracing-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-tracing-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-tx-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-tx-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-utils = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-utils", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-wallet = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-wallet", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-wallet-service = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-wallet-service", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
lb-zksign = { default-features = false, git = "https://github.com/logos-co/nomos-node.git", package = "logos-blockchain-zksign", rev = "a075fdf3209947572069e7b7b2ff6250576c8831" }
# External crates
async-trait = { default-features = false, version = "0.1" }

View File

@ -123,7 +123,6 @@ Key environment variables for customization:
| Variable | Purpose | Default |
|----------|---------|---------|
| `POL_PROOF_DEV_MODE=true` | **Required** — Disable expensive proof generation (set automatically by `scripts/run/run-examples.sh`) | (none) |
| `LOGOS_BLOCKCHAIN_TESTNET_IMAGE` | Docker image tag for compose/k8s | `logos-blockchain-testing:local` |
| `LOGOS_BLOCKCHAIN_DEMO_NODES` | Number of nodes | Varies by example |
| `LOGOS_BLOCKCHAIN_LOG_DIR` | Directory for persistent log files | (temporary) |

View File

@ -65,9 +65,7 @@ Convenience utilities:
- `compose_runner.rs` — Docker Compose (requires `LOGOS_BLOCKCHAIN_TESTNET_IMAGE` built)
- `k8s_runner.rs` — Kubernetes (requires cluster + image)
**Run with:** `POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin <name>`
**All runners require `POL_PROOF_DEV_MODE=true`** to avoid expensive proof generation.
**Run with:** `cargo run -p runner-examples --bin <name>`
### `scripts/`
Helper utilities:

View File

@ -150,11 +150,9 @@ This handles circuit setup, binary building/bundling, image building, and execut
**Alternative:** Direct cargo run (requires manual setup):
```bash
POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin <name>
cargo run -p runner-examples --bin <name>
```
**Important:** All runners require `POL_PROOF_DEV_MODE=true` to avoid expensive Groth16 proof generation that causes timeouts.
These binaries use the framework API (`ScenarioBuilder`) to construct and execute scenarios.
## Builder API

View File

@ -153,7 +153,7 @@ async fn hello_consensus_liveness() -> Result<()> {
**Run it:**
```bash
POL_PROOF_DEV_MODE=true cargo test hello_consensus_liveness
cargo test hello_consensus_liveness
```
---

View File

@ -128,13 +128,9 @@ strategy:
## Anti-Patterns to Avoid
**DON'T: Run without POL_PROOF_DEV_MODE**
```bash
# BAD: Will hang/timeout on proof generation
cargo run -p runner-examples --bin local_runner
# GOOD: Fast mode for testing
POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
```
**DON'T: Use tiny durations**

View File

@ -39,7 +39,6 @@ on:
branches: [main]
env:
POL_PROOF_DEV_MODE: true
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
@ -243,17 +242,6 @@ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
## Best Practices
### Required: Set POL_PROOF_DEV_MODE
**Always set `POL_PROOF_DEV_MODE=true` globally** in your workflow env:
```yaml
env:
POL_PROOF_DEV_MODE: true # REQUIRED!
```
Without this, tests will hang due to expensive proof generation.
### Use Helper Scripts
Prefer `scripts/run/run-examples.sh` which handles all setup automatically:

View File

@ -2,27 +2,6 @@
Complete reference of environment variables used by the testing framework, organized by category.
## Critical Variables
These MUST be set for successful test runs:
| Variable | Required | Default | Effect |
|----------|----------|---------|--------|
| `POL_PROOF_DEV_MODE` | **YES** | — | **REQUIRED for all runners**. Set to `true` to use fast dev-mode proving instead of expensive Groth16. Without this, tests will hang/timeout. |
**Example:**
```bash
export POL_PROOF_DEV_MODE=true
```
Or add to your shell profile (`~/.bashrc`, `~/.zshrc`):
```bash
# Required for nomos-testing framework
export POL_PROOF_DEV_MODE=true
```
---
## Runner Selection & Topology
@ -138,7 +117,6 @@ Control node log output (not framework runner logs):
LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/test-logs \
LOGOS_BLOCKCHAIN_LOG_LEVEL=debug \
LOGOS_BLOCKCHAIN_LOG_FILTER="cryptarchia=trace" \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner
# Inspect logs
@ -149,13 +127,13 @@ ls /tmp/test-logs/
**Common filter targets:**
| Target Prefix | Subsystem |
|---------------|-----------|
| `cryptarchia` | Consensus (Cryptarchia) |
| `nomos_blend` | Mix network/privacy layer |
| `chain_service` | Chain service (node APIs/state) |
| `chain_network` | P2P networking |
| `chain_leader` | Leader election |
| Target Prefix | Subsystem |
|---------------------------|-----------|
| `lb_cryptarchia` | Consensus (Cryptarchia) |
| `lb_blend` | Mix network/privacy layer |
| `lb_chain_service` | Chain service (node APIs/state) |
| `lb_chain_network` | P2P networking |
| `lb_chain_leader_service` | Leader election |
---
@ -303,7 +281,6 @@ Node-level configuration passed through to logos-blockchain-node:
# Faster block production
CONSENSUS_SLOT_TIME=5 \
CONSENSUS_ACTIVE_SLOT_COEFF=0.9 \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner
```
@ -350,14 +327,12 @@ Variables used by helper scripts (`scripts/run/run-examples.sh`, etc.):
### Minimal Host Run
```bash
POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -n 3 host
```
### Debug Logging (Host)
```bash
POL_PROOF_DEV_MODE=true \
LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/logs \
LOGOS_BLOCKCHAIN_LOG_LEVEL=debug \
LOGOS_BLOCKCHAIN_LOG_FILTER="cryptarchia=trace" \
@ -367,7 +342,6 @@ scripts/run/run-examples.sh -t 60 -n 3 host
### Compose with Observability
```bash
POL_PROOF_DEV_MODE=true \
LOGOS_BLOCKCHAIN_METRICS_QUERY_URL=http://localhost:9090 \
LOGOS_BLOCKCHAIN_GRAFANA_URL=http://localhost:3000 \
scripts/run/run-examples.sh -t 60 -n 3 compose
@ -376,7 +350,6 @@ scripts/run/run-examples.sh -t 60 -n 3 compose
### K8s with Debug
```bash
POL_PROOF_DEV_MODE=true \
K8S_RUNNER_NAMESPACE=nomos-debug \
K8S_RUNNER_DEBUG=1 \
K8S_RUNNER_PRESERVE=1 \
@ -387,7 +360,6 @@ scripts/run/run-examples.sh -t 60 -n 3 k8s
```yaml
env:
POL_PROOF_DEV_MODE: true
RUST_BACKTRACE: 1
LOGOS_BLOCKCHAIN_TESTS_KEEP_LOGS: 1
```

View File

@ -15,9 +15,7 @@ and expectations.
**Recommended:** Use `scripts/run/run-examples.sh -t <duration> -n <nodes> <mode>` where mode is `host`, `compose`, or `k8s`.
**Alternative:** Direct cargo run: `POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin <name>`
**All runners require `POL_PROOF_DEV_MODE=true`** to avoid expensive proof generation.
**Alternative:** Direct cargo run: `cargo run -p runner-examples --bin <name>`
**Code patterns** below show how to build scenarios. Wrap these in `#[tokio::test]` functions for integration tests, or `#[tokio::main]` for binaries.

View File

@ -38,10 +38,6 @@
Also called "correctness expectations."
- **Mantle transaction**: transaction type in Logos that can contain UTXO transfers
(LedgerTx) and operations (Op).
- **POL_PROOF_DEV_MODE**: environment variable that disables expensive Groth16 zero-knowledge
proof generation for leader election. **Required for all runners** (local, compose, k8s)
for practical testing—without it, proof generation causes timeouts. Should never be
used in production environments.
---

View File

@ -45,8 +45,7 @@ See [Environment Variables Reference](environment-variables.md) for complete det
LOGOS_BLOCKCHAIN_TESTS_TRACING=true \
LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/test-logs \
LOGOS_BLOCKCHAIN_LOG_LEVEL=debug \
LOGOS_BLOCKCHAIN_LOG_FILTER="cryptarchia=trace,chain_service=info,chain_network=info" \
POL_PROOF_DEV_MODE=true \
LOGOS_BLOCKCHAIN_LOG_FILTER="lb_cryptarchia=trace,lb_chain_service=info,lb_chain_network=info" \
cargo run -p runner-examples --bin local_runner
```
@ -67,18 +66,18 @@ When `LOGOS_BLOCKCHAIN_LOG_DIR` is set, each node writes logs to separate files:
Common target prefixes for `LOGOS_BLOCKCHAIN_LOG_FILTER`:
| Target Prefix | Subsystem |
|---------------|-----------|
| `cryptarchia` | Consensus (Cryptarchia) |
| `nomos_blend` | Mix network/privacy layer |
| `chain_service` | Chain service (node APIs/state) |
| `chain_network` | P2P networking |
| `chain_leader` | Leader election |
| Target Prefix | Subsystem |
|---------------------------|-----------|
| `lb_cryptarchia` | Consensus (Cryptarchia) |
| `lb_blend` | Mix network/privacy layer |
| `lb_chain_service` | Chain service (node APIs/state) |
| `lb_chain_network` | P2P networking |
| `lb_chain_leader_service` | Leader election |
**Example filter:**
```bash
LOGOS_BLOCKCHAIN_LOG_FILTER="cryptarchia=trace,chain_service=info,chain_network=info"
LOGOS_BLOCKCHAIN_LOG_FILTER="lb_cryptarchia=trace,lb_chain_service=info,lb_chain_network=info"
```
---
@ -90,7 +89,7 @@ LOGOS_BLOCKCHAIN_LOG_FILTER="cryptarchia=trace,chain_service=info,chain_network=
**Default (temporary directories, auto-cleanup):**
```bash
POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
cargo run -p runner-examples --bin local_runner
# Logs written to temporary directories in working directory
# Automatically cleaned up after test completes
```
@ -99,7 +98,6 @@ POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
```bash
LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/local-logs \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner
# After test completes:
@ -137,7 +135,6 @@ To write per-node log files inside containers, set `tracing_settings.logger: !Fi
```bash
# Ensure cfgsync.yaml is configured to log to /logs
LOGOS_BLOCKCHAIN_TESTNET_IMAGE=logos-blockchain-testing:local \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin compose_runner
# After test, copy files from containers:
@ -257,7 +254,6 @@ scripts/setup/setup-observability.sh compose up
eval $(scripts/setup/setup-observability.sh compose env)
# Run scenario with metrics
POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -n 3 compose
```
@ -275,7 +271,7 @@ scripts/setup/setup-observability.sh compose up
eval $(scripts/setup/setup-observability.sh compose env)
export LOGOS_BLOCKCHAIN_GRAFANA_URL=http://localhost:3000
POL_PROOF_DEV_MODE=true scripts/run/run-examples.sh -t 60 -n 3 compose
scripts/run/run-examples.sh -t 60 -n 3 compose
```
**Default bundled Grafana login:** `admin` / `admin` (see `scripts/observability/compose/docker-compose.yml`).
@ -322,7 +318,6 @@ flowchart TD
LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/logs \
LOGOS_BLOCKCHAIN_LOG_LEVEL=debug \
LOGOS_BLOCKCHAIN_LOG_FILTER="cryptarchia=trace" \
POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -n 3 host
```
@ -334,7 +329,6 @@ scripts/setup/setup-observability.sh compose up
eval $(scripts/setup/setup-observability.sh compose env)
# Run with metrics
POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -n 3 compose
# Access Grafana at http://localhost:3000
@ -346,7 +340,6 @@ scripts/run/run-examples.sh -t 60 -n 3 compose
K8S_RUNNER_NAMESPACE=nomos-debug \
K8S_RUNNER_DEBUG=1 \
K8S_RUNNER_PRESERVE=1 \
POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -n 3 k8s
# Inspect logs

View File

@ -375,7 +375,6 @@ async fn external_driver_example() -> Result<()> {
```bash
# Required: dev mode for fast proofs
POL_PROOF_DEV_MODE=true \
cargo test -p runner-examples -- --ignored external_driver_example
```
@ -385,7 +384,6 @@ cargo test -p runner-examples -- --ignored external_driver_example
# Preserve logs after test
LOGOS_BLOCKCHAIN_TESTS_KEEP_LOGS=1 \
RUST_LOG=info \
POL_PROOF_DEV_MODE=true \
cargo test -p runner-examples -- --ignored external_driver_example
```

View File

@ -23,7 +23,6 @@ Operational readiness focuses on prerequisites, environment fit, and clear signa
- Binary bundles for reproducible builds
**Environment Configuration:**
- `POL_PROOF_DEV_MODE=true` is **REQUIRED for all runners** to avoid expensive proof generation
- Logging configured via `LOGOS_BLOCKCHAIN_LOG_*` variables
- Observability endpoints (Prometheus, Grafana) optional but useful

View File

@ -194,30 +194,6 @@ minikube image load logos-blockchain-testing:local
- Resource isolation
- Large topologies
## Critical Environment Variable
**`POL_PROOF_DEV_MODE=true` is REQUIRED for ALL runners!**
Without this, proof generation uses expensive Groth16 proving, causing:
- Tests "hang" for minutes
- CPU spikes to 100%
- Timeouts and failures
**Always set:**
```bash
POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
POL_PROOF_DEV_MODE=true scripts/run/run-examples.sh -t 60 -n 3 compose
# etc.
```
**Or add to your shell profile:**
```bash
# ~/.bashrc or ~/.zshrc
export POL_PROOF_DEV_MODE=true
```
## Quick Setup Check
Run this checklist before your first scenario:
@ -229,16 +205,13 @@ cat versions.env
# 2. Check circuit assets
ls -lh "${HOME}/.logos-blockchain-circuits"
# 3. Verify POL_PROOF_DEV_MODE is set
echo $POL_PROOF_DEV_MODE # Should print: true
# 4. For compose/k8s: verify Docker is running
# 3. For compose/k8s: verify Docker is running
docker ps
# 5. For compose/k8s: verify image exists
# 4. For compose/k8s: verify image exists
docker images | grep logos-blockchain-testing
# 6. For host runner: verify node binaries (if not using scripts)
# 5. For host runner: verify node binaries (if not using scripts)
$LOGOS_BLOCKCHAIN_NODE_BIN --version
```

View File

@ -16,7 +16,7 @@ git clone https://github.com/logos-blockchain/logos-blockchain-testing.git
cd logos-blockchain-testing
# 3. Run your first scenario (downloads dependencies automatically)
POL_PROOF_DEV_MODE=true scripts/run/run-examples.sh -t 60 -n 1 host
scripts/run/run-examples.sh -t 60 -n 1 host
```
**First run takes 5-10 minutes** (downloads ~120MB circuit assets, builds binaries).
@ -56,7 +56,7 @@ This handles circuit setup, binary building, and runs a complete scenario: 1 nod
```bash
# Requires circuits in place and LOGOS_BLOCKCHAIN_NODE_BIN set
POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
cargo run -p runner-examples --bin local_runner
```
**Core API Pattern** (simplified example):
@ -92,8 +92,6 @@ pub async fn run_local_demo() -> Result<()> {
**Note:** The examples are binaries with `#[tokio::main]`, not test functions. If you want to write integration tests, wrap this pattern in `#[tokio::test]` functions in your own test suite.
**Important:** `POL_PROOF_DEV_MODE=true` disables expensive Groth16 zero-knowledge proof generation for leader election. Without it, proof generation is CPU-intensive and tests will timeout. **This is required for all runners** (local, compose, k8s) for practical testing. Never use in production.
**What you should see:**
- Nodes spawn as local processes
- Consensus starts producing blocks
@ -213,7 +211,6 @@ scripts/run/run-examples.sh -t 120 -n 3 host
# Uses LOGOS_BLOCKCHAIN_DEMO_* env vars (or legacy *_DEMO_* vars)
LOGOS_BLOCKCHAIN_DEMO_NODES=3 \
LOGOS_BLOCKCHAIN_DEMO_RUN_SECS=120 \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner
```
@ -246,7 +243,6 @@ scripts/build/build_test_image.sh
# Run with Compose
LOGOS_BLOCKCHAIN_TESTNET_IMAGE=logos-blockchain-testing:local \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin compose_runner
```

View File

@ -4,8 +4,6 @@ Runners turn a scenario plan into a live environment while keeping the plan
unchanged. Choose based on feedback speed, reproducibility, and fidelity. For
environment and operational considerations, see [Operations Overview](operations-overview.md).
**Important:** All runners require `POL_PROOF_DEV_MODE=true` to avoid expensive Groth16 proof generation that causes timeouts.
## Host runner (local processes)
- Launches node processes directly on the host (via `LocalDeployer`).
- Binary: `local_runner.rs`, script mode: `host`

View File

@ -99,7 +99,6 @@ scripts/ops/clean.sh --docker
For manual control, run the `local_runner` binary directly:
```bash
POL_PROOF_DEV_MODE=true \
LOGOS_BLOCKCHAIN_NODE_BIN=/path/to/logos-blockchain-node \
cargo run -p runner-examples --bin local_runner
```
@ -116,7 +115,6 @@ cargo run -p runner-examples --bin local_runner
| `LOGOS_BLOCKCHAIN_TESTS_TRACING` | false | Enable debug tracing preset |
| `LOGOS_BLOCKCHAIN_LOG_LEVEL` | info | Global log level: error, warn, info, debug, trace |
| `LOGOS_BLOCKCHAIN_LOG_FILTER` | None | Fine-grained module filtering (e.g., `cryptarchia=trace`) |
| `POL_PROOF_DEV_MODE` | — | **REQUIRED**: Set to `true` for all runners |
**Note:** Requires circuit assets and host binaries. Use `scripts/run/run-examples.sh host` to handle setup automatically.
@ -139,7 +137,6 @@ scripts/build/build_test_image.sh
# 3. Run
LOGOS_BLOCKCHAIN_TESTNET_IMAGE=logos-blockchain-testing:local \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin compose_runner
```
@ -154,7 +151,6 @@ scripts/build/build_test_image.sh
# Run
LOGOS_BLOCKCHAIN_TESTNET_IMAGE=logos-blockchain-testing:local \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin compose_runner
```
@ -169,7 +165,6 @@ cargo run -p runner-examples --bin compose_runner
| Variable | Default | Effect |
|----------|---------|--------|
| `LOGOS_BLOCKCHAIN_TESTNET_IMAGE` | — | Image tag (required, must match built image) |
| `POL_PROOF_DEV_MODE` | — | **REQUIRED**: Set to `true` for all runners |
| `LOGOS_BLOCKCHAIN_DEMO_NODES` | 1 | Number of nodes |
| `LOGOS_BLOCKCHAIN_DEMO_RUN_SECS` | 60 | Run duration in seconds |
| `COMPOSE_NODE_PAIRS` | — | Alternative topology format: "nodes" (e.g., `3`) |
@ -232,7 +227,6 @@ export LOGOS_BLOCKCHAIN_TESTNET_IMAGE=your-registry/logos-blockchain-testing:lat
```bash
export LOGOS_BLOCKCHAIN_TESTNET_IMAGE=logos-blockchain-testing:local
export POL_PROOF_DEV_MODE=true
cargo run -p runner-examples --bin k8s_runner
```
@ -241,7 +235,6 @@ cargo run -p runner-examples --bin k8s_runner
| Variable | Default | Effect |
|----------|---------|--------|
| `LOGOS_BLOCKCHAIN_TESTNET_IMAGE` | — | Image tag (required) |
| `POL_PROOF_DEV_MODE` | — | **REQUIRED**: Set to `true` for all runners |
| `LOGOS_BLOCKCHAIN_DEMO_NODES` | 1 | Number of nodes |
| `LOGOS_BLOCKCHAIN_DEMO_RUN_SECS` | 60 | Run duration in seconds |
| `LOGOS_BLOCKCHAIN_METRICS_QUERY_URL` | None | Prometheus-compatible base URL for runner to query (PromQL) |

View File

@ -69,7 +69,6 @@ Notes:
Run the built-in local examples:
```bash
POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -n 3 host
```
@ -82,7 +81,6 @@ scripts/run/run-examples.sh -t 60 -n 3 host
Run the built-in compose examples:
```bash
POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -n 3 compose
```
@ -95,7 +93,6 @@ scripts/run/run-examples.sh -t 60 -n 3 compose
Run the built-in k8s examples:
```bash
POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -n 3 k8s
```

View File

@ -2,7 +2,6 @@
**Prerequisites for All Runners:**
- **`versions.env` file** at repository root (required by helper scripts)
- **`POL_PROOF_DEV_MODE=true`** MUST be set for all runners (host, compose, k8s) to avoid expensive Groth16 proof generation that causes timeouts
- **Circuit assets** must be present and `LOGOS_BLOCKCHAIN_CIRCUITS` must point to a directory that contains them
**Platform/Environment Notes:**
@ -18,7 +17,6 @@
Common symptoms and likely causes:
- **No or slow block progression**: missing `POL_PROOF_DEV_MODE=true`, missing circuit assets, too-short run window, port conflicts, or resource exhaustion—set required env vars, verify assets exist, extend duration, check node logs for startup errors.
- **Transactions not included**: unfunded or misconfigured wallets (check `.wallets(N)` vs `.users(M)`), transaction rate exceeding block capacity, or rates exceeding block production speed—reduce rate, increase wallet count, verify wallet setup in logs.
- **Chaos stalls the run**: chaos (node control) only works with ComposeDeployer; host runner (LocalDeployer) and K8sDeployer don't support it (won't "stall", just can't execute chaos workloads). With compose, aggressive restart cadence can prevent consensus recovery—widen restart intervals.
- **Observability gaps**: metrics or logs unreachable because ports clash or services are not exposed—adjust observability ports and confirm runner wiring.
@ -28,40 +26,7 @@ Common symptoms and likely causes:
This section shows what you'll actually see when common issues occur. Each example includes realistic console output and the fix.
### 1. Missing `POL_PROOF_DEV_MODE=true` (Most Common!)
**Symptoms:**
- Test "hangs" with no visible progress
- CPU usage spikes to 100%
- Eventually hits timeout after several minutes
- Nodes appear to start but blocks aren't produced
**What you'll see:**
```text
$ cargo run -p runner-examples --bin local_runner
Finished dev [unoptimized + debuginfo] target(s) in 0.48s
Running `target/debug/local_runner`
[INFO runner_examples::local_runner] Starting local runner scenario
[INFO testing_framework_runner_local] Launching 3 nodes
[INFO testing_framework_runner_local] Waiting for node readiness...
(hangs here for 5+ minutes, CPU at 100%)
thread 'main' panicked at 'readiness timeout expired'
```
**Root Cause:** Groth16 proof generation is extremely slow without dev mode. The system tries to compute real cryptographic proofs, which can take minutes per block.
**Fix:**
```bash
POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
```
**Prevention:** Set this in your shell profile or `.env` file so you never forget it.
---
### 2. Missing `versions.env` File
### 1. Missing `versions.env` File
**Symptoms:**
- Helper scripts fail immediately
@ -93,7 +58,7 @@ cat versions.env
---
### 3. Missing Circuit Assets
### 2. Missing Circuit Assets
**Symptoms:**
- Node startup fails early
@ -102,7 +67,7 @@ cat versions.env
**What you'll see:**
```text
$ POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
$ cargo run -p runner-examples --bin local_runner
[INFO testing_framework_runner_local] Starting local runner scenario
Error: circuit assets directory missing or invalid
thread 'main' panicked at 'workload init failed'
@ -129,7 +94,7 @@ export LOGOS_BLOCKCHAIN_CIRCUITS=$HOME/.logos-blockchain-circuits
---
### 4. Node Binaries Not Found
### 3. Node Binaries Not Found
**Symptoms:**
- Error about missing `logos-blockchain-node` binary
@ -139,7 +104,7 @@ export LOGOS_BLOCKCHAIN_CIRCUITS=$HOME/.logos-blockchain-circuits
**What you'll see:**
```text
$ POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
$ cargo run -p runner-examples --bin local_runner
[INFO testing_framework_runner_local] Spawning node 0
Error: Os { code: 2, kind: NotFound, message: "No such file or directory" }
thread 'main' panicked at 'failed to spawn logos-blockchain-node process'
@ -166,12 +131,12 @@ export LOGOS_BLOCKCHAIN_NODE_BIN=$PWD/target/release/logos-blockchain-node
# Return to testing framework
cd ../nomos-testing
POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
cargo run -p runner-examples --bin local_runner
```
---
### 5. Docker Daemon Not Running (Compose)
### 4. Docker Daemon Not Running (Compose)
**Symptoms:**
- Compose tests fail immediately
@ -208,7 +173,7 @@ sudo usermod -aG docker $USER
---
### 6. Image Not Found (Compose/K8s)
### 5. Image Not Found (Compose/K8s)
**Symptoms:**
- Compose/K8s tests fail during deployment
@ -218,7 +183,7 @@ sudo usermod -aG docker $USER
**What you'll see:**
```text
$ POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin compose_runner
$ cargo run -p runner-examples --bin compose_runner
[INFO testing_framework_runner_compose] Starting compose deployment
Error: Failed to pull image 'logos-blockchain-testing:local': No such image
thread 'main' panicked at 'compose deployment failed'
@ -255,7 +220,7 @@ kind load docker-image logos-blockchain-testing:local
---
### 7. Port Conflicts
### 6. Port Conflicts
**Symptoms:**
- "Address already in use" errors
@ -265,7 +230,7 @@ kind load docker-image logos-blockchain-testing:local
**What you'll see:**
```text
$ POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
$ cargo run -p runner-examples --bin local_runner
[INFO testing_framework_runner_local] Launching node 0 on port 18080
Error: Os { code: 48, kind: AddrInUse, message: "Address already in use" }
thread 'main' panicked at 'failed to bind port 18080'
@ -305,7 +270,7 @@ vim scripts/observability/compose/docker-compose.yml
---
### 8. Wallet Seeding Failed (Insufficient Funds)
### 7. Wallet Seeding Failed (Insufficient Funds)
**Symptoms:**
- Transaction workload reports wallet issues
@ -315,7 +280,7 @@ vim scripts/observability/compose/docker-compose.yml
**What you'll see:**
```text
$ POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
$ cargo run -p runner-examples --bin local_runner
[INFO testing_framework_workflows] Starting transaction workload with 10 users
[ERROR testing_framework_workflows] Wallet seeding failed: requested 10 users but only 3 wallets available
thread 'main' panicked at 'workload init failed: insufficient wallets'
@ -340,7 +305,7 @@ let scenario = ScenarioBuilder::topology_with(|t| t.network_star().nodes(3))
---
### 9. Resource Exhaustion (OOM / CPU)
### 8. Resource Exhaustion (OOM / CPU)
**Symptoms:**
- Nodes crash randomly
@ -385,7 +350,7 @@ ulimit -n 4096
---
### 10. Logs Disappear After Run
### 9. Logs Disappear After Run
**Symptoms:**
- Test completes but no logs on disk
@ -395,7 +360,7 @@ ulimit -n 4096
**What you'll see:**
```text
$ POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
$ cargo run -p runner-examples --bin local_runner
[INFO runner_examples] Test complete, cleaning up
[INFO testing_framework_runner_local] Removing temporary directories
$ ls .tmp/
@ -410,7 +375,6 @@ $ ls .tmp/
# Persist logs to a specific directory
LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/test-logs \
LOGOS_BLOCKCHAIN_TESTS_KEEP_LOGS=1 \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner
# Logs persist after run
@ -422,7 +386,7 @@ ls /tmp/test-logs/
---
### 11. Consensus Timing Too Tight / Run Duration Too Short
### 10. Consensus Timing Too Tight / Run Duration Too Short
**Symptoms:**
- "Consensus liveness expectation failed"
@ -432,7 +396,7 @@ ls /tmp/test-logs/
**What you'll see:**
```text
$ POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner
$ cargo run -p runner-examples --bin local_runner
[INFO testing_framework_core] Starting workloads
[INFO testing_framework_core] Run window: 10 seconds
[INFO testing_framework_core] Evaluating expectations
@ -463,7 +427,6 @@ let scenario = ScenarioBuilder::topology_with(|t| t.network_star().nodes(3))
# Faster block production (shorter slot time)
CONSENSUS_SLOT_TIME=5 \
CONSENSUS_ACTIVE_SLOT_COEFF=0.9 \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner
```
@ -473,17 +436,16 @@ cargo run -p runner-examples --bin local_runner
When a test fails, check these in order:
1. **`POL_PROOF_DEV_MODE=true` is set** (REQUIRED for all runners)
2. **`versions.env` exists at repo root**
3. **Circuit assets present** (`LOGOS_BLOCKCHAIN_CIRCUITS` points to a valid directory)
4. **Node binaries available** (`LOGOS_BLOCKCHAIN_NODE_BIN` set, or using `run-examples.sh`)
5. **Docker daemon running** (for compose/k8s)
6. **Docker image built** (`logos-blockchain-testing:local` exists for compose/k8s)
7. **No port conflicts** (`lsof -i :18080`, kill orphaned processes)
8. **Sufficient wallets** (`.wallets(N)``.users(M)`)
9. **Enough resources** (Docker memory 8GB+, ulimit -n 4096)
10. **Run duration appropriate** (long enough for consensus timing)
11. **Logs persisted** (`LOGOS_BLOCKCHAIN_LOG_DIR` + `LOGOS_BLOCKCHAIN_TESTS_KEEP_LOGS=1` if needed)
1. **`versions.env` exists at repo root**
2. **Circuit assets present** (`LOGOS_BLOCKCHAIN_CIRCUITS` points to a valid directory)
3. **Node binaries available** (`LOGOS_BLOCKCHAIN_NODE_BIN` set, or using `run-examples.sh`)
4. **Docker daemon running** (for compose/k8s)
5. **Docker image built** (`logos-blockchain-testing:local` exists for compose/k8s)
6. **No port conflicts** (`lsof -i :18080`, kill orphaned processes)
7. **Sufficient wallets** (`.wallets(N)``.users(M)`)
8. **Enough resources** (Docker memory 8GB+, ulimit -n 4096)
9. **Run duration appropriate** (long enough for consensus timing)
10. **Logs persisted** (`LOGOS_BLOCKCHAIN_LOG_DIR` + `LOGOS_BLOCKCHAIN_TESTS_KEEP_LOGS=1` if needed)
**Still stuck?** Check node logs (see [Where to Find Logs](#where-to-find-logs)) for the actual error.
@ -509,14 +471,13 @@ When a test fails, check these in order:
**Console output (default):**
```bash
POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin local_runner 2>&1 | tee test.log
cargo run -p runner-examples --bin local_runner 2>&1 | tee test.log
```
**Persistent file output:**
```bash
LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/debug-logs \
LOGOS_BLOCKCHAIN_LOG_LEVEL=debug \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner
# Inspect logs (note: filenames include timestamps):
@ -546,7 +507,6 @@ docker logs --tail 100 <container-id>
```bash
COMPOSE_RUNNER_PRESERVE=1 \
LOGOS_BLOCKCHAIN_TESTNET_IMAGE=logos-blockchain-testing:local \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin compose_runner
# OR: Use run-examples.sh (handles setup automatically)
@ -651,7 +611,6 @@ Focus on the first node that exhibited problems or the node with the highest ind
- "ERROR: versions.env missing" → missing required `versions.env` file at repository root
- "Failed to bind address" → port conflict
- "Connection refused" → peer not ready or network issue
- "Proof verification failed" or "Proof generation timeout" → missing `POL_PROOF_DEV_MODE=true` (REQUIRED for all runners)
- "Circuit file not found" → missing circuit assets at the path in `LOGOS_BLOCKCHAIN_CIRCUITS`
- "Insufficient funds" → wallet seeding issue (increase `.wallets(N)` or reduce `.users(M)`)
@ -689,16 +648,14 @@ Run a minimal baseline test (e.g., 2 nodes, consensus liveness only). If it pass
### "Consensus liveness expectation failed"
- **Cause**: Not enough blocks produced during the run window, missing
`POL_PROOF_DEV_MODE=true` (causes slow proof generation), or missing circuit
- **Cause**: Not enough blocks produced during the run window, missing circuit
assets.
- **Fix**:
1. Verify `POL_PROOF_DEV_MODE=true` is set (REQUIRED for all runners).
2. Verify circuit assets exist at the path referenced by
1. Verify circuit assets exist at the path referenced by
`LOGOS_BLOCKCHAIN_CIRCUITS`.
3. Extend `with_run_duration()` to allow more blocks.
4. Check node logs for proof generation or circuit asset errors.
5. Reduce transaction rate if nodes are overwhelmed.
2. Extend `with_run_duration()` to allow more blocks.
3. Check node logs for proof generation or circuit asset errors.
4. Reduce transaction rate if nodes are overwhelmed.
### "Wallet seeding failed"
@ -720,11 +677,10 @@ Run a minimal baseline test (e.g., 2 nodes, consensus liveness only). If it pass
- **Cause**: Nodes didn't become responsive within expected time (often due to
missing prerequisites).
- **Fix**:
1. **Verify `POL_PROOF_DEV_MODE=true` is set** (REQUIRED for all runners—without
it, proof generation is too slow).
2. Check node logs for startup errors (port conflicts, missing assets).
3. Verify network connectivity between nodes.
4. Ensure circuit assets are present and `LOGOS_BLOCKCHAIN_CIRCUITS` points to them.
1. Check node logs for startup errors (port conflicts, missing assets).
2. Verify network connectivity between nodes.
3. Ensure circuit assets are present and `LOGOS_BLOCKCHAIN_CIRCUITS` points to them.
### "ERROR: versions.env missing"

View File

@ -78,13 +78,7 @@ ScenarioBuilder::topology_with(|t| t.network_star().nodes(3))
```
The workload will fail during `init()` if no wallets are configured.
2. **Proof generation must be fast:**
```bash
export POL_PROOF_DEV_MODE=true
```
Without this, proof generation takes ~30-60 seconds per transaction, causing timeouts.
3. **Circuit artifacts must be available:**
2. **Circuit artifacts must be available:**
- Automatically staged by `scripts/run/run-examples.sh`
- Or manually via `scripts/setup/setup-logos-blockchain-circuits.sh` (recommended) / `scripts/setup/setup-logos-blockchain-circuits.sh`
@ -108,7 +102,6 @@ Error: Expectation failed: TxInclusionExpectation
Observed: 127 transactions
Possible causes:
- POL_PROOF_DEV_MODE not set (proof generation too slow)
- Duration too short (nodes still syncing)
- Node crashes (check logs for panics/OOM)
- Wallet accounts not seeded (check topology config)
@ -119,9 +112,8 @@ Error: Expectation failed: TxInclusionExpectation
```bash
grep "proof generation" $LOGOS_BLOCKCHAIN_LOG_DIR/*/*.log
```
2. Verify `POL_PROOF_DEV_MODE=true` was set
3. Increase duration: `.with_run_duration(Duration::from_secs(120))`
4. Reduce rate: `.rate(5)` instead of `.rate(10)`
2. Increase duration: `.with_run_duration(Duration::from_secs(120))`
3. Reduce rate: `.rate(5)` instead of `.rate(10)`
---
@ -382,12 +374,11 @@ ScenarioBuilder::topology_with(|t| t.network_star().nodes(3))
When a workload or expectation fails:
1. Check logs: `$LOGOS_BLOCKCHAIN_LOG_DIR/*/` or `docker compose logs` or `kubectl logs`
2. Verify environment variables: `POL_PROOF_DEV_MODE`, `LOGOS_BLOCKCHAIN_NODE_BIN`, etc.
3. Check prerequisites: wallets, node control, circuits
4. Increase duration: Double the run duration and retry
5. Reduce rates: Half the traffic rates and retry
6. Check metrics: Prometheus queries for block height and tx count
7. Reproduce locally: Use local runner for faster iteration
2. Check prerequisites: wallets, node control, circuits
3. Increase duration: Double the run duration and retry
4. Reduce rates: Half the traffic rates and retry
5. Check metrics: Prometheus queries for block height and tx count
6. Reproduce locally: Use local runner for faster iteration
---

View File

@ -1,4 +1,4 @@
use std::{env, process, time::Duration};
use std::{process, time::Duration};
use anyhow::{Context as _, Result};
use runner_examples::{DeployerKind, ScenarioBuilderExt as _, demo, read_env_any};
@ -17,11 +17,6 @@ async fn main() {
tracing_subscriber::fmt::init();
if env::var("POL_PROOF_DEV_MODE").is_err() {
warn!("POL_PROOF_DEV_MODE=true is required for the local runner demo");
process::exit(1);
}
let nodes = read_env_any(&["LOGOS_BLOCKCHAIN_DEMO_NODES"], demo::DEFAULT_NODES);
let run_secs = read_env_any(&["LOGOS_BLOCKCHAIN_DEMO_RUN_SECS"], demo::DEFAULT_RUN_SECS);

View File

@ -21,7 +21,6 @@ fn set_default_env(key: &str, value: &str) {
}
pub fn init_logging_defaults() {
set_default_env("POL_PROOF_DEV_MODE", "true");
set_default_env("LOGOS_BLOCKCHAIN_TESTS_KEEP_LOGS", "1");
set_default_env("LOGOS_BLOCKCHAIN_LOG_LEVEL", "info");
set_default_env("RUST_LOG", "info");

View File

@ -86,6 +86,7 @@ impl Workload for JoinNodeWithPeersWorkload {
let options = StartNodeOptions {
peers: PeerSelection::Named(self.peers.clone()),
config_patch: None,
persist_dir: None,
};
let node = handle.start_node_with(&self.name, options).await?;
let client = node.api;

View File

@ -18,7 +18,6 @@ const CONVERGENCE_POLL: Duration = Duration::from_secs(2);
async fn manual_cluster_two_clusters_merge() -> Result<()> {
let _ = try_init();
// Required env vars (set on the command line when running this test):
// - `POL_PROOF_DEV_MODE=true`
// - `RUST_LOG=info` (optional)
let config = TopologyConfig::with_node_numbers(2);
let deployer = LocalDeployer::new();
@ -33,6 +32,7 @@ async fn manual_cluster_two_clusters_merge() -> Result<()> {
StartNodeOptions {
peers: PeerSelection::None,
config_patch: None,
persist_dir: None,
},
)
.await?
@ -48,6 +48,7 @@ async fn manual_cluster_two_clusters_merge() -> Result<()> {
StartNodeOptions {
peers: PeerSelection::Named(vec!["node-a".to_owned()]),
config_patch: None,
persist_dir: None,
},
)
.await?
@ -82,3 +83,57 @@ async fn manual_cluster_two_clusters_merge() -> Result<()> {
sleep(CONVERGENCE_POLL).await;
}
}
#[tokio::test]
#[ignore = "run manually with `cargo test -p runner-examples -- --ignored manual_cluster_with_persist_dir`"]
async fn manual_cluster_with_persist_dir() -> Result<()> {
use std::path::PathBuf;
let _ = try_init();
// Required env vars (set on the command line when running this test):
// - `RUST_LOG=info` (optional)
let config = TopologyConfig::with_node_numbers(1);
let deployer = LocalDeployer::new();
let cluster = deployer.manual_cluster(config)?;
let persist_dir = PathBuf::from("/tmp/test-node-persist-dir");
println!("starting validator with persist_dir: {:?}", persist_dir);
let _node = cluster
.start_node_with(
"test",
StartNodeOptions {
peers: PeerSelection::None,
config_patch: None,
persist_dir: Some(persist_dir.clone()),
},
)
.await?
.api;
println!("validator started, waiting briefly");
sleep(Duration::from_secs(5)).await;
// Drop the cluster to trigger the persist logic
drop(cluster);
println!("cluster dropped, checking if persist_dir exists");
// Verify the persist_dir was created
if !persist_dir.exists() {
return Err(anyhow::anyhow!(
"persist_dir was not created: {:?}",
persist_dir
));
}
println!("persist_dir verified: {:?}", persist_dir);
// Clean up
if persist_dir.exists() {
std::fs::remove_dir_all(&persist_dir)?;
}
Ok(())
}

View File

@ -17,7 +17,6 @@ use tracing_subscriber::fmt::try_init;
async fn manual_cluster_api_port_override() -> Result<()> {
let _ = try_init();
// Required env vars (set on the command line when running this test):
// - `POL_PROOF_DEV_MODE=true`
// - `LOGOS_BLOCKCHAIN_NODE_BIN=...`
// - `LOGOS_BLOCKCHAIN_CIRCUITS=...`
// - `RUST_LOG=info` (optional)
@ -33,6 +32,7 @@ async fn manual_cluster_api_port_override() -> Result<()> {
StartNodeOptions {
peers: PeerSelection::None,
config_patch: None,
persist_dir: None,
}
.create_patch(move |mut config| {
println!("overriding API port to {api_port}");
@ -62,7 +62,6 @@ async fn manual_cluster_api_port_override() -> Result<()> {
async fn scenario_builder_api_port_override() -> Result<()> {
let _ = try_init();
// Required env vars (set on the command line when running this test):
// - `POL_PROOF_DEV_MODE=true`
// - `LOGOS_BLOCKCHAIN_NODE_BIN=...`
// - `LOGOS_BLOCKCHAIN_CIRCUITS=...`
// - `RUST_LOG=info` (optional)

View File

@ -25,7 +25,6 @@ const POLL_INTERVAL: Duration = Duration::from_secs(1);
async fn orphan_manual_cluster() -> Result<()> {
let _ = try_init();
// Required env vars (set on the command line when running this test):
// - `POL_PROOF_DEV_MODE=true`
// - `LOGOS_BLOCKCHAIN_NODE_BIN=...`
// - `NOMOS_KZGRS_PARAMS_PATH=...` (path to KZG params directory/file)
// - `RUST_LOG=info` (optional; better visibility)

View File

@ -515,7 +515,6 @@ run_examples::run() {
echo "==> Running ${BIN} for ${RUN_SECS}s (mode=${MODE}, image=${IMAGE})"
cd "${ROOT_DIR}"
POL_PROOF_DEV_MODE=true \
TESTNET_PRINT_ENDPOINTS=1 \
LOGOS_BLOCKCHAIN_TESTNET_IMAGE="${IMAGE}" \
LOGOS_BLOCKCHAIN_NODE_BIN="${LOGOS_BLOCKCHAIN_NODE_BIN:-}" \

View File

@ -47,8 +47,7 @@ export CFG_FILE_PATH="/config.yaml" \
CFG_HOST_KIND="${CFG_HOST_KIND:-$role}" \
CFG_HOST_IDENTIFIER="${CFG_HOST_IDENTIFIER:-$host_identifier_default}" \
LOGOS_BLOCKCHAIN_TIME_BACKEND="${LOGOS_BLOCKCHAIN_TIME_BACKEND:-monotonic}" \
LOG_LEVEL="${LOG_LEVEL:-INFO}" \
POL_PROOF_DEV_MODE="${POL_PROOF_DEV_MODE:-true}"
LOG_LEVEL="${LOG_LEVEL:-INFO}"``"
# Ensure recovery directory exists to avoid early crashes in services that
# persist state.

View File

@ -10,32 +10,33 @@ repository.workspace = true
version = "0.1.0"
[dependencies]
chain-network = { workspace = true }
chain-service = { workspace = true }
cryptarchia-engine = { features = ["serde"], workspace = true }
cryptarchia-sync = { workspace = true }
groth16 = { workspace = true }
hex = { default-features = false, version = "0.4.3" }
key-management-system-service = { workspace = true }
nomos-api = { workspace = true }
nomos-blend-service = { features = ["libp2p"], workspace = true }
nomos-core = { workspace = true }
nomos-ledger = { features = ["serde"], workspace = true }
nomos-libp2p = { workspace = true }
nomos-node = { default-features = false, features = ["testing"], workspace = true }
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 = { default-features = false, version = "0.4" }
rand = { workspace = true }
serde = { features = ["derive"], workspace = true }
testing-framework-env = { workspace = true }
thiserror = { workspace = true }
time = { default-features = true, version = "0.3" }
tracing = { workspace = true }
hex = { default-features = false, version = "0.4.3" }
lb-api-service = { workspace = true }
lb-blend-service = { features = ["libp2p"], workspace = true }
lb-chain-leader-service = { workspace = true }
lb-chain-network = { workspace = true }
lb-chain-service = { workspace = true }
lb-core = { workspace = true }
lb-cryptarchia-engine = { features = ["serde"], workspace = true }
lb-cryptarchia-sync = { workspace = true }
lb-groth16 = { workspace = true }
lb-key-management-system-service = { workspace = true }
lb-ledger = { features = ["serde"], workspace = true }
lb-libp2p = { workspace = true }
lb-node = { default-features = false, features = ["testing"], workspace = true }
lb-sdp-service = { workspace = true }
lb-time-service = { workspace = true }
lb-tracing = { workspace = true }
lb-tracing-service = { workspace = true }
lb-utils = { workspace = true }
lb-wallet-service = { workspace = true }
num-bigint = { default-features = false, version = "0.4" }
rand = { workspace = true }
serde = { features = ["derive"], workspace = true }
testing-framework-env = { workspace = true }
thiserror = { workspace = true }
time = { default-features = true, version = "0.3" }
tracing = { workspace = true }
[lints]
workspace = true

View File

@ -1,7 +1,7 @@
use std::{net::Ipv4Addr, ops::Mul as _, sync::LazyLock, time::Duration};
use nomos_core::sdp::ProviderId;
use nomos_libp2p::{Multiaddr, PeerId, multiaddr};
use lb_core::sdp::ProviderId;
use lb_libp2p::{Multiaddr, PeerId, multiaddr};
use testing_framework_env as tf_env;
pub mod constants;
@ -31,17 +31,13 @@ pub fn node_address_from_port(port: u16) -> Multiaddr {
}
#[must_use]
pub fn secret_key_to_peer_id(node_key: nomos_libp2p::ed25519::SecretKey) -> PeerId {
PeerId::from_public_key(
&nomos_libp2p::ed25519::Keypair::from(node_key)
.public()
.into(),
)
pub fn secret_key_to_peer_id(node_key: lb_libp2p::ed25519::SecretKey) -> PeerId {
PeerId::from_public_key(&lb_libp2p::ed25519::Keypair::from(node_key).public().into())
}
#[must_use]
pub fn secret_key_to_provider_id(node_key: nomos_libp2p::ed25519::SecretKey) -> ProviderId {
let bytes = nomos_libp2p::ed25519::Keypair::from(node_key)
pub fn secret_key_to_provider_id(node_key: lb_libp2p::ed25519::SecretKey) -> ProviderId {
let bytes = lb_libp2p::ed25519::Keypair::from(node_key)
.public()
.to_bytes();
match ProviderId::try_from(bytes) {

View File

@ -1,19 +1,19 @@
use std::{num::NonZeroU64, path::PathBuf, time::Duration};
use blend_serde::Config as BlendUserConfig;
use key_management_system_service::keys::Key;
use nomos_blend_service::{
use lb_blend_service::{
core::settings::{CoverTrafficSettings, MessageDelayerSettings, SchedulerSettings, ZkSettings},
settings::TimingSettings,
};
use nomos_node::config::{
use lb_key_management_system_service::keys::Key;
use lb_node::config::{
blend::{
deployment::{self as blend_deployment, Settings as BlendDeploymentSettings},
serde as blend_serde,
},
network::deployment::Settings as NetworkDeploymentSettings,
};
use nomos_utils::math::NonNegativeF64;
use lb_utils::math::NonNegativeF64;
use crate::{
nodes::kms::key_id_for_preload_backend,
@ -33,6 +33,7 @@ const SAFETY_BUFFER_INTERVALS: u64 = 100;
const MESSAGE_FREQUENCY_PER_ROUND: f64 = 1.0;
const MAX_RELEASE_DELAY_ROUNDS: u64 = 3;
const DATA_REPLICATION_FACTOR: u64 = 0;
pub const ACTIVITY_THRESHOLD_SENSITIVITY: u64 = 1;
pub(crate) fn build_blend_service_config(
config: &TopologyBlendConfig,
@ -138,19 +139,20 @@ fn build_blend_deployment_settings(
},
minimum_messages_coefficient: backend_core.minimum_messages_coefficient,
normalization_constant: backend_core.normalization_constant,
activity_threshold_sensitivity: ACTIVITY_THRESHOLD_SENSITIVITY,
},
}
}
fn build_network_deployment_settings() -> NetworkDeploymentSettings {
NetworkDeploymentSettings {
identify_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new(
identify_protocol_name: lb_libp2p::protocol_name::StreamProtocol::new(
"/integration/nomos/identify/1.0.0",
),
kademlia_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new(
kademlia_protocol_name: lb_libp2p::protocol_name::StreamProtocol::new(
"/integration/nomos/kad/1.0.0",
),
chain_sync_protocol_name: nomos_libp2p::protocol_name::StreamProtocol::new(
chain_sync_protocol_name: lb_libp2p::protocol_name::StreamProtocol::new(
"/integration/nomos/cryptarchia/sync/1.0.0",
),
}

View File

@ -5,19 +5,23 @@ use std::{
time::Duration,
};
use chain_network::{BootstrapConfig as ChainBootstrapConfig, OrphanConfig, SyncConfig};
use chain_service::StartingState;
use key_management_system_service::keys::Key;
use nomos_api::ApiServiceSettings;
use nomos_node::{
use lb_api_service::ApiServiceSettings;
use lb_chain_leader_service::LeaderWalletConfig;
use lb_chain_network::{BootstrapConfig as ChainBootstrapConfig, OrphanConfig, SyncConfig};
use lb_chain_service::StartingState;
use lb_core::mantle::Value;
use lb_key_management_system_service::keys::{Key, secured_key::SecuredKey};
use lb_node::{
api::backend::AxumBackendSettings as NodeAxumBackendSettings,
config::{
cryptarchia::{
deployment::{
SdpConfig as DeploymentSdpConfig, Settings as CryptarchiaDeploymentSettings,
SdpConfig as DeploymentSdpConfig, ServiceParameters,
Settings as CryptarchiaDeploymentSettings,
},
serde::{
Config as CryptarchiaConfig, NetworkConfig as CryptarchiaNetworkConfig,
Config as CryptarchiaConfig, LeaderConfig,
NetworkConfig as CryptarchiaNetworkConfig,
ServiceConfig as CryptarchiaServiceConfig,
},
},
@ -25,7 +29,7 @@ use nomos_node::{
time::{deployment::Settings as TimeDeploymentSettings, serde::Config as TimeConfig},
},
};
use nomos_wallet::WalletServiceSettings;
use lb_wallet_service::WalletServiceSettings;
use crate::{nodes::kms::key_id_for_preload_backend, timeouts, topology::configs::GeneralConfig};
@ -35,11 +39,29 @@ const MEMPOOL_PUBSUB_TOPIC: &str = "mantle";
const STATE_RECORDING_INTERVAL_SECS: u64 = 60;
const IBD_DOWNLOAD_DELAY_SECS: u64 = 10;
const MAX_ORPHAN_CACHE_SIZE: NonZeroUsize = unsafe { NonZeroUsize::new_unchecked(5) };
const API_RATE_LIMIT_PER_SECOND: u64 = 10000;
const API_RATE_LIMIT_BURST: u32 = 10000;
const API_MAX_CONCURRENT_REQUESTS: usize = 1000;
pub(crate) fn cryptarchia_deployment(config: &GeneralConfig) -> CryptarchiaDeploymentSettings {
let mantle_service_params = &config
.consensus_config
.ledger_config
.sdp_config
.service_params;
let node_service_params = mantle_service_params
.iter()
.map(|(service_type, service_parameters)| {
(
service_type.clone(),
ServiceParameters {
lock_period: service_parameters.lock_period,
inactivity_period: service_parameters.inactivity_period,
retention_period: service_parameters.retention_period,
timestamp: service_parameters.timestamp,
},
)
})
.collect::<HashMap<_, _>>();
CryptarchiaDeploymentSettings {
epoch_config: config.consensus_config.ledger_config.epoch_config,
security_param: config
@ -48,12 +70,7 @@ pub(crate) fn cryptarchia_deployment(config: &GeneralConfig) -> CryptarchiaDeplo
.consensus_config
.security_param(),
sdp_config: DeploymentSdpConfig {
service_params: config
.consensus_config
.ledger_config
.sdp_config
.service_params
.clone(),
service_params: node_service_params,
min_stake: config.consensus_config.ledger_config.sdp_config.min_stake,
},
gossipsub_protocol: CRYPTARCHIA_GOSSIPSUB_PROTOCOL.to_owned(),
@ -79,10 +96,10 @@ pub(crate) fn cryptarchia_config(config: &GeneralConfig) -> CryptarchiaConfig {
genesis_tx: config.consensus_config.genesis_tx.clone(),
},
recovery_file: PathBuf::from("recovery/cryptarchia.json"),
bootstrap: chain_service::BootstrapConfig {
bootstrap: lb_chain_service::BootstrapConfig {
prolonged_bootstrap_period: config.bootstrapping_config.prolonged_bootstrap_period,
force_bootstrap: false,
offline_grace_period: chain_service::OfflineGracePeriodConfig {
offline_grace_period: lb_chain_service::OfflineGracePeriodConfig {
grace_period: timeouts::grace_period(),
state_recording_interval: Duration::from_secs(STATE_RECORDING_INTERVAL_SECS),
},
@ -90,7 +107,7 @@ pub(crate) fn cryptarchia_config(config: &GeneralConfig) -> CryptarchiaConfig {
},
network: CryptarchiaNetworkConfig {
bootstrap: ChainBootstrapConfig {
ibd: chain_network::IbdConfig {
ibd: lb_chain_network::IbdConfig {
peers: HashSet::new(),
delay_before_new_download: Duration::from_secs(IBD_DOWNLOAD_DELAY_SECS),
},
@ -101,14 +118,20 @@ pub(crate) fn cryptarchia_config(config: &GeneralConfig) -> CryptarchiaConfig {
},
},
},
leader: LeaderConfig {
wallet: LeaderWalletConfig {
max_tx_fee: Value::MAX,
funding_pk: config.consensus_config.funding_sk.as_public_key(),
},
},
}
}
pub(crate) fn time_config(config: &GeneralConfig) -> TimeConfig {
TimeConfig {
backend: nomos_time::backends::NtpTimeBackendSettings {
backend: lb_time_service::backends::NtpTimeBackendSettings {
ntp_server: config.time_config.ntp_server.clone(),
ntp_client_settings: nomos_time::backends::ntp::async_client::NTPClientSettings {
ntp_client_settings: lb_time_service::backends::ntp::async_client::NTPClientSettings {
timeout: config.time_config.timeout,
listening_interface: config.time_config.interface.clone(),
},
@ -118,13 +141,13 @@ pub(crate) fn time_config(config: &GeneralConfig) -> TimeConfig {
}
}
pub(crate) fn mempool_config() -> nomos_node::config::mempool::serde::Config {
nomos_node::config::mempool::serde::Config {
pub(crate) fn mempool_config() -> lb_node::config::mempool::serde::Config {
lb_node::config::mempool::serde::Config {
recovery_path: PathBuf::from("recovery/mempool.json"),
}
}
pub(crate) fn tracing_settings(config: &GeneralConfig) -> nomos_tracing_service::TracingSettings {
pub(crate) fn tracing_settings(config: &GeneralConfig) -> lb_tracing_service::TracingSettings {
config.tracing_config.tracing_settings.clone()
}
@ -132,8 +155,6 @@ pub(crate) fn http_config(config: &GeneralConfig) -> ApiServiceSettings<NodeAxum
ApiServiceSettings {
backend_settings: NodeAxumBackendSettings {
address: config.api_config.address,
rate_limit_per_second: API_RATE_LIMIT_PER_SECOND,
rate_limit_burst: API_RATE_LIMIT_BURST,
max_concurrent_requests: API_MAX_CONCURRENT_REQUESTS,
..Default::default()
},
@ -146,8 +167,6 @@ pub(crate) fn testing_http_config(
ApiServiceSettings {
backend_settings: NodeAxumBackendSettings {
address: config.api_config.testing_http_address,
rate_limit_per_second: API_RATE_LIMIT_PER_SECOND,
rate_limit_burst: API_RATE_LIMIT_BURST,
max_concurrent_requests: API_MAX_CONCURRENT_REQUESTS,
..Default::default()
},

View File

@ -1,5 +1,5 @@
use groth16::fr_to_bytes;
use key_management_system_service::{
use lb_groth16::fr_to_bytes;
use lb_key_management_system_service::{
backend::preload::KeyId,
keys::{Key, secured_key::SecuredKey as _},
};

View File

@ -1,10 +1,10 @@
use key_management_system_service::keys::secured_key::SecuredKey as _;
use nomos_core::mantle::Value;
use nomos_node::{
use lb_core::mantle::Value;
use lb_key_management_system_service::keys::secured_key::SecuredKey as _;
use lb_node::{
RocksBackendSettings, UserConfig,
config::{RunConfig, deployment::DeploymentSettings},
};
use nomos_sdp::{SdpSettings, wallet::SdpWalletConfig};
use lb_sdp_service::{SdpSettings, wallet::SdpWalletConfig};
use crate::{
nodes::{
@ -56,8 +56,8 @@ pub fn create_node_config(config: GeneralConfig) -> RunConfig {
fn build_node_deployment_settings(
config: &GeneralConfig,
blend_deployment: nomos_node::config::blend::deployment::Settings,
network_deployment: nomos_node::config::network::deployment::Settings,
blend_deployment: lb_node::config::blend::deployment::Settings,
network_deployment: lb_node::config::network::deployment::Settings,
) -> DeploymentSettings {
DeploymentSettings {
blend: blend_deployment,

View File

@ -1,6 +1,6 @@
use std::net::SocketAddr;
use nomos_utils::net::get_available_tcp_port;
use lb_utils::net::get_available_tcp_port;
use thiserror::Error;
const LOCALHOST: [u8; 4] = [127, 0, 0, 1];

View File

@ -1,13 +1,13 @@
use core::time::Duration;
use std::{net::Ipv4Addr, num::NonZeroU64};
use key_management_system_service::keys::{Ed25519Key, UnsecuredEd25519Key, ZkKey};
use nomos_blend_service::{
use lb_blend_service::{
core::backends::libp2p::Libp2pBlendBackendSettings as Libp2pCoreBlendBackendSettings,
edge::backends::libp2p::Libp2pBlendBackendSettings as Libp2pEdgeBlendBackendSettings,
};
use nomos_libp2p::{Multiaddr, Protocol, protocol_name::StreamProtocol};
use nomos_utils::math::NonNegativeF64;
use lb_key_management_system_service::keys::{Ed25519Key, UnsecuredEd25519Key, ZkKey};
use lb_libp2p::{Multiaddr, Protocol, protocol_name::StreamProtocol};
use lb_utils::math::NonNegativeF64;
use num_bigint::BigUint;
const EDGE_NODE_CONNECTION_TIMEOUT: Duration = Duration::from_secs(1);

View File

@ -5,12 +5,7 @@ use std::{
sync::Arc,
};
use cryptarchia_engine::EpochConfig;
use groth16::CompressedGroth16Proof;
use key_management_system_service::keys::{
Ed25519Key, UnsecuredZkKey, ZkKey, ZkPublicKey, ZkSignature,
};
use nomos_core::{
use lb_core::{
mantle::{
GenesisTx as GenesisTxTrait, MantleTx, Note, OpProof, Utxo,
genesis_tx::GenesisTx,
@ -22,11 +17,17 @@ use nomos_core::{
},
sdp::{DeclarationMessage, Locator, ProviderId, ServiceParameters, ServiceType},
};
use nomos_node::{SignedMantleTx, Transaction as _};
use nomos_utils::math::NonNegativeF64;
use lb_cryptarchia_engine::EpochConfig;
use lb_groth16::CompressedGroth16Proof;
use lb_key_management_system_service::keys::{
Ed25519Key, UnsecuredZkKey, ZkKey, ZkPublicKey, ZkSignature,
};
use lb_node::{SignedMantleTx, Transaction as _};
use lb_utils::math::NonNegativeF64;
use num_bigint::BigUint;
use super::wallet::{WalletAccount, WalletConfig};
use crate::nodes::blend::ACTIVITY_THRESHOLD_SENSITIVITY;
#[derive(Debug, thiserror::Error)]
pub enum ConsensusConfigError {
@ -101,7 +102,7 @@ impl ProviderInfo {
pub struct GeneralConsensusConfig {
pub leader_pk: ZkPublicKey,
pub leader_sk: UnsecuredZkKey,
pub ledger_config: nomos_ledger::Config,
pub ledger_config: lb_ledger::Config,
pub genesis_tx: GenesisTx,
pub utxos: Vec<Utxo>,
pub blend_notes: Vec<ServiceNote>,
@ -161,18 +162,18 @@ fn create_genesis_tx(utxos: &mut [Utxo]) -> Result<GenesisTx, ConsensusConfigErr
fn build_ledger_config(
consensus_params: &ConsensusParams,
) -> Result<nomos_ledger::Config, ConsensusConfigError> {
Ok(nomos_ledger::Config {
) -> Result<lb_ledger::Config, ConsensusConfigError> {
Ok(lb_ledger::Config {
epoch_config: EpochConfig {
epoch_stake_distribution_stabilization: unsafe { NonZero::new_unchecked(3) },
epoch_period_nonce_buffer: unsafe { NonZero::new_unchecked(3) },
epoch_period_nonce_stabilization: unsafe { NonZero::new_unchecked(4) },
},
consensus_config: cryptarchia_engine::Config::new(
consensus_config: lb_cryptarchia_engine::Config::new(
consensus_params.security_param,
consensus_params.active_slot_coeff,
),
sdp_config: nomos_ledger::mantle::sdp::Config {
sdp_config: lb_ledger::mantle::sdp::Config {
service_params: Arc::new(
[(
ServiceType::BlendNetwork,
@ -186,12 +187,12 @@ fn build_ledger_config(
)]
.into(),
),
min_stake: nomos_core::sdp::MinStake {
min_stake: lb_core::sdp::MinStake {
threshold: 1,
timestamp: 0,
},
service_rewards_params: nomos_ledger::mantle::sdp::ServiceRewardsParameters {
blend: nomos_ledger::mantle::sdp::rewards::blend::RewardsParameters {
service_rewards_params: lb_ledger::mantle::sdp::ServiceRewardsParameters {
blend: lb_ledger::mantle::sdp::rewards::blend::RewardsParameters {
rounds_per_session: unsafe { NonZeroU64::new_unchecked(10) },
message_frequency_per_round: NonNegativeF64::try_from(1.0).map_err(|_| {
ConsensusConfigError::LedgerConfig {
@ -201,6 +202,7 @@ fn build_ledger_config(
num_blend_layers: unsafe { NonZeroU64::new_unchecked(3) },
minimum_network_size: unsafe { NonZeroU64::new_unchecked(1) },
data_replication_factor: 0,
activity_threshold_sensitivity: ACTIVITY_THRESHOLD_SENSITIVITY,
},
},
},
@ -397,7 +399,7 @@ fn build_genesis_inscription() -> Result<InscriptionOp, ConsensusConfigError> {
fn build_genesis_ops(
inscription: InscriptionOp,
ledger_tx_hash: nomos_core::mantle::TxHash,
ledger_tx_hash: lb_core::mantle::TxHash,
providers: &[ProviderInfo],
) -> Vec<Op> {
let mut ops = Vec::with_capacity(1 + providers.len());
@ -423,7 +425,7 @@ fn build_genesis_ops(
}
fn build_genesis_ops_proofs(
mantle_tx_hash: nomos_core::mantle::TxHash,
mantle_tx_hash: lb_core::mantle::TxHash,
providers: Vec<ProviderInfo>,
) -> Result<Vec<OpProof>, ConsensusConfigError> {
let mut ops_proofs = Vec::with_capacity(1 + providers.len());

View File

@ -1,11 +1,11 @@
use core::{num::NonZeroU64, time::Duration};
use nomos_blend_service::{
use lb_blend_service::{
core::settings::{CoverTrafficSettings, MessageDelayerSettings, SchedulerSettings},
settings::TimingSettings,
};
use nomos_libp2p::protocol_name::StreamProtocol;
use nomos_node::config::{
use lb_libp2p::protocol_name::StreamProtocol;
use lb_node::config::{
blend::deployment::{
CommonSettings as BlendCommonSettings, CoreSettings as BlendCoreSettings,
Settings as BlendDeploymentSettings,
@ -13,7 +13,7 @@ use nomos_node::config::{
deployment::{CustomDeployment, Settings as DeploymentSettings},
network::deployment::Settings as NetworkDeploymentSettings,
};
use nomos_utils::math::NonNegativeF64;
use lb_utils::math::NonNegativeF64;
const DEFAULT_ROUND_DURATION: Duration = Duration::from_secs(1);

View File

@ -13,15 +13,16 @@ use std::cmp;
use blend::GeneralBlendConfig;
use consensus::{
ConsensusConfigError, GeneralConsensusConfig, ProviderInfo, create_genesis_tx_with_declarations,
ConsensusConfigError, GeneralConsensusConfig, ProviderInfo,
create_genesis_tx_with_declarations, sync_utxos_with_genesis,
};
use key_management_system_service::{backend::preload::PreloadKMSBackendSettings, keys::Key};
use network::GeneralNetworkConfig;
use nomos_core::{
use lb_core::{
mantle::GenesisTx as _,
sdp::{Locator, ServiceType},
};
use nomos_utils::net::get_available_udp_port;
use lb_key_management_system_service::{backend::preload::PreloadKMSBackendSettings, keys::Key};
use lb_utils::net::get_available_udp_port;
use network::GeneralNetworkConfig;
use rand::{Rng as _, thread_rng};
use tracing::GeneralTracingConfig;
use wallet::WalletConfig;
@ -199,11 +200,11 @@ fn collect_blend_core_providers(
fn apply_consensus_genesis_tx(
consensus_configs: &mut [GeneralConsensusConfig],
genesis_tx: &nomos_core::mantle::genesis_tx::GenesisTx,
genesis_tx: &lb_core::mantle::genesis_tx::GenesisTx,
) -> Result<(), ConsensusConfigError> {
for c in consensus_configs {
c.genesis_tx = genesis_tx.clone();
consensus::sync_utxos_with_genesis(&mut c.utxos, genesis_tx)?;
sync_utxos_with_genesis(&mut c.utxos, genesis_tx)?;
}
Ok(())

View File

@ -1,10 +1,10 @@
use std::time::Duration;
use nomos_libp2p::{
use lb_libp2p::{
IdentifySettings, KademliaSettings, Multiaddr, NatSettings, Protocol, ed25519, gossipsub,
};
use nomos_node::config::network::serde::{BackendSettings, Config, SwarmConfig};
use nomos_utils::net::get_available_udp_port;
use lb_node::config::network::serde::{BackendSettings, Config, SwarmConfig};
use lb_utils::net::get_available_udp_port;
use testing_framework_env as tf_env;
use thiserror::Error;
@ -45,7 +45,7 @@ fn default_swarm_config() -> SwarmConfig {
gossipsub_config: gossipsub::Config::default(),
kademlia_config: KademliaSettings::default(),
identify_config: IdentifySettings::default(),
chain_sync_config: cryptarchia_sync::Config::default(),
chain_sync_config: lb_cryptarchia_sync::Config::default(),
nat_config: NatSettings::default(),
}
}
@ -85,7 +85,7 @@ pub fn create_network_configs(
Ok(SwarmConfig {
node_key,
port,
chain_sync_config: cryptarchia_sync::Config {
chain_sync_config: lb_cryptarchia_sync::Config {
peer_response_timeout: PEER_RESPONSE_TIMEOUT,
},
nat_config: nat_settings(port)?,
@ -123,7 +123,7 @@ pub fn build_network_config_for_node(
let swarm_config = SwarmConfig {
node_key,
port,
chain_sync_config: cryptarchia_sync::Config {
chain_sync_config: lb_cryptarchia_sync::Config {
peer_response_timeout: PEER_RESPONSE_TIMEOUT,
},
nat_config: nat_settings(port)?,

View File

@ -1,7 +1,7 @@
use std::collections::HashMap;
use key_management_system_service::{backend::preload::PreloadKMSBackendSettings, keys::Key};
use nomos_libp2p::Multiaddr;
use lb_key_management_system_service::{backend::preload::PreloadKMSBackendSettings, keys::Key};
use lb_libp2p::Multiaddr;
use crate::{
node_address_from_port,

View File

@ -8,7 +8,7 @@ use time::OffsetDateTime;
const DEFAULT_SLOT_TIME: u64 = 1;
const CONSENSUS_SLOT_TIME_VAR: &str = "CONSENSUS_SLOT_TIME";
const DEFAULT_NTP_SERVER: &str = "pool.ntp.org";
const DEFAULT_NTP_SERVER: &str = "pool.ntp.org:123";
const DEFAULT_NTP_TIMEOUT: Duration = Duration::from_secs(5);
const DEFAULT_NTP_UPDATE_INTERVAL: Duration = Duration::from_secs(16);

View File

@ -1,9 +1,9 @@
use nomos_tracing::{
use lb_tracing::{
logging::{local::FileConfig, loki::LokiConfig},
metrics::otlp::OtlpMetricsConfig,
tracing::otlp::OtlpTracingConfig,
};
use nomos_tracing_service::{
use lb_tracing_service::{
ConsoleLayer, FilterLayer, LoggerLayer, MetricsLayer, TracingLayer, TracingSettings,
};
use testing_framework_env as tf_env;
@ -40,7 +40,7 @@ impl GeneralTracingConfig {
.unwrap_or(MetricsLayer::None);
let filter = file_filter_override().unwrap_or_else(|| {
nomos_tracing::filter::envfilter::EnvFilterConfig {
lb_tracing::filter::envfilter::EnvFilterConfig {
filters: std::iter::once(&("nomos", "debug"))
.map(|(k, v)| ((*k).to_owned(), (*v).to_owned()))
.collect(),
@ -121,8 +121,8 @@ fn file_log_level() -> Level {
.unwrap_or(Level::INFO)
}
fn file_filter_override() -> Option<nomos_tracing::filter::envfilter::EnvFilterConfig> {
tf_env::nomos_log_filter().map(|raw| nomos_tracing::filter::envfilter::EnvFilterConfig {
fn file_filter_override() -> Option<lb_tracing::filter::envfilter::EnvFilterConfig> {
tf_env::nomos_log_filter().map(|raw| lb_tracing::filter::envfilter::EnvFilterConfig {
filters: raw
.split(',')
.filter_map(|pair| {

View File

@ -1,6 +1,6 @@
use std::num::NonZeroUsize;
use key_management_system_service::keys::{ZkKey, ZkPublicKey};
use lb_key_management_system_service::keys::{ZkKey, ZkPublicKey};
use num_bigint::BigUint;
/// Collection of wallet accounts that should be funded at genesis.

View File

@ -16,32 +16,32 @@ workspace = true
default = []
[dependencies]
anyhow = "1"
async-trait = "0.1"
chain-service = { workspace = true }
common-http-client = { workspace = true }
futures = { default-features = false, version = "0.3" }
groth16 = { workspace = true }
hex = { default-features = false, version = "0.4.3" }
key-management-system-service = { workspace = true }
nomos-core = { workspace = true }
nomos-http-api-common = { workspace = true }
nomos-libp2p = { workspace = true }
nomos-network = { features = ["libp2p"], workspace = true }
nomos-node = { default-features = false, features = ["testing"], workspace = true }
nomos-tracing = { workspace = true }
nomos-tracing-service = { workspace = true }
nomos-utils = { workspace = true }
prometheus-http-query = "0.8"
rand = { workspace = true }
reqwest = { features = ["json"], workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_with = { workspace = true }
serde_yaml = { workspace = true }
tempfile = { workspace = true }
testing-framework-config = { workspace = true }
testing-framework-env = { workspace = true }
thiserror = { workspace = true }
tokio = { features = ["macros", "process", "rt-multi-thread", "time"], workspace = true }
tracing = { workspace = true }
anyhow = "1"
async-trait = "0.1"
futures = { default-features = false, version = "0.3" }
hex = { default-features = false, version = "0.4.3" }
lb-chain-service = { workspace = true }
lb-common-http-client = { workspace = true }
lb-core = { workspace = true }
lb-groth16 = { workspace = true }
lb-http-api-common = { workspace = true }
lb-key-management-system-service = { workspace = true }
lb-libp2p = { workspace = true }
lb-network-service = { features = ["libp2p"], workspace = true }
lb-node = { default-features = false, features = ["testing"], workspace = true }
lb-tracing = { workspace = true }
lb-tracing-service = { workspace = true }
lb-utils = { workspace = true }
prometheus-http-query = "0.8"
rand = { workspace = true }
reqwest = { features = ["json"], workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_with = { workspace = true }
serde_yaml = { workspace = true }
tempfile = { workspace = true }
testing-framework-config = { workspace = true }
testing-framework-env = { workspace = true }
thiserror = { workspace = true }
tokio = { features = ["macros", "process", "rt-multi-thread", "time"], workspace = true }
tracing = { workspace = true }

View File

@ -1,14 +1,14 @@
use std::net::SocketAddr;
use chain_service::CryptarchiaInfo;
use common_http_client::CommonHttpClient;
use hex;
use nomos_core::{block::Block, mantle::SignedMantleTx};
use nomos_http_api_common::paths::{
use lb_chain_service::CryptarchiaInfo;
use lb_common_http_client::CommonHttpClient;
use lb_core::{block::Block, mantle::SignedMantleTx};
use lb_http_api_common::paths::{
CRYPTARCHIA_HEADERS, CRYPTARCHIA_INFO, MEMPOOL_ADD_TX, NETWORK_INFO, STORAGE_BLOCK,
};
use nomos_network::backends::libp2p::Libp2pInfo;
use nomos_node::HeaderId;
use lb_network_service::backends::libp2p::Libp2pInfo;
use lb_node::HeaderId;
use reqwest::{Client, RequestBuilder, Response, Url};
use serde::{Serialize, de::DeserializeOwned};
use serde_json::Value;

View File

@ -1,5 +1,5 @@
use hex;
use key_management_system_service::keys::{Ed25519Key, Key};
use lb_key_management_system_service::keys::{Ed25519Key, Key};
use serde_yaml::{Mapping, Number as YamlNumber, Value};
use testing_framework_config::nodes::kms::key_id_for_preload_backend;

View File

@ -4,7 +4,7 @@ use std::{
path::Path,
};
use nomos_tracing::logging::local::FileConfig;
use lb_tracing::logging::local::FileConfig;
use serde::Serialize;
use serde_yaml::Value;
use testing_framework_env as tf_env;

View File

@ -6,7 +6,7 @@ use std::{
time::Duration,
};
use nomos_tracing_service::LoggerLayer;
use lb_tracing_service::LoggerLayer;
use reqwest::Url;
use serde::Serialize;
use tempfile::TempDir;
@ -124,8 +124,9 @@ pub fn prepare_node_config<T: NodeConfigCommon>(
mut config: T,
log_prefix: &str,
enable_logging: bool,
persist_dir: Option<PathBuf>,
) -> Result<PreparedNodeConfig<T>, SpawnNodeError> {
let dir = create_tempdir().map_err(|source| SpawnNodeError::TempDir { source })?;
let dir = create_tempdir(persist_dir).map_err(|source| SpawnNodeError::TempDir { source })?;
debug!(dir = %dir.path().display(), log_prefix, enable_logging, "preparing node config");
@ -154,12 +155,13 @@ pub async fn spawn_node<C>(
config_filename: &str,
binary_path: PathBuf,
enable_logging: bool,
persist_dir: Option<PathBuf>,
) -> Result<NodeHandle<C>, SpawnNodeError>
where
C: NodeConfigCommon + Serialize,
{
let (dir, config, addr, testing_addr) =
prepare_node_config(config, log_prefix, enable_logging)?;
prepare_node_config(config, log_prefix, enable_logging, persist_dir)?;
let config_path = dir.path().join(config_filename);
write_node_config(&config, &config_path)?;

View File

@ -2,7 +2,12 @@ mod api_client;
pub mod common;
pub mod node;
use std::sync::LazyLock;
use std::{
fs,
io::{Error, ErrorKind},
path::PathBuf,
sync::LazyLock,
};
pub use api_client::{ApiClient, ApiClientError};
use tempfile::TempDir;
@ -11,11 +16,41 @@ use testing_framework_env as tf_env;
pub(crate) const LOGS_PREFIX: &str = "__logs";
static KEEP_NODE_TEMPDIRS: LazyLock<bool> = LazyLock::new(tf_env::nomos_tests_keep_logs);
pub(crate) fn create_tempdir() -> std::io::Result<TempDir> {
// It's easier to use the current location instead of OS-default tempfile
// location because Github Actions can easily access files in the current
// location using wildcard to upload them as artifacts.
TempDir::new_in(std::env::current_dir()?)
pub(crate) fn create_tempdir(custom_work_dir: Option<PathBuf>) -> std::io::Result<TempDir> {
if let Some(dir) = custom_work_dir {
let final_dir_name = dir
.components()
.last()
.ok_or(Error::new(ErrorKind::Other, "Invalid final directory"))?
.as_os_str()
.display()
.to_string()
.to_owned()
+ "_";
let parent_dir = dir
.parent()
.ok_or(Error::new(ErrorKind::Other, "Invalid parent directory"))?;
fs::create_dir_all(parent_dir).map_err(|e| {
Error::new(
ErrorKind::Other,
format!("Error creating parent dir: {}", e),
)
})?;
let mut temp_dir = TempDir::with_prefix_in(final_dir_name, parent_dir)?;
if should_persist_tempdir() {
temp_dir.disable_cleanup(true);
}
Ok(temp_dir)
} else {
// It's easier to use the current location instead of OS-default tempfile
// location because Github Actions can easily access files in the current
// location using wildcard to upload them as artifacts.
let mut temp_dir = TempDir::new_in(std::env::current_dir()?)?;
if should_persist_tempdir() {
temp_dir.disable_cleanup(true);
}
Ok(temp_dir)
}
}
fn persist_tempdir(tempdir: &mut TempDir, label: &str) -> std::io::Result<()> {
@ -24,6 +59,9 @@ fn persist_tempdir(tempdir: &mut TempDir, label: &str) -> std::io::Result<()> {
label,
tempdir.path().display()
);
if should_persist_tempdir() {
return Ok(());
}
// we need ownership of the dir to persist it
let dir = std::mem::replace(tempdir, tempfile::tempdir()?);
let _ = dir.keep();

View File

@ -1,11 +1,10 @@
use std::{ops::Deref, path::PathBuf, time::Duration};
use nomos_node::config::RunConfig;
use nomos_tracing_service::LoggerLayer;
use lb_node::config::RunConfig;
use lb_tracing_service::LoggerLayer;
pub use testing_framework_config::nodes::node::create_node_config;
use tracing::{debug, info};
use super::{persist_tempdir, should_persist_tempdir};
use crate::{
IS_DEBUG_TRACING,
nodes::{
@ -67,12 +66,6 @@ impl Deref for Node {
impl Drop for Node {
fn drop(&mut self) {
if should_persist_tempdir()
&& let Err(e) = persist_tempdir(&mut self.handle.tempdir, "logos-blockchain-node")
{
debug!(error = ?e, "failed to persist node tempdir");
}
debug!("stopping node process");
kill_child(&mut self.handle.child);
}
@ -96,7 +89,11 @@ impl Node {
self.handle.wait_for_exit(timeout).await
}
pub async fn spawn(config: RunConfig, label: &str) -> Result<Self, SpawnNodeError> {
pub async fn spawn(
config: RunConfig,
label: &str,
persist_dir: Option<PathBuf>,
) -> Result<Self, SpawnNodeError> {
let log_prefix = format!("{LOGS_PREFIX}-{label}");
let handle = spawn_node(
config,
@ -104,6 +101,7 @@ impl Node {
"node.yaml",
binary_path(),
!*IS_DEBUG_TRACING,
persist_dir,
)
.await?;

View File

@ -1,4 +1,4 @@
use std::sync::Arc;
use std::{path::PathBuf, sync::Arc};
use reqwest::Url;
@ -41,6 +41,8 @@ pub struct StartNodeOptions {
pub peers: PeerSelection,
/// Optional node config patch applied before spawn.
pub config_patch: Option<NodeConfigPatch>,
/// Optional directory to persist node's tempdir to on stop.
pub persist_dir: Option<PathBuf>,
}
impl Default for StartNodeOptions {
@ -48,6 +50,7 @@ impl Default for StartNodeOptions {
Self {
peers: PeerSelection::DefaultLayout,
config_patch: None,
persist_dir: None,
}
}
}
@ -55,7 +58,7 @@ impl Default for StartNodeOptions {
impl StartNodeOptions {
pub fn create_patch<F>(mut self, f: F) -> Self
where
F: Fn(nomos_node::config::RunConfig) -> Result<nomos_node::config::RunConfig, DynError>
F: Fn(lb_node::config::RunConfig) -> Result<lb_node::config::RunConfig, DynError>
+ Send
+ Sync
+ 'static,

View File

@ -1,8 +1,8 @@
use std::{fs::File, num::NonZero, path::Path, time::Duration};
use anyhow::{Context as _, Result};
use nomos_tracing_service::TracingSettings;
use nomos_utils::bounded_duration::{MinimalBoundedDuration, SECOND};
use lb_tracing_service::TracingSettings;
use lb_utils::bounded_duration::{MinimalBoundedDuration, SECOND};
use serde::{Deserialize, Serialize};
use serde_with::serde_as;
use tracing::debug;

View File

@ -1,6 +1,6 @@
use std::{num::NonZeroUsize, sync::Arc, time::Duration};
use std::{num::NonZeroUsize, path::PathBuf, sync::Arc, time::Duration};
use nomos_node::config::RunConfig;
use lb_node::config::RunConfig;
use thiserror::Error;
use tracing::{debug, info};
@ -107,6 +107,7 @@ pub struct TopologyConfigurator<Caps> {
builder: Builder<Caps>,
nodes: usize,
network_star: bool,
scenario_base_dir: Option<PathBuf>,
}
impl<Caps: Default> Builder<Caps> {
@ -286,6 +287,7 @@ impl<Caps> TopologyConfigurator<Caps> {
builder,
nodes: 0,
network_star: false,
scenario_base_dir: None,
}
}
@ -296,6 +298,13 @@ impl<Caps> TopologyConfigurator<Caps> {
self
}
/// Set a base scenario directory for nodes to persist data. If not set,
/// nodes will use
pub fn scenario_base_dir(mut self, path: PathBuf) -> Self {
self.scenario_base_dir = Some(path);
self
}
/// Use a star libp2p network layout.
#[must_use]
pub fn network_star(mut self) -> Self {
@ -327,7 +336,10 @@ impl<Caps> TopologyConfigurator<Caps> {
#[must_use]
pub fn apply(self) -> Builder<Caps> {
let mut builder = self.builder;
builder.topology = builder.topology.with_node_count(self.nodes);
builder.topology = builder
.topology
.with_node_count(self.nodes)
.with_scenario_base_dir(self.scenario_base_dir);
if self.network_star {
builder.topology = builder

View File

@ -1,7 +1,7 @@
use std::time::Duration;
use futures::future::try_join_all;
use nomos_http_api_common::paths;
use lb_http_api_common::paths;
use reqwest::Client as ReqwestClient;
use thiserror::Error;
use tokio::time::{Instant, sleep};

View File

@ -8,9 +8,9 @@ use std::{
};
use anyhow::{Context as _, Result};
use nomos_core::{block::Block, mantle::SignedMantleTx};
use nomos_http_api_common::paths::STORAGE_BLOCK;
use nomos_node::HeaderId;
use lb_core::{block::Block, mantle::SignedMantleTx};
use lb_http_api_common::paths::STORAGE_BLOCK;
use lb_node::HeaderId;
use tokio::{sync::broadcast, task::JoinHandle, time::sleep};
use tracing::{debug, error};

View File

@ -1,17 +1,17 @@
use std::{collections::HashMap, sync::Arc};
use std::{collections::HashMap, path::PathBuf, sync::Arc};
use nomos_core::{
use lb_core::{
mantle::GenesisTx as _,
sdp::{Locator, ServiceType},
};
use nomos_node::config::RunConfig;
use lb_node::config::RunConfig;
use testing_framework_config::topology::{
configs::{
api::{ApiConfigError, create_api_configs},
base::{BaseConfigError, BaseConfigs, build_base_configs},
consensus::{
ConsensusConfigError, ConsensusParams, ProviderInfo,
create_genesis_tx_with_declarations,
create_genesis_tx_with_declarations, sync_utxos_with_genesis,
},
network::{Libp2pNetworkLayout, NetworkParams},
tracing::create_tracing_configs,
@ -65,6 +65,7 @@ pub struct TopologyConfig {
pub network_params: NetworkParams,
pub wallet_config: WalletConfig,
pub node_config_patches: HashMap<usize, NodeConfigPatch>,
pub persist_dirs: HashMap<usize, PathBuf>,
}
impl TopologyConfig {
@ -77,6 +78,7 @@ impl TopologyConfig {
network_params: NetworkParams::default(),
wallet_config: WalletConfig::default(),
node_config_patches: HashMap::new(),
persist_dirs: HashMap::new(),
}
}
@ -89,6 +91,7 @@ impl TopologyConfig {
network_params: NetworkParams::default(),
wallet_config: WalletConfig::default(),
node_config_patches: HashMap::new(),
persist_dirs: HashMap::new(),
}
}
@ -103,6 +106,7 @@ impl TopologyConfig {
network_params: NetworkParams::default(),
wallet_config: WalletConfig::default(),
node_config_patches: HashMap::new(),
persist_dirs: HashMap::new(),
}
}
@ -121,6 +125,12 @@ impl TopologyConfig {
self.node_config_patches.insert(index, patch);
self
}
#[must_use]
pub fn with_persist_dir(mut self, index: usize, dir: PathBuf) -> Self {
self.persist_dirs.insert(index, dir);
self
}
}
/// Builder that produces `GeneratedTopology` instances from a `TopologyConfig`.
@ -129,6 +139,7 @@ pub struct TopologyBuilder {
config: TopologyConfig,
ids: Option<Vec<[u8; 32]>>,
blend_ports: Option<Vec<u16>>,
scenario_base_dir: Option<PathBuf>,
}
impl TopologyBuilder {
@ -139,6 +150,7 @@ impl TopologyBuilder {
config,
ids: None,
blend_ports: None,
scenario_base_dir: None,
}
}
@ -163,6 +175,13 @@ impl TopologyBuilder {
self
}
#[must_use]
/// Apply a persist dir for a specific node index.
pub fn with_persist_dir(mut self, index: usize, dir: PathBuf) -> Self {
self.config.persist_dirs.insert(index, dir);
self
}
#[must_use]
/// Set node counts.
pub const fn with_node_count(mut self, nodes: usize) -> Self {
@ -170,6 +189,11 @@ impl TopologyBuilder {
self
}
pub fn with_scenario_base_dir(mut self, scenario_base_dir: Option<PathBuf>) -> Self {
self.scenario_base_dir = scenario_base_dir;
self
}
#[must_use]
/// Configure the libp2p network layout.
pub const fn with_network_layout(mut self, layout: Libp2pNetworkLayout) -> Self {
@ -186,12 +210,19 @@ impl TopologyBuilder {
/// Finalize and generate topology and node descriptors.
pub fn build(self) -> Result<GeneratedTopology, TopologyBuildError> {
let Self {
config,
mut config,
ids,
blend_ports,
scenario_base_dir,
} = self;
let n_participants = participant_count(&config)?;
if let Some(base_dir) = scenario_base_dir {
for i in 0..n_participants {
let dir = base_dir.join(format!("node_{i}"));
config = config.with_persist_dir(i, dir);
}
}
let (ids, blend_ports) = resolve_and_validate_vectors(ids, blend_ports, n_participants)?;
@ -299,21 +330,18 @@ fn collect_provider_infos(
fn create_consensus_genesis_tx(
first_consensus: &testing_framework_config::topology::configs::consensus::GeneralConsensusConfig,
providers: Vec<ProviderInfo>,
) -> Result<nomos_core::mantle::genesis_tx::GenesisTx, TopologyBuildError> {
) -> Result<lb_core::mantle::genesis_tx::GenesisTx, TopologyBuildError> {
let ledger_tx = first_consensus.genesis_tx.mantle_tx().ledger_tx.clone();
Ok(create_genesis_tx_with_declarations(ledger_tx, providers)?)
}
fn apply_consensus_genesis_tx(
consensus_configs: &mut [testing_framework_config::topology::configs::consensus::GeneralConsensusConfig],
genesis_tx: &nomos_core::mantle::genesis_tx::GenesisTx,
genesis_tx: &lb_core::mantle::genesis_tx::GenesisTx,
) -> Result<(), TopologyBuildError> {
for c in consensus_configs {
c.genesis_tx = genesis_tx.clone();
testing_framework_config::topology::configs::consensus::sync_utxos_with_genesis(
&mut c.utxos,
genesis_tx,
)?;
sync_utxos_with_genesis(&mut c.utxos, genesis_tx)?;
}
Ok(())
}
@ -330,7 +358,7 @@ fn build_node_descriptors(
blend_configs: &[testing_framework_config::topology::configs::blend::GeneralBlendConfig],
api_configs: &[testing_framework_config::topology::configs::api::GeneralApiConfig],
tracing_configs: &[testing_framework_config::topology::configs::tracing::GeneralTracingConfig],
kms_configs: &[key_management_system_service::backend::preload::PreloadKMSBackendSettings],
kms_configs: &[lb_key_management_system_service::backend::preload::PreloadKMSBackendSettings],
time_config: &testing_framework_config::topology::configs::time::GeneralTimeConfig,
node_config_patches: &HashMap<usize, NodeConfigPatch>,
) -> Result<Vec<GeneratedNodeConfig>, TopologyBuildError> {
@ -367,6 +395,7 @@ fn build_node_descriptors(
general,
blend_port,
config_patch: node_config_patches.get(&i).cloned(),
persist_dir: config.persist_dirs.get(&i).cloned(),
};
nodes.push(descriptor);

View File

@ -1,4 +1,4 @@
use std::{collections::HashSet, time::Duration};
use std::{collections::HashSet, path::PathBuf, time::Duration};
use reqwest::{Client, Url};
@ -16,6 +16,7 @@ pub struct GeneratedNodeConfig {
pub general: GeneralConfig,
pub blend_port: u16,
pub config_patch: Option<NodeConfigPatch>,
pub persist_dir: Option<PathBuf>,
}
impl GeneratedNodeConfig {

View File

@ -1,5 +1,5 @@
use nomos_libp2p::PeerId;
use nomos_network::backends::libp2p::Libp2pInfo;
use lb_libp2p::PeerId;
use lb_network_service::backends::libp2p::Libp2pInfo;
use reqwest::{Client, Url};
use thiserror::Error;
use tracing::warn;
@ -135,12 +135,12 @@ pub async fn try_fetch_network_info(
client: &Client,
base: &Url,
) -> Result<Libp2pInfo, NetworkInfoError> {
let path = nomos_http_api_common::paths::NETWORK_INFO.trim_start_matches('/');
let path = lb_http_api_common::paths::NETWORK_INFO.trim_start_matches('/');
let url = base
.join(path)
.map_err(|source| NetworkInfoError::JoinUrl {
base: base.clone(),
path: nomos_http_api_common::paths::NETWORK_INFO,
path: lb_http_api_common::paths::NETWORK_INFO,
message: source.to_string(),
})?;

View File

@ -1,8 +1,8 @@
use std::{collections::HashMap, iter};
use groth16::fr_to_bytes;
use key_management_system_service::{backend::preload::PreloadKMSBackendSettings, keys::Key};
use nomos_utils::net::get_available_udp_port;
use lb_groth16::fr_to_bytes;
use lb_key_management_system_service::{backend::preload::PreloadKMSBackendSettings, keys::Key};
use lb_utils::net::get_available_udp_port;
use rand::{Rng, thread_rng};
use thiserror::Error;
@ -120,10 +120,10 @@ pub fn resolve_ports(
Ok(resolved)
}
pub fn multiaddr_port(addr: &nomos_libp2p::Multiaddr) -> Option<u16> {
pub fn multiaddr_port(addr: &lb_libp2p::Multiaddr) -> Option<u16> {
for protocol in addr {
match protocol {
nomos_libp2p::Protocol::Udp(port) | nomos_libp2p::Protocol::Tcp(port) => {
lb_libp2p::Protocol::Udp(port) | lb_libp2p::Protocol::Tcp(port) => {
return Some(port);
}
_ => {}

View File

@ -16,8 +16,8 @@ workspace = true
anyhow = "1"
async-trait = { workspace = true }
cfgsync_tf = { workspace = true }
nomos-tracing = { workspace = true }
nomos-tracing-service = { workspace = true }
lb-tracing = { workspace = true }
lb-tracing-service = { workspace = true }
reqwest = { features = ["json"], workspace = true }
serde = { features = ["derive"], workspace = true }
tempfile = { workspace = true }
@ -32,8 +32,8 @@ url = { version = "2" }
uuid = { features = ["v4"], version = "1" }
[dev-dependencies]
groth16 = { workspace = true }
key-management-system-service = { workspace = true }
nomos-core = { workspace = true }
nomos-ledger = { workspace = true }
zksign = { workspace = true }
lb-core = { workspace = true }
lb-groth16 = { workspace = true }
lb-key-management-system-service = { workspace = true }
lb-ledger = { workspace = true }
lb-zksign = { workspace = true }

View File

@ -91,14 +91,14 @@ mod tests {
config::builder::create_node_configs,
host::{Host, PortOverrides},
};
use groth16::Fr;
use key_management_system_service::keys::ZkPublicKey;
use nomos_core::{
use lb_core::{
mantle::{GenesisTx as GenesisTxTrait, ledger::NoteId},
sdp::{ProviderId, ServiceType},
};
use nomos_ledger::LedgerState;
use nomos_tracing_service::TracingSettings;
use lb_groth16::Fr;
use lb_key_management_system_service::keys::ZkPublicKey;
use lb_ledger::LedgerState;
use lb_tracing_service::TracingSettings;
use testing_framework_core::{
scenario::ScenarioBuilder,
topology::{

View File

@ -119,12 +119,10 @@ fn default_extra_hosts() -> Vec<String> {
}
fn base_environment(cfgsync_port: u16) -> Vec<EnvEntry> {
let pol_mode = tf_env::pol_proof_dev_mode().unwrap_or_else(|| "true".to_string());
let rust_log = tf_env::rust_log().unwrap_or_else(|| "info".to_string());
let nomos_log_level = tf_env::nomos_log_level().unwrap_or_else(|| "info".to_string());
let time_backend = tf_env::nomos_time_backend().unwrap_or_else(|| "monotonic".into());
let time_backend = tf_env::lb_time_service_backend().unwrap_or_else(|| "monotonic".into());
vec![
EnvEntry::new("POL_PROOF_DEV_MODE", pol_mode),
EnvEntry::new("RUST_LOG", rust_log),
EnvEntry::new("LOGOS_BLOCKCHAIN_LOG_LEVEL", nomos_log_level),
EnvEntry::new("LOGOS_BLOCKCHAIN_TIME_BACKEND", time_backend),

View File

@ -1,7 +1,7 @@
use std::{path::Path, process::Command as StdCommand};
use nomos_tracing::metrics::otlp::OtlpMetricsConfig;
use nomos_tracing_service::MetricsLayer;
use lb_tracing::metrics::otlp::OtlpMetricsConfig;
use lb_tracing_service::MetricsLayer;
use reqwest::Url;
use testing_framework_core::{
scenario::cfgsync::{apply_topology_overrides, load_cfgsync_template, write_cfgsync_template},

View File

@ -17,8 +17,8 @@ anyhow = "1"
async-trait = { workspace = true }
k8s-openapi = { features = ["latest"], version = "0.20" }
kube = { default-features = false, features = ["client", "runtime", "rustls-tls"], version = "0.87" }
nomos-tracing = { workspace = true }
nomos-tracing-service = { workspace = true }
lb-tracing = { workspace = true }
lb-tracing-service = { workspace = true }
reqwest = { features = ["json"], workspace = true }
serde = { features = ["derive"], version = "1" }
serde_yaml = { workspace = true }

View File

@ -5,8 +5,8 @@ use std::{
};
use anyhow::{Context as _, Result as AnyResult};
use nomos_tracing::metrics::otlp::OtlpMetricsConfig;
use nomos_tracing_service::MetricsLayer;
use lb_tracing::metrics::otlp::OtlpMetricsConfig;
use lb_tracing_service::MetricsLayer;
use reqwest::Url;
use serde::Serialize;
use tempfile::TempDir;
@ -291,11 +291,9 @@ fn build_values(topology: &GeneratedTopology) -> HelmValues {
let cfgsync = CfgsyncValues {
port: cfgsync_port(),
};
let pol_mode = pol_proof_mode();
let image_pull_policy =
tf_env::nomos_testnet_image_pull_policy().unwrap_or_else(|| "IfNotPresent".into());
debug!(pol_mode, "rendering Helm values for k8s stack");
let nodes = build_node_group("node", topology.nodes(), &pol_mode);
let nodes = build_node_group("node", topology.nodes());
HelmValues {
image_pull_policy,
@ -307,12 +305,11 @@ fn build_values(topology: &GeneratedTopology) -> HelmValues {
fn build_node_group(
kind: &'static str,
nodes: &[testing_framework_core::topology::generation::GeneratedNodeConfig],
pol_mode: &str,
) -> NodeGroup {
let node_values = nodes
.iter()
.enumerate()
.map(|(index, node)| build_node_values(kind, index, node, pol_mode))
.map(|(index, node)| build_node_values(kind, index, node))
.collect();
NodeGroup {
@ -325,10 +322,8 @@ fn build_node_values(
kind: &'static str,
index: usize,
node: &testing_framework_core::topology::generation::GeneratedNodeConfig,
pol_mode: &str,
) -> NodeValues {
let mut env = BTreeMap::new();
env.insert("POL_PROOF_DEV_MODE".into(), pol_mode.to_string());
env.insert("CFG_NETWORK_PORT".into(), node.network_port().to_string());
env.insert("CFG_BLEND_PORT".into(), node.blend_port.to_string());
env.insert(
@ -352,7 +347,3 @@ fn build_node_values(
env,
}
}
fn pol_proof_mode() -> String {
tf_env::pol_proof_dev_mode().unwrap_or_else(|| "true".to_string())
}

View File

@ -14,10 +14,10 @@ workspace = true
[dependencies]
async-trait = "0.1"
nomos-libp2p = { workspace = true }
nomos-network = { workspace = true }
nomos-node = { workspace = true }
nomos-utils = { workspace = true }
lb-libp2p = { workspace = true }
lb-network-service = { workspace = true }
lb-node = { workspace = true }
lb-utils = { workspace = true }
rand = { workspace = true }
testing-framework-config = { workspace = true }
testing-framework-core = { path = "../../core" }

View File

@ -1,6 +1,6 @@
use std::time::Duration;
use nomos_network::backends::libp2p::Libp2pInfo;
use lb_network_service::backends::libp2p::Libp2pInfo;
use testing_framework_core::topology::readiness::ReadinessCheck;
use tokio::time::timeout;

View File

@ -1,7 +1,7 @@
use std::collections::HashMap;
use nomos_libp2p::Multiaddr;
use nomos_utils::net::get_available_udp_port;
use lb_libp2p::Multiaddr;
use lb_utils::net::get_available_udp_port;
use rand::Rng as _;
use testing_framework_config::topology::configs::{
consensus,

View File

@ -3,7 +3,7 @@ use std::{
sync::Mutex,
};
use nomos_node::config::RunConfig;
use lb_node::config::RunConfig;
use testing_framework_config::topology::configs::{consensus, time};
use testing_framework_core::{
nodes::{
@ -110,7 +110,7 @@ impl LocalNodeManager {
for node in descriptors.nodes() {
let label = Self::default_label(node.index());
let config = create_node_config(node.general.clone());
let spawned = Node::spawn(config, &label).await?;
let spawned = Node::spawn(config, &label, node.persist_dir.clone()).await?;
nodes.push(spawned);
}
@ -335,7 +335,7 @@ impl LocalNodeManager {
)?;
let api_client = self
.spawn_and_register_node(&node_name, network_port, config)
.spawn_and_register_node(&node_name, network_port, config, options.persist_dir)
.await?;
Ok(StartedNode {
@ -428,8 +428,9 @@ impl LocalNodeManager {
node_name: &str,
network_port: u16,
config: RunConfig,
persist_dir: Option<std::path::PathBuf>,
) -> Result<ApiClient, LocalNodeManagerError> {
let node = Node::spawn(config, node_name)
let node = Node::spawn(config, node_name, persist_dir)
.await
.map_err(|source| LocalNodeManagerError::Spawn { source })?;
let client = node.api().clone();

View File

@ -52,18 +52,13 @@ pub fn nomos_testnet_image_pull_policy() -> Option<String> {
env::var("LOGOS_BLOCKCHAIN_TESTNET_IMAGE_PULL_POLICY").ok()
}
#[must_use]
pub fn pol_proof_dev_mode() -> Option<String> {
env::var("POL_PROOF_DEV_MODE").ok()
}
#[must_use]
pub fn rust_log() -> Option<String> {
env::var("RUST_LOG").ok()
}
#[must_use]
pub fn nomos_time_backend() -> Option<String> {
pub fn lb_time_service_backend() -> Option<String> {
env::var("LOGOS_BLOCKCHAIN_TIME_BACKEND").ok()
}

View File

@ -13,26 +13,26 @@ version = { workspace = true }
workspace = true
[dependencies]
anyhow = "1"
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-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"
testing-framework-config = { workspace = true }
testing-framework-core = { path = "../../core" }
thiserror = { workspace = true }
tokio = { default-features = false, features = ["macros", "net", "rt-multi-thread"], version = "1" }
tracing = { workspace = true }
anyhow = "1"
axum = { default-features = false, features = ["http1", "http2", "json", "tokio"], version = "0.7.5" }
clap = { default-features = false, version = "4" }
hex = { workspace = true }
lb-core = { workspace = true }
lb-groth16 = { workspace = true }
lb-key-management-system-service = { workspace = true }
lb-libp2p = { workspace = true }
lb-node = { workspace = true }
lb-tracing-service = { workspace = true }
lb-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"
testing-framework-config = { workspace = true }
testing-framework-core = { path = "../../core" }
thiserror = { workspace = true }
tokio = { default-features = false, features = ["macros", "net", "rt-multi-thread"], version = "1" }
tracing = { workspace = true }

View File

@ -4,7 +4,7 @@ use cfgsync_tf::{
client::{FetchedConfig, get_config},
server::ClientIp,
};
use nomos_node::UserConfig;
use lb_node::UserConfig;
use serde::{Serialize, de::DeserializeOwned};
use testing_framework_config::constants::cfgsync_port as default_cfgsync_port;
use testing_framework_core::nodes::common::config::injection::{

View File

@ -1,8 +1,8 @@
use std::{collections::HashMap, net::Ipv4Addr, str::FromStr as _};
use nomos_core::mantle::GenesisTx as _;
use nomos_libp2p::{Multiaddr, PeerId, ed25519};
use nomos_tracing_service::TracingSettings;
use lb_core::mantle::GenesisTx as _;
use lb_libp2p::{Multiaddr, PeerId, ed25519};
use lb_tracing_service::TracingSettings;
use rand::{Rng as _, thread_rng};
use testing_framework_config::topology::configs::{
GeneralConfig,
@ -165,7 +165,7 @@ pub fn try_create_node_configs(
message: source.to_string(),
}
})?;
network_config.backend.swarm.nat_config = nomos_libp2p::NatSettings::Static {
network_config.backend.swarm.nat_config = lb_libp2p::NatSettings::Static {
external_address: nat_addr,
};

View File

@ -1,5 +1,5 @@
use groth16::fr_to_bytes;
use key_management_system_service::{backend::preload::PreloadKMSBackendSettings, keys::Key};
use lb_groth16::fr_to_bytes;
use lb_key_management_system_service::{backend::preload::PreloadKMSBackendSettings, keys::Key};
use testing_framework_config::topology::configs::blend::GeneralBlendConfig;
pub fn create_kms_configs(blend_configs: &[GeneralBlendConfig]) -> Vec<PreloadKMSBackendSettings> {

View File

@ -1,7 +1,7 @@
use std::str::FromStr;
use nomos_core::sdp::{Locator, ServiceType};
use nomos_libp2p::Multiaddr;
use lb_core::sdp::{Locator, ServiceType};
use lb_libp2p::Multiaddr;
use testing_framework_config::topology::configs::{
blend::GeneralBlendConfig,
consensus::{GeneralConsensusConfig, ProviderInfo},

View File

@ -1,4 +1,4 @@
use nomos_tracing_service::{LoggerLayer, MetricsLayer, TracingLayer, TracingSettings};
use lb_tracing_service::{LoggerLayer, MetricsLayer, TracingLayer, TracingSettings};
use testing_framework_config::topology::configs::tracing::GeneralTracingConfig;
pub fn update_tracing_identifier(

View File

@ -1,4 +1,4 @@
use nomos_libp2p::{Multiaddr, Protocol};
use lb_libp2p::{Multiaddr, Protocol};
pub fn extract_udp_port(addr: &Multiaddr) -> Option<u16> {
addr.iter().find_map(|protocol| {

View File

@ -1,4 +1,4 @@
use nomos_libp2p::{Multiaddr, PeerId, Protocol};
use lb_libp2p::{Multiaddr, PeerId, Protocol};
use thiserror::Error;
use super::address::find_matching_host;

View File

@ -1,6 +1,6 @@
use std::{collections::HashMap, sync::Arc, time::Duration};
use nomos_tracing_service::TracingSettings;
use lb_tracing_service::TracingSettings;
use testing_framework_config::topology::configs::{
GeneralConfig, consensus::ConsensusParams, wallet::WalletConfig,
};

View File

@ -5,8 +5,8 @@ const DEFAULT_DELAY_BEFORE_NEW_DOWNLOAD_SECS: u64 = 10;
const DEFAULT_MAX_ORPHAN_CACHE_SIZE: usize = 5;
use axum::{Json, Router, extract::State, http::StatusCode, response::IntoResponse, routing::post};
use nomos_tracing_service::TracingSettings;
use nomos_utils::bounded_duration::{MinimalBoundedDuration, SECOND};
use lb_tracing_service::TracingSettings;
use lb_utils::bounded_duration::{MinimalBoundedDuration, SECOND};
use serde::{Deserialize, Serialize};
use serde_json::{Value, json, to_value};
use serde_with::serde_as;

View File

@ -13,17 +13,16 @@ version = "0.1.0"
workspace = true
[dependencies]
async-trait = "0.1"
chain-service = { workspace = true }
key-management-system-service = { workspace = true }
nomos-core = { workspace = true }
rand = { workspace = true }
reqwest = { workspace = true }
testing-framework-config = { workspace = true }
testing-framework-core = { workspace = true }
thiserror = { workspace = true }
tokio = { features = ["macros", "net", "rt-multi-thread", "time"], workspace = true }
tracing = { workspace = true }
async-trait = "0.1"
lb-core = { workspace = true }
lb-key-management-system-service = { workspace = true }
rand = { workspace = true }
reqwest = { workspace = true }
testing-framework-config = { workspace = true }
testing-framework-core = { workspace = true }
thiserror = { workspace = true }
tokio = { features = ["macros", "net", "rt-multi-thread", "time"], workspace = true }
tracing = { workspace = true }
[package.metadata.cargo-machete]
ignored = ["chain-service"]

View File

@ -1,7 +1,7 @@
use std::time::Duration;
use async_trait::async_trait;
use nomos_core::header::HeaderId;
use lb_core::header::HeaderId;
use testing_framework_core::{
nodes::ApiClient,
scenario::{DynError, Expectation, RunContext},
@ -25,7 +25,7 @@ impl Default for ConsensusLiveness {
}
const LAG_ALLOWANCE: u64 = 2;
const MIN_PROGRESS_BLOCKS: u64 = 5;
const MIN_PROGRESS_BLOCKS: u64 = 3;
const REQUEST_RETRIES: usize = 15;
const REQUEST_RETRY_DELAY: Duration = Duration::from_secs(2);
const MAX_LAG_ALLOWANCE: u64 = 5;
@ -67,7 +67,7 @@ enum ConsensusLivenessIssue {
#[derive(Debug, Error)]
enum ConsensusLivenessError {
#[error("consensus liveness requires at least one node")]
#[error("consensus liveness requires at least one validator")]
MissingParticipants,
#[error("consensus liveness violated (target={target}):\n{details}")]
Violations {

View File

@ -1,9 +1,9 @@
use key_management_system_service::keys::{Ed25519Key, ZkKey};
use nomos_core::mantle::{
use lb_core::mantle::{
MantleTx, Op, OpProof, SignedMantleTx, Transaction as _,
ledger::Tx as LedgerTx,
ops::channel::{ChannelId, MsgId, inscribe::InscriptionOp},
};
use lb_key_management_system_service::keys::{Ed25519Key, ZkKey};
use testing_framework_core::scenario::DynError;
/// Builds a signed inscription transaction with deterministic payload for

View File

@ -9,8 +9,8 @@ use std::{
};
use async_trait::async_trait;
use key_management_system_service::keys::ZkPublicKey;
use nomos_core::{header::HeaderId, mantle::AuthenticatedMantleTx as _};
use lb_core::{header::HeaderId, mantle::AuthenticatedMantleTx as _};
use lb_key_management_system_service::keys::ZkPublicKey;
use testing_framework_core::scenario::{DynError, Expectation, RunContext};
use thiserror::Error;
use tokio::{sync::broadcast, time::sleep};

View File

@ -6,10 +6,10 @@ use std::{
};
use async_trait::async_trait;
use key_management_system_service::keys::{ZkKey, ZkPublicKey};
use nomos_core::mantle::{
use lb_core::mantle::{
GenesisTx as _, Note, SignedMantleTx, Transaction as _, Utxo, tx_builder::MantleTxBuilder,
};
use lb_key_management_system_service::keys::{ZkKey, ZkPublicKey};
use testing_framework_config::topology::configs::wallet::WalletAccount;
use testing_framework_core::{
scenario::{DynError, Expectation, RunContext, RunMetrics, Workload as ScenarioWorkload},

View File

@ -1,6 +1,6 @@
use std::{sync::Arc, time::Duration};
use nomos_core::{
use lb_core::{
block::Block,
mantle::{
AuthenticatedMantleTx as _, SignedMantleTx, Transaction as MantleTx,

View File

@ -1,7 +1,7 @@
VERSION=v0.3.2
LOGOS_BLOCKCHAIN_BUNDLE_VERSION=v4
# Pinned logos-blockchain-node revision used for CI builds and binary bundles.
LOGOS_BLOCKCHAIN_NODE_REV=2392190d88e8ae8271fa9321014ea33324be7c28
LOGOS_BLOCKCHAIN_NODE_REV=a075fdf3209947572069e7b7b2ff6250576c8831
# Optional: local logos-blockchain-node checkout override (do not commit absolute paths).
# LOGOS_BLOCKCHAIN_NODE_PATH=