Skip to content
This project is a secure Bitcoin brainwallet app written in Python.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Aug 25, 2018
Logo Add Logo to Repository (#4) Jul 4, 2018
icons Move new icon files. Jul 4, 2018
nowallet iterate over all the transactions in the history during _dispatch_res… Jan 13, 2019
screens
tests
.gitignore
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md Nov 4, 2018
CONTRIBUTING.md Add CONTRIBUTING.md derived from contributor-covenant.org. Mar 4, 2018
LICENSE Add newlines to LICENSE. Sep 14, 2017
Makefile
PULL_REQUEST_TEMPLATE.md Create PULL_REQUEST_TEMPLATE.md Aug 25, 2018
README.md Update README.md testnet faucet link. Oct 1, 2018
api_password_dev.txt
buildozer.spec
main.py
nowallet.kv
nowalletd.py Set wallet flags before discovering history. Oct 1, 2018
pylintrc Delinting. Apr 22, 2018
requirements-dev.txt
requirements-kivy.txt
requirements.txt
server.py Delinting. Apr 22, 2018
servers.json Update UI with new logo and make bech32 the default. Jul 4, 2018
settings_json.py
setup.py
tox.ini

README.md

Nowallet

Secure, private, and plausibly deniable

Cross-platform Bitcoin brainwallet

Introduction:

This project is a secure Bitcoin brainwallet app that will ultimately be meant for desktop and mobile platforms. It was inspired by reports of incidents of Bitcoin being seized physically at border crossings. People need an option for a brainwallet that is secure and easy to use.

It's written in Python and depends on the pycoin and connectrum libraries. It uses Electrum servers on the back end, and communicates exclusively over Tor. It uses a variant of the 'WarpWallet' technique, combining PBKDF2 and scrypt with a salt for key derivation, rather than the typical, highly insecure SHA256(passphrase) method that your average brainwallet uses. Here's a basic explanation of the benefits of using the WarpWallet technique:

Quoted from https://keybase.io/warp/:

"WarpWallet is a deterministic bitcoin address generator. You never have to save or store your private key anywhere. Just pick a really good password and never use it for anything else.

This is not an original idea. bitaddress.org's brainwallet is our inspiration.

WarpWallet adds two improvements: (1) WarpWallet uses scrypt to make address generation both memory and time-intensive. And (2) you can "salt" your passphrase with your email address. Though salting is optional, we recommend it. Any attacker of WarpWallet addresses would have to target you individually, rather than netting you in a wider, generic sweep. And your email is trivial to remember, so why not?"

(Note: Salting is not optional in our case.)

Details:

Basically, you get a secure brainwallet in a convenient app (now with SegWit address support) and only need to remember an email address/password combination rather than an entire 12/24 word seed. People are typically more accustomed to remembering a normal set of login info, which will protect users from forgetting or misremembering part of their seed and losing coins forever.

We have also implemented a full HD wallet compatible with BIP32/44. The current working title is Nowallet, as in, "I'm sorry officer, I have no wallet!" We are currently in a pre-alpha state. All testers must be able to install dependencies and run from the simple command line interface.

If you're interested in testing, you can get some testnet coins here: https://coinfaucet.eu/en/btc-testnet/

SCREENSHOTS:

Login Balance Send Recieve

REQUIREMENTS:

  1. Building is currently supported on Linux based systems only. (Ubuntu LTS specifically if using Kivy)
  2. Install Tor for Linux using the instructions linked below:
    https://www.torproject.org/docs/debian.html.en
    (Do not use the packages in Ubuntu's universe.)

INSTALLATION:

Install Nowallet dependencies:
sudo apt-get install git python3-dev python3-pip libssl-dev

Install Kivy UI dependencies: (optional)
sudo apt-get install build-essential ffmpeg libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev

Clone the Nowallet Github repository:
git clone https://github.com/metamarcdw/nowallet.git

Create a virtualenv (using virtualenvwrapper for example):
First install virtualenvwrapper using the instructions linked below:
http://railslide.io/virtualenvwrapper-python3.html
Create the virtualenv:
mkvirtualenv --no-site-packages -p /usr/bin/python3 nowallet

Make sure Pip, Virtualenv and Setuptools are updated:
pip install --upgrade pip virtualenv setuptools

Install required Python libraries:
cd nowallet
make init
make install

Install required Kivy libraries: (optional)
pip install Cython==0.24
make init-kivy
garden install qrcode

Install required development libraries: (optional)
make init-dev

Run nowallet from the command line:
make go
OR
make go-spend
OR
make go-kivy

UNIT TESTING:

Run unit tests (Must install dev libs):
make test

You can’t perform that action at this time.