Skip to content

Latest commit

Β 

History

History
224 lines (191 loc) Β· 20.4 KB

CHANGELOG.md

File metadata and controls

224 lines (191 loc) Β· 20.4 KB

Changelog

0.2.0

April 16, 2025

πŸ“– Release notes

See RELEASE_NOTES.md for the release notes.

⚠️ Breaking changes

See BREAKING_CHANGES.md for the list of breaking changes.

πŸš€ Features

  • (code) Add the capability to re-run consensus for a given height (#952)
  • (code) Removal of timeout commit (#976)
  • (code) Verification of polka certificates (#975)

πŸ“„ Documentation

  • (docs) Update README.md to include a pronunciation guide (#978)

0.1.0

April 9, 2025

πŸ“– Release notes

See RELEASE_NOTES.md for the release notes.

⚠️ Breaking changes

See BREAKING_CHANGES.md for the list of breaking changes.

πŸ§ͺ Specifications

  • (spec) New height logic / fast track (#591)
  • (spec) Fix typo in specs
  • (spec) Improvements and fixes in consensus overview (#738)
  • (spec) Requirements for the proposer selection algorithm (#739)
  • (spec) Requirements on valid(v) (#748)
  • (spec) Discussion of consensus getValue() function (#760)
  • (spec) Consensus network requirements and gossip property (#764)
  • (spec) Consensus timeouts and synchrony assumptions (#765)
  • (spec) Argue that Tendermint is a safe and live consensus algorithm (#777)
  • (spec/test) Model-based tests for part streaming (#814)
  • (spec/consensus) Small fixes to overview.md file. (#873)

πŸš€ Features

  • (code/app) Add persistence to the example app (#746)
  • (code/consensus) Add support for full nodes (#750)
  • (code) Feature-gate metrics in core-consensus crate (#762)
  • (code/example) Add metrics to the example app's store (#636)
  • (code) Make peer crate no_std compatible (#786)
  • (code) Refactor parameters of spawn_mempool_actor in starknet host
  • (code) Wrap Vec<Validator> into Arc in ValidatorSet struct (#795)
  • (code) Check proposal validity in the example app (#793)
  • (code) Add extensions to the test app's Value type (#799)
  • (code/app/starknet) Include existing transactions when reaping the mempool not just the ones generated on the fly (#796)
  • (code) Vote extensions v2 (#775)
  • (code/app/starknet) Adapt Starknet app to latest P2P protos (#819)
  • (code/test) Add channel-based test app for integration tests (#747)
  • (code) Add Makefile to fix lints and test in local (#751)
  • (code/vote_sync) Rebroadcast votes at prevote or precommit timeout interval (#828)
  • (code/test) Generalize the test framework to make it work with any app (#836)
  • (code/engine) Buffer consensus messages during startup and recovery (#860)
  • (code/example) Simulate processing time in example app
  • (code/core-consensus) Add vote_sync_mode option to consensus parameters (#870)
  • (code) Allow applications to define their own configuration type (#872)
  • (code/wal) Add facilities for dumping the WAL entries (#903)
  • (code) Add polka certificates to VoteSync response (#859)
  • (code/network) Only enable the network behaviors which are actually required (#928)
  • (code/starknet) Add mempool load generator to the Starknet test app (#821)
  • (code/app) Change the log level dynamically when consensus enters round > 0 (#913)
  • (code/test) Middleware for testing (#948)
  • (code/engine) Store proposed values in WAL (#896)

πŸ› Bug Fixes

  • (code/core-state-machine) Remove unused PrecommitValue from Input (#797)
  • (code/core-consensus) Break out of loop instead of returning in process! macro (#816)
  • (code/core-consensus) Verify vote extension on precommits (#820)
  • (code/app) Fix bug in test app and example app where proposal parts were not processed in order of sequence number (#851)
  • (code/core-consensus) Only cancel propose timeout on a step change (#862)
  • (code/core-consensus) Prevent nodes from broadcasting equivocating votes (#864)
  • (code/example) Fix path to example apps store db
  • (code/network) Notify new subscribers of listen addresses and connected peers (#876)
  • (code/engine) Use custom version of OutputPort with configurable capacity (#878)
  • (code/discovery) Simplified disabled discovery + reduced logs verbosity (#892)
  • (code/engine) Ensure the height in the tracing span matches the height we are about to start (#890)
  • (code) Fix various sync-related bugs seen in testnet (#910)
  • (code) Add driver tests for l30 and l32 of the algorithm when the old polka vote arrives last (#916)
  • (code/core-consensus) Only persist votes in the WAL if they have not yet been seen (#902)
  • (code) Full nodes send empty commit certificates when deciding (#920)
  • (code) Remove transport argument in p2p config (#938)
  • (code) Handle multiple commits for same height (#921)
  • (code/network) Support both quic and quic-v1 protocol specifiers in multiaddr (#958)

πŸ“„ Documentation

  • (docs) ADR 003 - Propagation of Proposed Values (#884)
  • (docs) ADR 004 - Coroutine-Based Effect System for Consensus (#931)

0.0.1

December 19, 2024

πŸ“– Release notes

See RELEASE_NOTES.md for the release notes.

⚠️ Breaking changes

See BREAKING_CHANGES.md for the list of breaking changes.

πŸ§ͺ Specifications

  • (spec/votekeeper) Fix the VoteKeeper spec to account for skip threshold from higher round (#74)
  • (spec) Clean up, addresses all points in issue 151 (#154)
  • (spec) Asynchronous flow for GetValue (#159)
  • (spec) WIP: Draft of Quint reset protocol (#174)
  • (spec) Reset protocol English specification (#171)
  • (spec) Message handling section of english spec revisited (#162)
  • (spec) Proofs scheduling protocol, English specification (#241)
  • (spec) Proofs spec (#198)
  • (spec) Add properties, and write report on the findings (#189)
  • (spec) A problematic run (#101)
  • (spec) Added equivocation recording (#292)
  • (spec) Proofs scheduling, critical scenario (#298)
  • (spec) Overriding an existing set of Precommits in the vote keeper with a new Commit. (#293)
  • (spec) Maintain weights in vote keeper (#321)
  • (spec) Handle equivocation liveness issues by introducing certificates (#364)
  • (spec) Description of misbehavior and what can be handled now (#388)
  • (spec) Reorganization, consensus general overview (#386)
  • (spec) Accountable Tendermint (#404)
  • (spec) Consensus spec, from paper, general overview (#389)
  • (spec/consensus) Consensus overview.md document (#511)
  • (spec) Blocksync (#462)
  • (spec) English specification for the sync protocol (#548)
  • (spec) Refactor blocksync into two statemachines (#564)
  • (spec) Add timeout to Blocksync (#568)
  • (spec) Blocksync request/response for block and commit (#575)
  • (spec) Mocked consensus for blocksync patched (#590)
  • (spec/quint) Blocksync files and modules nomenclature (#592)
  • (spec) Blocksync witnesses and invariants (#594)
  • (spec) Rewrite of English blocksync spec (#589)
  • (spec) New init action to find witnesses in blocksync with consensus model (#601)
  • (spec) Quint tests for blocksync protocol (#615)
  • (spec) New structure for the specs/ directory (#602)
  • (spec) Rename BlockSync to ValueSync (#698)

πŸš€ Features

  • (code) Propagate height to GetValue recipient and split GetValueAndScheduleTimeout into two outputs (#149)
  • (code) Actor-based node implementation (#167)
  • (code) Remove dependency on ProposerSelector from consensus (#179)
  • (code) Add a CAL actor with GetValue, GetProposer and GetValidatorSet (#180)
  • (code) Synchronized start of consensus when all validators/nodes connected (#190)
  • (code) Initial configuration options (#183)
  • (code) Test implementations for mempool, tx batch streaming and value builder (#191)
  • (code) Add ValueBuilder test params to the config (#206)
  • (code) Increase timeouts by the configured delta when they elapse (#207)
  • (code) Add max_block_size config option (#210)
  • (code) Starknet host integration (#236)
  • (code) Extract consensus actor logic into a library devoid of side-effects (#274)
  • (code) Add equivocation detection to the VoteKeeper (#311)
  • (code) Integrate with starknet-p2p-specs protos (#286)
  • (code) Remove built-in protos in order to better integrate with Starknet protos (#326)
  • (code) Use Starknet hashing and signing schemes (#295)
  • (code) Implement proposal parts streaming (#341)
  • (code) Use the jemalloc memory allocator on Linux (#372)
  • (code) Add support for libp2p-broadcast as an alternative to GossipSub (#354)
  • (code) Add support for TCP transport with libp2p (#382)
  • (code) Add test for pubsub protocols with different message sizes (#360)
  • (code) Start next height on demand from the host instead of implicitly (#385)
  • (code) Keep signed votes and proposals in their respective keepers (#424)
  • (code) Add consensus traces (#351)
  • (code/metrics) Add malachite_consensus_consensus_time metric for tracking consensus time without proposal building time (#447)
  • (code/discovery) Basic discovery protocol (#402)
  • (code) Add select_proposer method to Context trait (#471)
  • (code) Vote Extensions (#456)
  • (code) BlockSync MVP (#440)
  • (code/blocksync) Add support for large blocks to BlockSync (#508)
  • (code) Add persistence to the block store (#514)
  • (code) Restream values for which we have seen a polka in a previous round (#506)
  • (code) Add consensus modes to support implicit and explicit only proposals (#522)
  • (code) Build Rust documentation on CI and push it to GitHub pages (#538)
  • (code) Verify commit certificate (#532)
  • (code) Add signature to vote extensions (#537)
  • (code/blocksync) On invalid commit certificate, request block from a different peer (#541)
  • (code/metrics) Add moniker label with node's moniker to all metrics (#539)
  • (code) Start consensus at H+1 where H is the height of the latest committed block (#587)
  • (code/app) Introduce channel-based interface for building applications (#603)
  • (code/wal) Add Write-Ahead Log implementation (#608)
  • (code/wal) Persist and replay timeouts and consensus messages using the WAL (#613)
  • (code) Vote synchronization when consensus is stuck in Prevote or Precommit (#617)
  • (code/wal) Replay proposed values from the store instead of from the WAL (#633)
  • (code/discovery) Kademlia-based discovery (#525)

πŸ› Bug Fixes

  • (code) Create overflow protection in vote calculations (removed FIXMEs) (#193)
  • (code) Do not cancel prevote/precommit timeout when threshold is reached (#208)
  • (code) Fix memory leak in ValueBuilder (#230)
  • (code) Use more reasonable history_gossip and history_length config params for GossipSub (#261)
  • (code) Update to libp2p-tls v0.4.1+ (#288)
  • (code/consensus) Various fixes for consensus (#330)
  • (code/mempool) Fix bug where mempool would not gossip any txes when txs_per_part < gossip_batch_size (#349)
  • (code/driver) Fix duplicated work by not storing the proposal prior to passing it as input to the driver (#475)
  • (code/discovery) Improve discovery performance (#483)
  • (code/discovery) Changed logging condition (#512)
  • (code) Fix restream bug surfaced by ProposalFin signature (#540)
  • (code/blocksync) Broadcast BlockSync status instead of gossiping it (#611)
  • (code) Fix build on main (#631)
  • (code/network) Fix flaky tests and outgoing port re-use issue (#647)
  • (code/wal) Fix WAL tests (#653)
  • (code) Fix logging with new crate names (#700)
  • (code) Fix serialization of ephemeral_connection_timeout config option (#708)
  • (code) Remove unused dependency on the test mempool

πŸ“„ Documentation

  • (docs) Fix references in spec doc (#455)
  • (docs) Updates to testing/local.md docs (#454)
  • (docs) Evidence blog post (#544)