Skip to content

Commit

Permalink
Bugfixes and Ui improvements (#13)
Browse files Browse the repository at this point in the history
- Updated translations
- Chart now shows more digits if needed
- Updated Dependencies to remove bugs 
- nostr-chat couldn't receive NIP17 messages due to timestamp variations
  - show usb hardware signer simualtors for testnets
- include vscode launch files
  • Loading branch information
andreasgriffin authored Jul 26, 2024
1 parent fd3a6cb commit 54a2d7e
Show file tree
Hide file tree
Showing 38 changed files with 13,229 additions and 8,434 deletions.
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ compact-filters-*
*.tx
*.jsonl
.directory
.vscode
coding_tests


Expand Down Expand Up @@ -201,4 +200,4 @@ bitcoin_safe.dist-info
*.csv

screenshots*/
.DS_Store
.DS_Store
1 change: 1 addition & 0 deletions .update_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ def update_poetry_version(file_path, new_version):
# Update the version under tool.poetry
if "tool" in data and "poetry" in data["tool"] and "version" in data["tool"]["poetry"]:
data["tool"]["poetry"]["version"] = new_version
data["tool"]["briefcase"]["version"] = new_version
# Write the updated data back to pyproject.toml
with open(file_path, "w") as file:
toml.dump(data, file)
Expand Down
129 changes: 129 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
{
"version": "0.1.0",
"configurations": [


{
"name": "Python: Module",
"type": "python",
"request": "launch",
"module": "bitcoin_safe",
"console": "integratedTerminal",
"args": [
// "--profile",
],
"justMyCode": false
},
{
"name": "Pytest",
"type": "python",
"request": "launch",
"module": "pytest",
"args": [
"-vvv",
"--ignore=coding_tests",
],
"console": "integratedTerminal",
"justMyCode": true
},
{
"name": "Pytest gui",
"type": "python",
"request": "launch",
"module": "pytest",
"args": [
"-vvv",
"tests/gui",
"--ignore=coding_tests",
"-s", // Disable all capturing of outputs
],
"console": "integratedTerminal",
"justMyCode": true
},
{
"name": "Pytest non-gui",
"type": "python",
"request": "launch",
"module": "pytest",
"args": [
"-vvv",
"--ignore=tests/gui",
"--ignore=coding_tests",
"-s", // Disable all capturing of outputs
],
"console": "integratedTerminal",
"justMyCode": true
}, {
"name": "taglist",
"type": "python",
"request": "launch",
"module": "bitcoin_safe.gui.qt.taglist",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}"
}, {
"name": "network settings",
"type": "python",
"request": "launch",
"module": "bitcoin_safe.gui.qt.network_settings",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}"
}, {
"name": "step_progress_bar",
"type": "python",
"request": "launch",
"module": "bitcoin_safe.gui.qt.step_progress_bar",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}"
},{
"name": "Translation update",
"type": "python",
"request": "launch",
"program": "tools/build.py",
"args": [
"--update_translations"
],
"console": "integratedTerminal"
},{
"name": "Translation csv to ts",
"type": "python",
"request": "launch",
"program": "tools/build.py",
"args": [
"--csv_to_ts"
],
"console": "integratedTerminal"
},{
"name": "Build",
"type": "python",
"request": "launch",
"program": "tools/build.py",
"args": [
"--targets",
// // "deb",
// "appimage",
// "--sign",
],
"console": "integratedTerminal",
"preLaunchTask": "Poetry Install" // label of the task
},{
"name": "Sign",
"type": "python",
"request": "launch",
"program": "tools/build.py",
"args": [
// "--targets",
// // "deb",
// "appimage",
"--sign",
],
"console": "integratedTerminal"
},{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}

]
}
14 changes: 14 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Poetry Install",
"type": "shell",
"command": "poetry install",
"options": {
"cwd": "${workspaceFolder}" // Ensures command runs in the project root
},
"problemMatcher": []
}
]
}
177 changes: 111 additions & 66 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,32 @@
# Bitcoin Safe

### Long-term Bitcoin savings made Easy

## Currently ALPHA -- Use only on regtest / testnet / signet

#### Features

