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.
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_coinbase
value 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_proof
in block producer. - Various p2p layer fixes.
- Support for PubSub in the p2p layer.
- Block producer dashboard, and simulator-based demo.
- Support for parsing
daemon.json
files 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
identify
protocol. - 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
/state
endpoint.
- 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
/state
HTTP 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.