minimal message and safe state creation and maintenance based on https://github.com/ethereum/research/blob/master/papers/CasperTFG/CasperTFG.pdf
- keep it simple stupid, such that we focus only on consensus
- nodes should agree on the outcome of a voting (this is just an example estimate, but all the rest of the protocol is generic)
- perform only one full round until result converges or it explodes
- understand when safety of a message is achieved, and the vote is over
- assume no sybil attack
- no stake, no proof of work (maybe small one to publish msgs), just signatures of the known voters’ set
- voter = sender = validator = node
- as of now a vote is a msg with no justification and a vote_counter that, when combined with other votes, will increment the vote_counter by 1.
- any voters relay vote counting msgs which are justified by all votes they’ve seen, and other vote counting msgs from other voters
- any voters count all votes
- H(msg) -> Future<pointer> // make it lazy, such that msgs get loaded only when needed
- use quickcheck as a pseudo-theorem prover to prove properties of the implementation (and not of the protocol per se)