* Start implementing TreeOverlay
* Implement tree overlay
* Add basic tests
* Fixes
* Fill leaves with extra nodes one by one
* Handle missing optional value
* Parenting fixes
* Parenting tests
* Remove unnecesary number of committes
* Fill from root committee
* Adapt tests to root filling
* Root parent is None
* Typo: committee_idx
* Fix leader supermajority threshold
* Fix type signature on building committee data
* Use plain carnot tree for carnot tree tests
* Add tree implementation explanation
* Fmt
* Use blake2b
* Fix idx signature on membership committees
* Check on committee child existence
* Random Beacon revision
This is a proposed revision of the random beacon specification.
First of all it fixes a few little mistakes in the signing
process:
* Use BasicSchemeMPL instead of PoPSchemeMPL since we don't use
Proof of Possession.
* Hashing the values prior to the call to BasicSchemeMPL.sing()
is not necessary. This step has been removed.
In addition, all data inside the random beacon state that
anyone willing to verify must know anyway has been removed.
In the current version this includes the 'context' and the public
key of the signer. The verifier has to independently check that
those values have been correctly obtained anyway, so there's no
need to include them in the state that is passed around.
Lastly, the beacon context view has been changed from using a
string encoding to a little endian variable-length encoding and
is now tied to qc.view instead of current_view of the processing
node.
* actually use the version const
* 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>