* [rpc][staking] Quick way to add an staking transaction error sink for rpc consumption
* [staking] Satisfy Travis
* [rpc][staking] Expose staking transaction errors using slice, protect mutex
* [staking][rpc] Use string name of Directive
* [staking][rpc] Change func signature in tests
* [staking][rpc] Protect read with lock
* [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
Commit e79ba5fe88 introduced an off-by-one
error which caused CX-enabled header to be introduced one epoch later
than expected, i.e. at CrossTxEpoch + 1, where it should be
CrossTxEpoch. This was caused by a vague, confusing naming of
IsCrossTx(epoch) function of ChainConfig: The name did not clarify
whether it meant introduction of CX-enabled header and processing of
ingress receipts (which occurs at CrossTxEpoch) or acceptance of
cross-shard transactions (which occurs at CrossTxEpoch+1).
Introduce and use params.(*ChainConfig).HasCrossTxFields which handles
the former case.
Previously, only nodeconfig.GetShardConfig initialized this; calling
SetNetworkType before GetShardConfig resulted in GetShardConfig calls to
return empty network type.
* [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
* [reward] Add reward Schedule table from spreadsheet
* [reward][schedule] Make denom a function of time block rather than fixed 12.6 billion
* [reward] Fix latent mistaken because of .UnixNano usage, header uses seconds