* [availability] Add function setting Validator as Inactive=true if meets threshold
* [availability] Set Validators that did not meet signing threshold to inactive
* [availability] Wrap Setting invalid validator only if new epoch forthcoming
* [availability] Return right error value
* [staking] Add Active field to EditValidator staking txn
* [availability] Add validator snapshot type, thread throughout codebase
* [availability] Adjust check availability on a per epoch basis
* [availability] Address PR comments, simplify collection of validators
* [availability] Fold ValidatorSnapshot into ValidatorWrapper
* [blockchain] Move update of validator list to after availability removal of validator
* [availability] Move availability signing counts to Wrapper, out of Stats
* [availability] Record epoch on each validator update as well
* [availability] Remove update validator stats in writeblockwithstate, update validator signing in proposal of new block to get correct state written
* [availability] Mutate state for validators signing in finalize
* [availability] Set unavailable validators in finalize
* [consensus] Remove error level for non-error log
* [node] No point to broadcast crosslink if we are not in cross link time yet
* [availability] Remove moved blocksigners function
* [core] Give more context in failure
* [availability] Provide set as filter for which validators to track on signing increase and set inactivity
* [blockchain] Write snapshot of validator as is
* Fix format in staking transaction (#2127)
* [availability] Move increment of validator signing counter to before shard state proposal
* [availability] Kick out inactive validators right before new shard state proposal
* [availability] Keep logic of getting shard members as was
* [state-transition] Attach Epoch number to create validator txn
Co-authored-by: flicker-harmony <52401354+flicker-harmony@users.noreply.github.com>
* [engine] Verify quorum achieved by mask in VerifySeal
* [engine] Use RJs PR comment on how to pull slotList, move parentQuorum inside else
* [node] Use votingpower logic check in node explorer message handler
* [explorer][node] Simplify explorer quorum by mask
* [engine] Additional check for quorum voting power in VerifyHeaderWithSignature
* [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
* [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
* [committee] Move core.ShardingSchedule to shard.Schedule
* [consensus] Remove redundant PublicKeys field of Consensus as Decider maintains that
* [committee] Use committee package to pick PublicKeys
* [committee] Use committee inplace of CalculateShardState
* [committee] Remove core/resharding.go, complete usage of committee as implementation replacement
* [committee] Address PR comments
* [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
* [staking] Factor some project errors into values core/pkg. Thread stking Txs through Finalize
* [staking] Incorporate Chao code from PR 1700
* [staking] Remove dead staking code, create const values, factor out dec from staking
* [staking] Remove voting power for now till discussion, factor out more error values
Also introduce NewHeader and NewHeaderWith functions. The latter is
friendlier for create-and-initialize expressions, and can be used
in place of the old &Header{field: value, ...} syntax.