Skip to main content

Polkadart

  • Team Name: EXPERIO S M LTDA
  • Payment Address: 167QS6UiF1ZJBkHtngCBoHTSbLm4Rokc2ehfFBEniEGQXB4k (USDC)
  • Level: 3

Project Overview πŸ“„β€‹

Overview​

  • Polkadart is a Dart library that provides a clean wrapper around all the methods exposed by a Polkadot/Substrate network client and defines all the types exposed by a node. It's an equivalent to polkadot-api written in Dart language.

  • Development of a library that allows users to connect to Polkadot/Substrate’s nodes on Flutter platform.

  • The library is already used in a few production environments to decode the storage and extrinsics from Substrate based chains. Today, there are multiple mobile applications built on Flutter and together with React Native it is one of the most popular frameworks to develop multi-platform mobile applications, but until now, there was no possibility to fully interact with Substrate's node.

Project Details​

  • An overview of the technology stack to be used:
This library will be written purely in Dart technology from scratch.
  • Documentation of core components, protocols, architecture, etc. to be deployed:
We will follow Polkadot specifications and, as a license for Polkadart library, we will use Apache 2.0.
  • What your project is not or will not provide or implement:
This project will not support legacy metadata protocols, such as metadata v9, v10, v11 and v12. Polkadart will not implement any front-end, since it is going to allow developers to use Dart to connect to the Substrate based network.
  • This is a place for you to manage expectations and to clarify any limitations that might not be obvious:
Polkadart is similar to the project "https://github.com/polkadot-js/api" but for Dart, instead of JavaScript.

