You’ll need to get a good handle on terminology and a clear design to propose anything concrete.
For instance, by “2FA” you probably mean “TOTP”?
And “username is public key” leaves a ton to be interpreted.
In the meanwhile, you could POC your proposed scheme by implementing it as a DiscourseConnect (or SAML or oAuth…) provider.
Also, in what scenario does this proposal make things better for the end user?