lighthouse/consensus/state_processing/src/common
Michael Sproul 3412a3ec54 Remove saturating arith from state_processing (#1644)
## Issue Addressed

Resolves #1100

## Proposed Changes

* Implement the `SafeArith` trait for `Slot` and `Epoch`, so that methods like `safe_add` become available.
* Tweak the `SafeArith` trait to allow a different `Rhs` type (analagous to `std::ops::Add`, etc).
* Add a `legacy-arith` feature to `types` and `state_processing` that conditionally enables implementations of
  the `std` ops with saturating semantics.
* Check compilation of `types` and `state_processing` _without_ `legacy-arith` on CI,
  thus guaranteeing that they only use the `SafeArith` primitives 🎉

## Additional Info

The `legacy-arith` feature gets turned on by all higher-level crates that depend on `state_processing` or `types`, thus allowing the beacon chain, networking, and other components to continue to rely on the availability of ops like `+`, `-`, `*`, etc.

**This is a consensus-breaking change**, but brings us in line with the spec, and our incompatibilities shouldn't have been reachable with any valid configuration of Eth2 parameters.
2020-09-25 05:18:21 +00:00
..
deposit_data_tree.rs Remove saturating arith from state_processing (#1644) 2020-09-25 05:18:21 +00:00
get_attesting_indices.rs Bump all spec tags to v0.12.1 (#1275) 2020-06-19 11:18:27 +10:00
get_base_reward.rs Bump all spec tags to v0.12.1 (#1275) 2020-06-19 11:18:27 +10:00
get_indexed_attestation.rs Bump all spec tags to v0.12.1 (#1275) 2020-06-19 11:18:27 +10:00
initiate_validator_exit.rs Remove saturating arith from state_processing (#1644) 2020-09-25 05:18:21 +00:00
mod.rs Bump all spec tags to v0.12.1 (#1275) 2020-06-19 11:18:27 +10:00
slash_validator.rs Remove saturating arith from state_processing (#1644) 2020-09-25 05:18:21 +00:00