- **Easy** Bitcoin wallet for long-term cold storage
- **Easy** Multisig-Wallet Setup
- Step-by-Step instructions
- including transactions to test every hardware signer
- **Simpler** address labels by using categories (e.g. "KYC", "Non-KYC", "Work", "Friends", ...)
- Automatic coin selection within categories
- **Sending** for non-technical users
- 1-click fee selection
- Automatic merging of small utxos when fees are low
- **Collaborative**:
- Wallet chat and sharing of PSBTs (via nostr)
- Label synchronization between trusted devices (via nostr)
- **Multi-Language**:
- 🇺🇸 English, 🇨🇳 Chinese - 简体中文, 🇪🇸 Spanish - español de España, 🇯🇵 Japanese - 日本語, 🇷🇺 Russian - русский, 🇵🇹 Portuguese - português europeu, 🇮🇳 Hindi - हिन्दी, Arabic - العربية, (more upon request)
- **Fast**: Electrum server connectivity and planned upgrade to **Compact Block Filters** for the Bitcoin Safe 2.0 release
- **Secure**: No seed generation or storage (on mainnet).
#### Long-term Bitcoin savings made Easy

#### ⚠️ Currently ALPHA -- Use only on regtest / testnet / signet ⚠️

## Features

- **Easy** Multisig-Wallet Setup
- Step-by-Step instructions with a PDF backup sheet
- test signing with all hardware signer
- **Simpler** address labels by using categories (e.g. "KYC", "Non-KYC", "Work", "Friends", ...)
- Automatic coin selection within categories
- **Sending** for non-technical users
- 1-click fee selection
- Automatic merging of small utxos when fees are low
- **Collaborative**:
- Wallet chat and sharing of PSBTs (via nostr)
- Label synchronization between trusted devices (via nostr)
- **Multi-Language**:
- 🇺🇸 English, 🇨🇳 Chinese - 简体中文, 🇪🇸 Spanish - español de España, 🇯🇵 Japanese - 日本語, 🇷🇺 Russian - русский, 🇵🇹 Portuguese - português europeu, 🇮🇳 Hindi - हिन्दी, Arabic - العربية, (more upon request)
- **Fast**:
- Electrum server connectivity
- planned upgrade to **Compact Block Filters** for the Bitcoin Safe 2.0 release
- **Secure**: No seed generation or storage (on mainnet).
- A hardware signer/signing device for safe seed storage is needed (storing seeds on a computer is reckless)
- Powered by **[BDK](https://github.com/bitcoindevkit/bdk)**
- Powered by **[BDK](https://github.com/bitcoindevkit/bdk)**

## Installation from Git repository

### Ubuntu, Debian, Windows

- 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
```

#### Preview
## Preview

##### Sending

Expand All @@ -73,32 +44,106 @@

![label-sync.gif](docs/label-sync.gif)


##### Easy search across wallets

![screenshot0](docs/global-search.gif)

## Full Features List

#### More features
- **Connectivity Features**

- Electrum Servers
- Esplora Server
- RPC Bitcoin Node

* Many Import and Export options
* CSV export of every list
* Label import and export in [BIP329](https://bip329.org/)
* Label import of Electrum wallet
* Animated [Coldcard Q - QR code](https://bbqr.org/) and Legacy QR codes
* Connectivity to Electrum Servers, Esplora Server, RPC Bitcoin Node (like on [Umbrel](https://umbrel.com/))
- **Import and Export Capabilities**

- CSV export for all lists
- Label import and export using [BIP329](https://bip329.org/)
- Label import from Electrum wallet
- Drag and drop for Transactions, PSBTs, and CSV files

- **Wallet Features**

- Encrypted wallet storage
- Backup PDF with Descriptor (Text and QR code)
- Simplified address labeling using categories like KYC, Non-KYC, Work, Friends

- **Hardware Signer Connectivity**

- MicroSD (files)
- USB
- QR codes
- Animated QR codes including [BBQr](https://bbqr.org/) and legacy formats

- **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 - العربية, (more upon request)

- **Transaction / PSBT Creation**

- 1-click fee selection and mempool block preview
- Automatic merging of small 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

- **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.

#### TODOs for beta release

- [ ] Add more pytests

## Installation from Git repository

### Ubuntu, Debian, Windows

- 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

#### Goals (for the 2.0 Release)
- 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
```

- **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.
- *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

Expand Down
2 changes: 1 addition & 1 deletion bitcoin_safe/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# this is the source of the version information
__version__ = "0.7.2a0"
__version__ = "0.7.3a0"
Binary file modified bitcoin_safe/gui/locales/app_ar_AE.qm
Binary file not shown.
Loading

0 comments on commit 54a2d7e

Please sign in to comment.