All Projects → digitalbitbox → Bitbox Wallet App

digitalbitbox / Bitbox Wallet App

Licence: apache-2.0
The BitBoxApp for desktop and mobile.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Bitbox Wallet App

Django Cc
Django wallet for Bitcoin and other cryptocurrencies
Stars: ✭ 105 (+7.14%)
Mutual labels:  bitcoin, wallet, litecoin
Multicurrencywallet
Bitcoin, Ethereum, ERC20 crypto wallets with Atomic Swap exchange. Release announce: https://twitter.com/SwapOnlineTeam/status/1321844352369500160
Stars: ✭ 136 (+38.78%)
Mutual labels:  bitcoin, wallet, litecoin
Edge React Gui
Edge Wallet React Native GUI for iOS and Android
Stars: ✭ 303 (+209.18%)
Mutual labels:  bitcoin, wallet, litecoin
Mydicebot.github.io
★MyDiceBot★ - Ultimate Bitcoin Dice Bot. Bet More, Earn More!
Stars: ✭ 48 (-51.02%)
Mutual labels:  bitcoin, litecoin
Blixt Wallet
Bitcoin Lightning Wallet with focus on usability and user experience
Stars: ✭ 40 (-59.18%)
Mutual labels:  bitcoin, wallet
Bds
Blockchain data parsing and persisting results
Stars: ✭ 1,032 (+953.06%)
Mutual labels:  bitcoin, litecoin
Blockchain
区块链技术
Stars: ✭ 28 (-71.43%)
Mutual labels:  bitcoin, wallet
Nowallet
This project is a secure Bitcoin brainwallet app written in Python.
Stars: ✭ 52 (-46.94%)
Mutual labels:  bitcoin, wallet
Cryptex
Gemini, GDAX, Bitfinex, Poloniex, Binance, Kraken, Cryptopia, Koinex, BitGrail and CoinMarketCap cryptocurrency exchange API clients in Swift / iOS SDK. Check prices and account balances using Sample iOS app.
Stars: ✭ 51 (-47.96%)
Mutual labels:  bitcoin, litecoin
Opendime
Opendime is a small USB stick that allows you to spend Bitcoin like a dollar bill
Stars: ✭ 93 (-5.1%)
Mutual labels:  bitcoin, wallet
Cryptolights
Live visualisation of blockchain transactions for popular cryptocurrencies
Stars: ✭ 54 (-44.9%)
Mutual labels:  bitcoin, litecoin
Miner Monitor
Miner, balance, wallet and pool monitoring software
Stars: ✭ 38 (-61.22%)
Mutual labels:  bitcoin, wallet
Arcbit Android
arcbit - Android bitcoin wallet http://arcbit.io
Stars: ✭ 34 (-65.31%)
Mutual labels:  bitcoin, wallet
Paymint
The Paymint Wallet is a secure and user friendly Bitcoin wallet
Stars: ✭ 48 (-51.02%)
Mutual labels:  bitcoin, wallet
Ta4j
A Java library for technical analysis.
Stars: ✭ 948 (+867.35%)
Mutual labels:  bitcoin, litecoin
Bitcoinaddress
Bitcoin Wallet Address Generator
Stars: ✭ 52 (-46.94%)
Mutual labels:  bitcoin, wallet
Cryptocurrency Dashboard
Crypto Currency Dashboard Using Twitter 🐦 And Coinmarketcap 🚀 API
Stars: ✭ 54 (-44.9%)
Mutual labels:  bitcoin, litecoin
Walletwasabi
Open-source, non-custodial, privacy focused Bitcoin wallet for Windows, Linux, and Mac. Built-in Tor, CoinJoin, and coin control features.
Stars: ✭ 1,197 (+1121.43%)
Mutual labels:  bitcoin, wallet
Hdwallet
Simple Swift library for creating HD cryptocurrencies wallets and working with crypto Coins/ERC20 tokens.
Stars: ✭ 80 (-18.37%)
Mutual labels:  bitcoin, litecoin
Lightning App
An easy-to-use cross-platform Lightning wallet
Stars: ✭ 872 (+789.8%)
Mutual labels:  bitcoin, wallet

BitBoxApp

This repo contains the source code for the BitBoxApp and related tools.

Tech stack

The wallet UI is a preact single page webapp. It sources its data from the backend written in Go.

The Desktop app is a C++ Qt5 program containing only a WebEngineView, displaying the UI.

Static assets are sourced from a Qt rcc file, and the dynamic data is bridged from Go with WebChannels.

The Go library is compiled as a C library which exposes two functions only: one to set up the bridge, and one to invoke calls in the backend.

Similarly to the Desktop variant, the Go library can be compiled and added to an Android Studio / XCode project.

Build status

Build Status Build status

