* use coarse grained events
* Add timeout handler
* Added runnable carnot implementation bare bones
* Removed rusty_results dependency
* Make easy tests
* Python impl tests (#9)
* Make easy tests
* Made sure an old aggregatedQC is not used.
* Test when a block has an old qc
* adding highest voted view so that a node doesn't vote twice.
* adding highest voted view so that a node doesn't vote twice.
* Tests for voting
* Tests for voting
* Tests for voting
* Tests for voting
* Update test_happy_path.py
---------
Co-authored-by: mjalalzai <33738574+MForensic@users.noreply.github.com>
* Fix commit grandparent
* Add tests assertions
* Added base vote test
* Tests for updating latest_committed_view and high_qc.
* Vote tests
* Vote tests
* Get max timeout by highQC
* Received Votes tests
* Receive timeout msgs
* Receive timeout msgs
* Remove local files
* Stylish, adjustments and fixes
* Start unhappy path and update tests (#10)
* Tests for updating latest_committed_view and high_qc.
* Vote tests
* Vote tests
* Get max timeout by highQC
* Received Votes tests
* Receive timeout msgs
* Receive timeout msgs
* Remove local files
* Stylish, adjustments and fixes
---------
Co-authored-by: mjalalzai <33738574+MForensic@users.noreply.github.com>
* Update build timeout qc test
* Added block content
* Fix tests with block content and comments
* Fix all timeouts are from the same view in timeout call
* Add check for double view seen different block
* Store just highest qc and aggregated views in AggregatedQc,
* Fix timeout preconditions
* Happy + Unhappy path implementation and tests (#15)
* Implement timeouts unhappy path
* views are sequential or consecutive.
* Make sure view changes are incrementally done in ascending order.
* Make sure view changes are incrementally done in ascending order.
* Make sure view changes are incrementally done in ascending order.
* Cleanup
* refactor
* Overlay based happy tests (#11)
* Cleanup
* Leaf committee member vote.
* Leaf committee member vote, test.
* Leaf committee member vote, test.
* Description
* Description
* Description-refactoring
* Cleanup
* Fix leaf votes test
* Clean overlay
* Test single committee advances
* Remove unhappy path test file
* Update carnot description
* Refactor local_timeout for NewView
* Fix unhappy path conditions and added broadcasting
* Unhappy path tests description
* Commit all grandparents of a block from latest_committed view
* Cleanup docs
* Add unhappy path test vector
* Remove block content
---------
Co-authored-by: mjalalzai <33738574+MForensic@users.noreply.github.com>
* Extract MockCarnot in happy path tests
* Add is_safe_to_timeout checks on unhappy path methods
* Fix happy math mockoverlay missing methods
* Fix unhappy path double increments
Fill missing qc building implementations
* Implement first case of unhappy path with simple overlay
Missing final assertions
* Unhappy path base test assertions (#14)
* Unhappy path tests replacing timeout msgs with NewView. Also revising the conditions to enter into the unhappy path.
* Unhappy path tests assertions.
* Fix assertions on test
* Cleanup
---------
Co-authored-by: mjalalzai <33738574+MForensic@users.noreply.github.com>
* Remove redundant code and fix commit parent (#16)
* Fix unhappy path tests (#17)
* fix test
* get highest qc from new view votes
* Add missing assertion
* Cleanup approve new view function
* Remove calls to safe_timeout invariant
* Fix approve new view
* Make unhappy test continuously timeout
* Increment current view on reciving a new qc
Refactor reset last timeout qc
* Fix happy path current view after receiving block qc
* Complete mix succeed fails unhappy test
* Refactor timeout_high_qc test to use fail method
* Add block assertions on mixed unhappy test
* Simplify approve block
* add spec tests to ci
* Extract implicit information from safe blocks (#19)
* extract implicit information from safe blocks
* fix test
* Refactor last_view_timeout_qc and update calls on unhappy path
* Update view upon reception of timeout qc (#20)
* update view upon reception of timeout qc
* only increase highest_voted_view
* fix comments
* [WIP] Use events instead of send/broadcast methods (#21)
* Remove send and broadcast, use events
* Adjust tests to use events
* Adjust unhappy path tests to use events
* Fix missing wrongly optional return types
* Extrac common assert on propose_block
* add informative comments and remove panic (#22)
* add disclaimer (#23)
* fix approve_new_view preconditions
---------
Co-authored-by: mjalalzai <33738574+MForensic@users.noreply.github.com>
Co-authored-by: Giacomo Pasini <g.pasini98@gmail.com>
Co-authored-by: Giacomo Pasini <Zeegomo@users.noreply.github.com>
---------
Co-authored-by: Giacomo Pasini <g.pasini98@gmail.com>
Co-authored-by: mjalalzai <33738574+MForensic@users.noreply.github.com>
Co-authored-by: Giacomo Pasini <Zeegomo@users.noreply.github.com>