Skip to content
UI For Using Hardware Wallets With Bitcoin Core
TypeScript Python CSS Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
contrib
doc
public
server
src
.gitignore
Dockerfile
LICENSE.md
README.md
junction.spec
logo.png
package.json
requirements.txt
tsconfig.json
tslint.json
uwsgi.py
yarn.lock

README.md

image

Usage

Prerequisites

  • bitcoind on testnet
  • Python 3.6 or higher

See this tweetstorm for screenshots. They'll probably go out-of-date quickly ...

Junction project uses HWI to communicate with hardware wallets. Follow these instructions to install libusb dependency for HWI (don't do the poetry install step). If you're on Linux you may need to install udev rules.

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
npm install

Run backend in terminal window with virtual environment active:

cd server
python server.py

Run frontend in another terminal window:

npm start

Open localhost:3000 in your browser

Features

  • Supports P2SH multisig with Trezor, Ledger, and ColdCard hardware wallets
  • Connects directly to your full node and monitors balance using watch-only Bitcoin Core wallet
  • No javascript, minimal python dependencies

Limitations

This is buggy, alpha, proof-of-concept software

  • Testnet-only
  • No tests
  • Doesn't currently use javascript, so frequent page reloads are required and UX kinda sucks
  • Doesn't support P2WSH (ColdCard has a P2WSH bug right now preventing it)
  • BIP32 derivation paths hard-coded
  • Only 1 wallet allowed at-a-time
  • Only 1 PSBT allowed at a time
  • ColdCard must be last signer added because we must upload a multisig enrollment file containing the other xpubs.
  • Bitcoin Core Limitations:
    • Unconfirmed balances not correctly displayed. getbalance and getunconfirmedbalance can't find unconfirmed outputs for watch-only wallets in Bitcoin Core 18.1. A new getbalances API will fix this in next Bitcoin Core release.
  • HWI limitations:
    • No change detection
    • Cannot display multisig receiving addresses on hardware wallet display
    • Sometimes HWI thinks wallets are locked when they clearly aren't

Testing

To run tests:

Install bitcoind to test directory

$ ./test/install_bitcoind.sh

Run tests

python -m unittest test.test_wallet

Windows libusb dependencies:

(following these instructions)

  • search "command prompt"
  • right click and select "run as administrator"
copy C:\Users\justin\Downloads\MS64\dll\libusb-1.0.dll C:\Windows\System32
copy C:\Users\justin\Downloads\MS32\dll\libusb-1.0.dll C:\Windows\SysWOW64
You can’t perform that action at this time.