I noticed most implementations of zkLogin require a separate backend proving service, but am interested in trying to keep things as simple as possible and wonder how viable would it be to use zkLogin just in the client?
From the latest article, “Set Up a Proving Service for zkLogin”:
As generating a ZK proof can be resource-intensive and potentially slow on the client side, it’s advised to use a backend service endpoint dedicated to ZK proof generation.
Are we talking just a couple extra seconds? Minutes? Timeouts? Are there any open-source implementation examples using just the client?
Is it even possible, or is a separate backend proving service required?
Latency from Mysten Labs’ prover service is between 2 and 3 seconds. ZK proofs do not have to be generated very often - only once a transaction that needs a signature take place, and then the proof is cached for some period of time (as established by the application).
For a one-time proof generation, 2 to 3 seconds is fine to bake into the UX, but if this was run client side it would be significantly slower.
When we experimented with browser-based proof generation, it was either taking a few minutes or even crashing some times. We have not tested with mobile where the situation maybe slightly better.
Could also use something like Gevulot Docs - Gevulot Docs for a decentralized proving service?