Update README with recent changes and additional details.

This commit is contained in:
Josh Rickmar 2014-01-11 03:02:37 -05:00
parent ecc959677c
commit 76f3657ad3

View file

@ -4,27 +4,32 @@ btcwallet
[![Build Status](https://travis-ci.org/conformal/btcwallet.png?branch=master)] [![Build Status](https://travis-ci.org/conformal/btcwallet.png?branch=master)]
(https://travis-ci.org/conformal/btcwallet) (https://travis-ci.org/conformal/btcwallet)
btcwallet is a daemon handling bitcoin wallet functions. It relies on btcwallet is a daemon handling bitcoin wallet functionality for a
a running btcd instance for asynchronous blockchain queries and single user. It acts as both an RPC client to btcd and an RPC server
notifications over websockets. for wallet frontends and legacy RPC applications.
Full btcd installation instructions can be found The wallet file format is based on
[here](https://github.com/conformal/btcd). [Armory](https://github.com/etotheipi/BitcoinArmory) and provides a
deterministic wallet where all future generated private keys can be
recovered from a previous wallet backup. Unencrypted wallets are
unsupported and are never written to disk. This design decision has
the consequence of generating new wallets on the fly impossible: a
frontend is required to provide a wallet encryption passphrase.
btcwallet runs as a daemon and provides no user interface for a btcwallet is not an SPV client and requires connecting to a local or
wallet. A btcwallet frontend, such as remote btcd instance for asynchronous blockchain queries and
[btcgui](https://github.com/conformal/btcgui), is required to use notifications over websockets. Full btcd installation instructions
btcwallet. can be found [here](https://github.com/conformal/btcd).
In addition to the HTTP server run by btcd to provide HTTP and As a daemon, btcwallet provides no user interface and an additional
websocket RPC, btcwallet requires an HTTP server of its own to provide graphical or command line client is required for normal, personal
websocket connections to wallet frontends. Websockets allow for wallet usage. Conformal has written
asynchronous queries, replies, and notifications between btcd and [btcgui](https://github.com/conformal/btcgui) as a graphical frontend
btcwallet, as well as between btcwallet and any number of frontends. to btcwallet.
This project is currently under active development is not production This project is currently under active development is not production
ready yet. Because of this, support for using the main Bitcoin netowrk ready yet. Support for creating and using wallets the main Bitcoin
is currently disabled, and testnet must be used instead. netowrk is currently disabled by default.
## Installation ## Installation
@ -39,7 +44,7 @@ https://opensource.conformal.com/packages/windows/btcdsuite/
- Install Go according to the installation instructions here: - Install Go according to the installation instructions here:
http://golang.org/doc/install http://golang.org/doc/install
- Run the following commands to obtain btcwallet, all dependencies, and install it: - Run the following commands to obtain and install btcwallet andall dependencies:
```bash ```bash
$ go get -u -v github.com/conformal/btcd/... $ go get -u -v github.com/conformal/btcd/...
$ go get -u -v github.com/conformal/btcwallet/... $ go get -u -v github.com/conformal/btcwallet/...
@ -68,6 +73,9 @@ $ go get -u -v github.com/conformal/btcwallet/...
## Getting Started ## Getting Started
The follow instructions detail how to get started with btcwallet
connecting to a localhost btcd.
### Windows (Installed from MSI) ### Windows (Installed from MSI)
Open ```Btcd Suite``` from the ```Btcd Suite``` menu in the Start Open ```Btcd Suite``` from the ```Btcd Suite``` menu in the Start
@ -82,41 +90,41 @@ want btcd and btcwallet running.
$ btcd --testnet -u rpcuser -P rpcpass $ btcd --testnet -u rpcuser -P rpcpass
``` ```
- Copy btcd's autogenerated rpc.cert to ~/.btcwallet/ so btcwallet can
securely communicate with btcd over a TLS-encrypted websocket. This
step is only necessary for the first time starting btcwallet or if
btcd's autogenerated cert and key are removed and regenerated.
```bash
$ mkdir ~/.btcwallet/
$ cp ~/.btcd/rpc.cert ~/.btcwallet/btcd.cert
```
- Run the following command to start btcwallet: - Run the following command to start btcwallet:
```bash ```bash
$ btcwallet -u rpcuser -P rpcpass $ btcwallet -u rpcuser -P rpcpass
``` ```
If everything appears to be working, it is recommended at this point to
copy the sample btcd and btcwallet configurations and update with your
RPC username and password.
```bash
$ cp $GOPATH/src/github.com/conformal/btcd/sample-btcd.conf ~/.btcd/btcd.conf
$ cp $GOPATH/src/github.com/conformal/btcwallet/sample-btcwallet.conf ~/.btcwallet/btcwallet.conf
$ $EDITOR ~/.btcd/btcd.conf
$ $EDITOR ~/.btcwallet/btcwallet.conf
```
## Frontend Usage ## Frontend Usage
Frontends wishing to use btcwallet must connect to the websocket Frontends wishing to use btcwallet must connect to the path
`/frontend`. Messages sent to btcwallet over this websocket are `/frontend` over a websocket connection. Messages sent to btcwallet
expected to follow the standard [Bitcoin JSON over this websocket are expected to follow the standard Bitcoin JSON
API](https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list) API (partially documented
and replies follow the same API. The btcd package `btcjson` provides [here](https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list)).
types and functions for creating messages that this API. However, due Websocket connections also enable additional API extensions and
to taking a synchronous protocol like HTTP and using it asynchronously JSON-RPC notifications (currently undocumented). The btcd packages
with websockets, it is recommend for frontends to use the JSON `id` `btcjson` and `btcws` provide types and functions for creating and
field as a sequence number so replies can be mapped back to the JSON (un)marshaling these requests and notifications.
messages they originated from.
## TODO ## TODO
- Documentation (specifically the websocket API additions) - Full RPC compatibility with bitcoind, including mining support
- Code cleanup - RPC Documentation (both bitcoind commands and btcwallet extensions available
- Optimize for websocket connections)
- Much much more. Stay tuned. - Improved test coverage
## GPG Verification Key ## GPG Verification Key