* 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>
* 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>