Code Monkey home page Code Monkey logo

plutowallet's Introduction

To see the most recent working version, go to the devel branch.

Download

Android apk: https://rostislavlitovkin.pythonanywhere.com/downloadplutowallet

Other platforms will be available for download probably in November.

Build and Debug locally

git clone https://github.com/RostislavLitovkin/PlutoWallet

git checkout devel

git submodule init
git submodule update

I recommend using Visual Studio 2022: https://visualstudio.microsoft.com/vs/community/

Install .net MAUI: https://learn.microsoft.com/en-us/dotnet/maui/get-started/installation?tabs=vswin

Detailed description on how to run the code: https://docs.microsoft.com/en-us/dotnet/maui/get-started/first-app?tabs=vswin&pivots=devices-android

PlutoWallet

Screenshot 2023-08-19 at 23 28 08

Multi-platform mobile wallet for substrate-based chains. Focuses on the best UX. First C# mobile wallet in Polkadot ecosystem.

Supported platforms:

  • Android & WearOS
  • iOS & ipadOS
  • MacCatalyst
  • Windows

The wallet supports these functionalities:

  • generating Mnemonics & creating a privateKey
  • showing and sharing your public key and ss58 key
  • connecting to any substrate based blockchain/parachain
  • getting your actual balance
  • transfer of native assets
  • fee calculation
  • shows transaction status
  • Nfts (powered by Uniquery.Net)
  • Contracts (Currently just Counter Sample)
  • connect to any dApp thanks to Plutonication

3rd party integrations:

Differentiating factors

1) Multinetwork optimisation

The UI/UX is optimised to support multichain out of the box. Instead of having one chain selected at a time, you can have chain groups. This makes the UI more approachable and simple.

2) Custom layouts (PlutoLayouts)

Extremely important tool for onboarding new users. Not only can you optimise UI layouts to your needs, you can also export them to other users. This can be especially handy for dApp projects:

  • In a typical use-case, dApp developers would have to teach new users how to use their wallets. It is usually a big hassle, the user has to find the chain they are looking for and they would still see many confusing crypto functionalities that they would not care about.
  • With PlutoLayouts, dApp developers can export the ideal layout (UX optimised for their specific app) and share them to the new users so that they have got the ideal UX out of the box. They will see only features they would actually care about.
  • It is highly customisable. When the users decide they want to do more in the ecosystem, they can easily add more functionalities to the wallet. They can learn to use Polkadot on their own pace.

3) Plutonication

Plutonication allows users to connect PlutoWallet to other dApps seamlessly on any platforms, accross multiple codebases. DApp just generates a QR code and once it is scanned in the wallet, they will pair and the wallet will be able to receive transaction requests from the dApp. To learn more, visit https://github.com/cisar2218/Plutonication.

  • It works the same way as WalletConnect protocol.

4) Multiplatform development

This project is developed using .net MAUI framework, which allows simple development of native mobile apps on many different platforms from a single codebase. This is crucial for quick (and easier) development while preserving the quality.

5) Market leading NFT support

The largest NFT support in the whole Polkadot ecosystem, thanks to Uniquery.Net.

Supported Networks/NftStandards:

  • Rmrk
  • RmrkV2
  • Basilisk
  • Glmr
  • Movr
  • Unique
  • Quartz
  • Opal
  • Acala (OnFinality BETA)
  • Astar (OnFinality BETA)
  • Shiden (OnFinality BETA)
  • Statemine/Statemint/Rockmine Nfts pallet
  • Statemine/Statemint/Rockmine Uniques pallet
  • more to come...

Allows the wallet to communicate with any dApps and sign their respective transaction requests without the risk of compromising the private key. Screenshot 2023-08-19 at 22 50 21

Achievements

  • 2nd place at Polkadot Global Series hackathon 2023, Europe edition in the Web3 & Tooling category

Current team

  • Alumnus at Polkadot Blockchain Academy 2023 in Berkeley
  • Experienced .net MAUI developer, e.g.:
  • Frontend developer at Calamar explorer
  • Successful student at Polkadot DevCamp #2
  • Successful student at Solana Summer School
  • Polkadot Global Series 2023 (Europe) - second place
  • Audience choice prize at EthPrague 2023

Dušan Jánsky

  • Alumnus at Polkadot Blockchain Academy 2023 in Berkeley
  • Student at Faculty of Electrical Engineering Czech Technical University in Prague - Opens Informatics (specialization in computer games and computer graphics)
  • Fullstack developer at Universal Scientific Technologies
  • Polkadot Global Series 2023 (Europe) - second place

Tech Stack

Terminology

  • dApp = any application that uses crypto functionalities. In order to use dApps, it needs to communicate with the crypto wallet somehow, or it needs to know your private key (very insecure).
  • Substrate key = ss58 encoded key with "42" prefix.
  • Chain-specific key = ss58 encoded key with a custom prefix.
  • Chain = either standalone blockchain, relay chain, or parachain. (and/or combination of them)
  • Extrinsic = A transaction (more info: https://wiki.polkadot.network/docs/learn-extrinsics)
  • PlutoLayout = a simple way to save and export custom layouts.

development terminology:

  • Entry page - the first screen that the users see (now the Mnemonics page)

Project folder structure

  • /Platforms platform spacific codes, mainly code that ensures the boot on multiple platforms

  • /Resources all resources, including icons, images, fonts, splashscreen...

  • /Components organised by subfolders of different components. /<subfolder-name> contains 1 or more Views (Always a ContentView) and ViewModels. It's respective Model (if existant) lives in /Model

  • /Types stores custom types. Mainly Ajuna generated ones.

  • /Constants

  • /View stores pages and views shown on pages

  • /ViewModel view's respective ViewModel

  • /Properties nothing important

plutowallet's People

Contributors

cisar2218 avatar martinezada avatar ropo1510 avatar rostislavlitovkin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.