Please describe your proposed solution.
First, wallet extensions run on their own infrastructure to aggregate information about users’ UTXOs from the blockchain, without giving that same power to the user. Moreover, no wallet providers provide information about their backend infrastructure. If the wallet provider’s server or DNS goes down, or some other global event takes place, the wallet will go down and the user will not have access to it.
Second, not a lot of wallets are open source, and the user has to trust the integrity of the wallet provider.
Third, it is difficult to build a true dApp without having it run in a web browser to gain access to wallet extensions for signing and managing transactions. This is especially the case if a developer wants to use technologies like Electron or Apache Cordova to make desktop or mobile applications for a smoother native user experience. Even though there are existing mobile wallets to connect to your cloud-hosted application, those wallets do not support stand-alone native mobile and desktop applications.
Our primary reason to open source this wallet solution is to make wallets more transparent and decentralized, in order to protect users from unexpected outages. Our decision to target React is based on its dominant market share, being the most used web application framework in the world.
The Merkaba wallet seeks to offer a decentralized solution for a range of users on Cardano: 1) new people being onboarded to Cardano via the Mandala dApp, who want a simple and stable wallet solution; 2) anyone already on Cardano who would like a decentralized wallet with the ability to use locally run nodes/indexers; and 3) developers in the Cardano community who may find possible value in this wallet approach and want to integrate it in their own projects.
The value of the wallet will be demonstrated in a number of ways. Its impact will be felt in the long term via community engagement. In terms of users, this relates to how many transactions are done, opt-out/opt-in metrics, etc. In terms of developers, we will be interested to see how it is utilized in future dApp projects; this will be measured by monitoring fork metrics on GitHub. Finally, we will be inviting those developers who use this component and are running their own node to share it with others, thereby supporting the overall Cardano infrastructure. Going forward, we will be providing a decentralized index of participating infrastructure providers.
- This wallet is integrated with the Mandala project. Members of Mandala will benefit by having this wallet as the project grows on Cardano, to access their NFTs and transact in a decentralized way. The Mandala dApp will feature an Electron wallet built using this React component; this “Merkaba” treasure chest will be appreciated by Mandala members as more dimensions of the game come online.
- This wallet can uniquely be utilized in any web-based dApp that supports React components like NEXT.js or Vue.js. Developers will benefit from this open-source solution. Its value for Cardano is in supporting development of true dApps.
- It is also unique in how it allows you to specify your own blockchain infrastructure (e.g., Ogmios, Kupo, Carp).
This wallet build is associated with the Mandala project, as part of its ongoing initiative on Cardano to support dApp development, develop gameplay on the chain, and raise awareness about decentralization while onboarding new people. For more info on Mandala, see the recent write-up by the Cardano Foundation: <https://developers.cardano.org/blog/2023-06-15-june>.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
First, this React component is created to run in the user’s space or in the developer’s project directly, helping decentralize their creation. The ability to specify your own infrastructure endpoints helps make the application more resilient to server outages or global events.
Second, instead of depending on the integrity of wallet developers, this component being fully open-sourced offers a fully transparent and trustless environment.
Third, since this is a React component it can be directly used in any project built with web technologies like React, NEXT.js, or Vue.js, which can then be compiled into a desktop or mobile Electron app or use other frameworks like Apache Cordova or just simply hosted by the developer. Developers can customize the look of their wallet utilizing simple CSS.
Currently, Daedalus is the only wallet that runs its own Cardano node for chain information. However, it will only allow you to run this node locally on the computer Daedalus is running on. The React component wallet we are building changes this: in the settings, you can specify your own endpoints to the services it needs (Ogmios, Kupo, Carp, etc.), which can all run on separate dedicated hardware. We provide a small tool written in bash script that provides a TUI called Noderunner, which helps users in spinning up the services outlined above. For more on Noderunner, see it in action in the Merkaba dApp; documentation can be found on GitHub.
How do you intend to measure the success of your project?
The project will demonstrably strengthen Cardano’s ecosystem by providing an actionable development component. In the short term, this wallet will offer new and existing Cardano users an alternative to centralized infrastructures. In the long term, as more developers use the wallet and more features are added, it may find wide adoption. Its integration in the Mandala dApp also provides an example of how it could be used in onboarding new Cardano users: it will offer a use case for people entering the blockchain space for the first time, providing an GAMIFIED educational context for them to create a wallet, stake, create a sovereign identity, and even buy an NFT.
Our metrics for gauging success will be quantitative and qualitative, including feedback from users and developers, as well as the metrics tools that GitHub offers for tracking forks, pull requests, and so forth. We will also learn from user experiences in a dedicated support channel in our Discord community, and following comments on social media platforms.
Please describe your plans to share the outputs and results of your project?
The open-source code for the wallet will be available in a GitHub repository, and a white paper will provide further documentation. We will share news and updates on the wallet with the Cardano community via Twitter, our Discord server, and public forums. Finally, we look forward to leveraging this project by extending its functionality in further open-source releases in the future.