A comprehensive Flutter library for seamlessly managing blockchain wallets, supporting both EOA (External Owned Account) and Polygon VC (Verifiable Credential), tailored for robust security and user-friendly interfaces.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
The flutter-blockchain-wallet-manager is an innovative Flutter library designed to facilitate the management of blockchain wallets, including both Externally Owned Accounts (EOA) and Verifiable Credentials (VC). This project aims to bridge the gap between complex blockchain operations and the user-friendly mobile environment Flutter is known for.
Key Features:
- Multi-Account Management: Easily handle multiple wallet types, including EOAs and VCs, within a single integrated framework.
- Security First: Built with security as a core principle, ensuring that all wallet interactions are safe from vulnerabilities.
- Cross-Platform Compatibility: Leverages Flutter's cross-platform capabilities to deliver a consistent experience on both iOS and Android.
- Open Source: As an open-source project, we encourage the community to contribute, suggest improvements, and help us extend the library's capabilities.
Our main goal is to simplify the integration of blockchain technologies in mobile applications, making it accessible to developers without extensive blockchain experience. We focus on providing a robust, secure, and easy-to-use platform for managing digital identities and assets through blockchain wallets.
This library is built mainly using the following technologies:
The project specifications are as follows:
- EOA Wallet are based on the EVM (Ethereum Virtual Machine) and are compatible with the Ethereum network and forks. We decided to use 12 words for the seed phrase and the BIP-39 standard for the wallet creation.
- The private key is stored in the device's secure storage, and the wallet is encrypted with the user's PIN.
- We decided to use the Polygon ID platform for the VC (Verifiable Credential) implementation.
- When using both EOA and VC wallets together, the EOA secret phrase allows to recover also the VC wallet.
To get started with the flutter-blockchain-wallet-manager, please refer to our setup guide and installation instructions in the documentation section. We provide step-by-step guidelines to help you integrate the library into your Flutter projects effectively.
Before diving into the flutter-blockchain-wallet-manager, ensure you have the necessary environment and tools set up as listed below.
Follow these steps to seamlessly incorporate the flutter-blockchain-wallet-manager into your development environment.
- Clone the repo
git clone https://github.com/IsinBlockchainTeam/flutter_isin_blockchain_wallet_manager.git
- Install PUB packages
flutter pub get
Getting started with the flutter-blockchain-wallet-manager is straightforward. Follow these steps to integrate the wallet management functionality into your Flutter app.
-
Add the following statement to your
pubspec.yaml
file:dependencies: flutter_isin_blockchain_wallet_manager: git: url: https://github.com/IsinBlockchainTeam/flutter_isin_blockchain_wallet_manager.git ref: main
-
Import the library
import 'package:flutter_isin_blockchain_wallet_manager/<component>.dart';
-
Wrap your app with RestartWidget
return const RestartWidget( child: MyApp(), );
-
Initialize the app with the wallet manager
return MaterialApp( title: 'Flutter Demo', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), home: EoaWalletMain( targetView: VCWalletMain( targetView: const HomePageView(), requiresPinScreen: false, ), ), );
-
Setup PolygonID
final PolygonID polygonID = PolygonID( chainID: 137, chainName: 'Polygon', rpcUrl: 'https://rpc-mainnet.maticvigil.com', explorerUrl: 'https://explorer-mainnet.maticvigil.com', chainToken: 'MATIC', chainTokenSymbol: 'MATIC', chainTokenDecimals: 18, chainTokenExplorerUrl: 'https://explorer-mainnet.maticvigil.com/tokens', );
-
Instantiate Wallet Services
final WalletService walletService = WalletService(); final VCWalletService vcWalletService = VCWalletService(PolygonIdSdk.I);
-
Get Wallets data
final String? eoaWalletPrivateKey = await walletService.readPrivateKey(); final String? vcPrivateKey = await vcWalletService.readPrivateKey();
For more detailed information, please refer to the Example section.
If you want to have more information about the PolygondID, please refer to the PolygonID
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.
- Giuliano Gremlich - giuliano.gremlich@supsi.ch
- Roberto Guidi - roberto.guidi@supsi.ch
- Lorenzo Ronzani - lorenzo.ronzani@supsi.ch
Project Link: flutter_isin_blockchain_wallet_manager
Organization Link: IsinBlockchainTeam
Use this space to list resources you find helpful and would like to give credit to. I've included a few of my favorites to kick things off!