WarpWallet is a deterministic bitcoin address generator. You never have to save or store your private key anywhere. Just pick a really good password - many random words, for example - and never use it for anything else.
This page is self-contained for portability. Save it on your computer - all the JS, CSS, and images are embedded. It's also hosted on github.
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?
For safety, we've implemented WarpWallet outside of JavaScript and confirmed it generates the same output. (It's a step in our test suite, and we publish our test vectors along with the source.) If you're a programmer and want to implement WarpWallet yourself...
s1 | = | scrypt(key=(passphrase||0x1), salt=(salt||0x1), N=218, r=8, p=1, dkLen=32) |
s2 | = | pbkdf2(key=(passphrase||0x2), salt=(salt||0x2), c=216, dkLen=32, prf=HMAC_SHA256) |
keypair | = | generate_bitcoin_keypair(s1 ⊕ s2) |
The following challenges are designed to test the safety of WarpWallet, and scrypt in general. We expect the first 4 to fall quickly and hope to lose our bitcoins to nice people. If challenge 5 falls, we'll make an announcement here and on twitter (@maxtaco, @malgorithms).
All these challenges are with unsalted passphrases. Salt yours! They're harder to lick.
And finally, the real challenge...
We are Max Krohn and Chris Coyne, co-founders of OkCupid, SparkNotes, and a bunch of other toys. Good day to you! We recently left OkCupid after 9 years, so we have a lot of time on our hands. Please follow us on twitter if you care to hear about this kind of thing.
But enough with the pleasantries: you can always see our signed version history at https://keybase.io/warp/release.txt (signed with our PGP key).
WarpWallet is of course offered without any warranty of any kind; if you lose your bitcoins due to a bug in our software, your keystrokes being recorded on a malware-infested XP rig from 2003, a weak passphrase, or even a typo, we are sorry in the most respectful way, but we cannot help you. Of course if you're messing around with bitcoins, you know how dangerous it is.
Consider using an air-gapped computer when generating bitcoin addresses. The nice thing about WarpWallet is you don't have to worry about concealing your private key afterwards. Just don't forget your password.