Giter VIP home page Giter VIP logo

roots-id / rootswallet Goto Github PK

View Code? Open in Web Editor NEW
18.0 18.0 1.0 146.18 MB

An open source identity/credential wallet built for grass roots efforts in multiple countries.

Home Page: https://www.rootswallet.com

License: Apache License 2.0

TypeScript 28.69% Starlark 0.17% Java 0.82% JavaScript 4.65% Ruby 0.15% Objective-C 0.31% Swift 0.01% C 60.94% Kotlin 4.21% Shell 0.04%
blockchain digitalidentity identity identitywallet ssi

rootswallet's People

Contributors

2byrds avatar alexandrei98 avatar butchclark avatar rodolfomiranda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

the-hardforq

rootswallet's Issues

License

We need to decide which license best apply to our project: MIT, Apache, etc

Move key generation to JS

Key generations were embedded as part of did:peer and Prism libraries. We need to move out from the native modules so they can be available by javascript, enabling the integration with the storage module.

Coding best practices

I open this issue to create a list of coding best practices that we can discuss and publish afterwards:

  1. all UI texts must be localized i18n
  2. avoid dependency to non-mature and/or non well adopted external libraries

Add QR codes of DID and Credential JSON

Present QR code for DID JSON and Credential JSON.
This is mostly an exercise for displaying a QR code. we'll work out the actual details of what data to present in a future ticket.

Define a QA Strategy

The technology stack and specifications for Decentralized Identity are not mature, I expect a lot of rework on the near future. To avoid doing much rework on the QC procedures I think the best is to do a QA strategy focused on the lower levels (unit test)

Prototype Drawer Navigation

I tried a quick hermes/drawer upgrade to rootschat and it digressed quickly. i'll start with a clean project to see what progress will take.

Create / Gather graphics elements for Wallet App

We will need several graphics, layout, and color bits to make a consistent looking app. These elements include:

#Components Needed
For guidance, refer to this issue:

  • #10
  • [x ] #10
  • favicon ๐ŸŽ‰
  • background default color
  • highlight color
  • Font style
  • Font color - default / highlighted / greyed out
  • splash screen image
  • background image
  • etc

Multiplatform framework selection

This issue is created to list reasons, pros and cons, for selecting React Native as the initial framework:

  • we plan to build a mobile wallet that can run in Android and iOS devices
  • current Prism SDK was provided in Kotlin. There's a plan to release it in other languages but not delivery date was given. An old SDK in javascript exists but IOG team said it is incomplete
  • Kotlin Multiplatform Mobile was an option. It's a good framework but it is in alpha stage. We were able to build Prism SDK to work in Android, but building for iOS was impossible (it looks like the SDK needs to be built as multiplatform)
  • React Native allows us to embed Kotlin SDK as a native module and build for Android only
  • In the future, if we receive Prism SDK in swift/objective-C or Javascript we can easily add and build for iOS
  • React Native views and common code can be shared and deployed on both OS.
  • React Native is a matured and well adopted multiplatform framework with a huge community. There's a large library of components both provided by Facebook and the community

Use AIP v2 as implementation reference

If we follow the Aries steps, the Aries Interop Profile (AIP) provides a clear path, for an MVP I believe these are the most basic requirements:

Stablish envelop protocol

This is the first step to establish a connection here QR, URL or JSON Invitation files are used (un-encrypted):
https://github.com/hyperledger/aries-rfcs/tree/bed4989dd6517f7a9de3696800e57e4c6ef49231/features/0434-outofband

Here a pairwise relation is created, DIDs are interchanged (DIDComm):
https://github.com/hyperledger/aries-rfcs/tree/b3a3942ef052039e73cd23d847f42947f8287da2/features/0023-did-exchange

Content protocol

Protocol for issuance
https://github.com/hyperledger/aries-rfcs/tree/b3a3942ef052039e73cd23d847f42947f8287da2/features/0453-issue-credential-v2

Protocol for credential verification
https://github.com/hyperledger/aries-rfcs/tree/b3a3942ef052039e73cd23d847f42947f8287da2/features/0454-present-proof-v2

Other notes

Error reporting related to #13
https://github.com/hyperledger/aries-rfcs/tree/b3a3942ef052039e73cd23d847f42947f8287da2/features/0035-report-problem

Full AIP v2: https://github.com/hyperledger/aries-rfcs/tree/main/concepts/0302-aries-interop-profile#aries-interop-profile-version-20

If we also implement the features below we can use https://indicio-tech.github.io/mediator/ as mediator agent so the mobile app can receive messages from other agents (need to do more research on this one):

https://github.com/hyperledger/aries-rfcs/blob/main/features/0211-route-coordination/README.md
https://github.com/hyperledger/aries-rfcs/blob/main/features/0160-connection-protocol/README.md

Meet with Darrell and Tony 2021-12-15

  • We will be open source, agile, small, simple, fast, pluggable in order to serve immediate needs. Our preferred starting point is Atala Prism adoption.
  • We will learn from Aires and cherry pick to shape our future.
  • We will communicate constantly with our partners and as much of the ecosystem as we can.
  • For Fund 7: What are the minimum requirements for any wallet?
  • For the future: Which requirements for DIDs, Credentials, UI should we focus on from Indy?
  • For the future: Which wallet functionalities should be interoperable first? Which can wait?
  • How do we relate/communicate with the Atala Prism Wallet development team/project?
  • How much of AP can we share? APPP videos/slides? Our open source code using the AP SDK?
  • What is the size of the Atala Prism development team, etc.

DIDComm library selection

This issue is to research and decide if we should implement DIDComm V1 or V2 (or both) and select a library.

First Install

The initial template was created as follows:

If first time with React Native, install expo cli:
yarn global add expo-cli

Generate blank TypeScrip template:
expo init rootswallet

Generate Android and iOS code (use com.rootswallet as Android Package and iOS Bundle Identifier):

cd rootswallet
yarn eject

Then I created PrismModule.kt, RootsWallet.java loaded in MainApplication.java. Add kotlin and prism code in build.gradle.

How to build and run:
If first time with React Native, install expo cli:
yarn global add expo-cli

Install dependencies:
yarn install

In my MAC I had to:
export ANDROID_SDK_ROOT=/Users/rodolfo/Library/Android/sdk

Export Prism SDK password:
export PRISM_SDK_PASSWORD=ghp_2CTxxxxxxxxxxx

Install Android Studio, and open Simulator from ADV Manager

Build and run:
yarn android

See app launching in simulator, click to generate DID, and see generated DID in log

ONLY A TEST BUG

Instead it saves the passphrase. Need to be able to work with keys in secure store.
Note: this is mostly being done as a bug, to see how bug issues look in our system.

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.