Git Product home page Git Product logo

chainsafe / weipay Goto Github PK

View Code? Open in Web Editor NEW
45.0 9.0 25.0 37.15 MB

WeiPay is an open source cryptocurrency wallet available for both iOS and Android mobile devices. WeiPay will support Ethereum out of the box with added support for ERC-20 & ERC-223 tokens.

Home Page: http://weipay.io

License: GNU General Public License v3.0

JavaScript 95.31% Python 0.84% Java 0.84% Objective-C 1.88% Ruby 1.13%
ethereum wallet erc-20 react-native erc223 android ios cryptocurrency blockchain smart-contracts

weipay's Introduction

WeiPay ERC20 Wallet

WeiPay is a open source Ethereum and ERC20 wallet available for both IOS and Android mobile devices. WeiPay allows for multiple network and wallet configurations, contract interactions, and contact key management.

How To:

  • git clone https://github.com/ChainSafe/WeiPay.git
  • npm install, sudo npm install (if on linux)
  • react-native link
  • react-native run-ios || react-native run-android

Software Requirements

  • Node 8.0 +
  • XCODE - For IOS Build
  • Android Studio - Android Build
  • JDK >= 1.7 (if you run on 1.6 you will get an error on "_cameras = new HashMap<>();")
  • On Android, you require buildToolsVersion of 25.0.2+. This should easily and automatically be downloaded by Android Studio's SDK Manager.
  • Java should be in your system path

ESLINT installation

  • Locally install ESLINT module sudo npm install eslint --save-dev
  • For VSCODE users install the ESLINT plugin
  • sudo npm install eslint-plugin-react --save-dev
  • sudo npm install eslint-plugin-react-native --save-dev
  • sudo npm install eslint-plugin-import --save-dev

IOS physical device third party build error

  • git clone https://github.com/ChainSafe/WeiPay.git
  • npm install or yarn install
  • react-native link
  • React Native/Xcode build issue
    • Double Conversion Errors -> Xcode -> Libraries -> RCTWebSocket.xcodeproj -> Build Phases - > Link Binary with Libraries -> select libfishhook.a and click " - " button. Click " + " and add libfishhook.a to add the broken dependency.
    • https://github.com/facebook/react-native/issues/19839
    • React Native third party library issue -> https://github.com/facebook/react-native/issues/14382
    • Solution: CD /node_modules/react-native/third-party/glog & ./configure
    • This will throw one last error in xcode, you must change the return value of the function to NULL and comment out the current return statement (return (void*)context->PC_FROM_UCONTEXT;).
    • https://github.com/facebook/react-native/issues/16106
    • Build & run project -> select developer profile -> make sure deployment targets are the same in both your project and the tests project -> WeiPay should build to your physical ios device

Common Errors Encountered When Building For IOS

Fixing iOS build error for react native permissions zoontek/react-native-permissions#42

Build error fishhook https://user-images.githubusercontent.com/637225/41004316-d626d112-68ef-11e8-8a5e-397a55777bc4.png

Select a development team https://stackoverflow.com/questions/39524148/requires-a-development-team-select-a-development-team-in-the-project-editor-cod

Linking vectors https://github.com/react-native-training/react-native-elements/issues/503

Build to physical android device

  1. Enable the Developers options on the Android Device
  2. Enable Usb debugging in the Developers option

For immediate app testing and debugging, you can build a debug APK. The debug APK is signed with a debug key provided by the SDK tools and allows debugging through adb.

To build a debug APK, open a command line and navigate to the root of your project directory. To initiate a debug build, invoke the assembleDebug task:

  • cd android && ./gradlew assembleDebug
  • react-native run-android

If your device is not found

  • check devices with adb devices
  • Run the following command in the project directory : adb reverse tcp:8081 tcp:8081

weipay's People

Contributors

chainsafesystems avatar chrisfenos avatar gregthegreek avatar masterrom avatar minkeesung avatar priom avatar tanmoyatb avatar twpostm 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

weipay's Issues

Readme needs updating

We need to make sure this readme is up to date.

You guys are killing it ๐Ÿ˜

Custom Coin Tab navigator issue

Describe the bug
The Green underline style under the active tab doesn't appear in android but appears in IOS

To Reproduce
Build on IOS and Android
Go through the initial setup
Select at least one coin
tap on the coin when on the 'holding page'

Expected behavior
The green line under "Send" should appear in ios and not in Android

Security

  • Pin lock
  • Encrypt the keystore with the pin

Invalid Activity Data

Perhaps this is the product of testing. It appears the Activity is still somewhat hard-coded.

screenshot_20180826-160256

Selected Tokens are not being displayed in the Add Token screen

Describe the bug
There is no visual display of the coins on portfolio in the 'Add token' screen

To Reproduce
Steps to reproduce the behavior:

  • go through the initial setup
  • Click 'Add token/coin'

Expected behavior
the Tokens on the portfolio are not displayed as selected in the token list

goerli test net faucet integration

Is your feature request related to a problem? Please describe.
The goerli test net requires a faucet and WeiPay can act as a mobile faucet client.

