zkLink Docs

Wallet Integration & AA Wallet

💡Account abstraction unifies contract accounts and EOAs. Integrating AA wallets brings better user experience to dApps built on top of zkLink. Smart contract wallets are much more flexible than EOAs, allowing users to control their accounts by smart contract rather than simply a private key, and to define their account logic such as permission controls, transaction limits, wallet recovery, etc.
Taking UniPass as an example, UniPass offers a user-friendly experience for managing smart contract wallets using email and password. We believe this is crucial for users who are not yet familiar with crypto.

Required Conditions

  • supports EIP712 signing
  • supports generation of zkLink_key
    1. 1.
      zkLink_key must be generated and kept secret by user clients;
    2. 2.
      zkLink_key is the private key to generation EdDSA signature, and every single Layer2 transaction needs to be signed by zkLink_key;
    3. 3.
      In the example of Unipass integration, a zkLink_key is generated when the user signs from the browser client with the client slice of MPC master key (user key). This zkLink_key will not be exported to Unipass server.

Optional Condition

  • compatible with proxy deposit contract
    1. 1.
      we suggest AA wallets to support zkLink proxy deposit to improve UX in many cases;
    2. 2.
      AA wallets that adopt the zkLink auto transfer function can directly call transfer to AA wallet.
AA wallet flow

AA Wallet Security

AA wallets integrating to zkLink must meet Dunkirk Test requirements, i.e., assets security is not dependent to agency, and users can still retrieve assets even when the wallet service provider goes down.
In the case study of Unipass, users can download an open-source front-end or use a web form with IPFS hosting to recover their account and migrate to EOAs if the Unipass server fails.