Giter VIP home page Giter VIP logo

phoenix's Introduction

Phoenix Signum Wallet

Test and Build Angular App

Phoenix is an open source, cross-platform wallet for the Signum (former Burstcoin) blockchain. It's actually two applications: a mobile app, and a desktop/web app.

image

More screenshots

Key features:

  • Improved security - Private keys are encrypted with a hashed PIN, securing them in the event of data breach. That PIN is then used for locally signing transactions and decrypting messages. Passphrases are not stored locally, and never sent to the server.
  • Multi-account support - Manage multiple accounts within your wallet.
  • Contact List
  • Offline account support - Watch an account without using the passphrase for maximum security.
  • Cross-platform - Runs on all popular platforms without any additional software requirements.
  • Different Dashboard Layouts - for different user profiles with Market Information and Interactive Balance History Diagram, Mining Informtion
  • Powered by

Additional features:

  • Multi-out support - Send and view Multi-out & Multi-out-same Payments
  • QR Codes - View account QR codes and create custom QR codes for merchants/POS terminals.
  • Deep Linking - Make your apps interact with Phoenix (see here)- SRC22 compatible
  • Support SRC44 - Structured descriptor data for accounts and aliases
  • Alias support - View and register Signum Aliases, i.e. mutable on chain data
  • Account Description - Edit your account profile
  • Messages support - Send and receive encrypted and unencrypted messages.
  • Mining Setup - Allows to set your reward recipient and commitment (PoC+)
  • View peers, blocks, and transactions.
  • Node Configuration - Select from a predefined list of nodes or use your own, or just let select automatically
  • Account Activation - Once created an account, it gets activated by the network without the need of a faucet
  • Update Notification - Be up-to-date with inbuilt update download
  • Localized in 25 languages.
  • Responsive UI

Some features not available on mobile.

Application Architecture

Phoenix is comprised of two main applications: a desktop application and a mobile application

Phoenix Architecture Diagram

The web application is built on Angular 8 and embedded into electron to be executable as desktop application. The mobile application uses React Native to be available for Android and iOS. All these apps use the SignumJS SDK to interact with the Signum nodes.

Installation and Build

The project is structured per platform, and further build/installation instruction can be obtained from the README.md in their respective folders.

Pick A Platform

See Also

phoenix's People

Contributors

blankey1337 avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar harryjph avatar ipr0310 avatar jjos2372 avatar llybin avatar mahenrique94 avatar ohager avatar rever273 avatar ryanmjacobs avatar shefass avatar snyk-bot avatar thetimewalker avatar titanishu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar

phoenix's Issues

Resolve root path issue for electron

In index.html the base path of ng web app needs to be / for proper routing. Electron does not find assets then, and needs ./ instead.

A way to lead with this issue would be an adjustment in build chain (scripts/build.js)

Mobile: Secure passphrase storage with fingerprint / face authentication

This should probably be implemented separately for iOS and Android, as that way we can take advantage of Android Keystore and iOS Keychain separately.

I know this works for Android and I'm fairly certain it works for iOS, but the general idea is to store a credential in the OS storage (Android Keystore / iOS Keychain) and set it to be accessible only after user authentication (that is, after the user has validated device PIN / fingerprint / face unlock).

Even if we choose not to access using biometrics, we should at the very minimum store the user's passphrase in the relevant OS keystore service, as this means it is completely inaccessible under normal circumstances (unless jailbroken / rooted).

Android:

https://developer.android.com/training/articles/keystore#kotlin

I have written a library to do all of the necessary system interaction:
https://github.com/harry1453/authenticated-encryption

iOS

https://developer.apple.com/documentation/localauthentication/accessing_keychain_items_with_face_id_or_touch_id

Potential library:
https://github.com/oblador/react-native-keychain

Initial Type Definition File

The core library will be used in EcmaScript (ES) and TypeScript (TS) projects. To take advantage of TS features, like better linting, nice IDE support, a type definition file should be provided. Obviously, the definition file needs to be maintained while the core library evolves.

Dashboard View

Currently, the dashboard uses mock data. Please wire it up to use real data.

Create crypto package

Within the burstjs library we need the necessary crypto functions. Those will go to @burst/crypto package

Make production build work.

