# Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ### [0.7.3](https://github.com/maidsafe/parsec/compare/v0.7.2...v0.7.3) (2020-11-23) ### [0.7.2](https://github.com/maidsafe/parsec/compare/v0.7.1...v0.7.2) (2020-09-22) ### [0.7.1](https://github.com/maidsafe/parsec/compare/v0.7.0...v0.7.1) (2020-06-02) * Remove maidsafe_utilities dependency ### [0.7.0](https://github.com/maidsafe/parsec/compare/0.6.0...v0.7.0) (2020-05-12) * Migrate CI/CD to GitHub actions * Update maidsafe_utilities dependency to 0.19.0 ### [0.6.0](https://github.com/maidsafe/parsec/compare/0.5.0...0.6.0) (2020-02-26) Note that as this is such a large comparison we are only showing the most recent 250 commits, see the [GitHub compare here](https://github.com/maidsafe/parsec/compare/0.5.0...0.6.0) for further details. * chore/all: revert spam-handling code * Merge pull request #253 from Fraser999/revert_spam_handling … * test/parsec: replay final parsec state for benchmark: no fake request … * Merge pull request #254 from jeanphilippeD/dump_full_parsec_run … * fix/integration_tests: avoid adding peers too aggressively … * Merge pull request #250 from Fraser999/test_fix … * fix/parsec: avoid accusing same accomplice twice * Merge pull request #255 from maqi/MAID-3286_avoid_accusing_same_accom… … * docs/readme:update travis CI url * Merge pull request #258 from calumcraig/update_readme … * fix/parsec: create own events only when we become voter … * chore/parsec: improve PeerList debug output * Merge pull request #257 from madadam/lazy-initial-event-creation … * test/parsec: add ConsensusMode::Single benchmarks that routing is usi… … * chore/parsec: update itertools to 0.8.0 * test/parsec: add benchmarks for 1024 events in single consensus mode. … * Merge pull request #260 from jeanphilippeD/add_1024_and_single_consen… … * feat/parsec: add Requesting sync event variant * chore/parsec: update dot files * Merge pull request #259 from Fraser999/MAID-3282-initial … * fix/bench: workaround criterion bug … * Merge pull request #263 from pierrechevalier83/master … * feat/parsec: consensus multiple payloads at the same time * fix/parsec: fix TooFewSignatures error in integration tests * feat/parsec: implement block grouping … * refactor/parsec: code cleanup * refactor/parsec: process consensused payloads in bulk … * chore/parsec: mark payloads as consensused after create_blocks * fix/bench: regenerate benchmark dot files … * Merge pull request #252 from madadam/multi-consensus … * perf/parsec: 70% speed up in is_interesting_payload … * Merge pull request #267 from jeanphilippeD/fix_perf_is_interesting … * fix/parsec: avoid accusing Fork duplicatedly * Merge pull request #261 from maqi/MAID-3285_avoid_accuse_fork_duplica… … * perf/parsec: fix is_already_interesting_content (30% + with more events) … * perf/parsec: Filter event before expensive vote resolve … * perf/parsec: optimise unconsensused_events lookup observationkey 50-70% … * Merge pull request #268 from jeanphilippeD/meta_election_perf … * fix/parsec: avoid invalid accomplice accusation * Merge pull request #262 from maqi/MAID-3287_avoid_invalid_accomplice_… … * chore/parsec: remove InvalidGossipCreator and test * Merge pull request #264 from Fraser999/remove_invalid_gossip_creator … * chore/codeowners:added codeowner file … * Merge pull request #269 from calumcraig/codeowners … * perf/parsec: Consensus all interesting content for decided meta events … * Merge pull request #270 from jeanphilippeD/consensus_all_interesting_… … * chore/parsec: convert parsec to a workspace with dot_gen as a member … * chore/travis: remove osx clippy … * Merge pull request #272 from jeanphilippeD/fix_clippy_and_travis … * test/parsec: add benchmarks for 8192 events (8 time denser than 1024) … * perf/parsec: process_event for sync event only (Up to 89%) … * fix/parsec: use efficient look up for consensused key … * Merge pull request #273 from jeanphilippeD/skip_non_sync_events_for_c… … * tests/parsec: create an improved Debug implementation for … * perf/dot_gen: only compute consensus on the Parsec instance of interest … * perf/parsec: improve dump_graph performance for 65536 events … * perf/dot_parser: improve performance to allow 65536 events … * test/parsec: add benchmark for 65536 events for 4, 8, 16 and 32 nodes … * perf/parsec: avoid processsing all graph in create_blocks (up to 20x) … * Merge pull request #248 from fizyk20/consensus_error_debug … * Merge pull request #274 from jeanphilippeD/finalise_parsec_benchmarks … * fix/dev_utils: disable the correct peer consensus … * Merge pull request #275 from jeanphilippeD/fix_generation … * feat/test: provide malicious peer for tests * Merge pull request #271 from Fraser999/malicious_test_peer … * chore/tests: don't use --verbose in scripts by default * Merge pull request #276 from Fraser999/ci-scripts … * Add test exposing a bug in our_unpolled_observations * Fix bug in our_unpolled_observations * Refactor the code in some places * Add test helpers … * Merge pull request #277 from madadam/maid-3293-fix-our-unpolled-obser… … * Fix test compilation with features=malice-detection * Merge pull request #278 from madadam/fix-test-with-malice-detection … * Add test for invalid self-parent * Merge pull request #279 from madadam/maid-3081-test-invalid-self-parent … * Add test for invalid other-parent * Merge pull request #280 from madadam/maid-3084-test-invalid-other-parent … * Fix interesting event detection in presence of forks * Merge pull request #282 from madadam/maid-3296-interesting-event-change … * chore/tests: fix Record smoke tests * feat/parsec: add malice protection for Requesting type * chore/parsec: don't add invalid sync events to graph * Merge pull request #281 from Fraser999/MAID-3282 … * fix/parsec: don't create sync event if message invalid * Merge pull request #283 from Fraser999/MAID-3298 … * fix/peer_list: set last_gossiped_event correctly … * chore/parsec: rename variables to better infer type * chore/all: fix typos * chore/docs: update docs and fix broken link * chore/dot_parser: give better failure message … * chore/all: reformat import blocks … * chore/docs: create docs folder and add 'sees' doc * Merge pull request #286 from Fraser999/various … * Fix coin bit source * Merge pull request #285 from madadam/maid-3284-fix-coin-bit-source … * Make forking_peers calculation implicit * Add test for sees * Fix sees * Modify dot parser and dumper to support forks * Improve find_event_by_short_name … * Change the `sees` test to be dot based * Add more descriptive comments * Add test for iteration order of PeerIndexMap … * Expose Graph::get_by_hash to non-test code * Simplify IndexSet * Add unit tests for fork detection internals * Merge pull request #284 from madadam/maid-2939-test-sees … * fix/dot_gen: fix benchmark generation issue with ignored peers. * test/parsec: regenerate benchmarks and clean up bench consensus mode … * Merge pull request #287 from jeanphilippeD/fix_benchmarks … * Fix coin value search … * Merge pull request #289 from madadam/fix-coin-value … * Calculate coin tosses after calculating meta-votes * Make the MetaVote API more explicit * Refactor MetaVote * Merge pull request #288 from madadam/maid-3134-meta-votes-before-coin… … * Fix meta-votes calculation in the presence of fork * Merge pull request #291 from madadam/fix-consensus-with-fork-failure … * Add support for single node sections * Merge pull request #290 from madadam/maid-3300-single-node … * Account for accusations when computing expected blocks number * Accept events from removed peers that are not yet aware of the removal * Refactor Peer state * Do not resurect removed peers when receiving events from them * Expand comments to be more descriptive * Merge pull request #292 from madadam/maid-3301-fix-test-consensus-wit… … * feat/dot_dump: dump malice with event's short_name * feat/dot_parser: parse malice with event short name * Merge pull request #293 from maqi/MAID-3288_test_avoid_double_accompl… … * chore/parsec: create accusations before sync event * chore/parsec: update dot parser to better handle forks * chore/parsec: update tests to accommodate recent changes * Merge pull request #294 from Fraser999/accusations_order … * test/malice: avoid duplicate accomplice accusation * Merge pull request #296 from maidsafe/MAID-3288_test_avoid_double_acc… … * test/parsec: add tests for accusations of forks * fix/parsec: fix bug causing false accomplice accusations … * Merge pull request #295 from Fraser999/MAID-3290 … * chore/parsec: update API poll() method … * Merge pull request #297 from Fraser999/poll … * chore/all: fix new clippy warnings * Merge pull request #299 from Fraser999/clippy … * perf/malice: Speed up duplicate_vote detection … * Merge pull request #298 from pierrechevalier83/master … * test/parsec: test new Requesting/Request/Response pattern * fix/parsec: sync_event is invalid when missing other_parent * Merge pull request #300 from maqi/MAID-3299_test_requesting-req-res_p… … * chore/test: remove macro * Merge pull request #301 from Fraser999/macro … * Update dependencies … * Merge pull request #304 from madadam/update-deps … * chore/observation: expose `is_opaque` publicly … * Merge pull request #305 from pierrechevalier83/expose_is_opaque … * feat/parsec: change has_unconsensused_observation to has_unpolled_obs… … * Merge pull request #306 from madadam/has_unpolled_observations … * feat/meta_voting: enforce non-zero total peer count in MetaVoteCounts * test/meta_voting: add some unit tests for MetaVoteCounts * Merge pull request #307 from madadam/meta-vote-counts-improvements … * feat/parsec: implement temporary fake common coin … * Merge pull request #310 from madadam/fake-coin … * refactor/meta_vote: a non-voter has no meta_vote … * refactor/meta_vote: separate concerns * test/meta_vote_values: unit tests for MetaVoteValues * test/meta_vote: unit tests for meta_vote * Merge pull request #308 from maqi/create_unit_tests_ … * feat/parsec: add related_info to Observation::Genesis … * Merge pull request #311 from madadam/genesis-related-info … * example/fix: Don't ignore `remove_peers` parameter … * example/fix: Disallow peer removal under 3 peers … * Merge pull request #314 from pierrechevalier83/fix-312-and-313 … * test/bench: regenerate benchmarks .dot files * chores/travis: verify benchmarks can still run in travis … * test/mock: avoid using rand::Rng safe_crypto interface. … * Merge pull request #315 from jeanphilippeD/remove_dep_safe_rand … * feat/key_gen: copy files from github.com/poanetwork/hbbft for DKG … * chore/deps: update dependencies * feat/key_gen: build and test key_gen code with fake encrypt * feat/key_gen: use encrypt and decrypt with mock … * test/key_gen: use Environment to have reproductible Rng. * feat/key_gen: remove dependency on bincode for serialisation * Merge pull request #316 from m-cat/master … * Merge pull request #317 from jeanphilippeD/dkg_bring_up_integrate_poa … * refactor/parsec: simplify adding accusations and sync events. … * Merge pull request #318 from jeanphilippeD/small_clean_up … * refactor/key_gen: add DkgResult and support dyn Rng … * feat/parsec: add initial DKG to Parsec gossip (for test only) … * feat/parsec: initiate DKG using a consensused event … * Merge pull request #319 from jeanphilippeD/dkg_in_gossip … * fix/parsec: remove pre-condition on reaching consensus on StartDkg … * feat/parsec: take Box on construction to support DKG. … * feat/parsec: dump-graphs output needed info and can replay with DKG … * Merge pull request #321 from jeanphilippeD/dkg_start_with_consensus … * chore/codeowners: update to new github group * Merge pull request #329 from S-Coyle/codeowners_update … * feat/parsec: Handle and test DKG with some participants … * refactor/parsec: Add DkgResultWrapper to provide the needed traits … * Merge pull request #328 from jeanphilippeD/replay_dkg … * refactor/parsec: add peers and use normal vote for DKG * Merge pull request #330 from jeanphilippeD/allow_split_dkg … * refactor/parsec: simplify handle_add_peer … * feat/parsec: support non voters DKG … * test/parsec: update dkg test with non members. * test/parsec: update test consensus check to include pending peers … * test/parsec: add DKG test covering node ageing routing flow … * refactor/test: clarify dkg tests * Merge pull request #331 from jeanphilippeD/try_gossip_dkg_non_voters … * test/parsec: minimally cover add/remove/opaque after DKG … * Merge pull request #334 from jeanphilippeD/cover_consensus_after_dkg … * feat/parsec: dump and reload KeyGen … * Merge pull request #335 from jeanphilippeD/dump_reload_dkg … * fix/dot_gen: used fixed seed and allow different seed to run. … * test/fix: update all .dot files using commit before BLS/DKG work start … * test/parsec: avoid breaking seed used to generate testcase … * fix/parsec: generate only Vote or DKG but not both … * fix/parsec: fix seeds when we add new peers. … * test/fix: update all .dot files … * test/fix: remove unused .dot files … * Merge pull request #336 from jeanphilippeD/update_fix_dot_files_gen … * fix/parsec: bare_trait_objects and other 1.37.0 fixes * Merge pull request #337 from S-Coyle/fix_build_errors … * test/key_gen: serialise signatures the same with any share used … * Merge pull request #338 from jeanphilippeD/serialise_sig_same … * feat\parsec: refactor tie-breaking rules when compute consensus … * fix/parsec-help: consistent ordering … * chore/smoke_test: regenerate dot file * Merge pull request #339 from maqi/patches … * chore/deps: update dependencies … * Merge pull request #342 from nbaksalyar/update-deps … * chore/all: fix unused warnings introduced in rustc 1.38 * clippy/dot_graph: clippy::fix inherent_to_string * Merge pull request #343 from octol/fix-unused … * fix/parsec: handle DKG with a single voter … * Merge pull request #347 from jeanphilippeD/fix_dkg_with_single_voter … * Remove safe_crypto dependency … * Merge pull request #351 from madadam/remove-safe-crypto … * fix/parsec: clippy for rust 1.40 … * fix/parsec: we still have work if a DKG is active … * Merge pull request #352 from jeanphilippeD/fix_clippy_busy_dkg … * Upgrade rand to the latest version * Regenerate a dot file to fix test failure * Simplify the code slightly * Merge pull request #353 from madadam/update-rand … * Add missing Hash impl to Request, Response * Merge pull request #354 from madadam/hash … * Fix new clippy warnings + use semver requirement for lazy_static * Merge pull request #355 from madadam/cleanup … * Optimize gossip creation * Fix unused warnings * Merge pull request #356 from madadam/optimize-create-gossip ### [0.5.0] * Initial implementation of PARSEC (Protocol for Asynchronous, Reliable, Secure and Efficient Consensus) * Implement consensus for a static network * Implement example for manually playing with number of peers, number of events etc. * Generate dot files with feature "dump-graphs" ### [0.4.0] * This crate used to refer to the project: [Specs](https://crates.io/crates/specs/)