Skip to content

node-2.0.0-rc.3

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Jun 14:23
30f081e

Midnight Node 2.0.0-rc.3

Metadata

  • Type of release: major (pre-release)
  • Date: 2026-06-29
  • Ships in bundle: TBD — pre-release, not bundled
  • Git tag: node-2.0.0-rc.3
  • Environment: All public networks at time of release. For the full compatibility matrix, see the release notes overview.
  • Upgrade scope: binary only
  • Reset required: Yes — new-ledger networks (dev/devnet/stagenet); rc.3 is not compatible with rc.2
  • Governance action required: No

High-level summary

Binary-only pre-release. The sole change since 2.0.0-rc.2 is bumping the Midnight ledger patch set from 9.1.0.0-rc.2 to 9.1.0.0-rc.3 (#1738), with the node and toolkit adapted to the new ledger wiring. The runtime WASM is byte-identical to 2.0.0-rc.2 (spec_version 002_000_000, transaction_version 4, runtime metadata unchanged) — the ledger is reached via host calls, so this is a node/toolkit upgrade, not a runtime upgrade.

Audience

  • Operators who run nodes on the development ledger line (dev, devnet, stagenet) and need the rc.3 binary.
  • Developers who build transactions with the toolkit against ledger 9.1.0.0-rc.3.
  • Administrators who maintain genesis state and chain-specs for new-ledger networks (ledger-state encoding moved v17 → v18).

Dependencies

  • Requires Midnight ledger 9.1.0.0-rc.3 (crate tag crate-ledger-9.1.0.0-rc.3). rc.3 is not compatible with rc.2.

Downstream impact (cascading effects): Tooling and tests that produce or consume serialized transactions/ledger state against this node must target ledger 9.1.0.0-rc.3; payloads built against rc.2 will not validate (intent signing envelope and verifier-key slots changed). Deployed networks (govnet, mainnet, perfnet, preprod, preview, qanet) read via the L7/L8 stacks and are unaffected.

For all other interop questions, see the bundle dependency matrix.

Deployment information

  • Upgrade scope: binary only — new node and toolkit binaries; the runtime WASM is unchanged from 2.0.0-rc.2.
  • Reset required: Yes — for networks on the new ledger (dev/devnet/stagenet). rc.3 is not compatible with rc.2, so there is no fork path between the two; moving a new-ledger network from rc.2 to rc.3 requires a reset with a freshly generated genesis state + chain-spec (ledger-state encoding v17 → v18). Deployed networks read via L7/L8 and need no reset.
  • Governance action required: No.
  • Downtime / coordination: None for deployed networks. New-ledger dev networks need a fresh genesis/chain-spec before their next reset (devnet genesis is rebuilt AWS-side; no local seeds).

Artifacts

  • Docker: midnightntwrk/midnight-node:2.0.0-rc.3 and midnightntwrk/midnight-node-toolkit:2.0.0-rc.3
  • Git tree hash: c808ee588ab60999a2c185fef36093be871763b8
docker pull midnightntwrk/midnight-node:2.0.0-rc.3
docker pull midnightntwrk/midnight-node-toolkit:2.0.0-rc.3

What changed

  • Bumped the Midnight ledger patch set from 9.1.0.0-rc.2 to 9.1.0.0-rc.3, folding the L7/L8 (2.x) and L9 (3.x) crypto stacks into a single zkir crate and adapting node + toolkit wiring (dual-stack contract verifier keys, intent-envelope dust signing, !Send-safe proving).
  • Replaced the parallelism_factor cost-model parameter with three FixedPoint factors (validation_factor, guaranteed_factor, fallible_factor) on new-ledger networks.
  • Bumped the ledger-state serialization encoding v17 → v18 and rebuilt undeployed genesis and .mn test fixtures.
Change Upgrade Type PR
Bump ledger to 9.1.0.0-rc.3 (node + toolkit; runtime WASM unchanged) Node upgrade + Toolkit #1738

New features

None

New features requiring configuration updates

None

Improvements

Bump ledger to 9.1.0.0-rc.3

Description: Updates the ledger patch set from the 9.1.0.0-rc.2 tags to 9.1.0.0-rc.3. rc.3 keeps the L7/L8 (2.x) vs L9 (3.x) crypto-stack split but folds both stacks into one zkir crate (midnight-zkir 2.2.0 proves V0/V1 and V2 circuits), retiring the rc.2-era frozen zkir-2.1.0 workspace dep. Node-side wiring adds [patch.crates-io] entries for midnight-base-crypto-derive and midnight-transient-crypto-old, and the dropped upstream verifier_key() is now provided locally so it works across all ledger versions. SingleUpdate gains IrInsert/IrRemove (on-chain IR maintenance, L9-only). The cost model swaps parallelism_factor: 4 for validation_factor: 0.25 / guaranteed_factor: 1.0 / fallible_factor: 1.0 on the new-ledger networks. Runtime metadata is not regenerated — the change is to ledger-parameter config and ledger-state encoding, not pallet storage or extrinsics. Node upgrade.

PR: #1738

Adapt toolkit to ledger 9.1.0.0-rc.3

Description: Three rc.3 ledger changes required toolkit adaptation. (1) ContractOperation is now dual-stack: it carries a v2 slot for 2.x keys (v1 / zk-stdlib-v1 circuits) and a v3 slot for 3.x keys (v2 circuits); the toolkit peeks the verifier-key serialization tag to pick the slot, fixing VerifierKeyNotSet on v1 test contracts. (2) dust_actions are folded into Intent::data_to_sign (the new IntentSigningEnvelope), so the toolkit now assembles the full intent before computing data_to_sign and signing — fixing InvalidDustRegistrationSignature and IntentSignatureVerificationFailure. (3) ledger 9's prover is !Send, so local and remote proving now drive the prove future inside a spawn_blocking current-thread runtime, preserving semaphore-bounded real parallelism. Toolkit.

PR: #1738

Deprecations

None

Breaking changes

rc.3 is not compatible with rc.2

What changed: The ledger bump changes the ledger-state serialization encoding (v17 → v18), the cost-model parameters, the intent signing envelope (dust folded into data_to_sign), and the contract verifier-key layout (dual-stack v2/v3 slots).

What breaks: A new-ledger network running rc.2 cannot fork or migrate to rc.3 — there is no upgrade path between the two pre-releases. Transactions and ledger state serialized against rc.2 will not validate or decode under rc.3.

Required actions:

  • Reset new-ledger networks (dev/devnet/stagenet) and regenerate genesis state + chain-spec at the v18 encoding before running rc.3.
  • Rebuild any toolkit-generated fixtures/transactions against ledger 9.1.0.0-rc.3.
  • Deployed networks (govnet, mainnet, perfnet, preprod, preview, qanet) read via L7/L8 and need no action.

Known issues

None

Links and references

Fixed defect list

None

Other Changes

None