============================================================================
User visible changes for btcd
  A full-node bitcoin implementation written in Go
============================================================================

Changes in 0.7.0 (Thu Feb 20 2014)
  - Fix an issue when parsing scripts which contain a multi-signature script
    which require zero signatures such as testnet block
    000000001881dccfeda317393c261f76d09e399e15e27d280e5368420f442632
    (https://github.com/conformal/btcscript/issues/7)
  - Add check to ensure all transactions accepted to mempool only contain
    canonical data pushes (https://github.com/conformal/btcscript/issues/6)
  - Fix an issue causing excessive memory consumption
  - Significantly rework and improve the websocket notification system:
    - Each client is now independent so slow clients no longer limit the
      speed of other connected clients
    - Potentially long-running operations such as rescans are now run in
      their own handler and rate-limited to one operation at a time without
      preventing simultaneous requests from the same client for the faster
      requests or notifications
    - A couple of scenarios which could cause shutdown to hang have been
      resolved
    - Update notifynewtx notifications to support all address types instead
      of only pay-to-pubkey-hash
    - Provide a --rpcmaxwebsockets option to allow limiting the number of
      concurrent websocket clients
    - Add a new websocket command notifyallnewtxs to request notifications
      (https://github.com/conformal/btcd/issues/86) (thanks @flammit)
  - Improve btcctl utility in the following ways:
    - Add getnetworkhashps command
    - Add gettransaction command (wallet-specific)
    - Add signmessage command (wallet-specific)
    - Update getwork command to accept 
  - Continue cleanup and work on implementing the RPC API:
    - Implement getnettotals command
      (https://github.com/conformal/btcd/issues/84)
    - Implement networkhashps command
      (https://github.com/conformal/btcd/issues/87)
    - Update getpeerinfo to always include syncnode field even when false
    - Remove help addenda for getpeerinfo now that it supports all fields
  - Close standard RPC connections on auth failure
  - Provide a --rpcmaxclients option to allow limiting the number of
    concurrent RPC clients (https://github.com/conformal/btcd/issues/68)
  - Include IP address in RPC auth failure log messages
  - Resolve a rather harmless data races found by the race detector
    (https://github.com/conformal/btcd/issues/94)
  - Increase block priority size and max standard transaction size to 50k
    and 100k, respectively (https://github.com/conformal/btcd/issues/71)
  - Add rate limiting of free transactions to the memory pool to prevent
    penny flooding (https://github.com/conformal/btcd/issues/40)
  - Provide a --logdir option (https://github.com/conformal/btcd/issues/95)
  - Change the default log file path to include the network
  - Add a new ScriptBuilder interface to btcscript to support creation of
    custom scripts (https://github.com/conformal/btcscript/issues/5)
  - General code cleanup

Changes in 0.6.0 (Tue Feb 04 2014)
  - Fix an issue when parsing scripts which contain invalid signatures that
    caused a chain fork on block
    0000000000000001e4241fd0b3469a713f41c5682605451c05d3033288fb2244
  - Correct an issue which could lead to an error in removeBlockNode
    (https://github.com/conformal/btcchain/issues/4)
  - Improve addblock utility as follows:
    - Check imported blocks against all chain rules and checkpoints
    - Skip blocks which are already known so you can stop and restart the
      import or start the import after you have already downloaded a portion
      of the chain
    - Correct an issue where the utility did not shutdown cleanly after
      processing all blocks
    - Add error on attempt to import orphan blocks
    - Improve error handling and reporting
    - Display statistics after input file has been fully processed
  - Rework, optimize, and improve headers-first mode:
    - Resuming the chain sync from any point before the final checkpoint
      will now use headers-first mode
      (https://github.com/conformal/btcd/issues/69)
    - Verify all checkpoints as opposed to only the final one
    - Reduce and bound memory usage
    - Rollback to the last known good point when a header does not match a
      checkpoint
    - Log information about what is happening with headers
  - Improve btcctl utility in the following ways:
    - Add getaddednodeinfo command
    - Add getnettotals command
    - Add getblocktemplate command (wallet-specific)
    - Add getwork command (wallet-specific)
    - Add getnewaddress command (wallet-specific)
    - Add walletpassphrasechange command (wallet-specific)
    - Add walletlock command (wallet-specific)
    - Add sendfrom command (wallet-specific)
    - Add sendmany command (wallet-specific)
    - Add settxfee command (wallet-specific)
    - Add listsinceblock command (wallet-specific)
    - Add listaccounts command (wallet-specific)
    - Add keypoolrefill command (wallet-specific)
    - Add getreceivedbyaccount command (wallet-specific)
    - Add getrawchangeaddress command (wallet-specific)
    - Add gettxoutsetinfo command (wallet-specific)
    - Add listaddressgroupings command (wallet-specific)
    - Add listlockunspent command (wallet-specific)
    - Add listlock command (wallet-specific)
    - Add listreceivedbyaccount command (wallet-specific)
    - Add validateaddress command (wallet-specific)
    - Add verifymessage command (wallet-specific)
    - Add sendtoaddress command (wallet-specific)
  - Continue cleanup and work on implementing the RPC API:
    - Implement submitblock command
      (https://github.com/conformal/btcd/issues/61)
    - Implement help command
    - Implement ping command
    - Implement getaddednodeinfo command
      (https://github.com/conformal/btcd/issues/78)
    - Implement getinfo command
    - Update getpeerinfo to support bytesrecv and bytessent
      (https://github.com/conformal/btcd/issues/83)
  - Improve and correct several RPC server and websocket areas:
    - Change the connection endpoint for websockets from /wallet to /ws
      (https://github.com/conformal/btcd/issues/80)
    - Implement an alternative authentication for websockets so clients
      such as javascript from browsers that don't support setting HTTP
      headers can authenticate (https://github.com/conformal/btcd/issues/77)
    - Add an authentication deadline for RPC connections
      (https://github.com/conformal/btcd/issues/68)
    - Use standard authentication failure responses for RPC connections
    - Make automatically generated certificate more standard so it works
      from client such as node.js and Firefox
    - Correct some minor issues which could prevent the RPC server from
      shutting down in an orderly fashion
    - Make all websocket notifications require registration
    - Change the data sent over websockets to text since it is JSON-RPC
    - Allow connections that do not have an Origin header set
  - Expose and track the number of bytes read and written per peer
    (https://github.com/conformal/btcwire/issues/6)
  - Correct an issue with sendrawtransaction when invoked via websockets
    which prevented a minedtx notification from being added
  - Rescan operations issued from remote wallets are no stopped when
    the wallet disconnects mid-operation
    (https://github.com/conformal/btcd/issues/66)
  - Several optimizations related to fetching block information from the
    database
  - General code cleanup

Changes in 0.5.0 (Mon Jan 13 2014)
  - Optimize initial block download by introducing a new mode which
    downloads the block headers first (up to the final checkpoint)
  - Improve peer handling to remove the potential for slow peers to cause
    sluggishness amongst all peers
    (https://github.com/conformal/btcd/issues/63)
  - Fix an issue where the initial block sync could stall when the sync peer
    disconnects (https://github.com/conformal/btcd/issues/62)
  - Correct an issue where --externalip was doing a DNS lookup on the full
    host:port instead of just the host portion
    (https://github.com/conformal/btcd/issues/38)
  - Fix an issue which could lead to a panic on chain switches
    (https://github.com/conformal/btcd/issues/70)
  - Improve btcctl utility in the following ways:
    - Show getdifficulty output as floating point to 6 digits of precision
    - Show all JSON object replies formatted as standard JSON
    - Allow btcctl getblock to accept optional params
    - Add getaccount command (wallet-specific)
    - Add getaccountaddress command (wallet-specific)
    - Add sendrawtransaction command
  - Continue cleanup and work on implementing RPC API calls
    - Update getrawmempool to support new optional verbose flag
    - Update getrawtransaction to match the reference client
    - Update getblock to support new optional verbose flag
    - Update raw transactions to fully match the reference client including
      support for all transaction types and address types
    - Correct getrawmempool fee field to return BTC instead of Satoshi
    - Correct getpeerinfo service flag to return 8 digit string so it
      matches the reference client
    - Correct verifychain to return a boolean
    - Implement decoderawtransaction command
    - Implement createrawtransaction command
    - Implement decodescript command
    - Implement gethashespersec command
    - Allow RPC handler overrides when invoked via a websocket versus
      legacy connection
  - Add new DNS seed for peer discovery
  - Display user agent on new valid peer log message
    (https://github.com/conformal/btcd/issues/64)
  - Notify wallet when new transactions that pay to registered addresses
    show up in the mempool before being mined into a block
  - Support a tor-specific proxy in addition to a normal proxy
    (https://github.com/conformal/btcd/issues/47)
  - Remove deprecated sqlite3 imports from utilities
  - Remove leftover profile write from addblock utility
  - Quite a bit of code cleanup and refactoring to improve maintainability

Changes in 0.4.0 (Thu Dec 12 2013)
  - Allow listen interfaces to be specified via --listen instead of only the
    port (https://github.com/conformal/btcd/issues/33)
  - Allow listen interfaces for the RPC server to be specified via
    --rpclisten instead of only the port
    (https://github.com/conformal/btcd/issues/34)
  - Only disable listening when --connect or --proxy are used when no
    --listen interface are specified
    (https://github.com/conformal/btcd/issues/10)
  - Add several new standard transaction checks to transaction memory pool:
    - Support nulldata scripts as standard
    - Only allow a max of one nulldata output per transaction
    - Enforce a maximum of 3 public keys in multi-signature transactions
    - The number of signatures in multi-signature transactions must not
      exceed the number of public keys
    - The number of inputs to a signature script must match the expected
      number of inputs for the script type
    - The number of inputs pushed onto the stack by a redeeming signature
      script must match the number of inputs consumed by the referenced
      public key script
  - When a block is connected, remove any transactions from the memory pool
    which are now double spends as a result of the newly connected
    transactions
  - Don't relay transactions resurrected during a chain switch since
    other peers will also be switching chains and therefore already know
    about them
  - Cleanup a few cases where rejected transactions showed as an error
    rather than as a rejected transaction
  - Ignore the default configuration file when --regtest (regression test
    mode) is specified
  - Implement TLS support for RPC including automatic certificate generation
  - Support HTTP authentication headers for web sockets
  - Update address manager to recognize and properly work with Tor
    addresses (https://github.com/conformal/btcd/issues/36) and
    (https://github.com/conformal/btcd/issues/37)
  - Improve btcctl utility in the following ways:
    - Add the ability to specify a configuration file
    - Add a default entry for the RPC cert to point to the location
      it will likely be in the btcd home directory
    - Implement --version flag
    - Provide a --notls option to support non-TLS configurations
  - Fix a couple of minor races found by the Go race detector
  - Improve logging
    - Allow logging level to be specified on a per subsystem basis
      (https://github.com/conformal/btcd/issues/48)
    - Allow logging levels to be dynamically changed via RPC
      (https://github.com/conformal/btcd/issues/15)
    - Implement a rolling log file with a max of 10MB per file and a
      rotation size of 3 which results in a max logging size of 30 MB
  - Correct a minor issue with the rescanning websocket call
    (https://github.com/conformal/btcd/issues/54)
  - Fix a race with pushing address messages that could lead to a panic
    (https://github.com/conformal/btcd/issues/58)
  - Improve which external IP address is reported to peers based on which
    interface they are connected through
    (https://github.com/conformal/btcd/issues/35)
  - Add --externalip option to allow an external IP address to be specified
    for cases such as tor hidden services or advanced network configurations
    (https://github.com/conformal/btcd/issues/38)
  - Add --upnp option to support automatic port mapping via UPnP
    (https://github.com/conformal/btcd/issues/51)
  - Update Ctrl+C interrupt handler to properly sync address manager and
    remove the UPnP port mapping (if needed)
  - Continue cleanup and work on implementing RPC API calls
    - Add importprivkey (import private key) command to btcctl
    - Update getrawtransaction to provide addresses properly, support
      new verbose param, and match the reference implementation with the
      exception of MULTISIG (thanks @flammit)
    - Update getblock with new verbose flag (thanks @flammit)
    - Add listtransactions command to btcctl
    - Add getbalance command to btcctl
  - Add basic support for btcd to run as a native Windows service
    (https://github.com/conformal/btcd/issues/42)
  - Package addblock utility with Windows MSIs
  - Add support for TravisCI (continuous build integration)
  - Cleanup some documentation and usage
  - Several other minor bug fixes and general code cleanup

Changes in 0.3.3 (Wed Nov 13 2013)
  - Significantly improve initial block chain download speed
    (https://github.com/conformal/btcd/issues/20)
  - Add a new checkpoint at block height 267300
  - Optimize most recently used inventory handling
    (https://github.com/conformal/btcd/issues/21)
  - Optimize duplicate transaction input check
    (https://github.com/conformal/btcchain/issues/2)
  - Optimize transaction hashing
    (https://github.com/conformal/btcd/issues/25)
  - Rework and optimize wallet listener notifications
    (https://github.com/conformal/btcd/issues/22)
  - Optimize serialization and deserialization
    (https://github.com/conformal/btcd/issues/27)
  - Add support for minimum transaction fee to memory pool acceptance
    (https://github.com/conformal/btcd/issues/29)
  - Improve leveldb database performance by removing explicit GC call
  - Fix an issue where Ctrl+C was not always finishing orderly database
    shutdown
  - Fix an issue in the script handling for OP_CHECKSIG
  - Impose max limits on all variable length protocol entries to prevent
    abuse from malicious peers
  - Enforce DER signatures for transactions allowed into the memory pool
  - Separate the debug profile http server from the RPC server
  - Rework of the RPC code to improve performance and make the code cleaner
  - The getrawtransaction RPC call now properly checks the memory pool
    before consulting the db (https://github.com/conformal/btcd/issues/26)
  - Add support for the following RPC calls: getpeerinfo, getconnectedcount,
    addnode, verifychain
    (https://github.com/conformal/btcd/issues/13)
    (https://github.com/conformal/btcd/issues/17)
  - Implement rescan websocket extension to allow wallet rescans
  - Use correct paths for application data storage for all supported
    operating systems (https://github.com/conformal/btcd/issues/30)
  - Add a default redirect to the http profiling page when accessing the
    http profile server
  - Add a new --cpuprofile option which can be used to generate CPU
    profiling data on platforms that support it
  - Several other minor performance optimizations
  - Other minor bug fixes and general code cleanup

Changes in 0.3.2 (Tue Oct 22 2013)
  - Fix an issue that could cause the download of the block chain to stall
    (https://github.com/conformal/btcd/issues/12)
  - Remove deprecated sqlite as an available database backend
  - Close sqlite compile issue as sqlite has now been removed
    (https://github.com/conformal/btcd/issues/11)
  - Change default RPC ports to 8334 (mainnet) and 18334 (testnet)
  - Continue cleanup and work on implementing RPC API calls
  - Add support for the following RPC calls: getrawmempool,
    getbestblockhash, decoderawtransaction, getdifficulty,
    getconnectioncount, getpeerinfo, and addnode
  - Improve the btcctl utility that is used to issue JSON-RPC commands
  - Fix an issue preventing btcd from cleanly shutting down with the RPC
    stop command
  - Add a number of database interface tests to ensure backends implement
    the expected interface
  - Expose some additional information from btcscript to be used for
    identifying "standard"" transactions
  - Add support for plan9 - thanks @mischief
    (https://github.com/conformal/btcd/pull/19)
  - Other minor bug fixes and general code cleanup

Changes in 0.3.1-alpha (Tue Oct 15 2013)
  - Change default database to leveldb
    NOTE: This does mean you will have to redownload the block chain.  Since we
    are still in alpha, we didn't feel writing a converter was worth the time as
    it would take away from more important issues at this stage
  - Add a warning if there are multiple block chain databases of different types
  - Fix issue with unexpected EOF in leveldb -- https://github.com/conformal/btcd/issues/18
  - Fix issue preventing block 21066 on testnet -- https://github.com/conformal/btcchain/issues/1
  - Fix issue preventing block 96464 on testnet -- https://github.com/conformal/btcscript/issues/1
  - Optimize transaction lookups
  - Correct a few cases of list removal that could result in improper cleanup
    of no longer needed orphans
  - Add functionality to increase ulimits on non-Windows platforms
  - Add support for mempool command which allows remote peers to query the
    transaction memory pool via the bitcoin protocol
  - Clean up logging a bit
  - Add a flag to disable checkpoints for developers
  - Add a lot of useful debug logging such as message summaries
  - Other minor bug fixes and general code cleanup

Initial Release 0.3.0-alpha (Sat Oct 05 2013):
  - Initial release