Please describe your proposed solution
The purpose of a cryptocurrency wallet is to control access to the user's funds, ensuring that only the rightful owner can spend them. In Cardano, addresses that hold cryptocurrency come in two flavors: public key addresses and script addresses.
To own cryptocurrency at a particular public key address means to know the corresponding private key that unlocks it. Script addresses allow for much more nuance: the ability to spend funds located at such addresses may be tied to some complex logic. For example, a user may set a spending limit or may allow to use the funds only in certain kinds of transactions.
Cardano has a very diverse wallet ecosystem. However, currently, all wallets only work with public key addresses. While it is very difficult to add complex validation logic in the form of regular Plutus smart contracts, it is possible to do it with zero knowledge smart contracts as they allow verifying almost arbitrary complex logic for a constant price in terms of ExUnits and network fees.
In this submission, we propose to develop a universal smart contract wallet backend that is CIP-30 compatible but also has some extra features (not possible with regular wallets). This backend, in the form of a library, can be used by any Cardano wallet to augment themselves with features of a smart wallet.
As a part of this proposal, we want to deliver the following features:
- zkLogin: use Web2 credentials to authorize transactions;
- Multi-user transactions: reduce your transaction fees by combining your transaction with those of other users;
- Babel fees and sponsored transactions: pay fees using tokens other than ADA, or don’t pay fees at all in sponsored transactions!
We have discussed this proposal with several Cardano wallets and received
positive feedback.