Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
52c8265
chore: increment crate versions to v0.15.0
bobbinth Apr 1, 2026
56fc161
Merge branch 'main' into next
bobbinth Apr 1, 2026
a893a97
fix: Update SyncChainMmr endpoint upper bound logic (#1860)
sergerad Apr 1, 2026
9ea3a63
fix: Genesis(SignedBlock) (#1858)
sergerad Apr 1, 2026
62e76b8
feat: Add proof to GetBlockByNumber (#1864)
sergerad Apr 2, 2026
6eb0af9
chore: Cache proven chain tip in State (#1861)
sergerad Apr 6, 2026
8540706
chore: Reduce block proving timeout worst case (#1857)
sergerad Apr 6, 2026
2725499
Merge branch 'main' into next
bobbinth Apr 7, 2026
93fcc65
Merge branch 'main' into next
bobbinth Apr 7, 2026
32f76e5
fix: Fix transact spans (#1897)
sergerad Apr 7, 2026
7b5e621
Merge branch 'main' into next
bobbinth Apr 8, 2026
127af82
Merge branch 'main' into next
bobbinth Apr 9, 2026
2fe4c60
Merge branch 'main' into next
bobbinth Apr 10, 2026
31a8b2f
Merge branch 'main' into next
bobbinth Apr 10, 2026
c254bc7
feat: Replace bundled command with compose (#1786)
sergerad Apr 12, 2026
03a4a82
chore: remove InflightNetworkNote (#1929)
SantiagoPittella Apr 14, 2026
410e3b9
fix: Various run-node.sh issues (#1943)
sergerad Apr 15, 2026
e1c96bd
Merge branch 'main' into next
bobbinth Apr 15, 2026
1c344e5
Port crypto RocksDB budgeted deserialization (#1923)
huitseeker Apr 16, 2026
8cdbe55
chore: custom CSS properties (#1938)
SantiagoPittella Apr 16, 2026
b4c6022
chore: ServiceStatus builder methods (#1937)
SantiagoPittella Apr 16, 2026
df34d7b
feat: add Validator card to network monitor dashboard (#1900)
SantiagoPittella Apr 16, 2026
74e2009
feat: generalize get_network_note_status endpoint (#1892)
SantiagoPittella Apr 16, 2026
8d3cee7
chore: simplify actor start up (#1902)
SantiagoPittella Apr 16, 2026
228636d
refactor(proto): Use `codegen` for proto code generation (#1946)
kkovaacs Apr 16, 2026
7d997e3
chore: Add spans to get_account stack (#1935)
sergerad Apr 17, 2026
6676834
chore: improve error diagnostics (#1939)
SantiagoPittella Apr 17, 2026
004f0d3
chore(docker): ignore rust-toolchain.toml (#1954)
kkovaacs Apr 20, 2026
71b8f8c
Merge branch 'main' into next
bobbinth Apr 20, 2026
2e31d74
feat(rocksdb): tune LargeSmt profile and config (#1947)
huitseeker Apr 20, 2026
a6288e7
chore: Add network-monitor image and update compose with tempo and gr…
sergerad Apr 20, 2026
c1d3c4f
feat: auto-regenerate accounts on persistent failures (#1942)
SantiagoPittella Apr 20, 2026
24cf883
feat(proto): generate generic GRPC API implementations (#1950)
kkovaacs Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,4 @@ accounts
genesis.dat
miden-store.*
store.*
/rust-toolchain.toml
16 changes: 12 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## v0.15.0 (TBD)

- [BREAKING] Changed `GetBlockByNumber` to accept a `BlockRequest` (with optional `include_proof` flag) and returns a response containing the block and an optional block proof ([#1864](https://github.com/0xMiden/node/pull/1864)).
- Network monitor now auto-regenerates accounts after persistent increment failures instead of staying unhealthy indefinitely ([#1942](https://github.com/0xMiden/node/pull/1942)).
- [BREAKING] Renamed `GetNoteError` endpoint to `GetNetworkNoteStatus` and extended it to return the full lifecycle status of a network note (`Pending`, `Processed`, `Discarded`, `Committed`) instead of only error information. Consumed notes are now retained in the database after block commit instead of being deleted ([#1892](https://github.com/0xMiden/node/pull/1892)).
- Extended `ValidatorStatus` proto response with `chain_tip`, `validated_transactions_count`, and `signed_blocks_count`; added Validator card to the network monitor dashboard ([#1900](https://github.com/0xMiden/node/pull/1900)).
- Updated the RocksDB SMT backend to use budgeted deserialization for bytes read from disk, ported from `0xMiden/crypto` PR [#846](https://github.com/0xMiden/crypto/pull/846) ([#1923](https://github.com/0xMiden/node/pull/1923)).

## v0.14.8 (2026-04-19)

- 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)).
Expand All @@ -8,6 +16,7 @@
## 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)).
- Improved LargeSmt RocksDB defaults, added per-DB memory-budget controls, and exposed durability mode selection ([#1947](https://github.com/0xMiden/node/pull/1947)).

## v0.14.6 (2026-04-10)

Expand All @@ -28,14 +37,14 @@

## v0.14.2 (2026-04-07)

- Added inclusion proofs to `SyncTransactions` output notes ([#1893](https://github.com/0xMiden/node/pull/1893)).
- Added `block_header` field to `SyncChainMmrResponse` so clients can obtain the `block_to` block header without a separate request ([#1881](https://github.com/0xMiden/node/pull/1881)).
- Added inclusion proofs to `SyncTransactions` output notes ([#1893](https://github.com/0xMiden/node/pull/1893)).

## v0.14.1 (2026-04-02)

- Fixed batch building issue with unauthenticated notes consumed in the same batch as they were created ([#1875](https://github.com/0xMiden/node/issues/1875)).

## v0.14.0 (2025-04-01)
## v0.14.0 (2026-04-01)

### Enhancements

Expand Down Expand Up @@ -76,6 +85,7 @@
- [BREAKING] Modified `TransactionHeader` serialization to allow converting back into the native type after serialization ([#1759](https://github.com/0xMiden/node/issues/1759)).
- Removed `chain_tip` requirement from mempool subscription request ([#1771](https://github.com/0xMiden/node/pull/1771)).
- Moved bootstrap procedure to `miden-node validator bootstrap` command ([#1764](https://github.com/0xMiden/node/pull/1764)).
- [BREAKING] Removed `bundled` command; each component is now started as a separate process. Added `ntx-builder` CLI subcommand. Added `docker-compose.yml` for local multi-process deployment ([#1765](https://github.com/0xMiden/node/pull/1765)).
- NTX Builder now deactivates network accounts which crash repeatedly (configurable via `--ntx-builder.max-account-crashes`, default 10) ([#1712](https://github.com/0xMiden/miden-node/pull/1712)).
- Removed gRPC reflection v1-alpha support ([#1795](https://github.com/0xMiden/node/pull/1795)).
- [BREAKING] Rust requirement bumped from `v1.91` to `v1.93` ([#1803](https://github.com/0xMiden/node/pull/1803)).
Expand All @@ -85,8 +95,6 @@
### Fixes

- Fixed network monitor looping on stale wallet nonce after node restarts by re-syncing wallet state from RPC after repeated failures ([#1748](https://github.com/0xMiden/node/pull/1748)).
- Fixed `bundled start` panicking due to duplicate `data_directory` clap argument name between `BundledCommand::Start` and `NtxBuilderConfig` ([#1732](https://github.com/0xMiden/node/pull/1732)).
- Fixed `bundled bootstrap` requiring `--validator.key.hex` or `--validator.key.kms-id` despite a default key being configured ([#1732](https://github.com/0xMiden/node/pull/1732)).
- Fixed incorrectly classifying private notes with the network attachment as network notes ([#1378](https://github.com/0xMiden/node/pull/1738)).
- Fixed accept header version negotiation rejecting all pre-release versions; pre-release label matching is now lenient, accepting any numeric suffix within the same label (e.g. `alpha.3` accepts `alpha.1`) ([#1755](https://github.com/0xMiden/node/pull/1755)).
- Fixed `GetAccount` returning an internal error for `AllEntries` requests on storage maps where all entries are in a single block (e.g. genesis accounts) ([#1816](https://github.com/0xMiden/node/pull/1816)).
Expand Down
59 changes: 41 additions & 18 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 16 additions & 14 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ license = "MIT"
readme = "README.md"
repository = "https://github.com/0xMiden/node"
rust-version = "1.93"
version = "0.14.8"
version = "0.15.0"

# Optimize the cryptography for faster tests involving account creation.
[profile.test.package.miden-crypto]
Expand All @@ -43,22 +43,22 @@ debug = true

[workspace.dependencies]
# Workspace crates.
miden-large-smt-backend-rocksdb = { path = "crates/large-smt-backend-rocksdb", version = "0.14" }
miden-node-block-producer = { path = "crates/block-producer", version = "0.14" }
miden-node-db = { path = "crates/db", version = "0.14" }
miden-node-grpc-error-macro = { path = "crates/grpc-error-macro", version = "0.14" }
miden-node-ntx-builder = { path = "crates/ntx-builder", version = "0.14" }
miden-node-proto = { path = "crates/proto", version = "0.14" }
miden-node-proto-build = { path = "proto", version = "0.14" }
miden-node-rpc = { path = "crates/rpc", version = "0.14" }
miden-node-store = { path = "crates/store", version = "0.14" }
miden-large-smt-backend-rocksdb = { path = "crates/large-smt-backend-rocksdb", version = "0.15" }
miden-node-block-producer = { path = "crates/block-producer", version = "0.15" }
miden-node-db = { path = "crates/db", version = "0.15" }
miden-node-grpc-error-macro = { path = "crates/grpc-error-macro", version = "0.15" }
miden-node-ntx-builder = { path = "crates/ntx-builder", version = "0.15" }
miden-node-proto = { path = "crates/proto", version = "0.15" }
miden-node-proto-build = { path = "proto", version = "0.15" }
miden-node-rpc = { path = "crates/rpc", version = "0.15" }
miden-node-store = { path = "crates/store", version = "0.15" }
miden-node-test-macro = { path = "crates/test-macro" }
miden-node-utils = { path = "crates/utils", version = "0.14" }
miden-node-validator = { path = "crates/validator", version = "0.14" }
miden-remote-prover-client = { path = "crates/remote-prover-client", version = "0.14" }
miden-node-utils = { path = "crates/utils", version = "0.15" }
miden-node-validator = { path = "crates/validator", version = "0.15" }
miden-remote-prover-client = { path = "crates/remote-prover-client", version = "0.15" }
# Temporary workaround until <https://github.com/rust-rocksdb/rust-rocksdb/pull/1029>
# is part of `rocksdb-rust` release
miden-node-rocksdb-cxx-linkage-fix = { path = "crates/rocksdb-cxx-linkage-fix", version = "0.14" }
miden-node-rocksdb-cxx-linkage-fix = { path = "crates/rocksdb-cxx-linkage-fix", version = "0.15" }

# miden-protocol dependencies. These should be updated in sync.
miden-agglayer = { version = "0.14" }
Expand All @@ -78,6 +78,7 @@ assert_matches = { version = "1.5" }
async-trait = { version = "0.1" }
build-rs = { version = "0.3" }
clap = { features = ["derive"], version = "4.5" }
codegen = { version = "0.3" }
deadpool = { default-features = false, version = "0.12" }
deadpool-diesel = { version = "0.6" }
deadpool-sync = { default-features = false, version = "0.1" }
Expand All @@ -97,6 +98,7 @@ pretty_assertions = { version = "1.4" }
# lockstep, nor are they adhering to semver semantics. We keep this
# to avoid future breakage.
prost = { default-features = false, version = "=0.14.3" }
prost-types = { default-features = false, version = "=0.14.3" }
protox = { version = "=0.9.1" }
rand = { version = "0.9" }
rand_chacha = { default-features = false, version = "0.9" }
Expand Down
25 changes: 25 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ help:
WARNINGS=RUSTDOCFLAGS="-D warnings"
CONTAINER_RUNTIME ?= docker
STRESS_TEST_DATA_DIR ?= stress-test-store-$(shell date +%Y%m%d-%H%M%S)
COMPOSE_FILES = -f docker-compose.yml -f compose/telemetry.yml -f compose/monitor.yml

# -- linting --------------------------------------------------------------------------------------

Expand Down Expand Up @@ -127,6 +128,24 @@ install-network-monitor: ## Installs network monitor binary

# --- docker --------------------------------------------------------------------------------------

.PHONY: compose-genesis
compose-genesis: ## Wipes node volumes and creates a fresh genesis block
$(CONTAINER_RUNTIME) compose $(COMPOSE_FILES) down --volumes --remove-orphans
$(CONTAINER_RUNTIME) volume rm -f miden-node_genesis-data miden-node_store-data miden-node_validator-data miden-node_ntx-builder-data miden-node_accounts
$(CONTAINER_RUNTIME) compose $(COMPOSE_FILES) --profile genesis run --rm genesis

.PHONY: compose-up
compose-up: ## Starts all node components, telemetry, and monitor via docker compose
$(CONTAINER_RUNTIME) compose $(COMPOSE_FILES) up -d

.PHONY: compose-down
compose-down: ## Stops and removes all containers via docker compose
$(CONTAINER_RUNTIME) compose $(COMPOSE_FILES) down

.PHONY: compose-logs
compose-logs: ## Follows logs for all components via docker compose
$(CONTAINER_RUNTIME) compose $(COMPOSE_FILES) logs -f

.PHONY: docker-build-node
docker-build-node: ## Builds the Miden node using Docker (override with CONTAINER_RUNTIME=podman)
@CREATED=$$(date) && \
Expand All @@ -138,6 +157,12 @@ docker-build-node: ## Builds the Miden node using Docker (override with CONTAINE
-f bin/node/Dockerfile \
-t miden-node-image .

.PHONY: docker-build-monitor
docker-build-monitor: ## Builds the network monitor using Docker (override with CONTAINER_RUNTIME=podman)
$(CONTAINER_RUNTIME) build \
-f bin/network-monitor/Dockerfile \
-t miden-network-monitor-image .

.PHONY: docker-run-node
docker-run-node: ## Runs the Miden node as a Docker container (override with CONTAINER_RUNTIME=podman)
$(CONTAINER_RUNTIME) volume create miden-db
Expand Down
2 changes: 2 additions & 0 deletions bin/network-monitor/.env
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ MIDEN_MONITOR_COUNTER_LATENCY_TIMEOUT=2m
MIDEN_MONITOR_EXPLORER_URL=https://scan-backend-devnet-miden.eu-central-8.gateway.fm/graphql
# note transport checks
MIDEN_MONITOR_NOTE_TRANSPORT_URL=https://transport.miden.io
# validator checks
MIDEN_MONITOR_VALIDATOR_URL=
Loading
Loading