completed
MLabs - Browser-based Wallet for Developers & Testers
Current Project Status
Complete
Amount
Received
₳251,070
Amount
Requested
₳251,070
Percentage
Received
100.00%
Solution

We propose creating a light wallet targeted at developers, testers and power users. It will provide unique features missing in mainstream wallets.

Problem

Testing Cardano dApps utilizing CIP-30 is a tedious process because of the need to interact with browser wallets. Wallet interfaces are hard to mock, and reproducing wallet state is nearly impossible.

Feasibility
Value for money
Impact / Alignment

MLabs

1 member

MLabs - Browser-based Wallet for Developers & Testers

Please describe your proposed solution.

Problem

Testing Cardano web apps utilizing light wallets presents unique challenges due to the complexity of CIP-30 wallet interfaces, the difficulties in automating or mocking them, and the lack of wallet state reproducibility.

For example:

  • It's impossible to test CIP-30-powered dApps on a private testnet in the browser because existing wallets simply do not provide this feature
  • It's not clear what state the wallet has and there is no way to inspect or modify its responses or view its logs
  • Wallet UIs are often inconvenient for testing purposes because of the need to use passwords to backup mnemonic phrases and to click through pop-up windows

Solution

The proposed solution is to create a light wallet targeted at developers and testers, that will provide the following features:

  • Manually overwriting CIP-30 responses to provide made-up data to the app
  • Saving the wallet state (to make it reproducible)
  • Faking different wallet states (presence of collateral, UTxO distribution)
  • Faking different wallet modes (single-address vs. multi-address mode (Eternl))
  • Starting local Cardano testnets with pre-funded wallets to connect to (using Plutip, a tool for automatic Cardano network setup). This would allow making not only faking wallet state but actually reproducing it on a private Cardano testnet (with several limitations, most notably the inability to save and restore tokens)
  • CIP-30 call logging to simplify dApps debugging
  • UI that simplifies development: no recovery phrase re-entering, instant confirmation of all operations

For the implementation, we can use cardano-transaction-library (CTL for short, <u>https://github.com/Plutonomicon/cardano-transaction-lib/</u>) - a tool that has been developed in the past thanks to Cardano Catalyst funds 8 and 9. CTL already has most of the components needed to create a light wallet, including:

The features above can be built on top of existing CTL functionality.

The main missing parts are, sorted by descending complexity:

  • Graphical user interface design, development, and integration into a WebExtension
  • multi-address mode support (CTL only provides single-address wallet mode in its Cip30Mock)
  • Plutip interaction for Cardano cluster startup (parts of existing code can be reused)
  • CIP-30 call logging
  • Implementation of wallet state saving, viewing and modification

Market

The target audience of this project consists of:

  • dApps developers
  • dApp testers
  • Cardano power users.

How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?

Challenge statement: Development Ecosystem - The Evolution. How do we equip and support developers with tools and working infrastructure? How do we make Cardano their first choice when it comes to building dApps, innovating and collaborating?

The proposal, if implemented, will provide a useful testing tool for dApp developers, which may influence their preference towards Cardano.

How do you intend to measure the success of your project?

Success can be measured by the number of users. Since the potential user audience is tiny (but very impactful!) in comparison to production wallets, we can target just 1000+ installs and consider it a success.

Please describe your plans to share the outputs and results of your project?

MLabs maintains a social presence on Twitter and in the Plutonomicon Discord, where updates could be posted. Additionally, the release could be announced on IOG technical Discord.

What is your capability to deliver your project with high levels of trust and accountability?

MLabs has proven itself as a company employing dozens of Haskell and PureScript software developers and delivering a number of Catalyst-funded projects in the past.

What are the main goals for the project and how will you validate if your approach is feasible?

The main goal is to deliver a working WebExtension with all of the proposed features. The feasibility of our approach to achieve the goal will be evaluated by project managers and technical leadership of the project, based on time and budget constraints.

Please provide a detailed breakdown of your project’s milestones and each of the main tasks or activities to reach the milestone plus the expected timeline for the delivery.

1st month

  • Constructing a basic WebExtension with cardano-transaction-library bundled in
  • Creating a test suite that we can use to automate workflows using headless browsers
  • Building a simple interface that allows pasting a mnemonic phrase or a private key and getting a set of addresses listed on the screen

2nd month

  • Making it possible to connect to a query layer (either Blockfrost or the query layer used in CTL, which is a combination of Ogmios and Kupo)
  • Implementing CIP-30 interface by extending Cip30Mock module from cardano-transaction-library

3rd month

  • Extending the wallet with multi-address support
  • Adding the ability to mock and save/load the wallet state, overwriting "true" on-chain state with fixed values
  • Implementing manual collateral selection

4th month

  • Implementing CIP-30 call logging feature, including payloads for easy debugging
  • Implementing Plutip integration (ability to start local Cardano testnet clusters with the help of plutip-server running on a user's PC). It will be possible to specify the amount and distribution of ADA the wallet should be funded with initially

5th month

  • Creating user documentation (user guide)
  • Releasing the first public version
  • Announcing the release on social media

6th-8th months

  • Collecting user feedback, addressing discovered problems

Please describe the deliverables, outputs and intended outcomes of each milestone.

Months 1-4

The deliverable at each stage is a repository containing the source code of a WebExtension implementing requested features. The intended outcome for each stage is to be able for us to proceed with the following milestone.

Months 5-6

The deliverable is a public release of a WebExtension available for download from Chrome Web Store and Firefox Browser Addons, implementing all the features of the previous milestones. The intended outcome is to attract attention to the project and convince the users that we provide a useful tool.

Please provide a detailed budget breakdown of the proposed work and resources.

TBD

Who is in the project team and what are their roles?

MLabs

MLabs has quickly become one of the premier development firms in the Cardano Ecosystem. We are an IOG Plutus Partner and work regularly with IOG to develop the Cardano blockchain and ecosystem. Our team is composed of talented developers who have helped build community projects such as:

  • Liqwid
  • SundaeSwap
  • Minswap
  • Optim
  • Many others

Through our work with early-stage projects, we have one of the largest groups of Haskell/Plutus developers in the community.

Website: <u>https://mlabs.city/</u>

The team

Vladimir Kalnitsky - Tech leadership

Vladimir is a software developer with a number of contributions to the PureScript ecosystem and solid experience with Haskell. During his undergraduate years, Vladimir focused on functional programming and type theory. Vladimir is more of a 'hacker' than a scientist, but he still values formal reasoning about code and well-founded software development practices.

Dzmitry Shuiski - PureScript Development

Dzmitry is an experienced software engineer, currently developing solutions using functional programming techniques, mostly using PureScript and Haskell. Coming from a background in iOS App Development, he is well-versed in various aspects of developing robust and user-centric systems. Dzmitry has made considerable contributions to CTL in the past and is now primarily focused on Cardano dApp development. He is currently pursuing a degree in Software Engineering and Management at the Graz University of Technology to deepen his knowledge in more fundamental disciplines.

How does the cost of the project represent value for money for the Cardano ecosystem?

Making dApp developers more productive would save costs for the teams and therefore may positively affect the number of successful Cardano projects.

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00