Please describe your proposed solution
This tool offers developers the ability to access on-chain data in multiple ways when building a dApp, not only through the wallet but tapping into the Cardano blockchain itself. If offers the following solutions and differentiators from the existing offerings:
- Not just a wallet, but a solution for developers to create a fully decentralized application
- Not just a wallet tool, but an authentication/identity layer
- Gives developers the ability to not have to rely on browsers that only allow Google extensions
- Open source aspect allows ability for other developers to implement functionality that can be shared with the community
Since our last Catalyst proposals were very close to being funded, we recognize the community's support and recognition that there is a need for our tool. We are also looking to add increased functionality, compared to our previous applications. Now we will also be integrating the following into the tool:
- Full governance tools for CIP-1694
- Register dRep
- Delegating to dRep
- View proposals
- Vote for proposals
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. 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, not a lot of wallets are open source, and the user has to trust the integrity of the wallet provider. Instead of depending on the integrity of wallet developers, this component being fully open-sourced offers a fully transparent and trustless environment. 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.
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. 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 (Kupo/Ogmios, Koios, 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.
- 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., Kupo/Ogmios, Koios, 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 write-up by the Cardano Foundation: <https://developers.cardano.org/blog/2023-06-15-june>.
Mandala provides a great pilot to showcase this tool's functionality, giving NFT holders more decentralized control of their assets, especially as the project moves forward with gameplay.