Due to the introduction of the further packages (crypto, core) the production build of angular-wallet fails and affects also the succesful build of electron app.

src/app/settings.ts(33,56): error TS2339: Property 'marketUrl' does not exist on type '{ production: boolean; hmr: boolean; }'.

Enhance Layout on Account creation

image
image
image

The current layout is pretty raw and should be refined!

  • Buttons with correct Material UI (ripple etc)
  • Progress bar working when generate seed
  • Button positions

Login Page

There it is: the first UI feature request

We should have a very neat, impressive, and functional login page for the wallet.

How about a cool logo?

Create a generic http class

The core lib is a shared code base. We cannot simply use the ng http client, as it is framework dependent. The generic http class should be usable within all modern js engines and framework agnostic. It shall be the foundation for the Burst Api abstraction later provided by this core lib.

Along with the http class itself a mocked http class is needed for testing purposes

HttpMock is not mocking

The httpMock is not behaving like it should...instead of mocking the requests it executes them

Jest as test runner

The ng project comes natively with jasmine and karma as test runner. Jest offers fast snapshot testing, nice watcher and executes tests faster. Overall, it's easier to configure and a lot things, like testrunner, coverage etc. are inbuilt

Transaction Details View

As a user, I want to be able to view details of a given transaction. In the transaction list, I should be able to click on a transaction to view details of that transaction in a side panel or modal.

There should be a tab for Transaction Details and Info.

image

image

Edit Alias

As a user, I want to be able to edit my Aliases. Ideally we can reuse the CreateAliasForm (once it exists).

Settings Page: Language

As a user, I want to be able to see the different wallet settings and configure my Language selection. This setting should persist indefinitely until a user changes it.

Default: English
image

Encrypted Messages

As a user, I want to be able to encrypt my messages in both the Send Burst and Send Message features.

Messages: Send Message

As a user, I want to send a message using BURST.

Fields
Recipient
Message
Fee - Fee Selector
Total
Buttons

See Send Burst Modal for an example implementation that is very similar.

Can't Start Desktop - Cannot find module 'args'

I've tried this on windows and mac, and both give the same error as below.

is this a configuration thing on my machines?

C:>\npm\phoenix\desktop\wallet>npm start

> @bats/[email protected] start C:\fileZ\npm\phoenix\desktop\wallet
> cross-env NODE_ENV=develop && npm run build && electron .


> @bats/[email protected] build C:\fileZ\npm\phoenix\desktop\wallet
> node ../../scripts/build.js --target desktop

internal/modules/cjs/loader.js:583
    throw err;
    ^

Error: Cannot find module 'args'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (C:\fileZ\npm\phoenix\scripts\build.js:1:76)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @bats/[email protected] build: `node ../../scripts/build.js --target desktop`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @bats/[email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\ibagy\AppData\Roaming\npm-cache\_logs\2019-02-09T01_37_50_535Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @bats/[email protected] start: `cross-env NODE_ENV=develop && npm run build && electron .`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @bats/[email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\asdwe\AppData\Roaming\npm-cache\_logs\2019-02-09T01_37_50_575Z-debug.log

Download Blockchain

As a user, I want the desktop app to download the blockchain automatically. There should be a stats / progress bar somewhere, with additional details (i.e. current block / block height) as needed for debugging purposes.

Messages View

As a user, I'd like an inbox-like experience when viewing messages.

This includes the following features:

  • View messages by sender (see screenshot)
  • Read Message
  • Decrypt Message (note: decryption should be backwards compatible with current burst blockchain)

image

Request QR Code

As a user, I want an easy way to request BURST from other accounts.

Feature overview:
Recipient (disabled) - Users account address
Amount (BURST)
Fee (BURST)
Fee selector (see send burst modal)
Immutable - Includes tooltip

See screenshots for details
image
image

Transactions View

As a user, I want a detailed table where I can see all of my BURST transactions. This table should have the ability to filter/sort through any possible type of BURST transaction, including All Transactions, Arbitrary Message, Alias Assignment, Alias Sale, Account Info, etc. (see screenshot).

image

Create brs api within core package

Within the burstjs library we want to abstract the burst API (provided by BRS). Those will go to @burst/api package.

@blankey1337 Maybe a http package makes no sense. Http.ts could go to @burst/api

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.