* Pick correct round from prepared certificate on building block
* Fix checking proposal for non-zero round
* Revert validating RoundChange messages in proposal
* Add unit tests for ValidateProposal
* Correct test name
* Remove duplicated test
Fix lint error
HasQuorum has been moved from backend to consensus
Co-authored-by: stana-ethernal <stana.miric@ethernal.tech>
Co-authored-by: Igor Crevar <crewce@gmail.com>
* Go-ibft ignores some future messages
* Additional test case (same height, lower message round)
* Test for greater height and lower round added
---------
Co-authored-by: Stefan Negovanović <stefan@ethernal.tech>
* Run messaging handlings in parallel
* Fix comments
* Fix stuck issue due to missing reset of commitSent
* Fix lint error
* Correct comments
* Add deep copy for value in state which is reference type value
* Fix lint error
* Move logging to proper position
* Move logic for quorum check to the backend
* Checking quorum with abstracted HasQuorum
* Refactor MaxFaultyNodes func
* Remove MinNumMessages usage
* Remove backend Quorum and move test to use HasQuorumFn
* Remove MaxFaulty, is not being used at all
* Remove parallel execution for rapid tests
* Resolve data races in tests
* Add race test to workflow
* Resolve faulty path in test dir
* Remove double context cancels
* Add newline to the workflow file
* Empty branch
* Simplify loop conditional
* Add quorum optimal helper to test
* Remove newlines
* Expand abbreviation:
* Change SubscriptionDetails field
* add common proposal validation method
* Change variable name in log
* Change variable name in log
* Add syntax sugar for transport multicasts
* Add simple start method for state
* Add log for invalid proposal
* Change naming of routine method
* Simplify block preprepare acceptance
* Add explainer for loop iteration
* Add to barrier before starting the routine
* Have the barrier increase right before the go routines
* Make the conditional for subscription pushes more clear
* Fix conditional for higher rounds
* Add base structure for the more complex consensus tests
* Rearrange code chunks
* Add the first successful cluster test
* Make sure the cluster termination is more accurate
* Clean up TestConsensus_ValidFlow
* Add further docs to helper methods
* Add additional tests for round change flow
* Fix failing test
* define core structures
* write first test
* add test
* fix test
* add test
* fix test/refactor runRound
* add tests
* Resolve some linting errors
* Make mock structures standardized
* fix test/implement block validation/add mock
* add test
* add test
* remove redundant multicast
* Merge
* refactor runNewRound
* refactor tests
* add new error/refactor test
* refactor test
* add todo
* add error/refactor test
* refactor test
* refactor test
* Simplify Messages (#6)
* Add support for internal message structures
* Add linting fix
* Unexport helper methods
* Fix fetching semantics
* refactor test
* expand Messages interface
* add test
* implement runPrepare()
* add todo
* add test
* implement runCommit()
* add test
* add test
* expand Backend -> InsertBlock
* add seals field in state
* fix mock
* add test/implement runFin
* simplify runRound
* implement runSequence/round timer
* refactor runNewRound
* do todo
* fix tests
* simplify runPrepare
* simplify runCommit
* Add support for fetching a chunk of RC messages
* add watForNewRoundStart
* stashed: AddMessage
* Add support for event-based triggers (#7)
* Add base for the event handler code
* Wrap up logic, remove now obsolete logic
* Expand logic
* Make the state object thread safe
* Fix up minor message methods
* Clean up NewRound_Proposer tests
* Clean up NewRound_Validator tests
* Clean up Prepare tests
* Clean up Commit tests
* Add support for message acceptability
* Add tests for message verification
* Add test for eventPossible
* Add support for preprepare message validation
* Add support for prepare message validation tests
* Add support for commit and round change message validation tests
* Add support for the AddMessage tests
* Add support for message handler (new message) tests
* Add tests for the message handler (proposal received)
* Simplify messages
* Add additional comments
* Add additional in-code docs
* Add additional sanity checks
* Resolve some linting errors
* Add support of configurable quorum
Co-authored-by: dbrajovic <dbrajovic3@gmail.com>
* define core structures
* write first test
* add test
* fix test
* add test
* fix test/refactor runRound
* add tests
* Resolve some linting errors
* Make mock structures standardized
* fix test/implement block validation/add mock
* add test
* add test
* remove redundant multicast
* Merge
* refactor runNewRound
* refactor tests
* add new error/refactor test
* refactor test
* add todo
* add error/refactor test
* refactor test
* refactor test
* Simplify Messages (#6)
* Add support for internal message structures
* Add linting fix
* Unexport helper methods
* Fix fetching semantics
* refactor test
* expand Messages interface
* add test
* implement runPrepare()
* add todo
* add test
* implement runCommit()
* add test
* add test
* expand Backend -> InsertBlock
* add seals field in state
* fix mock
* add test/implement runFin
* simplify runRound
* implement runSequence/round timer
* refactor runNewRound
* do todo
* fix tests
* simplify runPrepare
* simplify runCommit
* Add support for fetching a chunk of RC messages
* add watForNewRoundStart
* stashed: AddMessage
* Add support for event-based triggers (#7)
* Add base for the event handler code
* Wrap up logic, remove now obsolete logic
* Expand logic
* Make the state object thread safe
* Fix up minor message methods
* Clean up NewRound_Proposer tests
* Clean up NewRound_Validator tests
* Clean up Prepare tests
* Clean up Commit tests
* Add support for message acceptability
* Add tests for message verification
* Add test for eventPossible
* Add support for preprepare message validation
* Add support for prepare message validation tests
* Add support for commit and round change message validation tests
* Add support for the AddMessage tests
* Add support for message handler (new message) tests
* Add tests for the message handler (proposal received)
* Simplify messages
* Add additional comments
* Add additional in-code docs
* Add additional sanity checks
* Resolve some linting errors
Co-authored-by: Milos Zivkovic <milos.zivkovic@mvpworkshop.co>