Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flow Flutter SDK #240

Closed
christian-rogobete opened this issue Dec 7, 2023 · 3 comments
Closed

Flow Flutter SDK #240

christian-rogobete opened this issue Dec 7, 2023 · 3 comments
Assignees

Comments

@christian-rogobete
Copy link

christian-rogobete commented Dec 7, 2023

Flow Flutter SDK

Grant category

Developer tools / services

Description

The goal of the Flutter SDK for Flow is to make it easier for Flutter developers to interact with the Flow Network by abstracting the Flow specific logic, so that developers can focus on implementing app logic.

Problem statement

Many developers use Flutter to implement multi-platform applications from a single codebase. It supports the development of applications on six platforms: iOS, Android, Web, Windows, MacOS and Linux. Flutter excels as a cross-platform development framework by offering features such as:

  • Near-native performance:
    Flutter uses the Dart programming language and compiles to machine code. Host devices understand this code, ensuring fast and effective performance.
  • Fast, consistent and customizable rendering:
    Instead of relying on platform-specific rendering tools, Flutter uses Google's open-source Skia graphics library to render the user interface. This provides users with consistent visuals regardless of which platform they use to access an application.
  • Developer-friendly tools:
    Google has developed Flutter with a focus on ease of use. Tools like Hot Reload allow developers to preview what code changes will look like without losing state.

Currently we are not offering an easy way for Flutter developers to access the Flow Network.

Target audience

Flutter developers.

Evidence for the need

Flutter is the most popular cross-platform mobile framework used by global developers. See here and here.

I am the main developer and maintainer of the Flutter Stellar SDK. The SDK has 67 Stars on GitHub and is used to access the Stellar Network. It is used by many onboarding Wallets and other applications that interact with the Stellar Network.

Flutter is often used to implement applications such as wallets but also for game development. Here is an example for game development with Flutter: SuperDash with Flutter.

Proposed solution

Implement a Flutter SDK for the Flow Network.

Impact

The Flow Flutter SDK will make it easy for Flutter developers to access the Flow Network. This SDK will increase the number of projects using the Flow Blockchain.

Milestones and funding

The Flutter SDK for Flow will be implemented with Dart, can be used on all platforms supported by Flutter and will offer following functionality:

  • Query Data (HTTP & gRPC): Blocks, collections, transactions, transaction results, accounts, events, network parameters.
  • Crypto functionality: Generate keys, create accounts, sign transactions, sign data.
  • Submit: Execute scripts and send signed transactions.
  • FCL: Implementation of FCL, allowing app developers to interact with user wallets.

The open source SDK will include documentation, examples and tests on GitHub. The package will be published to pub.dev.

Milestone Deliverables Timeline Risks USD proposal
1. Query Data from Flow Access Nodes see below 6 weeks after grant approval - 20.000
2. Execute scripts see below 8 weeks after grant approval - 6.000
3. Transactions, Keys and Accounts see below 12 weeks after grant approval - 12.000
4. FCL implementation see below 18 weeks after grant approval - 20.000
Maintenance Resolving issuing and fixing bugs. Continuous improvement and expansion of the SDK in line with quarterly roadmaps. after Milestone 4. - 10.000 / per quarter after approved roadmap

Total funding proposed: $58.000 (Milestones 1 - 4)

Submission deliverables:

[Deliverable 1]: Query Data from Flow Access Nodes

  1. Brief description: You can query data from any Flow Access Node using the SDK. The SDK supports both gRPC and HTTP methods of communication with Access Nodes.
  2. How to measure completion: Source code, docs and tests available on GitHub. First release of the SDK published to pub.dev. The SDK will be able to query following data:
    • Blocks: Block by Id, latest block, block by height, block Header by Id, latest block Header, block header by height.
    • Collections: Collection by Id
    • Transactions: Transaction by Id, transactions by block Id.
    • Transaction results: Transaction result by transaction Id, transaction results by block Id.
    • Accounts: Account by address at latest block, account by address at block height.
    • Events: Events for height range, events for block Ids.
    • Streaming/Subscriptions: Subscribe/stream events, subscribe/stream execution data.
    • Other: Network parameters, execution result for block Id, ping
  3. Estimated date of completion: 6 weeks after grant approval
  4. Budget: $20.000

[Deliverable 2]: Execute scripts

  1. Brief description: You can execute scripts at any Flow Access Node using the SDK. The SDK supports both gRPC and HTTP methods of communication with Access Nodes.
  2. How to measure completion: Source code, docs and tests available on GitHub. A new version of the SDK is published to pub.dev. The SDK can execute scripts as follows:
    • execute script at latest block: executes a read-only Cadence script against the latest sealed execution state.
    • execute script at block id: executes a ready-only Cadence script against the execution state at the block with the given Id.
    • execute script at block height: executes a ready-only Cadence script against the execution state at the given block height.
  3. Estimated date of completion: 8 weeks after grant approval
  4. Budget: $6.000

[Deliverable 3]: Transactions, Keys and Accounts

  1. Brief description: You can sign and submit transactions, generate keys and create accounts using the SDK.
  2. How to measure completion: Source code, docs and tests available on GitHub. A new version of the SDK is published to pub.dev. The SDK offers following features:
    • Generate key pairs: ECDSA key pairs on the P-256 (secp256r1 or secp256k1) elliptic curve.
    • Create accounts: Supported hashing algorithms: SHA2_256, SHA2_384, SHA3_256, SHA3_384, Keccak_256
    • Sign transactions: In memory signing of transactions (multiple times by one or more parties)
    • Submit transactions: Send signed transactions to the Flow Network.
  3. Estimated date of completion: 12 weeks after grant approval
  4. Budget: $12.000

[Deliverable 4]: FCL implementation

  1. Brief description: You can interact with FCL compatible wallets in order to authenticate the user and authorize transactions on their behalf.
  2. How to measure completion: Source code, docs and tests available on GitHub. A new version of the SDK is published to pub.dev.
    The SDK offers following features: configuration, discovery, authentication, pre-authz, authorization, user-signature, authn-refresh, account-proof as described in FLIP45.
  3. Estimated date of completion: 18 weeks after grant approval
  4. Budget: $20.000

Extended roadmap:

Keep the SDK up to date, maintain and make proposals for extending and improving the SDK (e.g. support for templates).

Team

Name Nickname Role Bio Contact
Christian Rogobete Soneso Developer MCS. Blockchain developer since 2017. Main developer and maintainer of the Flutter Stellar SDK and the iOS Stellar SDK. c.rogobete@soneso.com
@christian-rogobete
Copy link
Author

Hi guys, are you still reviewing my submission? I would be very happy to receive your feedback.

@christian-rogobete
Copy link
Author

Hi @SeanRobb, can you please give me some feedback on my proposal? Are you interested in a Flutter SDK as described above?

@christian-rogobete
Copy link
Author

My offer is no longer valid. It was ignored for months.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Closed (withdrawn or passed)
Development

No branches or pull requests

3 participants