Skip to content

justinmoon/junction

Repository files navigation

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

About

UI For Using Hardware Wallets With Bitcoin Core

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •