This algo computes a score locally for each proof that is independent of
the proof set, and picks a proof based on the score. The change to get
selected is proportianal to the staked amount.
This improves on the previous algorithm in a few ways:
- It is inherently tolerant to a missing proof as long as the missing proof is not the winner. This removes the need for a list of winners entirely.
- Each individual proof has no impact on the selection (except for itself) which makes this algorithm more robust against manipulation.
Due to the nature of this algo, it is impossible to predict the winner
in tests by manipulating the proofs or the blockhash like with the
previous algorithm.
The algorithm is currently not in use and will replace its predecessor
in a subsequent diff.