No description
Find a file
kdmukai 7b27c79907
Feature: Service integration - Swan (#1517)
* fix create_order issue
* fix url and better error-handling
* basic balances tab
* activating services
* Service management
* Improve settings page and default to it if token unset
* Fix history tab
* Fix trade error handling
* Add withdraw
* calling specter-cloud for creating vaultoro orders
* Improve trade screen and fixes
* sidebar fix
* black
* refactor Service integration
* refactor to have Service Classes like manifests
* maturity
* dynamic initialisation of service-classes and blueprints
* fix sidebar_services
* migrated templates and static into vaultoro folder
* refactor config to manifest
* some minor things
* swan initial
* rename and fix test
* adding ServiceApiKeyStorageUserAware
* fix
* store the access token
* directory indirection to shield templates from each others blueprint
* first attempts with automatic withdrawals
* proper tab highlighting
* Update service_apikey_storage.py
* Update oauth2_success.jinja
* Awaiting refresh_token support
* Service logo display on Addresses
* Associate addr with a Service
* address-data component reorg
Separates the presentation html from the data as much as possible.
* Services data/icon added to tx History
* Now hitting the updated Swan endpoint to save deposit addrs
* Simplified injecting Services data into JS
* Reducing js calls back to server in tx-data; templatizing utxo in/outs
* renaming "reserving" to "associating" an Address with a Service.
* rename `manifest.py` files to `service.py`.
* rename "api_data" to "service_data" to make the storage a bit more generalized. `ServiceApiKeyStorage` is now `ServiceEncryptedStorage` to match.
* Beginning of factoring out Swan api to its own `api.py` file; need to rectify with `swan_client.py`.
* Removed tx-table/row/data changes and address-table/row/data
Kept only the bare minimum changes required to display the Services icon, plus optimizations.
* deleted no longer used CustomElement
* Adding services docs to mkdocs
* Configuration for Services
* more clever configuration
* fix test
* deleted swan_client
* Changing the address abbreviation format to 7...7 and little big fix for not vertically aligned addresses in Firefox.
* Better state management if Auth method changes
* Cleanup, better user messaging; pulling Service methods out of controller and User
* Redirect to services endpoint after setting up authentication.
* PR cleanup, bug fixes, test suite updates
* Fixed test case problem
* First fix for delete API key button.
* Service hooks; Option to fully remove Swan Integration; Logout clears plaintext_user_secret
* Restoring bugfix from @moneymanolis
* cleanup and black
* Make service-decovery in AppImage work
* import hashlib, maybe fix cypress
* Update service_encrypted_storage.py
* further bugfix on update
* TODO: remove debugging in client.py before first release
* fix controller-test
* fix singleton testing issues

Co-authored-by: Kim Neunert <k9ert@gmx.de>
Co-authored-by: benk10 <ben.kaufman10@gmail.com>
Co-authored-by: Kim Neunert <kneunert@gmail.com>
Co-authored-by: moneymanolis <moneymanolis@protonmail.com>
2022-01-13 11:47:28 +01:00
.github/workflows Documentation: hosted at docs.specter.solutions (#1463) 2021-11-24 18:37:46 +01:00
babel Chore: update dependencies and remove demon-mode (#1417) 2021-10-08 19:16:59 +02:00
cypress Feature: Send dialog refactored and sped up (#1454) 2022-01-13 09:38:44 +01:00
docker Chore: Ci improvements (#103) (#1403) 2021-09-19 22:33:13 +02:00
docs Feature: Service integration - Swan (#1517) 2022-01-13 11:47:28 +01:00
pyinstaller Feature: Service integration - Swan (#1517) 2022-01-13 11:47:28 +01:00
src/cryptoadvance/specter Feature: Service integration - Swan (#1517) 2022-01-13 11:47:28 +01:00
tests Feature: Service integration - Swan (#1517) 2022-01-13 11:47:28 +01:00
udev Add Blockstream Jade support (#1234) 2021-06-16 00:40:43 +02:00
utils Feature: Send dialog refactored and sped up (#1454) 2022-01-13 09:38:44 +01:00
.cirrus.yml Feature: Better Error-management, logging for the APP and Macos builds improvements (#1405) 2021-09-27 14:09:43 +02:00
.dockerignore Feature: Api framework (#1232) 2021-07-08 13:10:14 -05:00
.gitignore Documentation: hosted at docs.specter.solutions (#1463) 2021-11-24 18:37:46 +01:00
.gitlab-ci.yml Chore: Release signature process (#1459) 2021-11-05 10:15:59 +01:00
.pre-commit-config.yaml Release-notes and fix the build (#1135) 2021-04-26 14:09:42 +02:00
CONTRIBUTING.md Documentation: hosted at docs.specter.solutions (#1463) 2021-11-24 18:37:46 +01:00
cypress.json Chore: Ci improvements (#103) (#1403) 2021-09-19 22:33:13 +02:00
LICENSE Releasing procedure with pip (#69) 2020-02-20 13:00:53 +01:00
MANIFEST.in Bugfix: fixes #1357 as pip3 installation of tar.gz-package was broken (#1374) 2021-09-14 16:12:17 +02:00
mkdocs.yml Feature: Service integration - Swan (#1517) 2022-01-13 11:47:28 +01:00
package-lock.json Bugfix: Refactor wallet class fixes #1394 #1367 #1241 #1101 (#1411) 2021-10-08 17:56:49 +02:00
package.json Bugfix: Refactor wallet class fixes #1394 #1367 #1241 #1101 (#1411) 2021-10-08 17:56:49 +02:00
pytest.ini Feature: Service integration - Swan (#1517) 2022-01-13 11:47:28 +01:00
README.md update donation-server 2021-12-17 18:33:22 +01:00
requirements.in Documentation: hosted at docs.specter.solutions (#1463) 2021-11-24 18:37:46 +01:00
requirements.txt Feature: Encrypted user data storage (#1453) 2021-11-11 15:25:00 +01:00
setup.cfg removing blobs and adjusting automations (#1299) 2021-07-15 12:09:18 -05:00
setup.py removing blobs and adjusting automations (#1299) 2021-07-15 12:09:18 -05:00
test_requirements.txt Chore: Release process improvements (#1434) 2021-10-19 12:31:13 +02:00

Table of Contents

Specter Desktop

"A specter is haunting the modern world, the specter of crypto anarchy."
The Crypto Anarchist Manifesto - Timothy C. May - Sun, 22 Nov 92 12:11:24 PST

Build Status Support the project

DISCLAIMER

This software might be ready to be used but at your own risk.

If something doesn't work open an issue here or ask a question in our Telegram group.

Why?

Bitcoin Core has a very powerful command line interface and a wonderful daemon. Using PSBT and HWI it can also work with hardware wallets, but at the moment it is too linux-way. The same applies to multisignature setups.

The goal of this project is to make a convenient and user-friendly GUI around Bitcoin Core with a focus on multisignature setup with hardware wallets and airgapped devices.

At the moment Specter-Desktop is working with all major hardware wallets including:

  • Trezor
  • Ledger
  • KeepKey
  • BitBox02
  • ColdCard (optionally airgapped, using an SD card)
  • Electrum (optionally airgapped, if running Electrum on an airgapped computer/ phone)
  • Specter DIY (optionally airgapped, using QR codes)
  • Cobo (airgapped, using QR codes)

We also support using the Bitcoin Core as a hot wallet, by importing or generating a random BIP39 mnemonic, but this feature is experimental and we do not recommend using it at this stage. We plan to add support for other hardware wallets as they come up. If you are interested in using Specter with a hardware wallet currently unsupported, let us know by opening an issue here or asking in our Telegram group.

Help wanted: Do you like Specter?

Please help us to push forward, fix bugs, refine FAQs and please help each other in the support channel. As a small team on a tiny budget we are working hard to make Specter better every day for Bitcoin, for you and for us. We are quite overwhelmed with the response, the guides and shout-outs. Thank you! Stepan, Ben, Kim, all the fellow Specter-Builders & Moritz

Donations are welcome

How to run

Using the Specter Desktop app

The easiest way to run Specter Desktop is by installing the Specter Desktop app, which you can find on the GitHub release page. With this method, all you need to do is just download the right file for your operating system and install it like a normal desktop app (Debian buster is only partially supported)

Installing Specter from Pip

  • Specter requires Python version 3.6 to 3.8. We will support python 3.9 when HWI adds support for it.
  • Bitcoin Core node should be at least v0.19+, better if it's the latest one from bitcoincore.org.
  • HWI support requires libusb
    • Ubuntu/Debian: sudo apt install libusb-1.0-0-dev libudev-dev python3-dev
    • macOS: brew install libusb
    • Windows: follow instructions in windows.md
  • Install Specter
pip3 install cryptoadvance.specter
  • Run Specter
python3 -m cryptoadvance.specter server 
  • Upgrade Specter
pip3 install cryptoadvance.specter --upgrade

After that, Specter will be available at http://127.0.0.1:25441/.

The above installation-method is quite easy but you have to trust pypi. If you want to verify the software completely yourself while still installing via pip3, you can do something like this (adjust yourself for other versions):

wget https://github.com/cryptoadvance/specter-desktop/releases/download/v1.7.0/cryptoadvance.specter-1.7.0.tar.gz
wget https://github.com/cryptoadvance/specter-desktop/releases/download/v1.7.0/SHA256SUMS
sha256sum --ignore-missing --check SHA256SUMS
wget https://github.com/cryptoadvance/specter-desktop/releases/download/v1.7.0/SHA256SUMS.asc
gpg --verify SHA256SUMS.asc
# Now, let's extract the requirements-file and install all requirements with require-hashes
tar -xvzf cryptoadvance.specter-1.7.0.tar.gz cryptoadvance.specter-1.7.0/requirements.txt
# create your ususal virtualenv
virtualenv --python=python3 .env
# activate
pip3 install -r cryptoadvance.specter-1.7.0/requirements.txt --require-hashes --upgrade
# The package cryptoadvance.specter itself cannot be included into requirements.txt
# But we have checked the checksum before so it's safe to install without checking it's hash
pip3 install cryptoadvance.specter-1.7.0.tar.gz

You can also run it using Tor, provide SSL certificates to run over https. Https is especially important because browsers don't allow the website to access the camera without secure connection, and we need camera access to scan QR codes.

An example how to run Specter server with SSL certificates (--key, --cert) over Tor (make sure to walk through the Tor-document ):

python3 -m cryptoadvance.specter server --tor --cert=./cert.pem --key=./key.pem

Connect Specter to Bitcoin Core

If your Bitcoin Core is using a default data folder the app should detect it automatically. If not, consider setting rpcuser and rpcpassword in the bitcoin.conf file or set in directly in the specter-app settings.

If you are using Bitcoin Core with GUI, set server=1 in bitcoin.conf. This setting allows other programs to talk to the rpc server of Bitcoin Core. It's automatically enabled when you are using bitcoind, but disabled in bitcoin-qt.

If you use Specter from a remote machine and want to use it with hardware wallets connected via USB, please read this guide on setting up HWIBridge to facilitate such connection to hardware wallets.

Have a look at development.md for further information about hacking on Specter-desktop.

Tips and tricks (detailed instructions)

Errors, doubts.. Read our FAQ!

If you're stuck while installing/configuring Specter or you're looking for more informations about the project, read our FAQ!

A few screenshots

Adding a new device

Creating a new wallet

Wallet interface

Configuration