Last updated a month ago
MetaMask Snaps enable users to add community-built extensions to the wallet. The main use case is non-EVM chains support for MetaMask. Cardano is missing.
This is the total amount allocated to Cardano in MetaMask. 5 out of 5 milestones are completed.
1/5
Initial development phase
Cost: ₳ 40,421
Delivery: Month 1 - Apr 2024
2/5
Development complete phase
Cost: ₳ 60,631
Delivery: Month 2 - May 2024
3/5
Audit
Cost: ₳ 40,421
Delivery: Month 3 - Jun 2024
4/5
Release and communication
Cost: ₳ 30,316
Delivery: Month 4 - Jul 2024
5/5
Formal closing
Cost: ₳ 30,316
Delivery: Month 5 - Aug 2024
NB: Monthly reporting was deprecated from January 2024 and replaced fully by the Milestones Program framework. Learn more here
We will build a Snap that will enable MetaMask’s 30 million users to add Cardano wallet functionality to their MetaMask wallet, and use Cardano dApps directly with MetaMask (no other wallet needed).
MetaMask Snap tech limitations - MetaMask tech has many limitations and MetaMask Snaps need to comply and adjust to these limitations.
2 Code Audits - MetaMask Snap has to pass a security audit by one of the pre-approved audit companies and by Consensys.
Beta Version Launch - We are already working on a very simple “blind signing” beta version Cardano Snap. We plan to have it audited and released in Januar-February 2024. The successful release of our Cardano MetaMask Snap beta version is a prerequisite to this project.
MetaMask team accepting our PR to add Cardano key derivation method (not a must but nice to have) - Metamask currently implements HD (hierarchical deterministic) key derivation according to SLIP10 and derives the root key pair from seed. Cardano on the other hand, uses a different process of the HD derivation, defined in BIP32-Ed25519 paper producing different keys, also, the root key pair is derived from entropy instead of seed. We are preparing PR for Metamask to be able to derive keys in the Cardano way. In its current state, Cardano Metamask Snap would generate keys that are inconsistent with keys produced by other Cardano wallets which could pose an interoperability issue (MetaMask seed phrase imported to any standard Cardano wallet would produce a different wallet than Cardano MetaMask Snap. And vice versa, seed phrases from the Cardano wallet would produce different wallets on Cardano MetaMask Snap if imported to MetaMask). While this is nice to have for interoperability, it is not a must (although this would heavily improve the quality of life for users who first create their Cardano wallet on MetaMask and later would like to migrate their wallet to one of the full-fledged Cardano wallets).
Cardano MetaMask Snap will be fully open source and audited. Other teams can reuse the code to create their forks without the need to re-audit (unless they do some significant changes in it).
What is MetaMask? What are Snaps?
MetaMask is the most-used cryptocurrency wallet in the world. It has a reported 30 million monthly active users, and around 8 million daily active users. MetaMask has native support for all EVM (Ethereum-based) blockchains.
Recently, the MetaMask team released MetaMask Snaps: community-built extensions that add support for non-EVM chains (like Cardano) to MetaMask wallet, and allow MetaMask users to connect to non-EVM dApps using just MetaMask (no need to install any new wallet).
What is Cardano MetaMask Snap?
Cardano MetaMask Snap is the infrastructure used to create a Cardano wallet from a MetaMask wallet identity, but the Snap itself isn’t a full wallet – its functionality will be similar to a hardware wallet, so it will derive keys, sign transactions, and parse information from transactions to show the user information about the transaction they are going to sign.
For full wallet functionality (to show asset balances, construct transactions, etc.) it would be necessary to know the blockchain state and this is not possible in the current Snap version. For full functionality, the Snap needs to be combined with an external tool.
We decided to follow a similar approach as the popular Solana wallet Solflare which built a widget for dApps that enables MetaMask users to use Solana dApps. If you have MetaMask installed, you can see this work on popular Solana dApps such as Jupiter, Solend or Jito. Additionally, you can see the user experience in an enclosed video showcasing the prototype of our NuFi widget in combination with our prototype of the Cardano MetaMask snap. The NuFi widget that will utilize Cardano MetaMask Snap is not part of this Catalyst proposal.
Is this already in development?
Yes, it is. We are already working on a “blind signing” beta version of Cardano Snap. We plan to have it audited and released in January-February 2024.
However, the current solution is not ideal or future proof because, when a user signs a transaction, MetaMask will serve as a ‘blind signer’ and the user won't be presented with transaction details, making it impossible to confirm the contents of the transaction they are signing in MetaMask (the user will be able to do it in the NuFi widget but they have to trust the NuFi widget).
What is this Catalyst proposal for?
This Catalyst proposal is for the implementation of transaction parsing functionalities into Cardano MetaMask Snap, so a user is able to see detailed transaction information in the MetaMask wallet interface and can independently verify that the transaction they are signing is not malicious.
Why is this important?
Once this audited snap is released, it can be forked and easily used by other Cardano wallets or dApps. The user won’t have to trust the wallet or dApp with the details of a transaction, rather the content and details of the transaction will be visible directly in the MetaMask wallet interface.
The Cardano MetaMask Snap will mimic the logic of Ledger and Trezor hardware wallets and support all the transaction types currently present on HW wallets and display at least the same information about the transaction as HW wallets are displaying (with better UI than HW wallets).
Therefore users will be able to see:
We will include support for:
We will not include the support for Stake Pool operation transactions as we don’t expect this to be a real use case for Cardano MetaMask Snap users. But these transactions will still be executable in a blind signing mode.
As the Snap does not have any information about the external world, we will have to hard-code the supported token list and token decimals into the Snap. This is a bit inconvenient because this will have to be updated from time to time but we commit to do this at least quarterly for the following 24 months.
These Snap token list updates are immaterial and do not impact security, therefore they won't require external audits (and shall be audited just by the Consensys team for free). The formula for the content of the hard-coded token list is yet to be determined but it will be probably similar to the hard-coded list for Ledger wallet (Top 100 tokens by market cap).
Using the solution
Initially, the Snap can be utilized with NuFi widget that is currently in development. Dapps that want to support MetaMask users can implement NuFi widget SDK. The implementation will be trivial for any dApp with CIP-30 support.
We expect that in the future other wallets can create their widgets or even dApps can implement their own integrated wallet functionalities to accommodate MetaMask users.
See Cardano MetaMask Snap in action here
You can see the Cardano MetaMask Snap user experience in the video below showcasing the prototype of our NuFi wallet widget in combination with our prototype of the Cardano MetaMask Snap. The NuFi widget that Cardano MetaMask Snap will utilize is not part of this Catalyst proposal.
https://www.youtube.com/watch?v=GdNXyh33YLsYou can also try our prototype here.
Who will benefit from this solution?
Cardano will be easily accessible to 30 million active MetaMask users. Dapps will be able to provide services to MetaMask users and wallets will be able to create solutions utilizing Cardano MetaMask Snap.
Metrics to measure the impact of this proposal:
Within 12 months of the release of this product:
We will be sharing the progress on our social media.
How do you intend to validate if your approach is feasible?
We put money where our mouth is. We are developing Beta version of the Snap with blind signing at our own costs and this Catalyst project will proceed only if the Beta version will be audited and approved.
What is your capability to deliver your project with high levels of trust and accountability?
The NuFi wallet team has a long track record of delivering high-quality development work:
Completed a Project Catalyst Fund9 proposal which added Ethereum and Milkomeda C1 support to NuFi wallet to aid in ‘The Great migration from Ethereum to Cardano’
Development progress - 1 months
We will show significant progress in development in MetaMask snap. We will be able to demonstrate and prototype the basic functionality of at least 3 work-packages from Milestone 2
Deliverables: Github repository with commits, 3 prototyped functionalities (as described in Milestone 2)
Acceptance criteria: recorded video of at least 3 Cardano Snap functionalities (as described in Milestone 2)
Development complete - 1 months
We will complete the development part of the project
Deliverables: Complete codebase of Cardano Metamask Snap with all functionalities presented in scope.
Cardano interop library integration
Decoding and parsing
Change outputs
CertificatesTx metadata
Message signing
Native assets
Desing and implement UI
Acceptance criteria: recorded video of Cardano Snap working in MetaMask Flask (development version) presenting all major functionalities
Audit - 1 month
External auditor will execute the audit of the code and we will fix any findings.
Deliverables: Audit from MetaMask accredited auditor firm.
PR implementing all audit findings.
Acceptance criteria: Audit report
List of PRs fixing audit findings
Product Release and Marketing - 1 month
We release the product to public and market it (mainly) among dApps
Deliverables: Integration documentation.
Released in MetaMask Snap store.
Execution of communication plan.
Acceptance criteria: Document the progress and deliverables of whole project in Catalyst closeout video.
Provide report on executed communication plan (or mention in closeout video)
Links to Integration documentation
Catalyst closeout video + project closing
Michal Petro - Project Lead
https://www.linkedin.com/in/michalpetro/
Lubos Svolik - Project Manager
https://www.linkedin.com/in/lubossvolik/
Rafael Korbaš - CTO
https://www.linkedin.com/in/rafael-korba%C5%A1-4b2a31b7/
Richard Izip - FE Lead, UX/UI design
https://www.linkedin.com/in/richard-izip-253622112/
Kamil Džurman - Full-Stack Developer
https://www.linkedin.com/in/kamil-d%C5%BEurman-0b18b6149/
Andrej Želonka - FE Developer, UX/UI design
https://www.linkedin.com/in/andrej-%C5%BEelonka-0563681a9/
Gabriel Kerekeš - Full-Stack Developer
https://www.linkedin.com/in/gabriel-kerekes/
Peter Benc - Full-Stack Developer
https://www.linkedin.com/in/peter-benc-290b76142/
Ben Goldie - Community Manager
https://www.linkedin.com/in/goldieben/
Details:
https://docs.google.com/spreadsheets/d/1aEQvk_6P72d6K6u7yG4FEJRwk9oVk7yNE_xOZiHDzv4
Milestone 1 - 50,526 ADA
Milestone 2 - 75,790 ADA
Milestone 3 - 52,631 ADA
Milestone 4 - 23,157 ADA
Final Milestone
In terms of why this proposal is value for money for Cardano’s ecosystem, we believe that the one-time cost of building this solution will be offset by the increased adoption of Cardano dApps through decreased barrier of entry for EVM users. MetaMask users can be frequently targeted by marketing campaigns of Cardano dApps but the necessity to download and create a new wallet may block them from trying it.
Once released, this solution will be open-sourced and can be utilized by other builders in the community without the need to develop and audit a their own Snap for Cardano.