mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-02-16 19:23:09 +00:00
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:
parent
59697f0830
commit
b3d54125ea
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@ -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
224
Cargo.lock
generated
@ -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"
|
||||
|
||||
62
Cargo.toml
62
Cargo.toml
@ -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" }
|
||||
|
||||
@ -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) |
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@ -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**
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
```
|
||||
|
||||
@ -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.
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
```
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
```
|
||||
|
||||
|
||||
@ -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
|
||||
```
|
||||
|
||||
|
||||
@ -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`
|
||||
|
||||
@ -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) |
|
||||
|
||||
@ -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
|
||||
```
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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(())
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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:-}" \
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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",
|
||||
),
|
||||
}
|
||||
|
||||
@ -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()
|
||||
},
|
||||
|
||||
@ -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 _},
|
||||
};
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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(())
|
||||
|
||||
@ -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)?,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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| {
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)?;
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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?;
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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};
|
||||
|
||||
@ -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};
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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(),
|
||||
})?;
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
_ => {}
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -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::{
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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},
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -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())
|
||||
}
|
||||
|
||||
@ -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" }
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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();
|
||||
|
||||
7
testing-framework/env/src/lib.rs
vendored
7
testing-framework/env/src/lib.rs
vendored
@ -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()
|
||||
}
|
||||
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -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::{
|
||||
|
||||
@ -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,
|
||||
};
|
||||
|
||||
|
||||
@ -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> {
|
||||
|
||||
@ -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},
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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| {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
};
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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"]
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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};
|
||||
|
||||
@ -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},
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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=
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user