= WALLET The wallet stores your keys/addresses, knows which transactions belong to them, can create transactions, etc. == Keystores A keystore is responsible for storing/accessing your keys/addresses. The +simple+ keystore (Bitcoin::Wallet::SimpleKeyStore) will create one key and put it into the given file. You can later ask it to generate more keys or add labels to the keys. The +deterministic+ keystore (Bitcoin::Wallet::KeyGenerator) uses the seed (which should be a large, unique, random string!) and generates the given number of keys. The nonce is optional, it just speeds up finding the first key. Note: Currently this keystore is not usable because it doesn't support labels yet. == Config To use the wallet you should create a configfile. It's not required but more convenient. See CONFIG for details. wallet: keystore: "simple::file=keys.json" # keystore: "deterministic::seed=foo,nonce=2116,keys=7" == Usage Then you can list all addresses in the wallet: bitcoin_wallet list Display transaction history for a specific address: bitcoin_wallet list
Create new keys/addresses: bitcoin_wallet new Import keys from base58 format: bitcoin_wallet import Export keys to base58 format: bitcoin_wallet export
== Transactions Transactions consist of multiple inputs and outputs. Inputs are selected automatically, and you can define outputs of different types. Each output has a +value+ (specified in base units/"satoshis"), and script represented by the script type (see below) and one or more recipients (addresses or public keys). Outputs can be specified as a combination of type, recipient(s) and value. bitcoin_wallet send :: [] This will create and sign a transaction and display it, asking for confirmation. If you accept, it will be sent to your node and relayed to the rest of the network. There are different script types: === Address Specify address/hash160 of the public key needed to spend the output again. This is the most commonly used transaction type at the moment. bitcoin_wallet send address:1GQkkFvAFW2ts3YLnEvMnu76WyCB6yDb4d:0.1 0.005 === Pubkey Specify public key needed to spend the output. Somewhat deprecated (because of the higher long-term storage requirements compared to address-transactions). bitcoin_wallet send pubkey::1.0 0.005 === Multisig Specify multiple addresses needed to spend the output. bitcoin_wallet send :::: [] bitcoin_wallet send multisig:1:1GQkkFvAFW2ts3YLnEvMnu76WyCB6yDb4d:1C5uWeXorS46ZubciCLN4zyR7sAqeNJfLD:1.0 0.005 You can give up to 3 addresses/keys and +m+ specifies how many of them are required to spend the output. Note: Currently you need to have all keys in the same wallet for this to work. === P2SH # TODO