bitcoin-safe


Namebitcoin-safe JSON
Version 1.0.5 PyPI version JSON
download
home_pagehttps://www.bitcoin-safe.org
SummaryA bitcoin savings wallet for the entire family.
upload_time2025-02-03 15:38:32
maintainerNone
docs_urlNone
authorandreasgriffin
requires_python<3.13,>=3.10
licenseGPL-3.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Bitcoin Safe

#### A bitcoin savings wallet for the entire family

- **Easy** Multisig-Wallet Setup
  - Step-by-Step instructions for a secure MultiSig setup with PDF backup sheets
  - Test transactions ensure that all hardware signers are ready
  - Full support for [Coldcard](https://store.coinkite.com/promo/8BFF877000C34A86F410), [Coldcard Q](https://store.coinkite.com/promo/8BFF877000C34A86F410), [Bitbox02](https://shiftcrypto.ch/bitbox02/?ref=MOB4dk7gpm), [Blockstream Jade](https://store.blockstream.com/?code=XEocg5boS77D), [Trezor](https://trezor.io), [Foundation Passport](https://foundation.xyz/passport), [Keystone](https://keyst.one), [Ledger](https://shop.ledger.com/pages/ledger-nano-s-plus), [Specter DIY](https://specter.solutions/hardware), using  *QR*, *USB*, and *SD-card* 
- **Secure**: Hardware signers only
  - All wallets require hardware signers/wallets for safe seed storage 
  - Powered by **[BDK](https://github.com/bitcoindevkit/bdk)**
- **Multi-Language**:
  - 🇺🇸 English, 🇨🇳 Chinese - 简体中文, 🇪🇸 Spanish - español de España, 🇯🇵 Japanese - 日本語, 🇷🇺 Russian - русский, 🇵🇹 Portuguese - português europeu, 🇮🇳 Hindi - हिन्दी, Arabic - العربية, 🇮🇹 Italian - italiano, 🇫🇷 French - Français, 🇩🇪 German - Deutsch, (more upon request)
- **Simpler** address labels by using categories (e.g. "KYC", "Non-KYC", "Work", "Friends", ...)
  - Automatic coin selection within categories
  - Transaction flow diagrams, visualizing inputs and outputs, click on inputs and output to trace the money flow
- **Sending** for non-technical users
  - 1-click fee selection via mempool-blocks
  - Automatic merging of utxos when fees are low
- **Sync & Chat**:
  - Encrypted cloud backup (via nostr) of labels
  - Label synchronization between different computers
  - Wallet chat and PSBTs sharing between different computers
- **Fast**: 
  - Electrum server syncing
  - planned upgrade to **Compact Block Filters** for the Bitcoin Safe 2.0 release




### Fully featured - Easy and Powerful

| **Multisig setup wizard**          | **Create a PSBT, sign and broadcast**                     |
|--------------------------------|----------------------------|
| ![](docs/multisig-setup.gif) |  ![](docs/send.gif) |
| **Transaction exploring via a diagram**          | **Type-to-search in all wallets**                    |
| ![](docs/explorer.gif) |  ![](docs/global-search.gif) |
|   **Automatic Label Synchronization**      | **Multiparty Multisig collaboration**                  |
| ![](docs/label-sync.gif)  |   ![](docs/psbt-share.gif) |
|   **Coin Categories**      |                 |
| ![](docs/category-drag-and-drop.gif)  |   |



### Available on all platforms
| ![Windows](docs/tx-win.png) | ![Mac OS X](docs/tx-mac.png) | ![Linux](docs/tx-linux.png) |
|-----------------------------|-----------------------------|----------------------------|
| Windows                    | Mac OS X                   | Linux                     |


## Comprehensive Feature List

- **Import and Export Capabilities**
  
  - CSV export for all lists
  - CSV import for batch transactions
  - Label import and export using [BIP329](https://bip329.org/)
  - Label import from Electrum wallet
  - Export of the money flow diagram to svg
  - Drag and drop for Transactions, PSBTs, and CSV files

- **Wallet Features**
  
  - Simplified address labeling using categories like KYC, Non-KYC, Work, Friends
  - Cancel unconfirmed transactions (via Replace-by-Fee)
  - Bump fee on transactions (via Replace-by-Fee)
  - Encrypted wallet storage
  - Backup PDF with Descriptor (Text and QR code)

- **Hardware Signer Connectivity**
  
  - MicroSD (files)
  - USB
  - QR codes (enhanced QR code detection for Laptop cameras)
  - Animated QR codes including [Coldcard/BBQr](https://bbqr.org/) and [UR](https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-005-ur.md) format

- **Search and Filtering Options**
  
  - Fast filtering across txids, utxos, labels, dates, amounts, categories
  - Search across all open wallets, txids, utxos, labels, dates, amounts, categories

- **Languages**
  
  - 🇺🇸 English, 🇨🇳 Chinese - 简体中文, 🇪🇸 Spanish - español de España, 🇯🇵 Japanese - 日本語, 🇷🇺 Russian - русский, 🇵🇹 Portuguese - português europeu, 🇮🇳 Hindi - हिन्दी, Arabic - العربية, 🇮🇹 Italian - italiano, 🇫🇷 French - Français, 🇩🇪 German - Deutsch, (more upon request)

- **Transaction / PSBT Creation**
  
  - 1-click fee selection and mempool block preview
  - Automatic merging of utxos when fees are low
  - Highlighting of own addresses 

- **Security and Reliability**
  
  - No seed generation or storage on mainnet
  - Seed storage requires a separate hardware signer  
  - Update notifications and signature verification
  - Powered by [Bitcoin Development Kit (BDK)](https://github.com/bitcoindevkit/bdk)

- **Ease of Use for Multisig Wallets**
  
  - Simplified setup for multisig wallets, including step-by-step instructions and PDF backup sheet
  - Test signing with all hardware signers
  - Collaborative wallet management including chat and PSBT sharing via nostr and label synchronization between trusted devices
  - Optional custom nostr server 

- **Upcoming Features**
  
  - For the 2.0 Release
    - **Compact Block Filters** by default
      - Compact Block Filters are **fast** and **private**
      - Compact Block Filters (bdk) are being [worked on](https://github.com/bitcoindevkit/bdk/issues/679), and will be included in bdk 1.1. For now RPC, Electrum and Esplora are available, but will be replaced completely with Compact Block Filters.


## Installation from Git repository


### Ubuntu, Debian, Windows

Install dependencies: 

  ```sh
  sudo apt install  qt6-tools-dev-tools libqt6*
  ```

- Install `poetry` and run `bitcoin_safe`
  
  ```sh
  git clone https://github.com/andreasgriffin/bitcoin-safe.git
  cd bitcoin-safe
  pip install poetry  && poetry install && poetry run python -m bitcoin_safe
  ```

### Mac

- Run `bitcoin_safe`
  
  ```sh
  git clone https://github.com/andreasgriffin/bitcoin-safe.git
  cd bitcoin-safe
  python3 -m pip install poetry && python3 -m poetry install && python3 -m poetry run python3 -m bitcoin_safe
  ```

- *Optional*: dependency `zbar`
  
  ```sh
  xcode-select --install
  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  brew install zbar 
  ```

## Development

* Run the precommit manually for debugging

```shell
poetry run pre-commit run --all-files
```

#### Regtest docker environement with electrs and mempool

* install docker

```shell
# see https://docs.docker.com/engine/install/ubuntu/
```

* setting up a regtest environment in docker + mempool instance

```shell
curl https://getnigiri.vulpem.com | sudo bash # see https://nigiri.vulpem.com/#install
sudo nigiri start
xdg-open http://localhost:5000/
```

* This creates
  * esplora localhost:3000
    electrs localhost:50000 
  * and a gui block explorer at http://localhost:5000
* Setup mempool instance

```shell
sudo apt install docker-compose
git clone https://github.com/ngutech21/nigiri-mempool.git

pushd nigiri-mempool
sudo docker-compose up -d
sleep 10
# this is needed because the database needs time to start up 
sudo docker-compose up -d
popd
xdg-open http://localhost:8080/

# if the mempool is endlessly loading, then get the debug output with
sudo docker-compose logs -f mempool-api
```

* this opens a mempool at http://localhost:8080/

#### Control the Regtest environment

* get coins to an address

```shell
nigiri rpc generatetoaddress 1 bcrt1qgsnt3d4sny4w4zd5zl9x6jufc5rankqmgphyms9vz0ds73q4xfms655y4c # mine blocks

# or use the internal faucet
nigiri faucet bcrt1qgsnt3d4sny4w4zd5zl9x6jufc5rankqmgphyms9vz0ds73q4xfms655y4c 0.01
```

* ## Installation from PyPi

### Ubuntu, Debian, Windows

- Install `poetry` and run `bitcoin_safe`
  
  ```sh
  pip install bitcoin-safe
  python -m bitcoin_safe
  ```

### Mac

- Run `bitcoin_safe`
  
  ```sh
  python3 -m pip install bitcoin-safe
  python3 -m bitcoin_safe
  ```



## Code signing policy


Free code signing provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/)


## Privacy policy
This program uses by default
- the electrum/esplora server of [blockstream.com](https://blockstream.com/) to fetch blockchain data
- fetches mempool fee information from [mempool.space](https://mempool.space/)

You can specify your own (personal) server for both in "Network settings".

When enabeling the Sync&Chat feature [default relays](https://github.com/andreasgriffin/bitcoin-nostr-chat/blob/main/bitcoin_nostr_chat/default_relays.py) are used to transmit encrypted data to your approved trusted devices. You can specify your own relay(s) in the Sync&Chat settings.

This program will not transfer any other information to other networked systems unless specifically requested by the user or the person installing or operating it.
            

Raw data

            {
    "_id": null,
    "home_page": "https://www.bitcoin-safe.org",
    "name": "bitcoin-safe",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.10",
    "maintainer_email": null,
    "keywords": null,
    "author": "andreasgriffin",
    "author_email": "andreasgriffin@proton.me",
    "download_url": "https://files.pythonhosted.org/packages/c4/27/7d89549d3ef8487abf638e5314e655659e77664819bf6fca5689f618fbd2/bitcoin_safe-1.0.5.tar.gz",
    "platform": null,
    "description": "# Bitcoin Safe\n\n#### A bitcoin savings wallet for the entire family\n\n- **Easy** Multisig-Wallet Setup\n  - Step-by-Step instructions for a secure MultiSig setup with PDF backup sheets\n  - Test transactions ensure that all hardware signers are ready\n  - Full support for [Coldcard](https://store.coinkite.com/promo/8BFF877000C34A86F410), [Coldcard Q](https://store.coinkite.com/promo/8BFF877000C34A86F410), [Bitbox02](https://shiftcrypto.ch/bitbox02/?ref=MOB4dk7gpm), [Blockstream Jade](https://store.blockstream.com/?code=XEocg5boS77D), [Trezor](https://trezor.io), [Foundation Passport](https://foundation.xyz/passport), [Keystone](https://keyst.one), [Ledger](https://shop.ledger.com/pages/ledger-nano-s-plus), [Specter DIY](https://specter.solutions/hardware), using  *QR*, *USB*, and *SD-card* \n- **Secure**: Hardware signers only\n  - All wallets require hardware signers/wallets for safe seed storage \n  - Powered by **[BDK](https://github.com/bitcoindevkit/bdk)**\n- **Multi-Language**:\n  - \ud83c\uddfa\ud83c\uddf8 English, \ud83c\udde8\ud83c\uddf3 Chinese - \u7b80\u4f53\u4e2d\u6587, \ud83c\uddea\ud83c\uddf8 Spanish - espa\u00f1ol de Espa\u00f1a, \ud83c\uddef\ud83c\uddf5 Japanese - \u65e5\u672c\u8a9e, \ud83c\uddf7\ud83c\uddfa Russian - \u0440\u0443\u0441\u0441\u043a\u0438\u0439, \ud83c\uddf5\ud83c\uddf9 Portuguese - portugu\u00eas europeu, \ud83c\uddee\ud83c\uddf3 Hindi - \u0939\u093f\u0928\u094d\u0926\u0940, Arabic - \u0627\u0644\u0639\u0631\u0628\u064a\u0629, \ud83c\uddee\ud83c\uddf9 Italian - italiano, \ud83c\uddeb\ud83c\uddf7 French - Fran\u00e7ais, \ud83c\udde9\ud83c\uddea German - Deutsch, (more upon request)\n- **Simpler** address labels by using categories (e.g. \"KYC\", \"Non-KYC\", \"Work\", \"Friends\", ...)\n  - Automatic coin selection within categories\n  - Transaction flow diagrams, visualizing inputs and outputs, click on inputs and output to trace the money flow\n- **Sending** for non-technical users\n  - 1-click fee selection via mempool-blocks\n  - Automatic merging of utxos when fees are low\n- **Sync & Chat**:\n  - Encrypted cloud backup (via nostr) of labels\n  - Label synchronization between different computers\n  - Wallet chat and PSBTs sharing between different computers\n- **Fast**: \n  - Electrum server syncing\n  - planned upgrade to **Compact Block Filters** for the Bitcoin Safe 2.0 release\n\n\n\n\n### Fully featured - Easy and Powerful\n\n| **Multisig setup wizard**          | **Create a PSBT, sign and broadcast**                     |\n|--------------------------------|----------------------------|\n| ![](docs/multisig-setup.gif) |  ![](docs/send.gif) |\n| **Transaction exploring via a diagram**          | **Type-to-search in all wallets**                    |\n| ![](docs/explorer.gif) |  ![](docs/global-search.gif) |\n|   **Automatic Label Synchronization**      | **Multiparty Multisig collaboration**                  |\n| ![](docs/label-sync.gif)  |   ![](docs/psbt-share.gif) |\n|   **Coin Categories**      |                 |\n| ![](docs/category-drag-and-drop.gif)  |   |\n\n\n\n### Available on all platforms\n| ![Windows](docs/tx-win.png) | ![Mac OS X](docs/tx-mac.png) | ![Linux](docs/tx-linux.png) |\n|-----------------------------|-----------------------------|----------------------------|\n| Windows                    | Mac OS X                   | Linux                     |\n\n\n## Comprehensive Feature List\n\n- **Import and Export Capabilities**\n  \n  - CSV export for all lists\n  - CSV import for batch transactions\n  - Label import and export using [BIP329](https://bip329.org/)\n  - Label import from Electrum wallet\n  - Export of the money flow diagram to svg\n  - Drag and drop for Transactions, PSBTs, and CSV files\n\n- **Wallet Features**\n  \n  - Simplified address labeling using categories like KYC, Non-KYC, Work, Friends\n  - Cancel unconfirmed transactions (via Replace-by-Fee)\n  - Bump fee on transactions (via Replace-by-Fee)\n  - Encrypted wallet storage\n  - Backup PDF with Descriptor (Text and QR code)\n\n- **Hardware Signer Connectivity**\n  \n  - MicroSD (files)\n  - USB\n  - QR codes (enhanced QR code detection for Laptop cameras)\n  - Animated QR codes including [Coldcard/BBQr](https://bbqr.org/) and [UR](https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-005-ur.md) format\n\n- **Search and Filtering Options**\n  \n  - Fast filtering across txids, utxos, labels, dates, amounts, categories\n  - Search across all open wallets, txids, utxos, labels, dates, amounts, categories\n\n- **Languages**\n  \n  - \ud83c\uddfa\ud83c\uddf8 English, \ud83c\udde8\ud83c\uddf3 Chinese - \u7b80\u4f53\u4e2d\u6587, \ud83c\uddea\ud83c\uddf8 Spanish - espa\u00f1ol de Espa\u00f1a, \ud83c\uddef\ud83c\uddf5 Japanese - \u65e5\u672c\u8a9e, \ud83c\uddf7\ud83c\uddfa Russian - \u0440\u0443\u0441\u0441\u043a\u0438\u0439, \ud83c\uddf5\ud83c\uddf9 Portuguese - portugu\u00eas europeu, \ud83c\uddee\ud83c\uddf3 Hindi - \u0939\u093f\u0928\u094d\u0926\u0940, Arabic - \u0627\u0644\u0639\u0631\u0628\u064a\u0629, \ud83c\uddee\ud83c\uddf9 Italian - italiano, \ud83c\uddeb\ud83c\uddf7 French - Fran\u00e7ais, \ud83c\udde9\ud83c\uddea German - Deutsch, (more upon request)\n\n- **Transaction / PSBT Creation**\n  \n  - 1-click fee selection and mempool block preview\n  - Automatic merging of utxos when fees are low\n  - Highlighting of own addresses \n\n- **Security and Reliability**\n  \n  - No seed generation or storage on mainnet\n  - Seed storage requires a separate hardware signer  \n  - Update notifications and signature verification\n  - Powered by [Bitcoin Development Kit (BDK)](https://github.com/bitcoindevkit/bdk)\n\n- **Ease of Use for Multisig Wallets**\n  \n  - Simplified setup for multisig wallets, including step-by-step instructions and PDF backup sheet\n  - Test signing with all hardware signers\n  - Collaborative wallet management including chat and PSBT sharing via nostr and label synchronization between trusted devices\n  - Optional custom nostr server \n\n- **Upcoming Features**\n  \n  - For the 2.0 Release\n    - **Compact Block Filters** by default\n      - Compact Block Filters are **fast** and **private**\n      - Compact Block Filters (bdk) are being [worked on](https://github.com/bitcoindevkit/bdk/issues/679), and will be included in bdk 1.1. For now RPC, Electrum and Esplora are available, but will be replaced completely with Compact Block Filters.\n\n\n## Installation from Git repository\n\n\n### Ubuntu, Debian, Windows\n\nInstall dependencies: \n\n  ```sh\n  sudo apt install  qt6-tools-dev-tools libqt6*\n  ```\n\n- Install `poetry` and run `bitcoin_safe`\n  \n  ```sh\n  git clone https://github.com/andreasgriffin/bitcoin-safe.git\n  cd bitcoin-safe\n  pip install poetry  && poetry install && poetry run python -m bitcoin_safe\n  ```\n\n### Mac\n\n- Run `bitcoin_safe`\n  \n  ```sh\n  git clone https://github.com/andreasgriffin/bitcoin-safe.git\n  cd bitcoin-safe\n  python3 -m pip install poetry && python3 -m poetry install && python3 -m poetry run python3 -m bitcoin_safe\n  ```\n\n- *Optional*: dependency `zbar`\n  \n  ```sh\n  xcode-select --install\n  /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n  brew install zbar \n  ```\n\n## Development\n\n* Run the precommit manually for debugging\n\n```shell\npoetry run pre-commit run --all-files\n```\n\n#### Regtest docker environement with electrs and mempool\n\n* install docker\n\n```shell\n# see https://docs.docker.com/engine/install/ubuntu/\n```\n\n* setting up a regtest environment in docker + mempool instance\n\n```shell\ncurl https://getnigiri.vulpem.com | sudo bash # see https://nigiri.vulpem.com/#install\nsudo nigiri start\nxdg-open http://localhost:5000/\n```\n\n* This creates\n  * esplora localhost:3000\n    electrs localhost:50000 \n  * and a gui block explorer at http://localhost:5000\n* Setup mempool instance\n\n```shell\nsudo apt install docker-compose\ngit clone https://github.com/ngutech21/nigiri-mempool.git\n\npushd nigiri-mempool\nsudo docker-compose up -d\nsleep 10\n# this is needed because the database needs time to start up \nsudo docker-compose up -d\npopd\nxdg-open http://localhost:8080/\n\n# if the mempool is endlessly loading, then get the debug output with\nsudo docker-compose logs -f mempool-api\n```\n\n* this opens a mempool at http://localhost:8080/\n\n#### Control the Regtest environment\n\n* get coins to an address\n\n```shell\nnigiri rpc generatetoaddress 1 bcrt1qgsnt3d4sny4w4zd5zl9x6jufc5rankqmgphyms9vz0ds73q4xfms655y4c # mine blocks\n\n# or use the internal faucet\nnigiri faucet bcrt1qgsnt3d4sny4w4zd5zl9x6jufc5rankqmgphyms9vz0ds73q4xfms655y4c 0.01\n```\n\n* ## Installation from PyPi\n\n### Ubuntu, Debian, Windows\n\n- Install `poetry` and run `bitcoin_safe`\n  \n  ```sh\n  pip install bitcoin-safe\n  python -m bitcoin_safe\n  ```\n\n### Mac\n\n- Run `bitcoin_safe`\n  \n  ```sh\n  python3 -m pip install bitcoin-safe\n  python3 -m bitcoin_safe\n  ```\n\n\n\n## Code signing policy\n\n\nFree code signing provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/)\n\n\n## Privacy policy\nThis program uses by default\n- the electrum/esplora server of [blockstream.com](https://blockstream.com/) to fetch blockchain data\n- fetches mempool fee information from [mempool.space](https://mempool.space/)\n\nYou can specify your own (personal) server for both in \"Network settings\".\n\nWhen enabeling the Sync&Chat feature [default relays](https://github.com/andreasgriffin/bitcoin-nostr-chat/blob/main/bitcoin_nostr_chat/default_relays.py) are used to transmit encrypted data to your approved trusted devices. You can specify your own relay(s) in the Sync&Chat settings.\n\nThis program will not transfer any other information to other networked systems unless specifically requested by the user or the person installing or operating it.",
    "bugtrack_url": null,
    "license": "GPL-3.0",
    "summary": "A bitcoin savings wallet for the entire family.",
    "version": "1.0.5",
    "project_urls": {
        "Homepage": "https://www.bitcoin-safe.org"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "91bc35d2151808ed35268cc4e8dccffac70bfa2c4f321f64470bf1cbcae35732",
                "md5": "8e43cc578db5d02cc9625a74f64103a5",
                "sha256": "5617dae3d41b8f9ade282211ac52643ac1280132394c582b5773e6a66865bb19"
            },
            "downloads": -1,
            "filename": "bitcoin_safe-1.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8e43cc578db5d02cc9625a74f64103a5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.10",
            "size": 4898630,
            "upload_time": "2025-02-03T15:38:27",
            "upload_time_iso_8601": "2025-02-03T15:38:27.970411Z",
            "url": "https://files.pythonhosted.org/packages/91/bc/35d2151808ed35268cc4e8dccffac70bfa2c4f321f64470bf1cbcae35732/bitcoin_safe-1.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c4277d89549d3ef8487abf638e5314e655659e77664819bf6fca5689f618fbd2",
                "md5": "b850c244589a9b6f34ed5b5ae27ac7d5",
                "sha256": "0d2892497c676acc4ab2227b632223b7eed3eda8622ec51000115851f7f0704d"
            },
            "downloads": -1,
            "filename": "bitcoin_safe-1.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "b850c244589a9b6f34ed5b5ae27ac7d5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.10",
            "size": 4687104,
            "upload_time": "2025-02-03T15:38:32",
            "upload_time_iso_8601": "2025-02-03T15:38:32.650410Z",
            "url": "https://files.pythonhosted.org/packages/c4/27/7d89549d3ef8487abf638e5314e655659e77664819bf6fca5689f618fbd2/bitcoin_safe-1.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-03 15:38:32",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "bitcoin-safe"
}
        
Elapsed time: 0.42071s