# Wrapper around hwi, such that one can sign bdk PSBTs directly
* This provides an abstraction layer ontop of hwi, such that only bdk is needed from the outside
* Currently supported are
- Coldcard, Q
- Bitbox02
- Blockstream Jade
- Trezor Safe
* It also provides
- AddressTypes, which are the commonly used bitcoin output descriptor templates
- seed_tools.derive_spk_provider to derive xpubs from seeds for all AddressTypes (bdk does not support multisig templates currently https://github.com/bitcoindevkit/bdk/issues/1020)
- SoftwareSigner which can sign single and multisig PSBTs, this doesn't do any security checks, so only use it on testnet
- HWIQuick to list the connected devices without the need to unlock them
### Demo
Run the demo with
```
python demo.py
```
### Tests
Run tests
```
python -m pytest -vvv --log-cli-level=0
```
### Library Usage
* For xpub derivation bip_utils is used
* For signing a psbt python-bitcointx is used
# Install package
### From pypi
```shell
pip install bitcoin_usb
```
### From git
* Install requirements:
```shell
poetry install
```
* Automatic commit formatting
```shell
pip install pre-commit
pre-commit install
```
* Run the precommit manually for debugging
```shell
pre-commit run --all-files
```
Raw data
{
"_id": null,
"home_page": "https://github.com/andreasgriffin/bitcoin-usb",
"name": "bitcoin-usb",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.8.1",
"maintainer_email": null,
"keywords": null,
"author": "andreasgriffin",
"author_email": "andreasgriffin@proton.me",
"download_url": "https://files.pythonhosted.org/packages/26/dd/1d7b550e64842be84d63105b30decc7b68f4d21882b606d1fafb7c294c06/bitcoin_usb-0.7.8.tar.gz",
"platform": null,
"description": "# Wrapper around hwi, such that one can sign bdk PSBTs directly\n\n* This provides an abstraction layer ontop of hwi, such that only bdk is needed from the outside\n* Currently supported are\n - Coldcard, Q\n - Bitbox02\n - Blockstream Jade\n - Trezor Safe \n\n\n* It also provides \n - AddressTypes, which are the commonly used bitcoin output descriptor templates\n - seed_tools.derive_spk_provider to derive xpubs from seeds for all AddressTypes (bdk does not support multisig templates currently https://github.com/bitcoindevkit/bdk/issues/1020)\n - SoftwareSigner which can sign single and multisig PSBTs, this doesn't do any security checks, so only use it on testnet\n - HWIQuick to list the connected devices without the need to unlock them\n\n\n### Demo\n\nRun the demo with\n\n```\npython demo.py\n```\n\n\n### Tests\n\nRun tests\n\n```\npython -m pytest -vvv --log-cli-level=0\n```\n\n### Library Usage\n\n* For xpub derivation bip_utils is used\n* For signing a psbt python-bitcointx is used\n\n\n# Install package\n\n\n\n### From pypi\n\n```shell\npip install bitcoin_usb\n```\n\n\n\n### From git\n\n* Install requirements:\n\n```shell\npoetry install\n```\n\n* Automatic commit formatting\n\n```shell\npip install pre-commit\npre-commit install\n```\n\n\n* Run the precommit manually for debugging\n\n```shell\npre-commit run --all-files\n```\n\n\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "Wrapper around hwi, such that one can sign bdk PSBTs directly",
"version": "0.7.8",
"project_urls": {
"Homepage": "https://github.com/andreasgriffin/bitcoin-usb"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "eb0db05bd90e8929ef608b390b6cda7ae80ed133b7a8d009242a346fb22bfce6",
"md5": "babcb9cdfd37b970ee0cfe656a2d8f90",
"sha256": "13e4ee93ba34181104052129a6d7f1a09effb5696d26ad16bdd356ba85f950bc"
},
"downloads": -1,
"filename": "bitcoin_usb-0.7.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "babcb9cdfd37b970ee0cfe656a2d8f90",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.8.1",
"size": 40438,
"upload_time": "2025-02-02T17:52:04",
"upload_time_iso_8601": "2025-02-02T17:52:04.545766Z",
"url": "https://files.pythonhosted.org/packages/eb/0d/b05bd90e8929ef608b390b6cda7ae80ed133b7a8d009242a346fb22bfce6/bitcoin_usb-0.7.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "26dd1d7b550e64842be84d63105b30decc7b68f4d21882b606d1fafb7c294c06",
"md5": "5dfd29c1b0324abdc20166f5edcf1899",
"sha256": "d6c05b074966dc15af87b5f3d66372dd2dca41c1420ed5c892d5c88d7c99dada"
},
"downloads": -1,
"filename": "bitcoin_usb-0.7.8.tar.gz",
"has_sig": false,
"md5_digest": "5dfd29c1b0324abdc20166f5edcf1899",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.8.1",
"size": 35253,
"upload_time": "2025-02-02T17:52:07",
"upload_time_iso_8601": "2025-02-02T17:52:07.204379Z",
"url": "https://files.pythonhosted.org/packages/26/dd/1d7b550e64842be84d63105b30decc7b68f4d21882b606d1fafb7c294c06/bitcoin_usb-0.7.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-02 17:52:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "andreasgriffin",
"github_project": "bitcoin-usb",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "bitcoin-usb"
}