Directories (subject to change)

  • cmd/: Go projects which generate binaries are here.
  • cmd/servewallet/: a development aid which serves the static web ui and the http api it talks to. See below.
  • vendor/: Go dependencies, created by make go-vendor based on Go modules.
  • backend/coins/btc/electrum/: A json rpc client library, talking to Electrum servers.
  • backend/devices/{bitbox,bitbox02}/: Library to detect and talk to BitBoxes. High level API access.
  • backend/coins/btc/: Local HD wallet, sourcing blockchain index from an arbitrary backend. Manages addresses, outputs, tx creation, and everything else that a wallet needs to do.
  • backend/: The library that ties it all together. Uses the above packages to create a wallet talking Electrum using the BitBox for signing, and serve a high level HTTP API to control it.
  • frontends/qt/: the C++/Qt5 app which builds the wallet app for the desktop.
  • frontends/android/: Android target (EXPERIMENTAL / ALPHA)
  • frontends/web/: home of the preact UI.

Set up the development environment

The below instructions assume a unix environment.

Requirements

The following dependencies need to be installed:

  • Go version 1.14
  • Yarn for managing the web UI deps
  • Qt5 version 5.11.3
    • Installers for older versions can be found in this Qt archive
    • install Qt for your platform, including the WebEngine component

Make sure the following environment variables are set:

  • $GOPATH
  • $PATH: should include $GOPATH/bin, $GOROOT/bin and the location of qmake and rcc

Clone this repository to $GOPATH/src/github.com/digitalbitbox/bitbox-wallet-app ($GOPATH is usually ~/go).

To initialize the build environment and install the required go utilities (linters, ...), call

  • make envinit, or
  • on MacOS make osx-init

Build the BitBoxApp

Please consult docs/BUILD.md for platform specific instructions and further information.

I18N translation workflow

Please consult docs/i18n.md.

Electrum server backend

The servers used are configurable in the app settings. Currently, when running the app in devmode (make servewallet), the config is ignored and servers on Shift's devserver are used. The hosts/ports/certs of those are currently hardcoded.

Currently, Electrs is the recommended way to connect your own full node. ElectrumX is currently not supported, see this issue.

Development workflow

Local development

Run make servewallet and make webdev in seperate terminals.

Before the first use of make webdev, you also need to run make buildweb, to install the dev dependencies.

Watch and build the UI

Run make webdev to develop the UI inside a web browser (for quick development, automatic rebuilds and devtools). This serves the UI on localhost:8080. Changes to the web code in frontends/web/src are automatically detected and rebuilt.

UI testing

The tests are run using jest and ts-jest preprocessor.

Because the app is based on preact, we use preact-render-spy package instead of enzyme to test app components rendering and their state.

To run all test suites, execute make webtest. If you plan on spending a lot of time in frontends/web/src space or just keen on doing TDD, use jest's tests watcher:

cd frontends/web/
make jstest-watch

To generate coverage report, execute make jstest-cover from frontends/web dir and open coverage/lcov-report/index.html in a browser.

Run the HTTP API

Run make servewallet to compile the code and run servewallet. servewallet is a devtool which serves the HTTP API. Changes to the backend code are not automatically detected, so you need to restart the server after changes.

Go dependencies

Go dependencies are managed by go mod, and vendored using make go-vendor. The deps are vendored so that

  • offline builds work
  • dependency diffs are easier to inspect
  • less reliance on remote systems
  • because gomobile bind does not support Go modules yet

Update npm dependencies

Check outdated dependencies cd frontends/web && yarn outdated and yarn upgrade [email protected].

CI

Run make ci to run all static analysis tools and tests.

Build the UI

To statically compile the UI, run make buildweb again, which compiles the web ui into a compact bundle.

Base integration

To test the BitBox Base integration, run the base-middleware on your local machine. Make sure you have bitcoind and c-lightning running as well.

Develop using Docker

The Dockerfile provides a Ubuntu container with the whole environment preconfigured. To set it up, run make dockerinit, which builds the Docker image (this takes a while).

After that, make dockerdev enters the container (a shell inside an Ubuntu virtual machine), where you can perform the same steps as in the previous section (make servewallet and make webdev).

Before the first use of make webdev, you also need to run make buildweb, to install the dev dependencies.

Running make dockerdev multiple times shares the same container. You can edit the code in your usual editor in the host and compile inside the container.

To execute make servewallet and make webdev insider the container, but from the host, use this:

$ ./scripts/docker_exec.sh servewallet/webdev

Testnet coins

In development mode, any password entered derives a unique testnet wallet.

Get Bitcoin Testnet coins here: https://coinfaucet.eu/en/btc-testnet/

Get Litecoin Testnet coins here: https://tltc.bitaps.com/

Get Ethereum Rinkeby coins here: http://rinkeby-faucet.com/

Get Ethereum Ropsten coins here: https://faucet.ropsten.be/

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].