Proof Of Work
class ProofOfWork<T : ChallengeType<MetaData>, in MetaData : ChallengeMetaData>(val challengeType: T, val challengeVerifier: ChallengeVerifier<T>)
Proof of work is a procedure during login to attempt to throttle login requests from a single source, by requiring them to do CPU-bound work before accepting the login.