Giter Site home page Giter Site logo

bithyve / bitcointribe Goto Github PK

View Code? Open in Web Editor NEW
123.0 10.0 60.0 194.31 MB

Bitcoin Tribe. A simple bitcoin wallet made to be used with Friends and Family. Lightning. Gifts and more.

Home Page: https://bitcointribe.app/

License: MIT License

TypeScript 92.21% Java 1.47% JavaScript 1.93% Objective-C 0.26% Shell 0.01% Ruby 0.08% Swift 3.47% Starlark 0.01% Batchfile 0.01% Kotlin 0.49% Objective-C++ 0.07%
bitcoin wallet bithyve react-native self-custody android cryptocurrency ios lightning

bitcointribe's Introduction

Setting up Bitcoin Tribe

Prerequisites:

Make sure you have rn-nodeify as a global dependency. If you don't, run npm install -g rn-nodeify.

git clone https://github.com/bithyve/bitcointribe.git
cd bitcointribe
yarn install

Running Setup Script

MacOS or Linux

On MacOS and Linux there is no need to run setup.sh it will run autmatically after yarn install completes.

Windows

On Windows, if setup.bat does not run on its own after yarn install then it can be executed manually. it doesn't really matter if its run twice.

Open setup.bat in a text editor and enter your user account name where prompted. If you changed the location of the android sdk during installation, enter the path to the sdk instead of the one already present. Then, from the command prompt, run:

setup.bat

Configuring Environment Variables

Mainnet configuration

Make sure you there are no .env files in the project root directory except .env.example

The project will use live configuration by default when no .env file is available.

Testnet configuration

Copy the contents on .env.example to a new .env file.

cp .env.example .env

Building and Running Bitcoin Tribe

Running on simulator

IOS

yarn ios

Alternately XCode can also be used to build and run in a simulator

Android

yarn android or yarn androidDevelopmentDebug

Alternately Android Studio can also be used to build and run in a simulator

Running on device

IOS

Open HEXA.xcworkspace from <Hexa Project Root>/iOS in XCode and use the product > build for > running menu option to build and run Hexa Wallet on iPhone. This will work with a correct and updated XCode setup and only on trusted devices. Further support for running on iPhone is available on react native and xcode development sites and community forums.

Android

Ensure device is connected and recognised. Ensure no Android emulators are running.

yarn android or yarn androidDevelopmentDebug

Alternately Android Studio can also be used to build and run on Android device. This will work when Android development environment is setup correctly. Further support is available from react native and Android Studio guides. Please refer https://reactnative.dev/docs/running-on-device for further support.

Common Issues

  1. Build fails with one or more errors Makes sure yarn install was done after switching to a new branch. If that doesn't help please use yarn deep-clean this will remove node modules, flush node cache, fluch metro cache, reinstall node dependencies and re install pods.
  2. Always make sure metro is running in a new terminal window. If its not it can be started by running yarn startin a new termimal from project root.
  3. Notifications dont work in ios simulator and this will show up as an error in the console. Notifications will work when running in a iOS device.
  4. If Apple id or google id is not setup in the simulator then cloud backup will not work and cloud errors will be seen in the console.
  5. Scanner will not work in a simulator so a device will be required to test and debug scanner related features.

Verify Authenticity of Android APK

Please download and keep all these files in the same location: Android APK file, SHA256SUM.asc, HEXA_DETACHED_SIGN.sign. Make a copy of Android APK file and rename it as Android APK clone.

