* [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
* [staking] Stumble out test case for validator information
* [shard] Provide JSON dump of shard state
* [EPoS] Checkpoint w/RJ
* [EPoS] Implement EPoS at slot level
* [shard] Remove two-value loop
* [epos] Remove test code generation - use commit for testing later
* [epos] Remove debug code, address lint
* [epos] Remove staking epoch comment
* [epos] Use max(320, len(stakers)) for median calculation
* [epos] Remove search for empty spot for staked validator, only use top 320 for median
* [epos] Address PR comments
* [epos] Raise pull count as function parameter
* [epos] Add initial testing for calculate
* [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.
It should equal the one in the master copy found on beacon chain, except
if the master table doesn't have the shard (shard disowned), the local
leader should acknowledge this and signal the end of the shard by having
a committee proposal with empty leader and zero members.
* add resharding for epoch switch:
1) add randseed and shardStateHash in block header;
2) Read and Write shardState from/to blockchain;
3) perform resharding after every N (epoch length) blocks