upgradeN functions are utility functions they are not relevant at the moment
stake function receives FUSEs, checks if the validator address whitelisted and exist, and then if validator (that buffer contract) does exist, send him the FUSEs that were staked, or else in equal shares sends to all whitelisted validators the funds of the staker.
there are Read\Update operations on validators
the collectUBIInterest does acquire the reward for the user in GD according to minting scheme and also in a very straight-forward and hardcoded way distributes parts of the stakers rewards to keeper and community pool and UBIScheme.
there are also some price impact helpers that could be extracted from the contract and an internal withdraw to turn exception-based approach to true\false approach of dealing with successfulness of the withdraw from the buffer contract (validator)
I never actually found an implementation for the IConsensus.
Purpose
To stake FUSEs and collect the UBI in GD.
Small comments
I never actually found an implementation for the IConsensus.