From ce366f3142f7ed89b0d6cb99e6b37a2960c4fc3d Mon Sep 17 00:00:00 2001 From: Marti Date: Thu, 19 Mar 2026 17:23:32 +0100 Subject: [PATCH 1/5] feat: add miden-genesis tool for canonical genesis state (#1797) Co-authored-by: Claude (Opus) --- CHANGELOG.md | 2 + Cargo.lock | 19 +++ Cargo.toml | 1 + bin/genesis/Cargo.toml | 34 ++++++ bin/genesis/README.md | 60 ++++++++++ bin/genesis/src/main.rs | 254 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 370 insertions(+) create mode 100644 bin/genesis/Cargo.toml create mode 100644 bin/genesis/README.md create mode 100644 bin/genesis/src/main.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index de39ef4b76..df4a30b2a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Enhancements +- Added `miden-genesis` tool for generating canonical AggLayer genesis accounts and configuration ([#1797](https://github.com/0xMiden/node/pull/1797)). +- Expose per-tree RocksDB tuning options ([#1782](https://github.com/0xMiden/node/pull/1782)). - Added verbose `info!`-level logging to the network transaction builder for transaction execution, note filtering failures, and transaction outcomes ([#1770](https://github.com/0xMiden/node/pull/1770)). - [BREAKING] Move block proving from Blocker Producer to the Store ([#1579](https://github.com/0xMiden/node/pull/1579)). - [BREAKING] Updated miden-base dependencies to use `next` branch; renamed `NoteInputs` to `NoteStorage`, `.inputs()` to `.storage()`, and database `inputs` column to `storage` ([#1595](https://github.com/0xMiden/node/pull/1595)). diff --git a/Cargo.lock b/Cargo.lock index 667ee1e5fe..c4579bbbbf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2818,6 +2818,25 @@ dependencies = [ "unicode-width 0.1.14", ] +[[package]] +name = "miden-genesis" +version = "0.14.0-alpha.5" +dependencies = [ + "anyhow", + "clap", + "fs-err", + "hex", + "miden-agglayer", + "miden-node-store", + "miden-node-utils", + "miden-protocol", + "miden-standards", + "rand", + "rand_chacha", + "tempfile", + "tokio", +] + [[package]] name = "miden-large-smt-backend-rocksdb" version = "0.14.0-alpha.5" diff --git a/Cargo.toml b/Cargo.toml index 9c0323c2d9..afcc9daa7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,6 @@ [workspace] members = [ + "bin/genesis", "bin/network-monitor", "bin/node", "bin/remote-prover", diff --git a/bin/genesis/Cargo.toml b/bin/genesis/Cargo.toml new file mode 100644 index 0000000000..51c1460524 --- /dev/null +++ b/bin/genesis/Cargo.toml @@ -0,0 +1,34 @@ +[package] +authors.workspace = true +description = "A tool for generating canonical Miden genesis accounts and configuration" +edition.workspace = true +exclude.workspace = true +homepage.workspace = true +keywords = ["genesis", "miden"] +license.workspace = true +name = "miden-genesis" +publish = false +readme.workspace = true +repository.workspace = true +rust-version.workspace = true +version.workspace = true + +[lints] +workspace = true + +[dependencies] +anyhow = { workspace = true } +clap = { workspace = true } +fs-err = { workspace = true } +hex = { workspace = true } +miden-agglayer = { version = "=0.14.0-alpha.1" } +miden-protocol = { features = ["std"], workspace = true } +miden-standards = { workspace = true } +rand = { workspace = true } +rand_chacha = { workspace = true } + +[dev-dependencies] +miden-node-store = { workspace = true } +miden-node-utils = { workspace = true } +tempfile = { workspace = true } +tokio = { features = ["macros", "rt-multi-thread"], workspace = true } diff --git a/bin/genesis/README.md b/bin/genesis/README.md new file mode 100644 index 0000000000..ddd9f0a5fc --- /dev/null +++ b/bin/genesis/README.md @@ -0,0 +1,60 @@ +# Miden Genesis + +A tool for generating canonical Miden genesis accounts and configuration. + +## Usage + +Generate all genesis accounts with fresh keypairs: + +```bash +miden-genesis --output-dir ./genesis +``` + +Provide existing Falcon512 public keys (both must be specified together): + +```bash +miden-genesis --output-dir ./genesis \ + --bridge-admin-public-key \ + --ger-manager-public-key +``` + +## Output + +The tool generates the following files in the output directory: + +- `bridge_admin.mac` - Bridge admin wallet (nonce=0, deployed later via transaction) +- `ger_manager.mac` - GER manager wallet (nonce=0, deployed later via transaction) +- `bridge.mac` - AggLayer bridge account (nonce=1, included in genesis block) +- `genesis.toml` - Genesis configuration referencing only `bridge.mac` + +When public keys are omitted, the `.mac` files for bridge admin and GER manager include generated secret keys. When public keys are provided, no secret keys are included. + +The bridge account always uses NoAuth and has no secret keys. + +## Bootstrapping a node + +```bash +# 1. Generate genesis accounts +miden-genesis --output-dir ./genesis + +# 2. Bootstrap the genesis block +miden-node validator bootstrap \ + --genesis-block-directory ./data \ + --accounts-directory ./accounts \ + --genesis-config-file ./genesis/genesis.toml \ + --validator.key.hex + +# 3. Bootstrap the store +miden-node store bootstrap --data-directory ./data + +# 4. Start the node +miden-node bundled start --data-directory ./data ... +``` + +## TODO + +- Support ECDSA (secp256k1) public keys in addition to Falcon512 (e.g. `--bridge-admin-public-key ecdsa:`) + +## License + +This project is [MIT licensed](../../LICENSE). diff --git a/bin/genesis/src/main.rs b/bin/genesis/src/main.rs new file mode 100644 index 0000000000..425dc159dc --- /dev/null +++ b/bin/genesis/src/main.rs @@ -0,0 +1,254 @@ +use std::path::{Path, PathBuf}; +use std::time::{SystemTime, UNIX_EPOCH}; + +use anyhow::Context; +use clap::Parser; +use miden_agglayer::create_bridge_account; +use miden_protocol::account::auth::{AuthScheme, AuthSecretKey}; +use miden_protocol::account::delta::{AccountStorageDelta, AccountVaultDelta}; +use miden_protocol::account::{ + Account, + AccountDelta, + AccountFile, + AccountStorageMode, + AccountType, +}; +use miden_protocol::crypto::dsa::falcon512_rpo::{self, SecretKey as RpoSecretKey}; +use miden_protocol::crypto::rand::RpoRandomCoin; +use miden_protocol::utils::Deserializable; +use miden_protocol::{Felt, ONE, Word}; +use miden_standards::AuthMethod; +use miden_standards::account::wallets::create_basic_wallet; +use rand::Rng; +use rand_chacha::ChaCha20Rng; +use rand_chacha::rand_core::SeedableRng; + +/// Generate canonical Miden genesis accounts (bridge, bridge admin, GER manager) +/// and a genesis.toml configuration file. +#[derive(Parser)] +#[command(name = "miden-genesis")] +struct Cli { + /// Output directory for generated files. + #[arg(long, default_value = "./genesis")] + output_dir: PathBuf, + + /// Hex-encoded Falcon512 public key for the bridge admin account. + /// If omitted, a new keypair is generated and the secret key is included in the .mac file. + #[arg(long, value_name = "HEX", requires = "ger_manager_public_key")] + bridge_admin_public_key: Option, + + /// Hex-encoded Falcon512 public key for the GER manager account. + /// If omitted, a new keypair is generated and the secret key is included in the .mac file. + #[arg(long, value_name = "HEX", requires = "bridge_admin_public_key")] + ger_manager_public_key: Option, +} + +fn main() -> anyhow::Result<()> { + let cli = Cli::parse(); + run( + &cli.output_dir, + cli.bridge_admin_public_key.as_deref(), + cli.ger_manager_public_key.as_deref(), + ) +} + +fn run( + output_dir: &Path, + bridge_admin_public_key: Option<&str>, + ger_manager_public_key: Option<&str>, +) -> anyhow::Result<()> { + fs_err::create_dir_all(output_dir).context("failed to create output directory")?; + + // Generate or parse bridge admin key. + let (bridge_admin_pub, bridge_admin_secret) = + resolve_pubkey(bridge_admin_public_key, "bridge admin")?; + + // Generate or parse GER manager key. + let (ger_manager_pub, ger_manager_secret) = + resolve_pubkey(ger_manager_public_key, "GER manager")?; + + // Create bridge admin wallet (nonce=0, local account to be deployed later). + let bridge_admin = create_basic_wallet( + rand::random(), + AuthMethod::SingleSig { + approver: (bridge_admin_pub.into(), AuthScheme::Falcon512Rpo), + }, + AccountType::RegularAccountImmutableCode, + AccountStorageMode::Public, + ) + .context("failed to create bridge admin account")?; + let bridge_admin_id = bridge_admin.id(); + + // Create GER manager wallet (nonce=0, local account to be deployed later). + let ger_manager = create_basic_wallet( + rand::random(), + AuthMethod::SingleSig { + approver: (ger_manager_pub.into(), AuthScheme::Falcon512Rpo), + }, + AccountType::RegularAccountImmutableCode, + AccountStorageMode::Public, + ) + .context("failed to create GER manager account")?; + let ger_manager_id = ger_manager.id(); + + // Create bridge account (NoAuth, nonce=0), then bump nonce to 1 for genesis. + let mut rng = ChaCha20Rng::from_seed(rand::random()); + let bridge_seed: [u64; 4] = rng.random(); + let bridge_seed = Word::from(bridge_seed.map(Felt::new)); + let bridge = create_bridge_account(bridge_seed, bridge_admin_id, ger_manager_id); + + // Bump bridge nonce to 1 (required for genesis accounts). + // File-loaded accounts via [[account]] in genesis.toml are included as-is, + // so we must set nonce=1 before writing the .mac file. + let bridge = bump_nonce_to_one(bridge).context("failed to bump bridge account nonce")?; + + // Write .mac files. + let bridge_admin_secrets = bridge_admin_secret + .map(|sk| vec![AuthSecretKey::Falcon512Rpo(sk)]) + .unwrap_or_default(); + AccountFile::new(bridge_admin, bridge_admin_secrets) + .write(output_dir.join("bridge_admin.mac")) + .context("failed to write bridge_admin.mac")?; + + let ger_manager_secrets = ger_manager_secret + .map(|sk| vec![AuthSecretKey::Falcon512Rpo(sk)]) + .unwrap_or_default(); + AccountFile::new(ger_manager, ger_manager_secrets) + .write(output_dir.join("ger_manager.mac")) + .context("failed to write ger_manager.mac")?; + + let bridge_id = bridge.id(); + AccountFile::new(bridge, vec![]) + .write(output_dir.join("bridge.mac")) + .context("failed to write bridge.mac")?; + + // Write genesis.toml. + let timestamp = u32::try_from( + SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("system time before UNIX epoch") + .as_secs(), + ) + .expect("timestamp should fit in a u32 before the year 2106"); + + let genesis_toml = format!( + r#"version = 1 +timestamp = {timestamp} + +[fee_parameters] +verification_base_fee = 0 + +[[account]] +path = "bridge.mac" +"#, + ); + + fs_err::write(output_dir.join("genesis.toml"), genesis_toml) + .context("failed to write genesis.toml")?; + + println!("Genesis files written to {}", output_dir.display()); + println!(" bridge_admin.mac (id: {})", bridge_admin_id.to_hex()); + println!(" ger_manager.mac (id: {})", ger_manager_id.to_hex()); + println!(" bridge.mac (id: {})", bridge_id.to_hex()); + println!(" genesis.toml"); + + Ok(()) +} + +/// Generates a new Falcon512 keypair using a random seed. +fn generate_falcon_keypair() -> (falcon512_rpo::PublicKey, RpoSecretKey) { + let mut rng = ChaCha20Rng::from_seed(rand::random()); + let auth_seed: [u64; 4] = rng.random(); + let mut coin = RpoRandomCoin::new(Word::from(auth_seed.map(Felt::new))); + let secret_key = RpoSecretKey::with_rng(&mut coin); + let public_key = secret_key.public_key(); + (public_key, secret_key) +} + +/// Resolves a Falcon512 key pair: either parses the provided hex public key or generates a new +/// keypair. +fn resolve_pubkey( + hex_pubkey: Option<&str>, + label: &str, +) -> anyhow::Result<(falcon512_rpo::PublicKey, Option)> { + if let Some(hex_str) = hex_pubkey { + let bytes = + hex::decode(hex_str).with_context(|| format!("invalid hex for {label} public key"))?; + let pubkey = falcon512_rpo::PublicKey::read_from_bytes(&bytes) + .with_context(|| format!("failed to deserialize {label} public key"))?; + Ok((pubkey, None)) + } else { + let (public_key, secret_key) = generate_falcon_keypair(); + Ok((public_key, Some(secret_key))) + } +} + +/// Bumps an account's nonce from 0 to 1 using an `AccountDelta`. +fn bump_nonce_to_one(mut account: Account) -> anyhow::Result { + let delta = AccountDelta::new( + account.id(), + AccountStorageDelta::default(), + AccountVaultDelta::default(), + ONE, + )?; + account.apply_delta(&delta)?; + Ok(account) +} + +#[cfg(test)] +mod tests { + use miden_node_store::genesis::config::GenesisConfig; + use miden_protocol::crypto::dsa::ecdsa_k256_keccak::SecretKey; + use miden_protocol::utils::Serializable; + + use super::*; + + /// Parses the generated genesis.toml, builds a genesis block, and asserts the bridge account + /// is included with nonce=1. + async fn assert_valid_genesis_block(dir: &Path) { + let bridge_id = AccountFile::read(dir.join("bridge.mac")).unwrap().account.id(); + + let config = GenesisConfig::read_toml_file(&dir.join("genesis.toml")).unwrap(); + let signer = SecretKey::read_from_bytes(&[0x01; 32]).unwrap(); + let (state, _) = config.into_state(signer).unwrap(); + + let bridge = state.accounts.iter().find(|a| a.id() == bridge_id).unwrap(); + assert_eq!(bridge.nonce(), ONE); + + state.into_block().await.expect("genesis block should build"); + } + + #[tokio::test] + async fn default_mode_includes_secret_keys() { + let dir = tempfile::tempdir().unwrap(); + run(dir.path(), None, None).unwrap(); + + let admin = AccountFile::read(dir.path().join("bridge_admin.mac")).unwrap(); + assert_eq!(admin.auth_secret_keys.len(), 1); + + let ger = AccountFile::read(dir.path().join("ger_manager.mac")).unwrap(); + assert_eq!(ger.auth_secret_keys.len(), 1); + + assert_valid_genesis_block(dir.path()).await; + } + + #[tokio::test] + async fn custom_public_keys_excludes_secret_keys() { + let dir = tempfile::tempdir().unwrap(); + + let (admin_pub, _) = generate_falcon_keypair(); + let (ger_pub, _) = generate_falcon_keypair(); + let admin_hex = hex::encode((&admin_pub).to_bytes()); + let ger_hex = hex::encode((&ger_pub).to_bytes()); + + run(dir.path(), Some(&admin_hex), Some(&ger_hex)).unwrap(); + + let admin = AccountFile::read(dir.path().join("bridge_admin.mac")).unwrap(); + assert!(admin.auth_secret_keys.is_empty()); + + let ger = AccountFile::read(dir.path().join("ger_manager.mac")).unwrap(); + assert!(ger.auth_secret_keys.is_empty()); + + assert_valid_genesis_block(dir.path()).await; + } +} From ae304b787535b140304eedfc6698b870a1d6e74f Mon Sep 17 00:00:00 2001 From: Marti Date: Thu, 19 Mar 2026 17:47:46 +0100 Subject: [PATCH 2/5] chore: update the `0.14.0-alpha` release (#1810) --- Cargo.lock | 76 ++++++++++++++++++++--------------------- Cargo.toml | 40 +++++++++++----------- crates/store/Cargo.toml | 2 +- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c4579bbbbf..1ce591c431 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2083,7 +2083,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.2", "system-configuration", "tokio", "tower-service", @@ -2628,9 +2628,9 @@ checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "miden-agglayer" -version = "0.14.0-alpha.1" +version = "0.14.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e492a6044cf8875a64d7eec130d260f2eda1c783795261f00d5d52837ed027bd" +checksum = "563f709601fc773bcb1782f0f5f1930894dbc627341df4af2bbd5040f21f4532" dependencies = [ "fs-err", "miden-assembly", @@ -2700,9 +2700,9 @@ dependencies = [ [[package]] name = "miden-block-prover" -version = "0.14.0-alpha.1" +version = "0.14.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9564dfb23c529aad68369845b6897a6f62bacdeab7c00db432a5f16670764d4" +checksum = "af7a73ebc8160af69c330a722263a83bd7f01103ff3c91b47b8ee7fb6b887726" dependencies = [ "miden-protocol", "thiserror 2.0.18", @@ -2839,7 +2839,7 @@ dependencies = [ [[package]] name = "miden-large-smt-backend-rocksdb" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "miden-crypto", "miden-protocol", @@ -2904,7 +2904,7 @@ dependencies = [ [[package]] name = "miden-network-monitor" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "axum", @@ -2933,7 +2933,7 @@ dependencies = [ [[package]] name = "miden-node" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "clap", @@ -2954,7 +2954,7 @@ dependencies = [ [[package]] name = "miden-node-block-producer" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "assert_matches", @@ -2990,7 +2990,7 @@ dependencies = [ [[package]] name = "miden-node-db" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "deadpool", "deadpool-diesel", @@ -3003,7 +3003,7 @@ dependencies = [ [[package]] name = "miden-node-grpc-error-macro" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "quote", "syn 2.0.114", @@ -3011,7 +3011,7 @@ dependencies = [ [[package]] name = "miden-node-ntx-builder" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "build-rs", @@ -3041,7 +3041,7 @@ dependencies = [ [[package]] name = "miden-node-proto" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "assert_matches", @@ -3067,7 +3067,7 @@ dependencies = [ [[package]] name = "miden-node-proto-build" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "build-rs", "fs-err", @@ -3078,11 +3078,11 @@ dependencies = [ [[package]] name = "miden-node-rocksdb-cxx-linkage-fix" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" [[package]] name = "miden-node-rpc" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "futures", @@ -3114,7 +3114,7 @@ dependencies = [ [[package]] name = "miden-node-store" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "assert_matches", @@ -3162,7 +3162,7 @@ dependencies = [ [[package]] name = "miden-node-stress-test" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "clap", "fs-err", @@ -3192,7 +3192,7 @@ dependencies = [ [[package]] name = "miden-node-utils" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "bytes", @@ -3219,7 +3219,7 @@ dependencies = [ [[package]] name = "miden-node-validator" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "aws-config", @@ -3264,9 +3264,9 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.14.0-alpha.1" +version = "0.14.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a88effeac994eb55b8dc4f93fbfd71a5d916dfaba1099896e27a0ee42c488c1" +checksum = "9fa3569c557146d3c4a4f48449f5c14ec94c43b6d22491d79c2b87617ac06ce8" dependencies = [ "bech32", "fs-err", @@ -3295,9 +3295,9 @@ dependencies = [ [[package]] name = "miden-protocol-macros" -version = "0.14.0-alpha.1" +version = "0.14.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb28b730005e5f8b08d615ea9216f8cab77b3a7439fa54d5e39d2ec43ef53a3" +checksum = "6e32fb40b2bc29e534da52691d3cd32d0207878171128d0ce5c2d2ecfa019fc5" dependencies = [ "proc-macro2", "quote", @@ -3320,7 +3320,7 @@ dependencies = [ [[package]] name = "miden-remote-prover" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "assert_matches", @@ -3358,7 +3358,7 @@ dependencies = [ [[package]] name = "miden-remote-prover-client" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "build-rs", "fs-err", @@ -3379,9 +3379,9 @@ dependencies = [ [[package]] name = "miden-standards" -version = "0.14.0-alpha.1" +version = "0.14.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cef036bbfec29acba92751a13d05844bbcf080140201097b419c9ad1927e367" +checksum = "d83ef3e49765ac3aa2a1defc853e0b130dfbd8480d91c9e49696d51186cdf839" dependencies = [ "fs-err", "miden-assembly", @@ -3397,9 +3397,9 @@ dependencies = [ [[package]] name = "miden-testing" -version = "0.14.0-alpha.1" +version = "0.14.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e980777d0f7e6069942b14d4e7cb3d4d137b323ddfa15722a3bd21e9d13fdd2e" +checksum = "98fb3700334c2b30c1e92966e3585c6790efb647b70c9eeef7c02423137c1782" dependencies = [ "anyhow", "itertools 0.14.0", @@ -3421,9 +3421,9 @@ dependencies = [ [[package]] name = "miden-tx" -version = "0.14.0-alpha.1" +version = "0.14.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c67e0df9adcf29c9111df65acf408ae05952b8bc6569f571963676f97668d83f" +checksum = "396e32105298b8fc6d0b9ae9f037c3243bcca5a1f31c27f90310856e468c01f8" dependencies = [ "miden-processor", "miden-protocol", @@ -3435,9 +3435,9 @@ dependencies = [ [[package]] name = "miden-tx-batch-prover" -version = "0.14.0-alpha.1" +version = "0.14.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba29f8f6ecae671eff8b52b4c19eca8db5964c0b45b5d68c3ce38a57a8367931" +checksum = "d4d4ac3e1778203c3336630311c8cfd0af77672356f96cd623d3c3e2398456fd" dependencies = [ "miden-protocol", "miden-tx", @@ -4137,7 +4137,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac6c3320f9abac597dcbc668774ef006702672474aad53c6d596b62e487b40b1" dependencies = [ "heck", - "itertools 0.13.0", + "itertools 0.14.0", "log", "multimap", "once_cell", @@ -4159,7 +4159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.114", @@ -4252,7 +4252,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.36", - "socket2 0.5.10", + "socket2 0.6.2", "thiserror 2.0.18", "tokio", "tracing", @@ -4290,7 +4290,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.2", "tracing", "windows-sys 0.60.2", ] diff --git a/Cargo.toml b/Cargo.toml index afcc9daa7f..e2f4a25977 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.91" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" # Optimize the cryptography for faster tests involving account creation. [profile.test.package.miden-crypto] @@ -47,30 +47,30 @@ debug = true [workspace.dependencies] # Workspace crates. -miden-large-smt-backend-rocksdb = { path = "crates/large-smt-backend-rocksdb", version = "=0.14.0-alpha.5" } -miden-node-block-producer = { path = "crates/block-producer", version = "=0.14.0-alpha.5" } -miden-node-db = { path = "crates/db", version = "=0.14.0-alpha.5" } -miden-node-grpc-error-macro = { path = "crates/grpc-error-macro", version = "=0.14.0-alpha.5" } -miden-node-ntx-builder = { path = "crates/ntx-builder", version = "=0.14.0-alpha.5" } -miden-node-proto = { path = "crates/proto", version = "=0.14.0-alpha.5" } -miden-node-proto-build = { path = "proto", version = "=0.14.0-alpha.5" } -miden-node-rpc = { path = "crates/rpc", version = "=0.14.0-alpha.5" } -miden-node-store = { path = "crates/store", version = "=0.14.0-alpha.5" } +miden-large-smt-backend-rocksdb = { path = "crates/large-smt-backend-rocksdb", version = "=0.14.0-alpha.6" } +miden-node-block-producer = { path = "crates/block-producer", version = "=0.14.0-alpha.6" } +miden-node-db = { path = "crates/db", version = "=0.14.0-alpha.6" } +miden-node-grpc-error-macro = { path = "crates/grpc-error-macro", version = "=0.14.0-alpha.6" } +miden-node-ntx-builder = { path = "crates/ntx-builder", version = "=0.14.0-alpha.6" } +miden-node-proto = { path = "crates/proto", version = "=0.14.0-alpha.6" } +miden-node-proto-build = { path = "proto", version = "=0.14.0-alpha.6" } +miden-node-rpc = { path = "crates/rpc", version = "=0.14.0-alpha.6" } +miden-node-store = { path = "crates/store", version = "=0.14.0-alpha.6" } miden-node-test-macro = { path = "crates/test-macro" } -miden-node-utils = { path = "crates/utils", version = "=0.14.0-alpha.5" } -miden-node-validator = { path = "crates/validator", version = "=0.14.0-alpha.5" } -miden-remote-prover-client = { path = "crates/remote-prover-client", version = "=0.14.0-alpha.5" } +miden-node-utils = { path = "crates/utils", version = "=0.14.0-alpha.6" } +miden-node-validator = { path = "crates/validator", version = "=0.14.0-alpha.6" } +miden-remote-prover-client = { path = "crates/remote-prover-client", version = "=0.14.0-alpha.6" } # Temporary workaround until # is part of `rocksdb-rust` release -miden-node-rocksdb-cxx-linkage-fix = { path = "crates/rocksdb-cxx-linkage-fix", version = "=0.14.0-alpha.5" } +miden-node-rocksdb-cxx-linkage-fix = { path = "crates/rocksdb-cxx-linkage-fix", version = "=0.14.0-alpha.6" } # miden-base aka protocol dependencies. These should be updated in sync. -miden-block-prover = { version = "=0.14.0-alpha.1" } -miden-protocol = { default-features = false, version = "=0.14.0-alpha.1" } -miden-standards = { version = "=0.14.0-alpha.1" } -miden-testing = { version = "=0.14.0-alpha.1" } -miden-tx = { default-features = false, version = "=0.14.0-alpha.1" } -miden-tx-batch-prover = { version = "=0.14.0-alpha.1" } +miden-block-prover = { version = "=0.14.0-alpha.2" } +miden-protocol = { default-features = false, version = "=0.14.0-alpha.2" } +miden-standards = { version = "=0.14.0-alpha.2" } +miden-testing = { version = "=0.14.0-alpha.2" } +miden-tx = { default-features = false, version = "=0.14.0-alpha.2" } +miden-tx-batch-prover = { version = "=0.14.0-alpha.2" } # Other miden dependencies. These should align with those expected by miden-base. miden-air = { features = ["std", "testing"], version = "0.20" } diff --git a/crates/store/Cargo.toml b/crates/store/Cargo.toml index d0642a8193..ff6a069875 100644 --- a/crates/store/Cargo.toml +++ b/crates/store/Cargo.toml @@ -53,7 +53,7 @@ url = { workspace = true } [build-dependencies] build-rs = { workspace = true } fs-err = { workspace = true } -miden-agglayer = { features = ["testing"], version = "=0.14.0-alpha.1" } +miden-agglayer = { features = ["testing"], version = "=0.14.0-alpha.2" } miden-node-rocksdb-cxx-linkage-fix = { workspace = true } miden-protocol = { features = ["std"], workspace = true } miden-standards = { workspace = true } From a6e3cf653047b38164a92c7352fab10a8435c4b9 Mon Sep 17 00:00:00 2001 From: Marti Date: Thu, 19 Mar 2026 22:58:05 +0000 Subject: [PATCH 3/5] chore: bump alpha deps --- Cargo.lock | 2 +- bin/genesis/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1ce591c431..e6658d2188 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2820,7 +2820,7 @@ dependencies = [ [[package]] name = "miden-genesis" -version = "0.14.0-alpha.5" +version = "0.14.0-alpha.6" dependencies = [ "anyhow", "clap", diff --git a/bin/genesis/Cargo.toml b/bin/genesis/Cargo.toml index 51c1460524..ac42961207 100644 --- a/bin/genesis/Cargo.toml +++ b/bin/genesis/Cargo.toml @@ -21,7 +21,7 @@ anyhow = { workspace = true } clap = { workspace = true } fs-err = { workspace = true } hex = { workspace = true } -miden-agglayer = { version = "=0.14.0-alpha.1" } +miden-agglayer = { version = "=0.14.0-alpha.2" } miden-protocol = { features = ["std"], workspace = true } miden-standards = { workspace = true } rand = { workspace = true } From 38640c7bb2ada5536f656a4841e5d62f68a7e68f Mon Sep 17 00:00:00 2001 From: Marti Date: Thu, 19 Mar 2026 23:00:18 +0000 Subject: [PATCH 4/5] chore: bump own version to alpha.7 --- Cargo.lock | 36 ++++++++++++++++++------------------ Cargo.toml | 28 ++++++++++++++-------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e6658d2188..d435f1e6a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2820,7 +2820,7 @@ dependencies = [ [[package]] name = "miden-genesis" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "clap", @@ -2839,7 +2839,7 @@ dependencies = [ [[package]] name = "miden-large-smt-backend-rocksdb" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "miden-crypto", "miden-protocol", @@ -2904,7 +2904,7 @@ dependencies = [ [[package]] name = "miden-network-monitor" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "axum", @@ -2933,7 +2933,7 @@ dependencies = [ [[package]] name = "miden-node" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "clap", @@ -2954,7 +2954,7 @@ dependencies = [ [[package]] name = "miden-node-block-producer" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "assert_matches", @@ -2990,7 +2990,7 @@ dependencies = [ [[package]] name = "miden-node-db" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "deadpool", "deadpool-diesel", @@ -3003,7 +3003,7 @@ dependencies = [ [[package]] name = "miden-node-grpc-error-macro" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "quote", "syn 2.0.114", @@ -3011,7 +3011,7 @@ dependencies = [ [[package]] name = "miden-node-ntx-builder" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "build-rs", @@ -3041,7 +3041,7 @@ dependencies = [ [[package]] name = "miden-node-proto" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "assert_matches", @@ -3067,7 +3067,7 @@ dependencies = [ [[package]] name = "miden-node-proto-build" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "build-rs", "fs-err", @@ -3078,11 +3078,11 @@ dependencies = [ [[package]] name = "miden-node-rocksdb-cxx-linkage-fix" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" [[package]] name = "miden-node-rpc" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "futures", @@ -3114,7 +3114,7 @@ dependencies = [ [[package]] name = "miden-node-store" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "assert_matches", @@ -3162,7 +3162,7 @@ dependencies = [ [[package]] name = "miden-node-stress-test" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "clap", "fs-err", @@ -3192,7 +3192,7 @@ dependencies = [ [[package]] name = "miden-node-utils" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "bytes", @@ -3219,7 +3219,7 @@ dependencies = [ [[package]] name = "miden-node-validator" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "aws-config", @@ -3320,7 +3320,7 @@ dependencies = [ [[package]] name = "miden-remote-prover" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "anyhow", "assert_matches", @@ -3358,7 +3358,7 @@ dependencies = [ [[package]] name = "miden-remote-prover-client" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" dependencies = [ "build-rs", "fs-err", diff --git a/Cargo.toml b/Cargo.toml index e2f4a25977..4719ac6984 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.91" -version = "0.14.0-alpha.6" +version = "0.14.0-alpha.7" # Optimize the cryptography for faster tests involving account creation. [profile.test.package.miden-crypto] @@ -47,22 +47,22 @@ debug = true [workspace.dependencies] # Workspace crates. -miden-large-smt-backend-rocksdb = { path = "crates/large-smt-backend-rocksdb", version = "=0.14.0-alpha.6" } -miden-node-block-producer = { path = "crates/block-producer", version = "=0.14.0-alpha.6" } -miden-node-db = { path = "crates/db", version = "=0.14.0-alpha.6" } -miden-node-grpc-error-macro = { path = "crates/grpc-error-macro", version = "=0.14.0-alpha.6" } -miden-node-ntx-builder = { path = "crates/ntx-builder", version = "=0.14.0-alpha.6" } -miden-node-proto = { path = "crates/proto", version = "=0.14.0-alpha.6" } -miden-node-proto-build = { path = "proto", version = "=0.14.0-alpha.6" } -miden-node-rpc = { path = "crates/rpc", version = "=0.14.0-alpha.6" } -miden-node-store = { path = "crates/store", version = "=0.14.0-alpha.6" } +miden-large-smt-backend-rocksdb = { path = "crates/large-smt-backend-rocksdb", version = "=0.14.0-alpha.7" } +miden-node-block-producer = { path = "crates/block-producer", version = "=0.14.0-alpha.7" } +miden-node-db = { path = "crates/db", version = "=0.14.0-alpha.7" } +miden-node-grpc-error-macro = { path = "crates/grpc-error-macro", version = "=0.14.0-alpha.7" } +miden-node-ntx-builder = { path = "crates/ntx-builder", version = "=0.14.0-alpha.7" } +miden-node-proto = { path = "crates/proto", version = "=0.14.0-alpha.7" } +miden-node-proto-build = { path = "proto", version = "=0.14.0-alpha.7" } +miden-node-rpc = { path = "crates/rpc", version = "=0.14.0-alpha.7" } +miden-node-store = { path = "crates/store", version = "=0.14.0-alpha.7" } miden-node-test-macro = { path = "crates/test-macro" } -miden-node-utils = { path = "crates/utils", version = "=0.14.0-alpha.6" } -miden-node-validator = { path = "crates/validator", version = "=0.14.0-alpha.6" } -miden-remote-prover-client = { path = "crates/remote-prover-client", version = "=0.14.0-alpha.6" } +miden-node-utils = { path = "crates/utils", version = "=0.14.0-alpha.7" } +miden-node-validator = { path = "crates/validator", version = "=0.14.0-alpha.7" } +miden-remote-prover-client = { path = "crates/remote-prover-client", version = "=0.14.0-alpha.7" } # Temporary workaround until # is part of `rocksdb-rust` release -miden-node-rocksdb-cxx-linkage-fix = { path = "crates/rocksdb-cxx-linkage-fix", version = "=0.14.0-alpha.6" } +miden-node-rocksdb-cxx-linkage-fix = { path = "crates/rocksdb-cxx-linkage-fix", version = "=0.14.0-alpha.7" } # miden-base aka protocol dependencies. These should be updated in sync. miden-block-prover = { version = "=0.14.0-alpha.2" } From ee355ab197483d5edfd0c9e9eb36a177533a1186 Mon Sep 17 00:00:00 2001 From: Marti Date: Fri, 20 Mar 2026 09:18:26 +0000 Subject: [PATCH 5/5] chore: bump versions to alpha.8 --- Cargo.lock | 36 ++++++++++++++++++------------------ Cargo.toml | 28 ++++++++++++++-------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 16782432ae..d2a98a3592 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2873,7 +2873,7 @@ dependencies = [ [[package]] name = "miden-genesis" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "clap", @@ -2892,7 +2892,7 @@ dependencies = [ [[package]] name = "miden-large-smt-backend-rocksdb" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "miden-crypto", "miden-node-rocksdb-cxx-linkage-fix", @@ -2958,7 +2958,7 @@ dependencies = [ [[package]] name = "miden-network-monitor" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "axum", @@ -2986,7 +2986,7 @@ dependencies = [ [[package]] name = "miden-node" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "clap", @@ -3006,7 +3006,7 @@ dependencies = [ [[package]] name = "miden-node-block-producer" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "assert_matches", @@ -3042,7 +3042,7 @@ dependencies = [ [[package]] name = "miden-node-db" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "deadpool", "deadpool-diesel", @@ -3055,7 +3055,7 @@ dependencies = [ [[package]] name = "miden-node-grpc-error-macro" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "quote", "syn 2.0.114", @@ -3063,7 +3063,7 @@ dependencies = [ [[package]] name = "miden-node-ntx-builder" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "build-rs", @@ -3096,7 +3096,7 @@ dependencies = [ [[package]] name = "miden-node-proto" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "assert_matches", @@ -3121,7 +3121,7 @@ dependencies = [ [[package]] name = "miden-node-proto-build" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "build-rs", "fs-err", @@ -3132,11 +3132,11 @@ dependencies = [ [[package]] name = "miden-node-rocksdb-cxx-linkage-fix" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" [[package]] name = "miden-node-rpc" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "futures", @@ -3168,7 +3168,7 @@ dependencies = [ [[package]] name = "miden-node-store" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "assert_matches", @@ -3215,7 +3215,7 @@ dependencies = [ [[package]] name = "miden-node-stress-test" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "clap", "fs-err", @@ -3244,7 +3244,7 @@ dependencies = [ [[package]] name = "miden-node-utils" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "bytes", @@ -3277,7 +3277,7 @@ dependencies = [ [[package]] name = "miden-node-validator" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "aws-config", @@ -3378,7 +3378,7 @@ dependencies = [ [[package]] name = "miden-remote-prover" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "anyhow", "assert_matches", @@ -3415,7 +3415,7 @@ dependencies = [ [[package]] name = "miden-remote-prover-client" -version = "0.14.0-alpha.7" +version = "0.14.0-alpha.8" dependencies = [ "build-rs", "fs-err", diff --git a/Cargo.toml b/Cargo.toml index 78c61b307a..93c0e91055 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.0-alpha.7" +version = "0.14.0-alpha.8" # Optimize the cryptography for faster tests involving account creation. [profile.test.package.miden-crypto] @@ -47,22 +47,22 @@ debug = true [workspace.dependencies] # Workspace crates. -miden-large-smt-backend-rocksdb = { path = "crates/large-smt-backend-rocksdb", version = "=0.14.0-alpha.7" } -miden-node-block-producer = { path = "crates/block-producer", version = "=0.14.0-alpha.7" } -miden-node-db = { path = "crates/db", version = "=0.14.0-alpha.7" } -miden-node-grpc-error-macro = { path = "crates/grpc-error-macro", version = "=0.14.0-alpha.7" } -miden-node-ntx-builder = { path = "crates/ntx-builder", version = "=0.14.0-alpha.7" } -miden-node-proto = { path = "crates/proto", version = "=0.14.0-alpha.7" } -miden-node-proto-build = { path = "proto", version = "=0.14.0-alpha.7" } -miden-node-rpc = { path = "crates/rpc", version = "=0.14.0-alpha.7" } -miden-node-store = { path = "crates/store", version = "=0.14.0-alpha.7" } +miden-large-smt-backend-rocksdb = { path = "crates/large-smt-backend-rocksdb", version = "=0.14.0-alpha.8" } +miden-node-block-producer = { path = "crates/block-producer", version = "=0.14.0-alpha.8" } +miden-node-db = { path = "crates/db", version = "=0.14.0-alpha.8" } +miden-node-grpc-error-macro = { path = "crates/grpc-error-macro", version = "=0.14.0-alpha.8" } +miden-node-ntx-builder = { path = "crates/ntx-builder", version = "=0.14.0-alpha.8" } +miden-node-proto = { path = "crates/proto", version = "=0.14.0-alpha.8" } +miden-node-proto-build = { path = "proto", version = "=0.14.0-alpha.8" } +miden-node-rpc = { path = "crates/rpc", version = "=0.14.0-alpha.8" } +miden-node-store = { path = "crates/store", version = "=0.14.0-alpha.8" } miden-node-test-macro = { path = "crates/test-macro" } -miden-node-utils = { path = "crates/utils", version = "=0.14.0-alpha.7" } -miden-node-validator = { path = "crates/validator", version = "=0.14.0-alpha.7" } -miden-remote-prover-client = { path = "crates/remote-prover-client", version = "=0.14.0-alpha.7" } +miden-node-utils = { path = "crates/utils", version = "=0.14.0-alpha.8" } +miden-node-validator = { path = "crates/validator", version = "=0.14.0-alpha.8" } +miden-remote-prover-client = { path = "crates/remote-prover-client", version = "=0.14.0-alpha.8" } # Temporary workaround until # is part of `rocksdb-rust` release -miden-node-rocksdb-cxx-linkage-fix = { path = "crates/rocksdb-cxx-linkage-fix", version = "=0.14.0-alpha.7" } +miden-node-rocksdb-cxx-linkage-fix = { path = "crates/rocksdb-cxx-linkage-fix", version = "=0.14.0-alpha.8" } # miden-base aka protocol dependencies. These should be updated in sync. miden-block-prover = { version = "=0.14.0-alpha.2" }