* [project] Rename specs to specifications b/c gcc thinks specs is a special file
* [rpc][node] Refactor failed stking txn buffer as container/ring, track failed plain txn as well
* [rpc] Expose RPC for staking, plain txn error sink
* [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