Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cryptoadvance/spectrum
Electrum adaptor simulating Bitcoin RPC protocol
https://github.com/cryptoadvance/spectrum
specter-desktop
Last synced: about 15 hours ago
JSON representation
Electrum adaptor simulating Bitcoin RPC protocol
- Host: GitHub
- URL: https://github.com/cryptoadvance/spectrum
- Owner: cryptoadvance
- License: mit
- Created: 2022-05-27T14:09:00.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-25T12:20:24.000Z (5 months ago)
- Last Synced: 2024-11-09T05:16:42.416Z (8 days ago)
- Topics: specter-desktop
- Language: Python
- Homepage:
- Size: 267 KB
- Stars: 8
- Watchers: 2
- Forks: 11
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Spectrum - Specter Desktop + Electrum
This is a electrum-adapter. It exposes a Bitcoin-Core style API while using an electron API in the backend. It might be useful in specific usecases, e.g. having better performance when connecting to a electrum-server via Tor. In order to do that, it needs a Database. Quite easily you can use a kind of builtin SQLite. Depending on your usecase, you might want to use an external DB.
## Modes of usage
This can be used either in standalone mode or as a specter-extension. The second option is probably the main use-case.
## Standalone
Get this to work with something like that:
```
python3 --version # Make sure you have at least 3.8. Might also work with lower versions though
virtualenv --python=python3 .env
. ./.env/bin/activate
pip3 install -e .# If you have a electrum server running on localhost:
python3 -m cryptoadvance.spectrum server --config cryptoadvance.spectrum.config.NigiriLocalElectrumLiteConfig# If you want to run on mainnet and use emzy's Server
python3 -m cryptoadvance.spectrum server --config cryptoadvance.spectrum.config.EmzyElectrumLiteConfig# Using Emzy's server but with a postgres
export DB_USERNAME=bla
export DB_PASSWORD=blub
python3 -m cryptoadvance.spectrum server --config cryptoadvance.spectrum.config.EmzyElectrumPostgresConfig
```Check the `config.py` for the env-vars which need to be exported in order to connect to something different than localhost.
## Specter Extension
In order to get a development environment:
```
virtualenv --python=python3 .env
. ./.env/bin/activate
pip3 install -e .
pip3 install cryptoadvance.specter
python3 -m cryptoadvance.specter server --config DevelopmentConfig --debug
```## TODO:
- refill keypool when address is used or new address is requested
- flask `debug=True` flag creates two electrum sockets that notify twice - this causes duplications in the database
- reconnect with electrum on disconnect
- add support for credentials / cookie file for RPC calls## Run the Tests
```sh
pip3 install -e ".[test]"
pytest
```## Development
Before your create a PR, make sure to [blackify](https://github.com/psf/black) all your changes. In order to automate that,
there is a git [pre-commit hook](https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/) which you can simply install like this:
```
pre-commit install
```