Ecosystem Fit​

  • Where and how does your project fit into the ecosystem? Our project is going to allow developers to use Dart/Flutter to connect to the Substrate-based network.
  • Who is your target audience (parachain/dapp/wallet/UI developers, designers, your own user base, some dapp's userbase, yourself)? Our target audience is the mobile app developer's community.
  • What need(s) does your project meet? Polkadart enlarges the range of tools compatible with Polkadot/Substrate, therefore expanding its usability.
  • Are there any other projects similar to yours in the Substrate / Polkadot / Kusama ecosystem? Pocket 4 Polkadot-Dart: https://github.com/Pocket4D/Polkadot-Dart#manually-build Polkaj: https://github.com/emeraldpay/polkaj/blob/master/docs/03-rpc-client.adoc
    • If so, how is your project different? Pocket4 was similar to PolkaDart but it was discontinued for lack of progress and Polkaj is related to Java.

Team πŸ‘₯​

Team members​

  • Leonardo Custodio, Blockchain Engineer
  • Lohann Ferreira, Lead Blockchain Architect
  • Kawaljeet Singh, Flutter Developer
  • Gabriel Okura, Flutter Developer
  • Bruno Pastre, Senior Flutter Developer

Contact​

  • Registered Address: Rua Capitao Souza Franco, 350 - Ap 22 - Curitiba/PR - Brasil
  • Registered Legal Entity: Experio S M Ltda

Team's experience​

Leonardo Custodio

Leonardo has being working with Polkadot/Substrate stack for the past 27 months. At his current position he makes SDKs that allows game developers to work easily with Substrate based chain. Before that he was the Lead Mobile Developer of Inovatso where he has created multiple applications for the general public like picPics and other entreprise applications using Flutter.

Lohann Ferreira

Lohann have a deep understanding of Polkadot/Substrate stack amongst other blockchain technologies. Previously worked at First Foundry as Senior Software Engineer. Founder and lead engineer at Jurimetric. Co-founder of Veever, which through the combination of beacons, a web platform, and a mobile app aims to assist people with visual impairment to easily get around and interact with the urban environment. He is focused on solving big problems with simple ambitious solutions.

Kawaljeet Singh

Before starting to work as a full-time flutter developer at Rankanizer, Kawal was working as a freelance Flutter Developer at Inovatso and on other projects. In his free time, he loves to create open-source tools and plugins in dart to help the Flutter community. He is a blockchain enthusiast and is super dedicated to learning and bringing ideas to life.

Gabriel Okura

Gabriel is currently working as a mobile and backend developer at Hype Empreendimentos, and for the past year and a half, he has been having experience building apps in Dart with the Flutter framework. Previously worked with mobile game development at Opala Studios. He is excited about the opportunity to work on Rankanizer and to help build the PolkaDart library to increase his experience with blockchain technology.

Bruno Pastre Bruno is an iOS specialized Software Engineer who has consulted for large tech companies like Coinbase and Wish. He is fascinated about writing scalable, testable and maintainable code and has been working on that for the past four years. He's a Apple Developer Academy alumni, performing both as a student and a Junior Mentor, There, he had the opportunity to share his knowledge with the next generation of iOS developers and empower them to develop themselfs.

Team Code Repos​

Team LinkedIn Profiles (if available)​

Development Status πŸ“–β€‹

Out of the necessity of having a a library / sdk to use substrate chains in our other planned apps. We will start the development of Polkadart in the Grant's program. The repository that will be used during the development is https://github.com/rankanizer/polkadart. We intend to have it open-source since the beginning and all code will be added through pull-requests.

We decided to divide this project into three milestones. The first one is building the codec and metadata part. Since without this all data would have to be mocked and tested using third-party tools as everything is encoded in the substrate eco-system.

After we are able to encode/decode data from primitive types and metadata's of any chain. We are going to proceed with the connectivity part. Where we will implement the interfaces necessary for communicating with the nodes through RPC.

Finally the last step will be the crypto and utils part where we will have the utilities necessary for signing transactions. After these three milestones are completed we shall have a fully featured library that will enable people in the Dart/Flutter ecosystem to communicate with any substrate based node, sign transactions, encode and decode data. Making it possible for example for people to develop flutter applications for Polkadot using native libraries.

Development Roadmap πŸ”©β€‹

Described above.

Overview​

  • Total Estimated Duration: 15 months.
  • Full-Time Equivalent (FTE): 4.
  • Total Costs: 75,000 USD.

Milestone 1 β€” Completed​

  • Estimated duration: 4 months.
  • FTE: 4.
  • Costs: 20,000 USD.
NumberDeliverableSpecification
0a.LicenseApache 2.0
0b.DocumentationWe will provide markdown documentation of how to install and use the API.
0c.Testing GuideWe will provide sample scripts on how to use it.
0d.DockerWe will provide a Dockerfile(s) that can be used to test the PoC.
1a.Scale CodecFirst we will port the functionalities of scale codec to Dart. This way developers can decode and encode data from substrate.
1b.MetadataThen we will add the metadata parser so it can decode/encode the data by looking at the metadata. Important to note that we do not inteed to support legacy versions
1c.TestsUnit tests for deliverables above

Milestone 2 β€” Completed​

  • Estimated duration: 1 month.
  • FTE: 4.
  • Costs: 15,000 USD.
NumberDeliverableSpecification
0a.LicenseApache 2.0
0b.DocumentationWe will provide markdown documentation of how to install and use the API.
0c.Testing GuideWe will provide sample scripts on how to use it.
0d.DockerWe will provide a Dockerfile(s) that can be used to test the PoC.
2a.RPCWe will create the interfaces to use and connect to the node through RPC.
2b.WebsocketsWe will add websockets support to the above.
2e.TestsUnit tests for deliverables above

Milestone 3 β€” Completed​

  • Estimated duration: 6 months
  • FTE: 2.
  • Costs: 20,000 USD.
NumberDeliverableSpecification
0a.LicenseApache 2.0
0b.DocumentationWe will provide markdown documentation of how to install and use the API.
0c.Testing GuideWe will provide sample scripts on how to use it.
0d.DockerWe will provide a Dockerfile(s) that can be used to test the PoC.
0e.Article/WorkshopWe will publish an example flutter project using the library to explain what was done and how to use it.
3a.Substrate UriImplement Substrate's standard derivation format that applies to seeds and mnemonics.
3b.Encrypt/DecryptUse Substrate's Bip39 password to encrypt/decrypt seeds and mnemonics.
3c.Ed25519Support Ed25519 signatures and key derivation
3e.Sign & VerifySign and verify messages using ed25519 keypairs
3f.Substrate Signed ExtensionsSupport substrate's signed extensions
3g.AssetHub Signed ExtensionsSupport AssetHub's signed extensions
3h.Transaction SubscriptionsSupport transaction subscription
3i.Event SubscriptionsSupport runtime event subscription
3j.KeyringCreate a package that manage a set of keys in a consistent environment
3k.CryptoUtilities needed for signing, hash and encode/decode messages
3l.TestsUnit tests for deliverables above
3m.Pub.devPublish to pub.dev

Milestone 4 β€” Completed​

  • Estimated duration: 4 months
  • FTE: 2.
  • Costs: 20,000 USD
NumberDeliverableSpecification
0a.LicenseApache 2.0
0b.DocumentationWe will provide markdown documentation of how to install and use the API.
0c.Testing GuideWe will provide sample scripts on how to use it.
0d.DockerWe will provide a Dockerfile(s) that can be used to test the PoC.
4aΒΉ.Research sr25519More research needs to be done to decide what is the best path forward to support sr25519, one of the following might be done
4aΒ².Rewrite Schnorrkel in DartRewrite schnorrkel in pure dart
4aΒ³.Use rust schnorrkelMake dart wrappers to use rust bindings to use schnorrkel lib
4b.Ecdsa/Secp256k1Support Ecdsa/Secp256k1 signatures and key derivation
4c.Sign & VerifySign and verify messages using sr25519 and ecdsa keypairs
4e.Custom RPCSupport custom RPC methods
4f.Custom Signed ExtensionsSupport custom signed extensions
4g.Multisig AccountImplement's Substrate's Multisig Account
4h.TestsUnit tests for deliverables above
4i.Pub.devPublish to pub.dev

Future Plans​

Until now we are bootstrapping, but we intend to continue to support the project with W3F Grant's help.

Our intention is to make the library available to whoever has an interest in using it. We need it to build Rankanizer, the next-generation app for enabling multiple-choice anonymous voting. Rankanizer will be a transparent and decentralized voting software built on blockchain technology.

Additional Information βž•β€‹

How did you hear about the Grants Program?

Lohann was informed about the Grants Program by personal recommendation.

πŸ’Ύ Work you have already done.

Lohann's previous work:
Forte
Rally
Efinity
Collectiba

Binder's previous work:
Software project: Cluster - Social Impact Platform. Project Manager, Software Architect.
Award: Apple Distinguished Educator 2019
PHD Thesis
StackOverflow: 12.000+ points (top 3% overall)
Personal Researcher Profile on Scopus

Kawal's previous work:
AnimatedText
Protect
Tenor
Excel