completed

Cardano Wallet Flutter SDK

$10,000.00 Received
$10,000.00 Requested
Ideascale logo View on ideascale
Community Review Results (1 reviewers)
Addresses Challenge
Feasibility
Auditability
Impact
Solution

Publish an open-source Flutter library to encourage mobile app development in the Cardano ecosystem.

Problem:

Flutter is the fastest growing mobile app developer community but currently there's no Flutter library support in the Cardano ecosystem.

Yes Votes:
₳ 330,181,427
No Votes:
₳ 8,395,302
Votes Cast:
1630

This proposal was approved and funded by the Cardano Community via Project F5: Developer ecosystem Catalyst funding round.

  • Video cover image

Project Deliverables:

Why Flutter?

Flutter is a cross-platform mobile framework that allows you to develop one code-base that runs on both iOS and Android devices. Flutter is known for its beautiful user interfaces, simplicity, speed, modern design and ROI value. As a developer who has maintained both iOS and Android versions of the same app, I can attest that Flutter is more productive than either platform, meaning you get more than two for the price of one. Despite only being around for 4 years, it's already caught up to market leader, React Native. Finally, with the full backing of Google, it won't be going away anytime soon. For further reading:

Why a Wallet?

A wallet is a foundational component of any app that wishes to interact with the Cardano ecosystem by allowing the sending and receiving of ADA to the Cardano blockchain. Having an open-source wallet allows developers to build value on top of this basic functionality.

Cardano Adoption Accelerant

As with most digital technologies, public adoption of Cardano will occur largely on mobile platforms. Inspiring and facilitating the Flutter developer community could double the Cardano mobile apps published in the coming years.

Goals and Scope

Duplicating everything written in Haskell or JavaScript needed to write a full function wallet app in Dart in one go is not a realistic goal. Instead, the aim will be to lay the foundation for future development by gathering needed Dart resources and implementing a few representative tasks to serve as templates for further development. Likewise, this may identify possible missing components in the Dart ecosystem. Leveraging BlockFrost eliminates the need to manage or communicate with a Cardano node. And mostly importantly, removing the mobile app itself to a separate (possible future Catalyst) project eliminates all UI costs.

Deliverable Breakdown

https://github.com/reaster/blockfrost_api Serving as the means of communication with the Cardano blockchain, this component is largely a code generation artifact produced from the OpenAPI BlockFrost REST specification (https://docs.blockfrost.io). It should be 90% completed before this project is funded.

https://github.com/reaster/cardano_wallet_sdk A full wallet SDK is a complex piece of software, adhering to the highest levels of security and at a mimimum, requires the following functionality:

  • list, create, update, or delete wallets
  • create, submit or track transactions and their fees
  • create, import and manage wallet addresses
  • manage and communicate with various networks
  • manage private and public keys
  • sign and validate messages
  • collect, store and manage user information The primary focus of this project will be assembling the needed resources and writing a few strategically choose features to demonstrate the feasibility of a Dart-based Cardano wallet and lay the ground work for future development. To limit scope, initial service implementations will use hard-coded data (public/private keys, wallet addresses, etc.) and be limited to the Shelley protocol. API organization will mirror existing Haskell and JavaScript libraries. The work will focus on the following core tasks:
  • BlockFrost account setup
  • list transactions using the BlockFrost API
  • implement cryptographic functionality on an as-needed basis
  • implement CBOR binding based on shelley.cddl and validate functionality with tests
  • implement ADA receive transaction
  • implement ADA send transaction
  • implement a price oracle (optional)
  • generate and store public/private keys (optional)
  • implement wallet generation (optional) Staking, native tokens, token exchange, smart contracts and other features are beyond the scope of this project.

https://flutter-cardano-wallet.web.app/ To lower the scope and cost of this project, it was decided to not open source the UI component at this time. Instead, this will be publicly accessible as a live demo project on the web. (Did I mention Flutter 2.0 now supports web deployments?) In addition to demonstrating and validating functionality, a working UI keeps the use cases focused, improving SDK design. Inspired by the MetaMask wallet design, this app will initially use mock data which will gradually be replaced by cardano_wallet_sdk provided (testnet) data as each function is completed. The UI layout should be 90% finished before this project is funded and development will not be billed to this project. If the community shows interest in supporting this app, it will be offered as a project in a future funding round.

Roadmap and Performance

Code will be continually pushed to GitHub throughout the duration of the project and catalyst funded

Community Reviews (1)

Comments

Monthly Reports

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