-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KZero Wallet #2507
KZero Wallet #2507
Conversation
CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅ |
I have read and hereby sign the Contributor License Agreement. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dejavukong thanks for submitting this, this already looks great!
I have just a few questions:
- is the recovery mechanisms (for the case that ZK wallet is no longer maintained, at a later point) covered by this proposal?
- how is the ephemeral private key stored on the user's client?
Feel free to also have a look at my inline questions.
|
||
(Step 0) We plan to use Groth16 for our protocol’s zkSNARK instantiation, requiring a singular generation of a structured common reference string (CRS) linked to the circuit. A ceremony is conducted to generate the CRS, which is used to produce the proving key in the ZK Proving Service, the verifying key in Project Authority. | ||
|
||
(Step 1-3) The user begins by logging into an OpenID Provider (OP) to obtain a JWT token containing a defined nonce. In particular, the user generates an ephemeral KeyPair (eph_sk, eph_pk), along with expiry times (max_epoch) and randomness (jwt_randomness). Through these three parameters, the Wallet Extension can thus compute the nonce. After the user completes the OAuth login flow with the nonce, an JWT token can be retrieved. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you elaborate on how the randomness is generated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add this content in a new section titled "Security and Privacy"
@takahser the recovery mechanisms are added in the proposal, along with the storage of ephemeral private key, included in the new section titled "security and privacy" |
There are currently two potential, optional recovery mechanisms available: | ||
|
||
1. **Built-in recovery mechanism in zklogin-pallet**: Each zklogin address can designate a recoverer. Under specific conditions, such as when a zklogin address has been inactive for N hours, the recoverer can send transactions and manage assets on behalf of the zklogin address. | ||
2. **zklogin + proxy**: Through the proxy pallet, a zklogin address can set up 'delegate' or 'delayed-delegate' accounts. At any time when assets in the zklogin address face potential threats, users can immediately handle their assets securely through the proxy module. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good, thanks for adding.
Could you clarify whether this is within the scope of this grant?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@takahser Given that these two mechanisms are not in conflict, we prioritize implementing the built-in recovery mechanism in this grant, while planning to develop the zkLogin + proxy mechanism at the application level in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dejavukong sounds good to me. Could you add this to the deliverables (or in case it's already added, point out which deliverable this would equate to)?
After that I'm happy to approve it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@takahser included in Milestone 2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dejavukong thanks for the updates and clarifications, adding my approval here. I'll also mark the application as Ready for Review and ping the rest of the grants committee to have a look at it.
In the meanwhile, could you submit KYB for your company? This should be the same entity that is going to send the invoices after completing each of the milestones.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dejavukong sorry, I just realized that the DOT percentage is currently missing.
Note that at least 50% of the grants are supposed to be paid in DOT, see our template.
DOT %: Percentage of Total Costs to be paid in (vested) DOT (≥ 50%)
Could you add this info as well? After that I'll add my approval again.
@takahser Added. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good to me, happy to support this.
The proposal contains sufficient technical depth and looks thorough. In general, this would be useful feature for onboarding new users and i am happy to support it. |
@bhargavbh Address Format: Replay Attack Prevention: Enhanced Recovery Mechanism: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the deep dive @takahser LGTM. Excited to see this on Polkadot!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @dejavukong, this looks interesting. Happy to support this. Just one question: Which OAuth providers will you support in the SDK and thus the demo website of Milestone 4? Will I be able to login with e.g. my Google account?
@PieWol Sure thing! We'll set up with a frontend page and demo-kzero-node(with zklogin runtime) so you can try out all the features. |
@dejavukong could you please also include a DOT payment address? |
db52953
@PieWol Included. |
Hey @dejavukong , Once thats done I'll re-approve. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the quick changes.
We have enough votes to approve the grant, @dejavukong, but we are still waiting for you finishing the KYB process, as requested above. |
Congratulations and welcome to the Web3 Foundation Grants Program! Please refer to our Milestone Delivery repository for instructions on how to submit milestones and invoices, our FAQ for frequently asked questions and the support section on our website for more ways to find answers to your questions. |
Project Abstract
KZero is a keyless, self-custodial wallet solution that leverages zero-knowledge proofs (ZKP) and OpenID protocol. With KZero, Web2 users can directly access the blockchain and send transactions using their Google, Apple, or other accounts, eliminating the need to safeguard mnemonic phrases or pre-install wallet applications. Users can access Web3 applications without any restrictions. KZero can be integrated into any Substrate-based chain without disrupting its existing account system.
Grant level
Application Checklist
project_name.md
).@_______:matrix.org
(change the homeserver if you use a different one)