I'm excited to release a project I've been working on the past few months, which has reached a point of usability and stability I'm finally satisfied with. It uses the latest bitcoinj version, currently 0.12.2.
TermWalletTermWallet is a bitcoinj-based wallet tailor-made for the command line. It does not download the whole blockchain, and as a result the blockchain data only take up about a megabyte of space. Small servers with limited HDD space are thus the ideal use-case for TermWallet. Generated addresses are deterministic (HD) by default, using the BIP32 specification, but external private keys can also be imported into the wallet.
TermWallet can make transactions using only one address's outputs by including a novel adaption of bitcoinj's CoinSelector method, IndividualCoinSelector. Previously, bitcoinj (and subsequently bitcoinj-based wallets such as Multibit) has not been able to select outputs from only one address. IndividualCoinSelector provides this capability. Use the "-f (--from)" option while using the "send" command to designate the address to send from.
An encryption function is included, currently only encrypting private keys. Further, TermWallet provides a 'panic' command that can send all the BTC's in the wallet to an external address and, optionally, delete the wallet (including all files). This should be used if the computer is compromised or at risk. No private keys will be easily recoverable.
An experimental function is provided to connect to the blockchain through Tor. Use "-t" or "--tor" to use it.
To view the full usage menu, use "termwallet --help"
Install InstructionsFull Source Code:
https://github.com/grayleonard/termwalletRequirements:
OSX or Linux
Java 1.6 (bitcoinj requirement)
Quick Install:
wget -O - https://raw.githubusercontent.com/grayleonard/termwallet/master/install.sh | sh
You may need to run
wget -O - https://raw.githubusercontent.com/grayleonard/termwallet/master/install.sh | sudo sh
if permission is denied (note the 'sudo')
If you want to build from source:
git clone https://github.com/grayleonard/termwallet.git
cd termWallet
./build.sh
(Maven2 is required to build the project)
Get started by running 'termwallet new'. It creates a new address. Examples below.
Contributions and bug reports are welcomed, just make a pull request or open an issue.
"Screenshots"[term@wallet]$ termwallet status
Connecting to and downloading blockchain...
Finished downloading blockchain...
Your addresses and their balances:
Deterministic Keys:
157tPz2zUc7Q843bRXhbN2PgNRJwFP3tBi Balance: BTC 0.00
1QECpf8AjyZMCEV54uhKccRd6ueYiUHhik Balance: BTC 0.00
18PcKRUNkq26JN3sXx9VGmch5Guj2JX9q8 Balance: BTC 0.00
1pXcUE8PJy8VdP4dPfttr3FyUCBwmStfH Balance: BTC 0.00
Confirmed: BTC 0.00
Unconfirmed: BTC 0.00
[term@wallet]$ termwallet import
Connecting to and downloading blockchain...
Finished downloading blockchain...
Private key: correct horse battery staple
Creating ECKey ECKey{pub=047e225fa4260a6b6ce741170396462629115f52fe5305830df1c2acce10250f11a16e5a2a0816c677c4506db3a4b8f73f3ea97d538488674f84e20d40956751fc, isEncrypted=false}...
Added new ECKey, address 1EnngHuGmcjz781rYV5KXw4FAcwXi5o4ei to wallet...
[term@wallet]$ termwallet new
Connecting to and downloading blockchain...
Finished downloading blockchain...
New Address 1L54YBPbPQAhMnxCmQedNeSuXp63RHCKdG with purpose RECEIVE_FUNDS
Donation address: 1L54YBPbPQAhMnxCmQedNeSuXp63RHCKdG