> What were the causes of the forks? There were some issues relating to rewards/penalties calculation. Both Lighthouse and Prysm were incorrectly computing the validator balances. Interestingly, Lighthouse, Prysm and ZCLI (reference spec implementation in Go) _all_ computed different values, the result of multiple unrelated issues. Teku stayed faithful to the specification. ### Client Fixes - Lighthouse: https://github.com/sigp/lighthouse/pull/1166 - ZCLI: https://github.com/protolambda/zrnt/commit/ee4c8af2fb45301fdff6c7c72638e7ee677ec8fe ### Steps taken to resolve: - All clients have fixed the bug. - The latest spec [`v0.12.0`](https://github.com/ethereum/eth2.0-specs/releases/tag/v0.12.0) has refactored balance calculations so they're easier to test. More tests have been added. - The offending blocks and states have been added to [beacon-fuzz](https://github.com/sigp/beacon-fuzz) (eth2 fuzzer) to help protect against regression and find related bugs. _Side note: this fork highlighted an interesting balance calculation quirk in the spec when the network isn't reaching finality. The specification was changed [here](https://github.com/ethereum/eth2.0-specs/pull/1830)._