replay the choose random active provider mechanism
check a provider was chosen during a provider commit
Technical notes:
I've switched from BTreeSet/BTreeMap to use Mapping instead. This comes with a very small amount of overhead when nothing happens on the contract for an extended amount of time, as more blocks have to be checked. However, this is trivial by comparison to the BTreeSet/BTreeMap solution as it added 30KB to the contract alone and pushed it above the 128K threshold, leading me to this solution instead. I also think the Mapping solution reduces gas slightly as only the storage we need to read it read, not the entire map/set in the BTree version.
This PR comprises of:
Technical notes:
Todo: