over budget
Cardano Wallet Flutter SDK - Fund6
Current Project Status
unfunded
Total
amount
Received
$0
Total
amount
Requested
$30,000
Total
Percentage
Received
0.00%
Solution
Problem
Addresses Challenge
Feasibility
Auditability

Team

1 member

  • download
  • download
  • download

Detailed Plan

Having shown the feasibility of writing Cardano clients in Flutter in Fund 5, the goal of Fund 6 will be to complete the library, publish tutorials and support the budding community.

What is Flutter Again?

Flutter is a Google-backed, cross-platform mobile development environment that generates native apps for both iOS and Android. Recently, web app support was added (see this projects live demo wallet: https://flutter-cardano-wallet.web.app/)) and Flutter will soon support desktop apps. Other Flutter strengths are fast, fluid, pixel-perfect user interfaces, rapid prototyping, excellent developer tooling and a modern, user-friendly, strongly-typed programming language.

Fund 5 Recap

The Fund 5 work established Dart, the programming language of Flutter, to be a first class development environment for writing Cardano clients. Unlike many other Cardano software development kits (SDKs), the Flutter Wallet SDK is written in pure Dart which guarantees this complex cryptographic code will work seamlessly on all of Flutter’s supported platforms: iOS, Android, web and desktop. The Fund 5 work targeted a few critical use-cases, but was, by design a proof-of-concept prototype, leaving out such key features as native tokens, NFTs, staking and smart contracts.

Fund 6 Overview

A Fund 6 grant would result in a full-featured Cardano SDK for the Flutter developer community, along with the educational resources to fast-track onboarding. The budget covers 500 hours of full-time development over the next four months in three broad areas:

  1. Finish SDK (410 hours) - Deliver a complete, professional, high-level SDK. As detailed below under SDK Task Breakdown, there is much work to be accomplished, but the highlight will be smart contract support. Clear documentation and use-case examples will be emphasized, along with good test coverage to ensure high-quality, high-reliability code.
  2. Publish Tutorials (80 hours) - An important component in on-boarding developers is the availability of high-quality tutorials. This would entail writing and publishing Flutter demonstration apps, writing step-by-step tutorial articles around each app and, time allowing, video tutorials. Likely topics would include: loading and displaying wallet balances, building and sending a transactions, minting native tokens or NFTs and connecting to and running smart contracts.
  3. Community Support (10 hours) - Answering questions, sharing coding insights, explaining design decisions and responding to feature requests can be time consuming, but is important for community building.

SDK Task Breakdown (410 hours)

The primary project directive remains to produce a high-level SDK that enables developers to focus on their business idea and not the low-level details of the Cardano blockchain.

Areas of focus will be:

  1. Smart contracts (100 hours). - This will focus on basic handling, verification and signing of smart contracts. At least two common use-cases will be provided as hand-written samples. Lastly, tooling for off-chain code generation will be explored.
  2. Persistence (40 hours) - The majority of professional applications require a persistence layer to provide good user experiences. This built-in persistence module will allow restoration of wallet state (even when off-line), faster updating when on-line and possible API extensions. Time allowing, non-blockchain data storage like NTF image caching and saving wallet metadata, will be implemented.
  3. Native Token/NFT (25 hours) - Provide minting and burning support for Native Tokens and NFTs.
  4. Staking (25 hours) - Provide stake pool ranking and stake delegation support.
  5. Mithril Ready (30 hours) - With the Mithril project, IOHK is laying the groundwork for lightweight Cardano clients to have first-class, blockchain access without the overhead of running a full node. To future-proof this SDK, its architecture will be generalized to adapt to any blockchain communication technology, including Blockfrost, GraphQL, Ogmios and inevitably Mithril.
  6. Secure storage (20 hours) - Provide a cross-platform, encrypted storage solution for private keys and passwords.
  7. Multi-signature Support (20 hours) - Support multi-party signatures on scripts and contracts.
  8. Alternate Addresses (20 hours) - Support Enterprise and Pointer addresses, in addition to legacy Daedalus, Yori and other address schemes.
  9. Hardware wallets (20 hours) - Design private key signing architecture to allow delegation to hardware wallets and support at least one popular real-world wallet.
  10. DApp Linking (20 hours) - Chrome browser extension version to allow wallet-DApp communication, hopefully by leveraging the fruits of the Fund 5 Cardano Connector (Metamask-like) project.
  11. API clean-up (20 hours) - Designing good APIs is hard. In addition to refactoring for clarity, this task would standardize the model and service interface patterns, as well as, reduce third-party dependencies.
  12. Use-case examples (20 hours) - Document common use-cases with clear, concise code examples.
  13. Test coverage (20 hours) - Plug holes in test coverage.
  14. Misc. Coding (10 hours) - Clean-up some Fund 5 technical debt like making sure lovelace is stored using BigInt types and separating the integration and unit tests.
  15. Code audit (10 hours) - Identify know crypto exploits and rectify. Explore security review options.
  16. User-requested Features (10 hours) - Reserve some time for adding features requested by users.

Deliverables

  1. Cardano Wallet SDK - https://pub.dev/packages/cardano_wallet_sdk - Building on Fund 5 proof-of-concept foundation, a complete Cardano client SDK will be the primary deliverable of Fund 6.
  2. BlockFrost API - https://pub.dev/packages/blockfrost - This Fund 5 artifact will be updated as needed to support Alonzo features.
  3. Tutorials - Demo apps will be published on GitHub.com, written tutorials on medium.com and video tutorials on YouTube.com.
  4. Demo Wallet - https://flutter-cardano-wallet.web.app - This live demo app will be updated as time allows to demonstrate the SDK in action. This is a closed-source project and development time will not be billed to this Catalyst F6 project.

Who is this guy?

Watch the Fund5 interview if your curious about my background and would like more insight into this project: https://cardanocataly.st/voter-tool/#/fund/f5/challenge/25939/proposals/352623

Roadmap and Performance

Fund 5 work will be completed before the Fund 6 start date: 11/1/2021. Code will be continually pushed to GitHub and the corresponding pub.dev package repository throughout the duration of the project. Catalyst Fund 6 work should be completed four months after the start date. Future work will be driven by community interest and developer adaption.

Internally, performance will be measured by passing unit tests for the promised features. Externally, the primary performance indicator (KPI) will be adoption as indicated by the popularity percentage on pub.dev. For any of the timelines (3, 6 and 12 months), anything over 10% indicates significant usage. At publication date, F5 blockfrost is already at 46% and the F5 cardano_wallet_sdk is at 26%, incredible for a half-finished project. I expect these numbers to spike once the tutorials roll out.

Budget

I felt very honored to be funded in F5, but underestimated the development time by a factor of 4. Attempting to be more realistic in Fund 6, I’m requesting 500 hours and a $30,000 budget (full breakdown is in the write-up above). This will provide a living wage, while I work full-time on the SDK over the next four months. To reduce costs and keep ROI high, I’ve lowered my rate from $100/hour to $60/hour.

Community Reviews (1)

Comments

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