* [slash] Remove dead interface, associated piping
* [slash] Expand out structs
* [consensus] Write to a chan when find a case of double-signing, remove dead code
* [slash] Broadcast the noticing of a double signing
* [rawdb] CRUD for slashing candidates
* [slashing][node][proto] Broadcast the slash record after receive from consensus, handle received proto message, persist in off-chain db while pending
* [slash][node][propose-block] Add verified slashes proposed into the header in block proposal
* [slash][shard] Factor out external validator as method on shard state, add double-signature field
* [slash][engine] Apply slash, name boolean expression for sorts, use stable sort
* [slash] Abstract Ballot results so keep track of both pre and post double sign event
* [slash] Fix type errors on test code
* [slash] Read from correct rawdb
* [slash] Add epoch based guards in CRUD of slashing
* [slash] Write to correct cache for slashing candidates
* [shard] Use explicit named type of BLS Signature, use convention
* [slash] Fix mistake done in refactor, improper header used. Factor out fromSlice to set
* [slash][node] Restore newblock to master, try again minimial change
* [cx-receipts] Break up one-liner, use SliceStable, not Slice
* [network] Finish refactor that makes network message headers once
* [network] Simplify creation further of headers write
* [slash] Adjust data structure of slash after offline discussion with RJ, Chao
* [slash] Still did need signature of the double signature
* [consensus] Prepare message does not have block header
* [consensus] Soft reset three files to 968517d~1
* [consensus] Begin factor consensus network intended message out with prepare first
* [consensus] Factor out Prepared message
* [consensus] Factor out announce message creation
* [consensus] Committed Message, branch on verify sender key for clearer log
* [consensus] Committed Message Factor out
* [consensus] Do jenkins MVP of signatures adjustment
* [main][slash] Provide YAML config as webhook config for double sign event
* [consensus] Adjust signatures, whitespace, lessen GC pressure
* [consensus] Remove dead code
* [consensus] Factor out commit overloaded message, give commit payload override in construct
* [consensus] Fix travis tests
* [consensus] Provide block bytes in SubmitVote(quorum.Commit)
* [consensus] Factor out noisy sanity checks in BFT, move existing commit check earlier as was before
* [quorum] Adjust signatures in quorum
* [staking] Adjust after merge from master
* [consensus] Finish refactor of consensus
* [node] Fix import
* [consensus] Fix travis
* [consensus] Use origin/master copy of block, fix mistake of pointer to empty byte
* [consensus] Less verbose bools
* [consensus] Remove unused trailing mutation hook in message construct
* [consensus] Address some TODOs on err, comment out double sign
* [slashing] Add Slashing fields in header, only available from v3 onward
* [slashing] Add Banned field to validator struct
* [consensus] Remove dead code
* [node] Use named value for shardID of beaconchain
* [consensus] No need to memory thrash Buffer
* [slashing] Add slash record type, stub out BroadcastSlash
* [cmd] Bump 2019 -> 2020
* [votepower] Add ballot results structs
* [quorum][slash] Refactor quorum to accomdate extra data points needed for slashing
* [consensus] Begin refactor of consensus leader messages
* [consensus] Accomdate consensus for changed method signatures in quorum
* [project] Whitespace and helper function
* [block] More comments and logs for fields that do not make sense in earlier v version
* [slashing] More comments, field renames, tag Edgar TODO
* [quorum] Undo name change of Prepare to Announce, was mislead by other existing code
* Generate Decider for base case of 50/50 nodes
* Add Quorum Achieved tests for all Staker nodes & all nodes signed
* Add QuorumAchieved tests for all Harmony nodes signed
* Add RewardThreshold tests for all above cases
* [votepower] Allow negative diff, explicit check sum to one
* [votepower] Handle error value from compute in test
* [votepower] Change log as suggested in PR comment
* [votepower] Check sum of voting power is 1 only when have at least one staked validator
* [unit-testing] Add test for when there are 33 Harmony nodes
* Add test for Policy
* Add test for QuorumThreshold
* [quroum] Give diff to last staked voter, make sure sum to one
* [quorum] Fix indent for travis
* [quorum] Add interface method to check if I am in committee, implement in both concrete types
* [quorum] Only handle message when I am in committee
* [quorum][consensus] Let non-member still get onCommitted messages
* [staking][reward] Give out block reward for cross links
* [staking][reward] Wrap reward logic based on epoch
* [votepower] Factor out votepower b/c need to compute elsewhere as well
* [reward][votepower] Award beaconchain committee members their percent due
* [reward] Only reward non-harmony slots
* [reward] Factor out only signers by commit bitmap
* [reward][votepower] Fix leftover merge based naming changes, fix nil pointer map
* [reward] Handle cross link payment succicently
* [reward] Remove unnecessary helper
* [reward] Handle legacy case of one-node-one-vote block reward (pre-staking)
* [reward] Incorrect log of reward
* [reward] Adjust back to big.Int for legacy rewarding
* [reward] Add +1 for i nonce
* [reward] Abandon formula for nonce, sizes not reliable, easier to do explicit bucketing
* [reward] Remove Prints, fix mistake on using wrong header
* [quorum] Adjust log print out for IsQuorumAchieved
* [reward] Redundant check in code path that only runs in >= staking-epoch
* [reward] Fix mistake on staked block undoing effect of voting power-sharing
* [staking] Fix mistake on QurorumThreshold, change Harmony share to 68
* [staking] Use dec instead of big.Int for easier use
* [staking] Adjust one-vote quorum to account for usage of decimal
* [staking] Replace threshold with TwoThirdExplicit signer count, quorum threshold was becoming overloaded
* [staking] Count plain case of quorum achieved for one-node-one-vote
* [staking] Staked vote TODO
* [staking] Implement Quorum in staked case while taking into account hmySlots
* [staking] Reset hmySlotCount, stakedTotal on UpdateVotingPower
* [staking] Implement staked reward threshold
* [staking] Checkpoint - finish in morning
* [staking] Use percentages for voting power instead of derived values
* [staking] Check for mistakes on staked vote percentage, hold onto vote tally, produce in logs
* [reward] Factor out interface for block-reward
* [reward] Use factored out block rewarder which is actually same object as quorum.Decider
* [quorum] Fix type error because of silly internal/common.Address vs common.Address of ethereum
* [testing] Somehow this port being in tandem with previously used one fixes a build timing issue
* [quorum] Factor out single vote & provide for staked quorum vote
* [quorum] Pass ShardID to decider via cb
* [quorum] Move ShardIDProvider higher, fix nil mistake
* [quorum] ReadAllSignatures optimization
* [quorum] Safer way to read over map, then to slice
* [quorum] Address PR comments - naming changes
* [consensus] Factor out enums to core/values, begin factor out of consensus mechanisms
* [consensus] Make Mechanism explicit
* [consensus] Add ViewChange to QuorumPhase
* Update core/values/consensus.go
Co-Authored-By: Eugene Kim <ek@harmony.one>
* Update core/values/consensus.go
Co-Authored-By: Eugene Kim <ek@harmony.one>
* [mainnet-release] Address code comments
* [staking][consensus][project] Remove txgen, factor out consensus
* [consensus] Factor out PublicKeys
* [txgen] Bring back txgen
* [project] Undo prior consolidation of error values under core
* [consensus] Update tests using quorum decider
* [consensus] Fix overlooked resets during refactor
* [consensus] Fix wrong check of quorum phase
* [consensus] Address leftover TODO for prepare count
* [consensus] Simplfy reset switch
* [consensus] Fix mistake of wrong ReadSignature in ViewChange, need sender, not node PubKey