Describe the solution you'd like
There needs to be a screen added in the settings menu that allows a user to request test net eth for the goerli test net. There needs to be a change to the reducer structure allowing more than one wallet to be created and maintained within the application. This will allow for additional feature requests that enable WeiPay to deliver a new set of developer tools and network extensions. The initial solution could be implemented by adding multiple network providers in the providers.js file and instantiate the one we need. A v2 extension could be creating a graphl/prisma middleware that acts as a sort of gateway to the multiple test networks. Essentially serving as a light weight block explorer client for the various test networks. Querying multiple different rest api's would be too resource intensive in the sense of optimal efficiency. Prisma comes with an advanced query engine ensuring that even complex queries are resolved as fast as possible.

The actual faucet needs to have the logic that no user can request more than 1 eth for a period of 24 hours and every user must be authenticated with Github through gitter's api or client.

Describe alternatives you've considered
Some alternatives are: react web app, command line, npm module, etc. Allowing developers to have a mobile ether and erc-20 client with the ability to generate test net eth can yield a lot of benefits for developers, having a stable open source wallet with added testnet key management .

Multiple Wallets

Is your feature request related to a problem? Please describe.
There is a clear need to allow user's to create multiple wallets.

Describe the solution you'd like
Allow users to create multiple wallets

Need to track the amount of wallets in the reducer and when the user wants to switch wallets we can just change the derived path.

Every wallet name must map to an index in the masterNode.derivePath

var HDNode = require('ethers').HDNode;
var mnemonic = "12 words";
var masterNode = HDNode.fromMnemonic(mnemonic);
console.log(masterNode);
var wallet1 = masterNode.derivePath("m/44'/60'/0'/0/0");
console.log("wallet 1 - " , wallet1);
var wallet2 = masterNode.derivePath("m/44'/60'/1'/0/0");
console.log("wallet 2 - " , wallet2);

Helpful Resources
https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
https://docs.ethers.io/ethers.js/html/api-advanced.html#hdnode

Pin Configuration Testing

Describe the bug
App Lags after inputing in the pin (During the initial setup and after re-entering the app)

To Reproduce
Steps to reproduce the behavior:

  • install the App
  • Go through the initial setup
  • Close the App and reopen

Expected behavior
Takes a little while for it to go to the portfolio page.
The Total balance won't load up.

Wallet Usability

Is your feature request related to a problem? Please describe.
Research has gone into the UX of mobile wallets and their research suggests that user's do not need to confirm their passphrase upon creating a wallet. It is assumed that there is not yet value in your wallet and a user is most likely going to use this feature once they start adding value in their wallet and there fore a stronger need to record their passphrase.

Describe the solution you'd like
The confirm passphrase functionality needs to be removed from the wallet and displaced to the recover passphrase page. We will need to add password functionality with local storage so we can encrypt this private data. After either creating a wallet or recovering a wallet you must add a new field for a password that encrypts your wallet. Whenever a user wants to show their private key or passphrase they must decrypt this keystore.

Cyrpto Compare Api

Is your feature request related to a problem? Please describe.
Ether and tokens need to have a fiat conversion via api.

Describe the solution you'd like
Use crypto compare api to retrieve USD, EURO, CAD, and BTC conversions.

Get CI up and running

Need to get the auto deployments working with travis.

Got it working with other project, will have to come up with a solution for this one.

Additional/Replacement Tokens

Is your feature request related to a problem? Please describe.
Yes. No support for more common tokens

Describe the solution you'd like
I propose the integration of the following tokens:
Aragon
0x960b236A07cf122663c4303350609A66A7B288C0

OMGToken
0xd26114cd6EE289AccF82350c8d8487fedB8A0C07

0x Protocol Token
0xE41d2489571d322189246DaFA5ebDe1F4699F498

Maker
0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2

Golem Network Token
0xa74476443119A942dE498590Fe1f2454d7D4aC0d

Status Network
0x744d70FDBE2Ba4CF95131626614a1763DF805B9E

DAI
0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359

Describe alternatives you've considered
N/A

Additional context
These are some of the more popular tokens in the ethereum community. The current native selection is not very reflective of the the popular interest.

Project Struture in Readme

Is there a reason why the project structure is in the readme? I can see value in mentioning some the higher level organization but this just seems redundant since the entire structure in on git.

QA

We don't have enough people testing on physical device.

Please test and report issues.

Data is not persisted

Describe the bug
The app should remember that I have already accepted the terms, created an ethereum wallet, the selected coins, contacts... etc

To Reproduce
Steps to reproduce the behavior:

  1. Accept the terms
  2. Generate a wallet
  3. Close app & Reopen

Expected behavior
Should remember all-state.

Desktop (please complete the following information):

  • The latest beta version.

Smartphone (please complete the following information):

  • Huawei P20 Pro

Cut off text

The text on the Activity page has text that is cut off in places. Running Android 8.0.0 on a OnePlus3.

Also see #139 re: the data that is being displayed.

screenshot_20180826-160256

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.