Get the public PGP key for [email protected] (Hexa Team's PGP key) using

gpg --recv-key "389F 4CAD A078 5AC0 E28A 0C18 1BEB DE26 1DC3 CF62"

or

gpg --keyserver hkps://keys.openpgp.org --recv-key "389F 4CAD A078 5AC0 E28A 0C18 1BEB DE26 1DC3 CF62"

Verify APK certificate

Rename Android APK clone.apk to Android APK clone.zip and extract the following file: /META-INF/HEXAWALL.RSA. Verify the certificate using keytool:

keytool -printcert -file HEXAWALLET.RSA
Certificate fingerprints:
	 ...
	 MD5:  5E:92:30:9B:88:F4:A1:17:08:D1:DB:C3:2A:BF:4D:5A
	 SHA1: 38:55:07:26:F4:C6:C4:3E:A2:87:CF:16:11:7C:E6:A5:66:E1:CB:C1
	 SHA256: 77:82:54:70:5D:C4:DA:83:2C:F8:39:96:49:69:FE:AF:63:BD:79:EF:00:0A:34:43:86:0C:7C:AD:A2:55:1C:95
	 Signature algorithm name: SHA256withRSA
	 Version: 3

Verify APK checksum

Verify the checksum against the APK using:

shasum -a 256 --check SHA256SUM.asc

Output should contain the name of the APK file followed by OK as shown below:

Hexa_Wallet_Android_v1.1.1.apk: OK

Verify that the signed checksum is from [email protected]

gpg --verify SHA256SUM.asc

Output should show Hexa's PGP key 389F 4CAD A078 5AC0 E28A 0C18 1BEB DE26 1DC3 CF62:

using RSA key 389F4CADA0785AC0E28A0C181BEBDE261DC3CF62
issuer "[email protected]"
Good signature from "Hexa Team (Hexa Bitcoin Wallet) <[email protected]>"

Alternate method for verifying PGP signature

Verify the detached signature against the APK file:

gpg --verify HEXA_DETACHED_SIGN.sign Hexa_Wallet_Android_v1.1.1.apk

Output should show Hexa's PGP key 389F 4CAD A078 5AC0 E28A 0C18 1BEB DE26 1DC3 CF62:

using RSA key 389F4CADA0785AC0E28A0C181BEBDE261DC3CF62
issuer "[email protected]"
Good signature from "Hexa Team (Hexa Bitcoin Wallet) <[email protected]>"

Contributing

Please feel free to open pull requests, issues with bugfixes, and suggestions.

License

LICENSE

bitcointribe's People

Contributors

abdulmuneer22 avatar akshay8551 avatar alimeer avatar antuz123 avatar appa3151 avatar appasaheb4 avatar bhumireddy99 avatar cakesoft-neha avatar cakesoft-nikhita avatar cakesoft-pratik avatar cakesoft-rohit avatar cakesoft-shashank avatar cakesoft-shivani avatar cakesoft-shyam avatar cakesoft-utkarsh avatar cakesoft-vijaysingh avatar dependabot[bot] avatar hemantsain avatar parsh avatar pawan2792 avatar pawan86paliwa avatar praneethgunas avatar pratyakxx avatar raheel1258 avatar shreyasnisal avatar surbhiaudichya avatar sz3k avatar tumul-vikash avatar varunram avatar vatsal032 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  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitcointribe's Issues

Wallet Image (WI)

TODO:

  • Implement Wallet Image (relay & app sync)
  • Check-In functionality using WI
  • DNP and ECDH channel restoration via Wallet Image

Fast Bitcoins

TODO:

  • Derivative account setup and address provisioning
  • Transaction tagging (derivative a/c generic) for dedicated notifications

Bring some node_module dependencies in house

As show by past attacks on popular npm packages (event-stream and electron-native-notify), its is becoming increasingly popular to try and attack dependencies that are used by cryptocurrency wallets. In order to prevent this, we need to pull these dependencies in house while still continuing to patch critical security updates. This can be done by maintaining our copy of these dependencies in something like hexa/deps and then importing what we want from this package hexa/deps/ac-qrcode for example. This would be a multi step process and this issue is meant to track updates on the same.

Check UX of Help screens.

Don’t think the help screens are as per the UX suggestion. Check for the latest screens.Need to do this across all help screens.

[Dev] GetBittr: SEPA details for GetBittr.

We are only getting the transaction remark from GetBittr customer API.
Along with the transaction remark we need to show
Amount:
Occurrence:
Account Holder:
IBAN Number:
BIC Code:
So we need a simple API that returns these details from server. ANd mobile app do not have to hardcode this within the app.

GB1: Register with GetBittr

Trigger: User selects an option to buy bitcoins from Home Screen> Add or Buy from within the account.
Precondition: User is not registered with GetBittr

Flow:

  1. Option given are (showing relevant information like exchange rate, fees if any and a line of text like powered by GetBittr):
    a. Setup a recurring purchase
    b. Buy using a Credit Card
    c. I have a voucher
  2. User selects a above.
  3. The default selection is shown to be in the Checking Account on top of the screen which can be changed by the user to any other account. User can also select to create a new account in which case it will go into the flow of ‘Add Account’ to be described separately. If the user has user the Buy button from within the app, the account is fixed to that account.
  4. A message is presented to the user suggesting that they are now going to register with GetBittr and any information they provide does not get stored with BitHyve. Also GB will not be able to see any other details from their wallet. Nor can BH see the bank details or anything else the user provides GB. Once the user agrees/ understand to it then they move ahead.
  5. The user is asked for the email address and phone number. It is again repeated that BH does not store this info
  6. The user is requested to check her email to confirm the details with GB. She confirms the email address with a verification link (outside Hexa).
  7. For confirming the phone number to GB a code is entered in Hexa that the user gets by SMS
  8. A success message is received in Hexa when when the user is registered with GB
  9. A success message is received in Hexa when a response is received from GB on phone number confirmation

Dependencies:

  1. GetBitter integration
  2. GetBitter due-diligence

Exception flows:

Versioning

TODO:

Implement versioning across the ecosystem
Items that need version number:

  • All QR codes: Hexa specific for sure and, if possible, for standards as well
  • Deep links
  • Data stored in the database
  • All communication calls b/w the app and the backend or between backends and between apps
  • Notifications

Note:

  • The version number should be unique to the binary.
  • The version number should be unencrypted

Corresponding Trello Card

Recovery Flow Improvements.


Steps to reproduce:

1.Try to restore a wallet using Trusted contact secret.
2.Click on Trusted contact and select first contact.
3.Now select second contact and unselect the first contact .
4.click on back button and Pull down to refresh the page and observe.


Actual result:

The un-selected contact still appears on Restore wallet page.


Expected result:

  • Only the selected contact and their RS should be visible.
  • RS is not uploaded or downloaded but sent and received.

Some UI changes on Add > Getbittr module.

-There are some changes in Add > Getbittr module,they are as follows:
-On this screen we need a heading as "BuyBitcoin".
-Subtitle should be like: Get bitcoins directly into your Hexa wallet.
-There should be two options like:
a.Use a Voucher: Scan a FastBitcoin voucher
b. View existing methods: That have already been set up on this wallet.

errors after `react-native link` command

Following issue occurs after react-native link is executed

rnpm-install info Linking assets to ios project 
rnpm-install ERR! Something went wrong while linking. Error: Cannot read property 'pbxprojPath' of null 
Please file an issue here: https://github.com/facebook/react-native/issues 

Cannot read property 'pbxprojPath' of null

TypeError: Cannot read property 'pbxprojPath' of null
    at Object.linkAssetsIOS [as copyAssets] (/Users/susmit/Desktop/MyMoneyApp/node_modules/react-native/local-cli/link/ios/copyAssets.js:24:47)
    at Object.keys.forEach.platform (/Users/susmit/Desktop/MyMoneyApp/node_modules/react-native/local-cli/link/link.js:104:16)
    at Array.forEach (<anonymous>)
    at linkAssets (/Users/susmit/Desktop/MyMoneyApp/node_modules/react-native/local-cli/link/link.js:94:32)
    at tasks.push (/Users/susmit/Desktop/MyMoneyApp/node_modules/react-native/local-cli/link/link.js:171:20)

API for Broadcast notification description

Need backend API to get what's new in this release.
Request. parameters would be
"iOSBuild": 34,
"androidBuild": 34,

Response:
{
"iOSReleaseNotes": "",
"androidReleaseNotes": ""
{

UI changes on Manage Backup screen.

There are some UI changes for Personal copy as follows:
1.Main title: “Personal Copies”.
2.Initial subtitle: “PDF as a Keeper for one of your Recovery Keys”.
3.On setup: “The PDFs are locked with the answer to your Security Question”

personal copy

Contact details API(Add Contact)

  1. We need information of contacts like - contact type, phone number, child xPub for generating addresses and encryption key form saga/API

  2. When a contact is added, a request is sent to the other contact through a medium the user selects here we need We need data for QR generation

Store FCM token API

We need API for FCM token storing on server which is associate with specific wallet

UI issues on Home page.

-Unable to scroll on notification page in Android device only.
-Unable to scroll on Add modal in Android device.
-The bottom bar is overlapping the add modal.
-The Add contact of Add modal is disabled, yet able to click on it.

API for Add contacts while Send and Receive

  1. From receiver side We need Sagas/API for QR changes from BTC address to an AES key (?) Also API for Get an address is stored for the Sender on the relay against that AES key

  2. From sender side need API Request for fetching the bitcoin address from relay and then the Send process continues with the pre-filled address

Marking and Tagging transactions for notifications

New Transaction marking:
Currently in App we are not recognised new and old transactions. So, we need new transaction marking so we can show new transaction's notification in list.

Tags for Contact and GetBittr:
We need tagging for separating out Transactions according to the Contact and GetBittr

getBittr Account Setup

Currently the saga for getBittr xpub verification is sending a dummy xpub.
Correct xpub should be generated and sent instead of the dummy.
The allocated path and other details should be saved in the app database.



xpub is sent via this service https://github.com/bithyve/hexa/blob/ef1ee0a030e1797331d260988157c952bd1b2e50/src/services/bittr.ts#L41

All the dummy data is currently being picked up from here: https://github.com/bithyve/hexa/blob/development/src/storage/bittr.ts

We need to update to retrieve this set of data from the correct location in our database where required. Most of the data will be sent by the screens as it will be available in the existing state.

Depends on issue #412

Expanding Universal link/deeplink beyond SSS

We should have a prefix in the URL that can be used to indicate type for different Universal Links. At the moment we only have SSS based deep links/universal links.

We can have many other types in the future so we should have a way to know the difference for each one.

We need to come up with one for getBittr and fastBitcoins next.

Note: To avoid confusion Universal Links will refer to both Universal Links and Deep Links.

not working qrcode image read time (output data not showing)

path: node_modules/react-native-barcode-scanners/src/ScannerMask.js
openGallery() {
const _this = this
const photoOptions = {
storageOptions: {
skipBackup: true,
path: 'images'
}
}
ImagePicker.launchImageLibrary(photoOptions, (response) => {
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
_this.props.onReadBarCodeByGalleryFailure && _this.props.onReadBarCodeByGalleryFailure()
} else if (response.customButton) {
console.log('User tapped custom button: ', response.customButton);
} else {
_this.onBarCodeReadByGalleryStart && _this.onBarCodeReadByGalleryStart()
readerQR(response.path).then((data) => { // 读取到条码
console.log({
data
});
_this.props.onBarCodeRead && _this.props.onBarCodeRead({
data
})
}).catch(() => { // 读取失败
_this.props.onReadBarCodeByGalleryFailure && _this.props.onReadBarCodeByGalleryFailure()
})
}
})
}

Notification module.

-It should be aligned properly.

  • Add a note On Notifications module like in transactions.
    -Note should be like :All your recent notifications are visible here.

BIP-47 Implementation

TODO:

  • Implement BIP-47 (Reusable Payment Codes)
  • ECDH channel exchange for payments code b/w trusted contacts
  • Tagging corresponding transactions (if possible)

FastBitcoins indicators on the app

  1. Transactions: (on the transaction list and the details) should show the source as FB
  2. In the More tab > sources, FastBitcoins as a source is shown as separate item
  3. In the accounts, it should be visible as to what sources contribute to what funds within that account and what is the total

Add screen changes

-Add screen is not correct. It should only have Add Contacts and Buy Bitcoins.

API to check for Updated build number

On login screen we need to check that there is any new update for an app.
So, App send current build number to server and server will send that if there is an update for app
for example,
from mobile app
{
build: '34'
}
Server response will be
{
newBuild: '35'
}
So, after this call we can handle fetchReleaseNotes API and will show update screen to user

Resolve build system issues

Cloning and running master (or other branches) now doesn't result in a clean build and instead results in a host of issues that seem to take time to resolve. We must make sure that building the repo from scratch doesn't deter contributors who might want to contribute to the repo. Will close once all pending issues are resolved.

Lint code

Currently, most of the code is unlinted and overall looks ugly. We must lint code using tslint, prettier, etc.

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.