STEP 01 Authenticate
User signs in. Auth0 issues a JWT.
The user logs in with email/password, a passkey, Google, or Apple. Auth0 returns a JWT whose sub claim uniquely identifies them. Every transaction reuses this login — a fresh JWT is issued for each one, with the action embedded in the payload.
→ POST /authorize200 · jwt issued · sub=google-oauth2|…
STEP 02 Derive & sign
The MPC network derives the user's key from their JWT.
The FastAuth contract routes the JWT to the matching guard (Auth0, Firebase, custom issuer) for cryptographic verification. On success it builds a deterministic path — {guard_id}#{sub} — and asks NEAR's MPC network to sign for it. The nodes derive the same key for the same identity every time, and produce the signature collaboratively. No single party ever holds the full key — and the user holds no key material at all.
guard.verify(jwt) ✓path jwt#auth0#… → v1.signersigned · eddsa
STEP 03 Transact
Gasless meta-transactions land on chain.
The MPC signature wraps the user's action as a NEP-366 DelegateAction. Your dApp's relayer pays gas, the action is bound to the JWT's payload (so it can't be re-used), and the call lands on NEAR mainnet through the relayer.
delegate action → relayerincluded · block 210,481,902