Releases: o1-labs/mina-rust
Mina Rust v0.17.0
Mina Rust Node v0.17.0 - First Official Release (Devnet)
We are excited to announce the first official release of the Mina Rust node
(v0.17.0), a Rust implementation of the Mina Protocol. This marks an important
step following the handover of the project from Mina Foundation to o1Labs, as
we continue to advance and maintain this alternative node implementation for
the Mina community.
Important: This release is currently intended for Devnet only. We recommend
running the node on Devnet as we continue testing and optimizing for mainnet
deployment.
Key Highlights
This release brings compatibility with the latest OCaml node version
3.2.0-beta2, ensuring seamless integration with the existing Mina network on
Devnet.
What's New in v0.17.0
- Full compatibility with OCaml node releases from 3.2.0-alpha1 through
3.2.0-beta2 - Docker images now available for both ARM64 and AMD64 architectures with
automatic CI deployment - Complete Docusaurus-based documentation website with comprehensive guides for
node operators, developers, and researchers - New
mina misc mina-encrypted-keycommand to generate encrypted keys with
passwords, matching OCaml node functionality - Enhanced Makefile targets including
run-block-producerfor easy
devnet setup andgenerate-block-producer-keyfor key generation - Multi-platform CI support (Ubuntu 22.04, Ubuntu 24.04, Ubuntu 24.04 ARM,
macOS) - Updated proof systems to match the OCaml node version
- Rebranding from OpenMina to the official "Mina Rust node"
For more details, refer to the CHANGELOG on the repository:
https://github.com/o1-labs/mina-rust/blob/v0.17.0/CHANGELOG.md#v0170
You can follow the team work on the dashboards
https://github.com/orgs/o1-labs/projects/24
Getting Started
The website is available on https://o1-labs.github.io/mina-rust.
We recommend starting with Docker for the easiest deployment experience on Devnet:
- Docker Setup Guide: https://o1-labs.github.io/mina-rust/docs/node-operators/docker-usage
Docker images are available at:
- Node: https://hub.docker.com/r/o1labs/mina-rust
- Frontend: https://hub.docker.com/r/o1labs/mina-rust-frontend
Running Different Node Types
- Block Producer Setup: https://o1-labs.github.io/mina-rust/docs/node-operators/block-producer
- Archive Node Setup: https://o1-labs.github.io/mina-rust/docs/node-operators/archive-node
Developer Resources
- GraphQL API Documentation: https://o1-labs.github.io/mina-rust/docs/developers/graphql-api
- Archive Database Queries: https://o1-labs.github.io/mina-rust/docs/developers/archive-database-queries
Looking Ahead
This is our first official release under o1Labs stewardship, and we are
committed to delivering regular updates with performance improvements, new
features, and enhanced stability.
We plan to maintain a consistent release cycle to ensure the node stays current
with network requirements and community needs. Future releases will expand
support beyond Devnet as the implementation matures.
Community and Support
We welcome feedback from node operators and block producers as you deploy and
test the Mina Rust node on Devnet. Your input is invaluable as we continue to
improve and optimize the implementation. Please report any issues or
suggestions through our GitHub repository.
Thank you for your continued support of the Mina ecosystem. We look forward to
building the future of Mina together with this new, performant Rust
implementation.
What's Changed
- fix: Changelog link for 0.16.0 diff by @tizoc in #1136
- chore(ci): Upgrade jobs to use Ubuntu 22.04 by @tizoc in #1138
- fix(p2p): Do not fail when an initial peer address cannot be resolved by @tizoc in #1137
- CI: remove usage of ubuntu arm64 by @dannywillems in #1143
- Web node local startup by @directcuteo in #1144
- Auto open web-node config by @directcuteo in #1145
- Added docs to build webnode by @0xMimir in #1146
- Docs P2P WebRTC by @binier in #1000
- Angular 19 Update by @directcuteo in #1152
- CLAUDE.md: init by @dannywillems in #1149
- CI: add dependabot by @dannywillems in #1155
- Update lint.yml actions to latest versions by @dannywillems in #1156
- CI/archive: remove as it is disabled and probably old by @dannywillems in #1154
- CI/daily: remove as old, referencing inexisting k8s cluster by @dannywillems in #1151
- chore(deps): bump actions/checkout from 3 to 4 by @dependabot[bot] in #1161
- Add Makefile by @dannywillems in #1150
- Rustfmt proof systems by @dannywillems in #1172
- CI/lint: move tx fuzzer lint to lint.yaml by @dannywillems in #1180
- Introduce common formatting practices for Markdown files by @dannywillems in #1174
- Cleaning old filies by @dannywillems in #1182
- chore(deps): bump mio from 0.8.11 to 1.0.3 by @dependabot[bot] in #1162
- chore(deps): bump juniper from 0.16.1 to 0.16.2 by @dependabot[bot] in #1165
- Cleaning: remove old drone CI config by @dannywillems in #1189
- chore(deps): bump object from 0.36.5 to 0.37.1 by @dependabot[bot] in #1164
- Unify Makefile and CI by @dannywillems in #1181
- CI: lint dockerfiles by @dannywillems in #1183
- chore(deps): bump documented from 0.1.2 to 0.6.0 by @dependabot[bot] in #1163
- Docker: fix openmina dockerfile and slightly improve it by @dannywillems in #1190
- Resolve tests in Cypress by @directcuteo in #1167
- Infra: remove old helm files by @dannywillems in #1201
- Add taplo by @dannywillems in #1211
- Makefile: add target to run an archive node by @dannywillems in #1203
- CI: remove code related to decomissionned k8s nodes by @dannywillems in #1202
- CI: remove nested and old GH workflow by @dannywillems in #1213
- chore(deps): bump prost-build from 0.12.4 to 0.14.1 by @dependabot[bot] in #1224
- chore(deps): bump zeroize from 1.7.0 to 1.8.1 by @dependabot[bot] in #1225
- chore(deps): bump wasm_thread from 0.3.0 to 0.3.1 by @dependabot[bot] in #1227
- chore(deps): bump pcap from 2.2.0 to 2.3.0 by @dependabot[bot] in #1226
- CI: add a check for checklog changes on PR by @dannywillems in #1231
- chore(deps): bump proc-macro2 from 1.0.93 to 1.0.95 by @dependabot[bot] in #1230
- CI/Docker: remove login in + push to Dockerhub related steps by @dannywillems in #1210
- docs: add Claude formatting instructions by @dannywillems in #1218
- chore(deps): bump itertools from 0.10.5 to 0.12.0 by @dependabot[bot] in #1228
- OCaml node dep: update to the latest release by @dannywillems in #1236
- Docusaurus website by @dannywillems in #1234
- Fix broken links for cargo doc by @volhovm in #1242
- Docs: add instructions to update the OCaml node dependencies by @dannywillems in #1237
- Website: add Mina Protocols Forums as resource by @dannywillems in #1243
- Fix lifetime warnings by @dannywillems in #1244
- CI/docs: include Rust API docs by @dannywillems in #1246
- OCaml nodes: bump up to release 3.2.0-beta1 by @dannywillems in #1250
- CI: fix deploy docs by removing NODE_ENV set to production by @dannywillems in #1254
- Frontend: remove space at the end of the filename by @dannywillems in #1253
- Docs: add macOS instructions to developer getting-started guide by @dannywillems in #1247
- Scripts to update OCaml node by @dannywillems in #1252
- CI: add shellcheck by @dannywillems in #1255
- CI: Support multi-platform builds and standardize test execution on ubuntu-latest by @dannywillems in #1249
- docs: add shellcheck to system dependencies installation by @dannywillems in #1264
- Unify the usage of Fp, Fq and curves by r...
Release v0.16.0
Added
- GraphQL: More queries (snark pool, pending snark work, genesis block, ledger status).
Changed
- GraphQL: Added more fields to
daemonStatusquery.
Fixed
- GraphQL: Some issues with accounts.
- Block Producer: Corner case that caused the won slot search to sometimes be interrupted at epoch bounds.
Release v0.15.0
Added
- Restored support for snark workers.
- Archive: Support for storing blocks to AWS, GCP and filesystem.
- Tooling: WebRTC traffic sniffer.
- GraphQL:
sendPaymentmutation.sendDelegationmutation.pooledUserCommandsquery.pooledZkappCommandsquery.- Various other partially implemented queries expanded to ensure compatibility with the OCaml node.
Changed
- P2P: Wait until full validation is complete before broadcasting transactions and completed works.
- Transition frontier: Perform cheap consensus operation first, and then the more expensive proof verification.
- Transaction pool: Unified libp2p and webrtc logic for the initial phase of handling transactions received from gossip network. As a result, processing of transactions received during bootstrap is delayed until the initial sync is complete.
- Transaction pool: Suspend processing during block production.
Fixed
- Transition frontier: Rare race condition in the case of forks during block production that could result in dropping staged ledgers too early.
- Webnode: Replaced tokio channels which had a race condition that could crash the thread on WASM.
- Transaction pool: Verify zkApp proofs in a dedicated thread to avoid blocking the state machine.
Release v0.14.0
Changed
- Rust Toolchain: Updated the minimum required Rust toolchain to version 1.84.
- Proofs: Optimizations (MSM, field inversion) that speed up proof production.
Fixed
- P2P: Correct handling of yamux windows limits
- P2P: Wait until full validation is complete before broadcasting blocks.
- WebRTC/P2P: Handle propagation of messages received from the WebRTC network to libp2p's gossip network (blocks, snarks and transactions).
- Transaction pool: Fixed checks for deep account updates when pre-validating transactions.
Added
- Archive mode: Added support for archive mode, which allows the node to connect to an archiver process and store node data in a database.
Release v0.13.0
Fixed
- Mempool: Inside the transaction and snark pool reducers, only broadcast locally injected transactions and producer snarks. Libp2p layer takes care of diffs received from gossip already.
- P2P: Don't forget the initial peers list.
- WebRTC connection leaks.
- zkApp transaction proofs are now verified on a separate thread.
- Sometimes produced blocks were broadcasted too early.
OneOrTwo::zipnever panics now, on failure it returns an error.
Changed
- On native, use jemalloc as the default allocator.
- Allocations reduced considerably by using stack-allocated bignums in the VRF evaluator.
- The same thread is now reused to verify all block proofs.
RUST_BACKTRACEis always set tofullnow.
Release v0.12.0
Fixed
- Properly handle time in cases in which the system goes to sleep.
- Various corner cases in block proof production.
- Improved ledgers sync during bootstrap (be smarter about which peers to query).
- P2P: More efficient memory usage when managing the p2p state.
- P2P: Lower outgoing traffic by being more conservative about what is broadcasted to each peer.
- P2P: Better handling of disconnections.
- VRF: Correctly handle cases in which the delegator table is empty.
- Webnode: Peer connection handling improvements.
Changed
- Rust Toolchain: Updated the minimum required Rust toolchain to version 1.83.
- Webnode: Reduced startup time by loading prover indexes in parallel to the bootstrap process.
- Webnode: Faster field operations (faster hashing and proving).
- Improved hashing performance by caching and reusing common prefixes.
- Added more pre-validation checks for blocks received from the network.
Added
- Webnode: Transaction propagation
- P2P: Support for specifying the external ip to be advertised.
Release v0.11.0
Added
- Webnode: Peer discovery and p2p based signaling (so that webnodes can find each other).
- Webnode: Connection authentication.
- Support for specifying external IPs.
Fixed
- Ledger: Fixed a regression introduced in v0.10.0 that caused the ZKApp precondition checks ordering to not match the OCaml implementation's exactly, which resulted in block application failures.
- Ledger: Corrected handling of custom tokens in the block application logic.
- P2P: Reduced excessive outgoing traffic.
- P2P: Yamux fixes and improvements (backpressure).
- Webnode: Staging ledger sync timeout.
Release v0.10.3
Added
- Support for name resolution in peer addresses.
- Block producer docker compose setup.
- WASM file containing the webnode is now included in the frontend image.
- Logging output to the filesystem in addition to stdout.
- Webnode: peer discovery and p2p based signaling.
Release v0.10.0
Added
- GraphQL endpoints for o1js.
- Support for batched verification of proofs.
- Enabled full proof verification of completed works included in blocks.
Changed
- Deduplication of zkApp logic.
- Various internal improvements.
Fixed
- Regression in the verification zkApp transactions with feature flags (introduced when upgrading proof-systems).
- Potential overflow in yamux.
- Added a missing check for next epoch seed finality
Release v0.9.0
Stability improvements release
Fixes
- Many bugfixes, performance, security and stability improvements.