From 1f6f7e16ed3b0d624f40a340949b6aa6302bff33 Mon Sep 17 00:00:00 2001 From: SantiagoPittella Date: Thu, 16 Apr 2026 16:59:37 -0300 Subject: [PATCH 1/3] fix: chain tip race condition --- crates/ntx-builder/src/builder.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/crates/ntx-builder/src/builder.rs b/crates/ntx-builder/src/builder.rs index 3cb2d60a4..3e3581cbe 100644 --- a/crates/ntx-builder/src/builder.rs +++ b/crates/ntx-builder/src/builder.rs @@ -297,6 +297,19 @@ impl NetworkTransactionBuilder { async fn update_chain_tip(&mut self, tip: BlockHeader) { let mut chain_state = self.chain_state.write().await; + // Skip blocks already reflected in the chain state. A `BlockCommitted` event may arrive + // for a block whose state was already loaded from the store during startup: the mempool + // subscription is established first and then the chain tip is fetched, so any block + // committed in that window produces an event for state we have already ingested. + if tip.block_num() <= chain_state.chain_tip_header.block_num() { + tracing::debug!( + event_block = %tip.block_num(), + current_tip = %chain_state.chain_tip_header.block_num(), + "skipping BlockCommitted event for block already in chain state", + ); + return; + } + // Update MMR which lags by one block. let mmr_tip = chain_state.chain_tip_header.clone(); Arc::make_mut(&mut chain_state.chain_mmr).add_block(&mmr_tip, true); From 8de0725077f4042ce7ab19ccfe114a97779b1f84 Mon Sep 17 00:00:00 2001 From: SantiagoPittella Date: Thu, 16 Apr 2026 17:08:47 -0300 Subject: [PATCH 2/3] bump node version --- Cargo.lock | 36 ++++++++++++++++++------------------ Cargo.toml | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 38bd532d8..1361933a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3058,7 +3058,7 @@ dependencies = [ [[package]] name = "miden-genesis" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "clap", @@ -3077,7 +3077,7 @@ dependencies = [ [[package]] name = "miden-large-smt-backend-rocksdb" -version = "0.14.7" +version = "0.14.8" dependencies = [ "miden-crypto", "miden-node-rocksdb-cxx-linkage-fix", @@ -3138,7 +3138,7 @@ dependencies = [ [[package]] name = "miden-network-monitor" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "axum", @@ -3166,7 +3166,7 @@ dependencies = [ [[package]] name = "miden-node" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "clap", @@ -3186,7 +3186,7 @@ dependencies = [ [[package]] name = "miden-node-block-producer" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "assert_matches", @@ -3221,7 +3221,7 @@ dependencies = [ [[package]] name = "miden-node-db" -version = "0.14.7" +version = "0.14.8" dependencies = [ "deadpool", "deadpool-diesel", @@ -3234,7 +3234,7 @@ dependencies = [ [[package]] name = "miden-node-grpc-error-macro" -version = "0.14.7" +version = "0.14.8" dependencies = [ "quote", "syn 2.0.117", @@ -3242,7 +3242,7 @@ dependencies = [ [[package]] name = "miden-node-ntx-builder" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "build-rs", @@ -3275,7 +3275,7 @@ dependencies = [ [[package]] name = "miden-node-proto" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "assert_matches", @@ -3300,7 +3300,7 @@ dependencies = [ [[package]] name = "miden-node-proto-build" -version = "0.14.7" +version = "0.14.8" dependencies = [ "build-rs", "fs-err", @@ -3311,11 +3311,11 @@ dependencies = [ [[package]] name = "miden-node-rocksdb-cxx-linkage-fix" -version = "0.14.7" +version = "0.14.8" [[package]] name = "miden-node-rpc" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "futures", @@ -3347,7 +3347,7 @@ dependencies = [ [[package]] name = "miden-node-store" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "assert_matches", @@ -3393,7 +3393,7 @@ dependencies = [ [[package]] name = "miden-node-stress-test" -version = "0.14.7" +version = "0.14.8" dependencies = [ "clap", "fs-err", @@ -3421,7 +3421,7 @@ dependencies = [ [[package]] name = "miden-node-utils" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "bytes", @@ -3454,7 +3454,7 @@ dependencies = [ [[package]] name = "miden-node-validator" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "aws-config", @@ -3590,7 +3590,7 @@ dependencies = [ [[package]] name = "miden-remote-prover" -version = "0.14.7" +version = "0.14.8" dependencies = [ "anyhow", "assert_matches", @@ -3627,7 +3627,7 @@ dependencies = [ [[package]] name = "miden-remote-prover-client" -version = "0.14.7" +version = "0.14.8" dependencies = [ "build-rs", "fs-err", diff --git a/Cargo.toml b/Cargo.toml index 1919fe218..fa195ffa5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ license = "MIT" readme = "README.md" repository = "https://github.com/0xMiden/node" rust-version = "1.93" -version = "0.14.7" +version = "0.14.8" # Optimize the cryptography for faster tests involving account creation. [profile.test.package.miden-crypto] From 959bd5f3c73fa12d695461d9f07742090ea01f5f Mon Sep 17 00:00:00 2001 From: SantiagoPittella Date: Thu, 16 Apr 2026 17:08:59 -0300 Subject: [PATCH 3/3] docs: add chagnglog entry --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 036764e92..9481fe909 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## v0.14.8 (TBD) + +- Fixed a startup race in the network transaction builder that could panic the chain MMR when a block committed between subscribing to the mempool and fetching the chain tip from the store ([#1953](https://github.com/0xMiden/node/pull/1953)). + ## v0.14.7 (2026-04-15) - [BREAKING] Aligned proto `TransactionHeader` with domain type and exposed erased notes in `SyncTransactions` ([#1941](https://github.com/0xMiden/node/pull/1941)).