All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Update the CI and code to compare with the latest release 3.2.0-alpha1-7f94ae0 (#1236, fix #1158)
- Update the CI and code to compare with the latest release 3.2.0-beta1-978866c (#1250
- Documentation: Add instructions to update the OCaml node dependencies. (#1237)
- Development Tools: Automation script for updating OCaml node references with comprehensive documentation and CI testing to ensure reproducibility (#1252)
- Documentation: Complete Docusaurus-based documentation website with
comprehensive guides for node runners, developers, and researchers
(#1234). It migrates all the
documentation from
docstowebsite/docs. It includes SEO metadata and social media integration. - Documentation: Developer getting-started guide with automated setup scripts for system dependencies, Rust toolchain, Node.js, Docker, and WASM tools. This is run nightly and on-demand via PR labels to avoid blocking development workflow. (#1234).
- Development Tools: Enhanced formatting infrastructure with MDX file support and trailing whitespace management (#1234)
- Documentation: add instructions for developers using MacOS based systems, and test the installation commands in CI (#1247).
- Development tools: Add shellcheck to the CI (#1255)
- CI: Generalized build jobs to support multiple platforms (Ubuntu 22.04, Ubuntu 24.04, Ubuntu 24.04 ARM, macOS latest), updated test execution to ubuntu-latest, and fixed GLIBC compatibility for scenario tests by using Ubuntu 22.04 for test binary artifacts to ensure compatibility with Debian Bullseye container environment (#1249)
- Build System: Enhanced Makefile with documentation-related targets and comprehensive formatting commands (#1234)
- Use consistent
usestatements for fields. Replacemina_hasher::Fpwithmina_curves::pasta::Fp. (#1269).
- Documentation: Resolved broken links and bare URL warnings in Rust documentation (#1234)
- Build System: Fixed SQLx compilation errors in lint workflow (#1234)
- Formatting: Standardized markdown and MDX files to 80-character line wrapping (#1234)
- Build warnings: Fix the warnings generated by the missing lifetime (#1244)
0.16.0 - 2025-04-04
- GraphQL: More queries (snark pool, pending snark work, genesis block, ledger status).
- GraphQL: Added more fields to
daemonStatusquery˙
- GraphQL: Some issues with accounts.
- Block Producer: Corner case that caused the won slot search to sometimes be interrupted at epoch bounds.
0.15.0 - 2025-03-13
- 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.
- 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.
- 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.
0.14.0 - 2025-01-31
- Rust Toolchain: Updated the minimum required Rust toolchain to version 1.84.
- Proofs: Optimizations (MSM, field inversion) that speed up proof production.
- 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.
- Archive mode: Added support for archive mode, which allows the node to connect to an archiver process and store node data in a database.
0.13.0 - 2025-01-06
- 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.
- 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.
0.12.0 - 2024-12-04
- 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.
- 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.
- Webnode: Transaction propagation
- P2P: Support for specifying the external ip to be advertised.
0.11.0 - 2024-10-31
- Webnode: Peer discovery and p2p based signaling (so that webnodes can find each other).
- Webnode: Connection authentication.
- Support for specifying external IPs.
- 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.
0.10.3 - 2024-10-16
- 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.
0.10.0 - 2024-10-10
- GraphQL endpoints for o1js.
- Support for batched verification of proofs.
- Enabled full proof verification of completed works included in blocks.
- Deduplication of zkApp logic.
- Various internal improvements.
- 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
0.9.0 - 2024-10-02
- Many bugfixes, performance, security and stability improvements.
0.8.14 - 2024-09-18
- Correctly show transaction fee values in the frontend.
- Make sure that incorrectly encoded finite field values are handled properly.
0.8.13 - 2024-09-18
- Many stability and security improvements.
- Make the JSON encodings of many kinds of values closer to what the Mina node produces to increase compatibility.
- Combined all frontend docker images into a single one configurable at runtime.
- Many internal state machine refactorings.
0.8.3 - 2024-09-09
- Handling verification key updates with proof authorization kind.
- Block producer incorrectly discarding blocks if staking ledger between best tip and won slot were different.
0.8.2 - 2024-09-06
- Include circuit blobs in docker images, required for block production.
- Add missing bounds to ZkAppUri and TokenSymbol fields.
- Various stability improvements to make sure the node will not crash in certain circumstances.
- Root snarked ledger re-syncs now reuse the previously in-progress root snarked ledger instead of starting again from the next-epoch ledger.
- Added
--libp2p-keypair=<path to json>flag to specify encrypted secret key (with passphrase fromMINA_LIBP2P_PASSenvironment variable).
0.8.1 - 2024-09-02
- Mempool: handling of missing verification key in the transaction pool.
0.8.0 - 2024-08-30
- Webnode: Streaming ledger sync RPC.
- P2P: Meshsub for gossip.
- P2P: Additional tests.
- Mempool: Various transaction pool issues.
- Poseidon hashing and witness generation when absorbing empty slices.
- Rust Toolchain: Updated the minimum required Rust toolchain to version 1.80.
0.7.0 - 2024-08-02
- Transaction pool (alpha).
- Support for sending transactions, inspecting the transaction pool and the scan state to the block producer demo.
- P2P layer fixes and improvements.
- Various internal fixes and improvements.
- Rust Toolchain: Updated the minimum required Rust toolchain to version 1.79.
0.6.0 - 2024-07-01
- Devnet support.
- Callbacks support in the state machine, support in reducer functions for queueing new actions.
- Cache for the genesis and initial epoch ledgers data for faster loading.
- Berkeleynet support.
- State machine records are now encoded in postcard format.
- General improvements in performance and stability.
- Various P2P layer issues.
- Correct handling of heartbeats in long-running P2P RPCs.
- Genesis snarked mask being overwritten, which sometimes resulted in some ledgers not being found when applying a block.
- State machine record-and-replay functionality issues.
- WASM target restored for the webnode.
- WebRTC P2P protocol restored for the webnode.
0.5.1 - 2024-06-01
- ARM docker builds.
0.5.0 - 2024-05-31
- When applying blocks, use the
supercharge_coinbasevalue from the block which was being ignored before. - Incorrect stream being used for RPC responses.
- Allow multiple nodes running on the same host to connect to each other.
- Invalid
delta_block_chain_proofin block producer. - Various p2p layer fixes.
- Support for PubSub in the p2p layer.
- Block producer dashboard, and simulator-based demo.
- Support for parsing
daemon.jsonfiles with custom genesis ledgers. - Chain ID computation (was hardcoded before).
- Multiple RPC and p2p tests.
- More limits to p2p messages, connections, and parsing.
- Support for v1 messages in p2p layer.
0.4.0 - 2024-04-30
- Interactions with the ledger service are now async. This fixes situations in which expensive ledger operations could starve the state machine loop.
- Ledger synchronization issue that happens when synchronizing the node during the second epoch.
- Correctly handle the situation in which the best tip changes during staged ledger reconstruction, causing the reconstruct to produce a stale result.
- Various edge cases in p2p layer (error propagation, disconnection, self-connection).
- Support for
identifyprotocol. - P2P layer testing framework.
- Frontend: Block production page.
- Removed rust-libp2p based code, in favor of our own libp2p implementation.
0.3.1 - 2024-04-05
- Internal improvements to the actions logging mechanism.
- Corrected sync stats for accounts fetching during ledger sync.
- Pruning of kademlia streams and requests.
- Docker images tagged for each new release.
- Bootstrap process testing on CI.
0.3.0 - 2024-03-29
- Rust Toolchain: Updated the minimum required Rust toolchain to version 1.77.
- Networking:
- Libp2p Replacement: Transitioned from libp2p to a custom internal networking implementation. The transition will be finalized in the next release, completely removing the libp2p dependency.
- Gossipsub: Pending support. Current version of the node performs initial bootstrapping but cannot stay synchronized with network broadcasts.
- Kademlia: Partial implementation includes bootstrapping and FIND_NODE server/client functionalities.
- Identify Protocol: Absent in this release, rendering the node unusable as a seed node.
- Libp2p Replacement: Transitioned from libp2p to a custom internal networking implementation. The transition will be finalized in the next release, completely removing the libp2p dependency.
- Frontend:
- Mobile Compatibility: Enhanced support for mobile platforms, improving user experience across various devices.
- Staged Ledger: Resolved an issue where the ledger reconstruct step would block the state machine.
- Node Communication: Fixed a bug where nodes did not respond to ledger queries from bootstrapping peers, enhancing network cooperation.
- Frontend:
- Test Stability: Addressed and fixed previously failing tests.
- Backend:
- HTTP RPC: Corrected an error triggered when querying the
/stateendpoint.
- HTTP RPC: Corrected an error triggered when querying the
- Bootstrap Efficiency:
- Ledger Synchronization: Optimized the snarked ledger synchronization process during bootstrap, significantly reducing the time required.
- Genesis Ledger Loading: Enhanced the loading mechanism for the genesis ledger, achieving much faster startup times.
- Frontend Enhancements:
- Network Node DHT view.
- Network Bootstrap Stats for real-time monitoring of network bootstrap statistics.
- Main Dashboard view.
- Backend Improvements:
- JsonPath Support: Enhanced the
/stateHTTP RPC endpoint with JsonPath support, offering more flexible state querying capabilities.
- JsonPath Support: Enhanced the
0.2.0 - 2024-02-29
- Default Rust toolchain switched to stable channel (as of 1.75).
- Internal refactoring to how leaf actions in the state machine are organized.
- Node can now connect to the current berkeleynet after updates to:
- Wire type definitions.
- Verification, proving and circuits.
- Ledger and transaction application logic.
- Ledger tests on CI.
0.1.0 - 2024-02-02
- Optimized scan state to reduce memory usage by avoiding duplication of data.
- Updated proof verification to be compatible with the current berkeleynet (rampup4).
- Introduced support for producing proofs (blocks, payments, zkApp transactions, and merge proofs) compatible with the current berkeleynet (rampup4), with pending support for generating circuits.
- Added the ability to produce blocks (excluding user transactions) for testing purposes.
- Implemented pruning of inferior blocks post synchronization with the best tip.
- Enhanced the testing framework and debugging support as follows:
- Improved compatibility with the OCaml node within the testing framework.
- Introduced declarations for essential invariants to be verified by the test framework, simulator, and replayer.
- Integrated SNARK worker into the simulator for SNARK production.
- Added functionality to store dumps of blocks and staged ledgers for inspection upon block application failure due to mismatches.
0.0.1 - 2023-12-22
First public release.
- Alpha version of the node which can connect and syncup to the berkeleynet network, and keep applying new blocks to maintain consensus state and ledger up to date.
- Web-based frontend for the node.