github.com/btcsuite/btcd@v0.24.0/CHANGES (about)

     1  ============================================================================
     2  User visible changes for btcd
     3    A full-node bitcoin implementation written in Go
     4  ============================================================================
     5  
     6  Changes in 0.22.0 (Tue Jun 01 2021)
     7    - Protocol and network-related changes:
     8      - Add support for witness tx and block in notfound msg (#1625)
     9      - Add support for receiving sendaddrv2 messages from a peer (#1670)
    10      - Fix bug in peer package causing last block height to go backwards
    11        (#1606)
    12      - Add chain parameters for connecting to the public Signet network
    13        (#1692, #1718)
    14    - Crypto changes:
    15      - Fix bug causing panic due to bad R and S signature components in
    16        btcec.RecoverCompact (#1691)
    17      - Set the name (secp256k1) in the CurveParams of the S256 curve
    18        (#1565)
    19    - Notable developer-related package changes:
    20      - Remove unknown block version warning in the blockchain package,
    21        due to false positives triggered by AsicBoost (#1463)
    22      - Add chaincfg.RegisterHDKeyID function to populate HD key ID pairs
    23        (#1617)
    24      - Add new method mining.AddWitnessCommitment to add the witness
    25        commitment as an OP_RETURN output within the coinbase transaction.
    26        (#1716)
    27    - RPC changes:
    28      - Support Batch JSON-RPC in rpcclient and server (#1583)
    29      - Add rpcclient method to invoke getdescriptorinfo JSON-RPC command
    30        (#1578)
    31      - Update the rpcserver handler for validateaddress JSON-RPC command to
    32        have parity with the bitcoind 0.20.0 interface (#1613)
    33      - Add rpcclient method to invoke getblockfilter JSON-RPC command
    34        (#1579)
    35      - Add signmessagewithprivkey JSON-RPC command in rpcserver (#1585)
    36      - Add rpcclient method to invoke importmulti JSON-RPC command (#1579)
    37      - Add watchOnly argument in rpcclient method to invoke
    38        listtransactions JSON-RPC command (#1628)
    39      - Update btcjson.ListTransactionsResult for compatibility with Bitcoin
    40        Core 0.20.0 (#1626)
    41      - Support nullable optional JSON-RPC parameters (#1594)
    42      - Add rpcclient and server method to invoke getnodeaddresses JSON-RPC
    43        command (#1590)
    44      - Add rpcclient methods to invoke PSBT JSON-RPC commands (#1596)
    45      - Add rpcclient method to invoke listsinceblock with the
    46        include_watchonly parameter enabled (#1451)
    47      - Add rpcclient method to invoke deriveaddresses JSON-RPC command
    48        (#1631)
    49      - Add rpcclient method to invoke getblocktemplate JSON-RPC command
    50        (#1629)
    51      - Add rpcclient method to invoke getaddressinfo JSON-RPC command
    52        (#1633)
    53      - Add rpcclient method to invoke getwalletinfo JSON-RPC command
    54        (#1638)
    55      - Fix error message in rpcserver when an unknown RPC command is
    56        encountered (#1695)
    57      - Fix error message returned by estimatefee when the number of blocks
    58        exceeds the max depth (#1678)
    59      - Update btcjson.GetBlockChainInfoResult to include new fields in
    60        Bitcoin Core (#1676)
    61      - Add ExtraHeaders in rpcclient.ConnConfig struct (#1669)
    62      - Fix bitcoind compatibility issue with the sendrawtransaction
    63        JSON-RPC command (#1659)
    64      - Add new JSON-RPC errors to btcjson package, and documented them
    65        (#1648)
    66      - Add rpcclient method to invoke createwallet JSON-RPC command
    67        (#1650)
    68      - Add rpcclient methods to invoke backupwallet, dumpwallet, loadwallet
    69        and unloadwallet JSON-RPC commands (#1645)
    70      - Fix unmarshalling error in getmininginfo JSON-RPC command, for valid
    71        integers in scientific notation (#1644)
    72      - Add rpcclient method to invoke gettxoutsetinfo JSON-RPC command
    73        (#1641)
    74      - Add rpcclient method to invoke signrawtransactionwithwallet JSON-RPC
    75        command (#1642)
    76      - Add txid to getblocktemplate response of rpcserver (#1639)
    77      - Fix monetary unit used in createrawtransaction JSON-RPC command in
    78        rpcserver (#1614)
    79      - Add rawtx field to btcjson.GetBlockVerboseTxResult to provide
    80        backwards compatibility with older versions of Bitcoin Core (#1677)
    81    - Misc changes:
    82      - Update btcutil dependency (#1704)
    83      - Add Dockerfile to build and run btcd on Docker (#1465)
    84      - Rework documentation and publish on https://btcd.readthedocs.io (#1468)
    85      - Add support for Go 1.15 (#1619)
    86      - Add Go 1.14 as the minimum supported version of Golang (#1621)
    87    - Contributors (alphabetical order):
    88      - 10gic
    89      - Andrew Tugarinov
    90      - Anirudha Bose
    91      - Appelberg-s
    92      - Armando Ochoa
    93      - Aurèle Oulès
    94      - Calvin Kim
    95      - Christian Lehmann
    96      - Conner Fromknecht
    97      - Dan Cline
    98      - David Mazary
    99      - Elliott Minns
   100      - Federico Bond
   101      - Friedger Müffke
   102      - Gustavo Chain
   103      - Hanjun Kim
   104      - Henry Fisher
   105      - Iskander Sharipov
   106      - Jake Sylvestre
   107      - Johan T. Halseth
   108      - John C. Vernaleo
   109      - Liran Sharir
   110      - Mikael Lindlof
   111      - Olaoluwa Osuntokun
   112      - Oliver Gugger
   113      - Rjected
   114      - Steven Kreuzer
   115      - Torkel Rogstad
   116      - Tristyn
   117      - Victor Lavaud
   118      - Vinayak Borkar
   119      - Wilmer Paulino
   120      - Yaacov Akiba Slama
   121      - ebiiim
   122      - ipriver
   123      - wakiyamap
   124      - yyforyongyu
   125  
   126  Changes in 0.21.0 (Thu Aug 27 2020)
   127    - Network-related changes:
   128      - Handle notfound messages from peers in netsync package (#1603)
   129    - RPC changes:
   130      - Add compatibility for getblock RPC changes in bitcoind 0.15.0 (#1529)
   131      - Add new optional Params field to rpcclient.ConnConfig (#1467)
   132      - Add new error code ErrRPCInWarmup in btcjson (#1541)
   133      - Add compatibility for changes to getmempoolentry response in bitcoind
   134        0.19.0 (#1524)
   135      - Add rpcclient methods for estimatesmartfee and generatetoaddress
   136        commands (#1500)
   137      - Add rpcclient method for getblockstats command (#1500)
   138      - Parse serialized transaction from createrawtransaction command using
   139        both segwit, and legacy format (#1502)
   140      - Support cookie-based authentication in rpcclient (#1460)
   141      - Add rpcclient method for getchaintxstats command (#1571)
   142      - Add rpcclient method for fundrawtransaction command (#1553)
   143      - Add rpcclient method for getbalances command (#1595)
   144      - Add new method rpcclient.GetTransactionWatchOnly (#1592)
   145    - Crypto changes:
   146      - Fix panic in fieldVal.SetByteSlice when called with large values, and
   147        improve the method to be 35% faster (#1602)
   148    - btcctl changes:
   149      - Add -regtest mode to btcctl (#1556)
   150    - Misc changes:
   151      - Fix a bug due to a deadlock in connmgr's dynamic ban scoring (#1509)
   152      - Add blockchain.NewUtxoEntry() to directly create entries for
   153        UtxoViewpoint (#1588)
   154      - Replace LRU cache implementation in peer package with a generic one
   155        from decred/dcrd (#1599)
   156    - Contributors (alphabetical order):
   157      - Anirudha Bose
   158      - Antonin Hildebrand
   159      - Dan Cline
   160      - Daniel McNally
   161      - David Hill
   162      - Federico Bond
   163      - George Tankersley
   164      - Henry
   165      - Henry Harder
   166      - Iskander Sharipov
   167      - Ivan Kuznetsov
   168      - Jake Sylvestre
   169      - Javed Khan
   170      - JeremyRand
   171      - Jin
   172      - John C. Vernaleo
   173      - Kulpreet Singh
   174      - Mikael Lindlof
   175      - Murray Nesbitt
   176      - Nisen
   177      - Olaoluwa Osuntokun
   178      - Oliver Gugger
   179      - Steven Roose
   180      - Torkel Rogstad
   181      - Tyler Chambers
   182      - Wilmer Paulino
   183      - Yash Bhutwala
   184      - adiabat
   185      - jalavosus
   186      - mohanson
   187      - qqjettkgjzhxmwj
   188      - qshuai
   189      - shuai.qi
   190      - tpkeeper
   191  
   192  Changes in v0.20.1 (Wed Nov 13 2019)
   193    - RPC changes:
   194      - Add compatibility for bitcoind v0.19.0 in rpcclient and btcjson
   195        packages (#1484)
   196    - Contributors (alphabetical order):
   197      - Eugene Zeigel
   198      - Olaoluwa Osuntokun
   199      - Wilmer Paulino
   200  
   201  Changes in v0.20.0 (Tue Oct 15 2019)
   202    - Significant changes made since 0.12.0. See git log or refer to release
   203      notes on GitHub for full details.
   204    - Contributors (alphabetical order):
   205      - Albert Puigsech Galicia
   206      - Alex Akselrod
   207      - Alex Bosworth
   208      - Alex Manuskin
   209      - Alok Menghrajani
   210      - Anatoli Babenia
   211      - Andy Weidenbaum
   212      - Calvin McAnarney
   213      - Chris Martin
   214      - Chris Pacia
   215      - Chris Shepherd
   216      - Conner Fromknecht
   217      - Craig Sturdy
   218      - Cédric Félizard
   219      - Daniel Krawisz
   220      - Daniel Martí
   221      - Daniel McNally
   222      - Dario Nieuwenhuis
   223      - Dave Collins
   224      - David Hill
   225      - David de Kloet
   226      - GeertJohan
   227      - Grace Noah
   228      - Gregory Trubetskoy
   229      - Hector Jusforgues
   230      - Iskander (Alex) Sharipov
   231      - Janus Troelsen
   232      - Jasper
   233      - Javed Khan
   234      - Jeremiah Goyette
   235      - Jim Posen
   236      - Jimmy Song
   237      - Johan T. Halseth
   238      - John C. Vernaleo
   239      - Jonathan Gillham
   240      - Josh Rickmar
   241      - Jon Underwood
   242      - Jonathan Zeppettini
   243      - Jouke Hofman
   244      - Julian Meyer
   245      - Kai
   246      - Kamil Slowikowski
   247      - Kefkius
   248      - Leonardo Lazzaro
   249      - Marco Peereboom
   250      - Marko Bencun
   251      - Mawueli Kofi Adzoe
   252      - Michail Kargakis
   253      - Mitchell Paull
   254      - Nathan Bass
   255      - Nicola 'tekNico' Larosa
   256      - Olaoluwa Osuntokun
   257      - Pedro Martelletto
   258      - Ricardo Velhote
   259      - Roei Erez
   260      - Ruben de Vries
   261      - Rune T. Aune
   262      - Sad Pencil
   263      - Shuai Qi
   264      - Steven Roose
   265      - Tadge Dryja
   266      - Tibor Bősze
   267      - Tomás Senart
   268      - Tzu-Jung Lee
   269      - Vadym Popov
   270      - Waldir Pimenta
   271      - Wilmer Paulino
   272      - benma
   273      - danda
   274      - dskloet
   275      - esemplastic
   276      - jadeblaquiere
   277      - nakagawa
   278      - preminem
   279      - qshuai
   280  
   281  Changes in 0.12.0 (Fri Nov 20 2015)
   282    - Protocol and network related changes:
   283      - Add a new checkpoint at block height 382320 (#555)
   284      - Implement BIP0065 which includes support for version 4 blocks, a new
   285        consensus opcode (OP_CHECKLOCKTIMEVERIFY) that enforces transaction
   286        lock times, and a double-threshold switchover mechanism (#535, #459,
   287        #455)
   288      - Implement BIP0111 which provides a new bloom filter service flag and
   289        hence provides support for protocol version 70011 (#499)
   290      - Add a new parameter --nopeerbloomfilters to allow disabling bloom
   291        filter support (#499)
   292      - Reject non-canonically encoded variable length integers (#507)
   293      - Add mainnet peer discovery DNS seed (seed.bitcoin.jonasschnelli.ch)
   294        (#496)
   295      - Correct reconnect handling for persistent peers (#463, #464)
   296      - Ignore requests for block headers if not fully synced (#444)
   297      - Add CLI support for specifying the zone id on IPv6 addresses (#538)
   298      - Fix a couple of issues where the initial block sync could stall (#518,
   299        #229, #486)
   300      - Fix an issue which prevented the --onion option from working as
   301        intended (#446)
   302    - Transaction relay (memory pool) changes:
   303      - Require transactions to only include signatures encoded with the
   304      canonical 'low-s' encoding (#512)
   305      - Add a new parameter --minrelaytxfee to allow the minimum transaction
   306        fee in BTC/kB to be overridden (#520)
   307      - Retain memory pool transactions when they redeem another one that is
   308        removed when a block is accepted (#539)
   309      - Do not send reject messages for a transaction if it is valid but
   310        causes an orphan transaction which depends on it to be determined
   311        as invalid (#546)
   312      - Refrain from attempting to add orphans to the memory pool multiple
   313        times when the transaction they redeem is added (#551)
   314      - Modify minimum transaction fee calculations to scale based on bytes
   315        instead of full kilobyte boundaries (#521, #537)
   316    - Implement signature cache:
   317      - Provides a limited memory cache of validated signatures which is a
   318        huge optimization when verifying blocks for transactions that are
   319        already in the memory pool (#506)
   320      - Add a new parameter '--sigcachemaxsize' which allows the size of the
   321        new cache to be manually changed if desired (#506)
   322    - Mining support changes:
   323      - Notify getblocktemplate long polling clients when a block is pushed
   324        via submitblock (#488)
   325      - Speed up getblocktemplate by making use of the new signature cache
   326        (#506)
   327    - RPC changes:
   328      - Implement getmempoolinfo command (#453)
   329      - Implement getblockheader command (#461)
   330      - Modify createrawtransaction command to accept a new optional parameter
   331        'locktime' (#529)
   332      - Modify listunspent result to include the 'spendable' field (#440)
   333      - Modify getinfo command to include 'errors' field (#511)
   334      - Add timestamps to blockconnected and blockdisconnected notifications
   335        (#450)
   336      - Several modifications to searchrawtranscations command:
   337        - Accept a new optional parameter 'vinextra' which causes the results
   338          to include information about the outputs referenced by a transaction's
   339          inputs (#485, #487)
   340        - Skip entries in the mempool too (#495)
   341        - Accept a new optional parameter 'reverse' to return the results in
   342          reverse order (most recent to oldest) (#497)
   343        - Accept a new optional parameter 'filteraddrs' which causes the
   344          results to only include inputs and outputs which involve the
   345          provided addresses (#516)
   346      - Change the notification order to notify clients about mined
   347        transactions (recvtx, redeemingtx) before the blockconnected
   348        notification (#449)
   349      - Update verifymessage RPC to use the standard algorithm so it is
   350        compatible with other implementations (#515)
   351      - Improve ping statistics by pinging on an interval (#517)
   352    - Websocket changes:
   353      - Implement session command which returns a per-session unique id (#500,
   354        #503)
   355    - btcctl utility changes:
   356      - Add getmempoolinfo command (#453)
   357      - Add getblockheader command (#461)
   358      - Add getwalletinfo command (#471)
   359    - Notable developer-related package changes:
   360      - Introduce a new peer package which acts a common base for creating and
   361        concurrently managing bitcoin network peers (#445)
   362      - Various cleanup of the new peer package (#528, #531, #524, #534,
   363        #549)
   364      - Blocks heights now consistently use int32 everywhere (#481)
   365      - The BlockHeader type in the wire package now provides the BtcDecode
   366        and BtcEncode methods (#467)
   367      - Update wire package to recognize BIP0064 (getutxo) service bit (#489)
   368      - Export LockTimeThreshold constant from txscript package (#454)
   369      - Export MaxDataCarrierSize constant from txscript package (#466)
   370      - Provide new IsUnspendable function from the txscript package (#478)
   371      - Export variable length string functions from the wire package (#514)
   372      - Export DNS Seeds for each network from the chaincfg package (#544)
   373      - Preliminary work towards separating the memory pool into a separate
   374        package (#525, #548)
   375    - Misc changes:
   376      - Various documentation updates (#442, #462, #465, #460, #470, #473,
   377        #505, #530, #545)
   378      - Add installation instructions for gentoo (#542)
   379      - Ensure an error is shown if OS limits can't be set at startup (#498)
   380      - Tighten the standardness checks for multisig scripts (#526)
   381      - Test coverage improvement (#468, #494, #527, #543, #550)
   382      - Several optimizations (#457, #474, #475, #476, #508, #509)
   383      - Minor code cleanup and refactoring (#472, #479, #482, #519, #540)
   384    - Contributors (alphabetical order):
   385      - Ben Echols
   386      - Bruno Clermont
   387      - danda
   388      - Daniel Krawisz
   389      - Dario Nieuwenhuis
   390      - Dave Collins
   391      - David Hill
   392      - Javed Khan
   393      - Jonathan Gillham
   394      - Joseph Becher
   395      - Josh Rickmar
   396      - Justus Ranvier
   397      - Mawuli Adzoe
   398      - Olaoluwa Osuntokun
   399      - Rune T. Aune
   400  
   401  Changes in 0.11.1 (Wed May 27 2015)
   402    - Protocol and network related changes:
   403      - Use correct sub-command in reject message for rejected transactions
   404        (#436, #437)
   405      - Add a new parameter --torisolation which forces new circuits for each
   406        connection when using tor (#430)
   407    - Transaction relay (memory pool) changes:
   408      - Reduce the default number max number of allowed orphan transactions
   409        to 1000 (#419)
   410      - Add a new parameter --maxorphantx which allows the maximum number of
   411        orphan transactions stored in the mempool to be specified (#419)
   412    - RPC changes:
   413      - Modify listtransactions result to include the 'involveswatchonly' and
   414        'vout' fields (#427)
   415      - Update getrawtransaction result to omit the 'confirmations' field
   416        when it is 0 (#420, #422)
   417      - Update signrawtransaction result to include errors (#423)
   418    - btcctl utility changes:
   419      - Add gettxoutproof command (#428)
   420      - Add verifytxoutproof command (#428)
   421    - Notable developer-related package changes:
   422      - The btcec package now provides the ability to perform ECDH
   423        encryption and decryption (#375)
   424      - The block and header validation in the blockchain package has been
   425        split to help pave the way toward concurrent downloads (#386)
   426    - Misc changes:
   427      - Minor peer optimization (#433)
   428    - Contributors (alphabetical order):
   429      - Dave Collins
   430      - David Hill
   431      - Federico Bond
   432      - Ishbir Singh
   433      - Josh Rickmar
   434  
   435  Changes in 0.11.0 (Wed May 06 2015)
   436    - Protocol and network related changes:
   437      - **IMPORTANT: Update is required due to the following point**
   438      - Correct a few corner cases in script handling which could result in
   439        forking from the network on non-standard transactions (#425)
   440      - Add a new checkpoint at block height 352940 (#418)
   441      - Optimized script execution (#395, #400, #404, #409)
   442      - Fix a case that could lead stalled syncs (#138, #296)
   443    - Network address manager changes:
   444      - Implement eclipse attack countermeasures as proposed in
   445        http://cs-people.bu.edu/heilman/eclipse (#370, #373)
   446    - Optional address indexing changes:
   447      - Fix an issue where a reorg could cause an orderly shutdown when the
   448        address index is active (#340, #357)
   449    - Transaction relay (memory pool) changes:
   450      - Increase maximum allowed space for nulldata transactions to 80 bytes
   451        (#331)
   452      - Implement support for the following rules specified by BIP0062:
   453        - The S value in ECDSA signature must be at most half the curve order
   454          (rule 5) (#349)
   455        - Script execution must result in a single non-zero value on the stack
   456          (rule 6) (#347)
   457        - NOTE: All 7 rules of BIP0062 are now implemented
   458      - Use network adjusted time in finalized transaction checks to improve
   459        consistency across nodes (#332)
   460      - Process orphan transactions on acceptance of new transactions (#345)
   461    - RPC changes:
   462      - Add support for a limited RPC user which is not allowed admin level
   463        operations on the server (#363)
   464      - Implement node command for more unified control over connected peers
   465        (#79, #341)
   466      - Implement generate command for regtest/simnet to support
   467        deterministically mining a specified number of blocks (#362, #407)
   468      - Update searchrawtransactions to return the matching transactions in
   469        order (#354)
   470      - Correct an issue with searchrawtransactions where it could return
   471        duplicates (#346, #354)
   472      - Increase precision of 'difficulty' field in getblock result to 8
   473        (#414, #415)
   474      - Omit 'nextblockhash' field from getblock result when it is empty
   475        (#416, #417)
   476      - Add 'id' and 'timeoffset' fields to getpeerinfo result (#335)
   477    - Websocket changes:
   478      - Implement new commands stopnotifyspent, stopnotifyreceived,
   479        stopnotifyblocks, and stopnotifynewtransactions to allow clients to
   480        cancel notification registrations (#122, #342)
   481    - btcctl utility changes:
   482      - A single dash can now be used as an argument to cause that argument to
   483        be read from stdin (#348)
   484      - Add generate command
   485    - Notable developer-related package changes:
   486      - The new version 2 btcjson package has now replaced the deprecated
   487        version 1 package (#368)
   488      - The btcec package now performs all signing using RFC6979 deterministic
   489        signatures (#358, #360)
   490      - The txscript package has been significantly cleaned up and had a few
   491        API changes (#387, #388, #389, #390, #391, #392, #393, #395, #396,
   492        #400, #403, #404, #405, #406, #408, #409, #410, #412)
   493      - A new PkScriptLocs function has been added to the wire package MsgTx
   494        type which provides callers that deal with scripts optimization
   495        opportunities (#343)
   496    - Misc changes:
   497      - Minor wire hashing optimizations (#366, #367)
   498      - Other minor internal optimizations
   499    - Contributors (alphabetical order):
   500      - Alex Akselrod
   501      - Arne Brutschy
   502      - Chris Jepson
   503      - Daniel Krawisz
   504      - Dave Collins
   505      - David Hill
   506      - Jimmy Song
   507      - Jonas Nick
   508      - Josh Rickmar
   509      - Olaoluwa Osuntokun
   510      - Oleg Andreev
   511  
   512  Changes in 0.10.0 (Sun Mar 01 2015)
   513    - Protocol and network related changes:
   514      - Add a new checkpoint at block height 343185
   515      - Implement BIP066 which includes support for version 3 blocks, a new
   516        consensus rule which prevents non-DER encoded signatures, and a
   517        double-threshold switchover mechanism
   518      - Rather than announcing all known addresses on getaddr requests which
   519        can possibly result in multiple messages, randomize the results and
   520        limit them to the max allowed by a single message (1000 addresses)
   521      - Add more reserved IP spaces to the address manager
   522    - Transaction relay (memory pool) changes:
   523      - Make transactions which contain reserved opcodes nonstandard
   524      - No longer accept or relay free and low-fee transactions that have
   525        insufficient priority to be mined in the next block
   526      - Implement support for the following rules specified by BIP0062:
   527        - ECDSA signature must use strict DER encoding (rule 1)
   528        - The signature script must only contain push operations (rule 2)
   529        - All push operations must use the smallest possible encoding (rule 3)
   530        - All stack values interpreted as a number must be encoding using the
   531          shortest possible form (rule 4)
   532        - NOTE: Rule 1 was already enforced, however the entire script now
   533          evaluates to false rather than only the signature verification as
   534          required by BIP0062
   535      - Allow transactions with nulldata transaction outputs to be treated as
   536        standard
   537    - Mining support changes:
   538      - Modify the getblocktemplate RPC to generate and return block templates
   539        for version 3 blocks which are compatible with BIP0066
   540      - Allow getblocktemplate to serve blocks when the current time is
   541        less than the minimum allowed time for a generated block template
   542        (https://github.com/btcsuite/btcd/issues/209)
   543    - Crypto changes:
   544      - Optimize scalar multiplication by the base point by using a
   545        pre-computed table which results in approximately a 35% speedup
   546       (https://github.com/btcsuite/btcec/issues/2)
   547      - Optimize general scalar multiplication by using the secp256k1
   548        endomorphism which results in approximately a 17-20% speedup
   549       (https://github.com/btcsuite/btcec/issues/1)
   550      - Optimize general scalar multiplication by using non-adjacent form
   551        which results in approximately an additional 8% speedup
   552       (https://github.com/btcsuite/btcec/issues/3)
   553    - Implement optional address indexing:
   554      - Add a new parameter --addrindex which will enable the creation of an
   555        address index which can be queried to determine all transactions which
   556        involve a given address
   557        (https://github.com/btcsuite/btcd/issues/190)
   558      - Add a new logging subsystem for address index related operations
   559      - Support new searchrawtransactions RPC
   560        (https://github.com/btcsuite/btcd/issues/185)
   561    - RPC changes:
   562      - Require TLS version 1.2 as the minimum version for all TLS connections
   563      - Provide support for disabling TLS when only listening on localhost
   564        (https://github.com/btcsuite/btcd/pull/192)
   565      - Modify help output for all commands to provide much more consistent
   566        and detailed information
   567      - Correct case in getrawtransaction which would refuse to serve certain
   568        transactions with invalid scripts
   569        (https://github.com/btcsuite/btcd/issues/210)
   570      - Correct error handling in the getrawtransaction RPC which could lead
   571        to a crash in rare cases
   572        (https://github.com/btcsuite/btcd/issues/196)
   573      - Update getinfo RPC to include the appropriate 'timeoffset' calculated
   574        from the median network time
   575      - Modify listreceivedbyaddress result type to include txids field so it
   576        is compatible
   577      - Add 'iswatchonly' field to validateaddress result
   578      - Add 'startingpriority' and 'currentpriority' fields to getrawmempool
   579        (https://github.com/btcsuite/btcd/issues/178)
   580      - Don't omit the 'confirmations' field from getrawtransaction when it is
   581        zero
   582    - Websocket changes:
   583      - Modify the behavior of the rescan command to automatically register
   584        for notifications about transactions paying to rescanned addresses
   585        or spending outputs from the final rescan utxo set when the rescan
   586        is through the best block in the chain
   587    - btcctl utility changes:
   588      - Make the list of commands available via the -l option rather than
   589        dumping the entire list on usage errors
   590      - Alphabetize and categorize the list of commands by chain and wallet
   591      - Make the help option only show the help options instead of also
   592        dumping all of the commands
   593      - Make the usage syntax much more consistent and correct a few cases of
   594        misnamed fields
   595        (https://github.com/btcsuite/btcd/issues/305)
   596      - Improve usage errors to show the specific parameter number, reason,
   597        and error code
   598      - Only show the usage for specific command is shown when a valid command
   599        is provided with invalid parameters
   600      - Add support for a SOCK5 proxy
   601      - Modify output for integer fields (such as timestamps) to display
   602        normally instead in scientific notation
   603      - Add invalidateblock command
   604      - Add reconsiderblock command
   605      - Add createnewaccount command
   606      - Add renameaccount command
   607      - Add searchrawtransactions command
   608      - Add importaddress command
   609      - Add importpubkey command
   610    - showblock utility changes:
   611      - Remove utility in favor of the RPC getblock method
   612    - Notable developer-related package changes:
   613      - Many of the core packages have been relocated into the btcd repository
   614        (https://github.com/btcsuite/btcd/issues/214)
   615      - A new version of the btcjson package that has been completely
   616        redesigned from the ground up based based upon how the project has
   617        evolved and lessons learned while using it since it was first written
   618        is now available in the btcjson/v2/btcjson directory
   619        - This will ultimately replace the current version so anyone making
   620          use of this package will need to update their code accordingly
   621      - The btcec package now provides better facilities for working directly
   622        with its public and private keys without having to mix elements from
   623        the ecdsa package
   624      - Update the script builder to ensure all rules specified by BIP0062 are
   625        adhered to when creating scripts
   626      - The blockchain package now provides a MedianTimeSource interface and
   627        concrete implementation for providing time samples from remote peers
   628        and using that data to calculate an offset against the local time
   629    - Misc changes:
   630      - Fix a slow memory leak due to tickers not being stopped
   631        (https://github.com/btcsuite/btcd/issues/189)
   632      - Fix an issue where a mix of orphans and SPV clients could trigger a
   633        condition where peers would no longer be served
   634        (https://github.com/btcsuite/btcd/issues/231)
   635      - The RPC username and password can now contain symbols which previously
   636        conflicted with special symbols used in URLs
   637      - Improve handling of obtaining random nonces to prevent cases where it
   638        could error when not enough entropy was available
   639      - Improve handling of home directory creation errors such as in the case
   640        of unmounted symlinks (https://github.com/btcsuite/btcd/issues/193)
   641      - Improve the error reporting for rejected transactions to include the
   642        inputs which are missing and/or being double spent
   643      - Update sample config file with new options and correct a comment
   644        regarding the fact the RPC server only listens on localhost by default
   645        (https://github.com/btcsuite/btcd/issues/218)
   646      - Update the continuous integration builds to run several tools which
   647        help keep code quality high
   648      - Significant amount of internal code cleanup and improvements
   649      - Other minor internal optimizations
   650    - Code Contributors (alphabetical order):
   651      - Beldur
   652      - Ben Holden-Crowther
   653      - Dave Collins
   654      - David Evans
   655      - David Hill
   656      - Guilherme Salgado
   657      - Javed Khan
   658      - Jimmy Song
   659      - John C. Vernaleo
   660      - Jonathan Gillham
   661      - Josh Rickmar
   662      - Michael Ford
   663      - Michail Kargakis
   664      - kac
   665      - Olaoluwa Osuntokun
   666  
   667  Changes in 0.9.0 (Sat Sep 20 2014)
   668    - Protocol and network related changes:
   669      - Add a new checkpoint at block height 319400
   670      - Add support for BIP0037 bloom filters
   671        (https://github.com/conformal/btcd/issues/132)
   672      - Implement BIP0061 reject handling and hence support for protocol
   673        version 70002 (https://github.com/conformal/btcd/issues/133)
   674      - Add testnet DNS seeds for peer discovery (testnet-seed.alexykot.me
   675        and testnet-seed.bitcoin.schildbach.de)
   676      - Add mainnet DNS seed for peer discovery (seeds.bitcoin.open-nodes.org)
   677      - Make multisig transactions with non-null dummy data nonstandard
   678        (https://github.com/conformal/btcd/issues/131)
   679      - Make transactions with an excessive number of signature operations
   680        nonstandard
   681      - Perform initial DNS lookups concurrently which allows connections
   682        more quickly
   683      - Improve the address manager to significantly reduce memory usage and
   684        add tests
   685      - Remove orphan transactions when they appear in a mined block
   686        (https://github.com/conformal/btcd/issues/166)
   687      - Apply incremental back off on connection retries for persistent peers
   688        that give invalid replies to mirror the logic used for failed
   689        connections (https://github.com/conformal/btcd/issues/103)
   690      - Correct rate-limiting of free and low-fee transactions
   691    - Mining support changes:
   692      - Implement getblocktemplate RPC with the following support:
   693        (https://github.com/conformal/btcd/issues/124)
   694        - BIP0022 Non-Optional Sections
   695        - BIP0022 Long Polling
   696        - BIP0023 Basic Pool Extensions
   697        - BIP0023 Mutation coinbase/append
   698        - BIP0023 Mutations time, time/increment, and time/decrement
   699        - BIP0023 Mutation transactions/add
   700        - BIP0023 Mutations prevblock, coinbase, and generation
   701        - BIP0023 Block Proposals
   702      - Implement built-in concurrent CPU miner
   703        (https://github.com/conformal/btcd/issues/137)
   704        NOTE: CPU mining on mainnet is pointless.  This has been provided
   705        for testing purposes such as for the new simulation test network
   706      - Add --generate flag to enable CPU mining
   707      - Deprecate the --getworkkey flag in favor of --miningaddr which
   708        specifies which addresses generated blocks will choose from to pay
   709        the subsidy to
   710    - RPC changes:
   711      - Implement gettxout command
   712        (https://github.com/conformal/btcd/issues/141)
   713      - Implement validateaddress command
   714      - Implement verifymessage command
   715      - Mark getunconfirmedbalance RPC as wallet-only
   716      - Mark getwalletinfo RPC as wallet-only
   717      - Update getgenerate, setgenerate, gethashespersec, and getmininginfo
   718        to return the appropriate information about new CPU mining status
   719      - Modify getpeerinfo pingtime and pingwait field types to float64 so
   720        they are compatible
   721      - Improve disconnect handling for normal HTTP clients
   722      - Make error code returns for invalid hex more consistent
   723    - Websocket changes:
   724      - Switch to a new more efficient websocket package
   725        (https://github.com/conformal/btcd/issues/134)
   726      - Add rescanfinished notification
   727      - Modify the rescanprogress notification to include block hash as well
   728        as height (https://github.com/conformal/btcd/issues/151)
   729    - btcctl utility changes:
   730      - Accept --simnet flag which automatically selects the appropriate port
   731        and TLS certificates needed to communicate with btcd and btcwallet on
   732        the simulation test network
   733      - Fix createrawtransaction command to send amounts denominated in BTC
   734      - Add estimatefee command
   735      - Add estimatepriority command
   736      - Add getmininginfo command
   737      - Add getnetworkinfo command
   738      - Add gettxout command
   739      - Add lockunspent command
   740      - Add signrawtransaction command
   741    - addblock utility changes:
   742      - Accept --simnet flag which automatically selects the appropriate port
   743        and TLS certificates needed to communicate with btcd and btcwallet on
   744        the simulation test network
   745    - Notable developer-related package changes:
   746      - Provide a new bloom package in btcutil which allows creating and
   747        working with BIP0037 bloom filters
   748      - Provide a new hdkeychain package in btcutil which allows working with
   749        BIP0032 hierarchical deterministic key chains
   750      - Introduce a new btcnet package which houses network parameters
   751      - Provide new simnet network (--simnet) which is useful for private
   752        simulation testing
   753      - Enforce low S values in serialized signatures as detailed in BIP0062
   754      - Return errors from all methods on the btcdb.Db interface
   755        (https://github.com/conformal/btcdb/issues/5)
   756      - Allow behavior flags to alter btcchain.ProcessBlock
   757        (https://github.com/conformal/btcchain/issues/5)
   758      - Provide a new SerializeSize API for blocks
   759        (https://github.com/conformal/btcwire/issues/19)
   760      - Several of the core packages now work with Google App Engine
   761    - Misc changes:
   762      - Correct an issue where the database could corrupt under certain
   763        circumstances which would require a new chain download
   764      - Slightly optimize deserialization
   765      - Use the correct IP block for he.net
   766      - Fix an issue where it was possible the block manager could hang on
   767        shutdown
   768      - Update sample config file so the comments are on a separate line
   769        rather than the end of a line so they are not interpreted as settings
   770        (https://github.com/conformal/btcd/issues/135)
   771      - Correct an issue where getdata requests were not being properly
   772        throttled which could lead to larger than necessary memory usage
   773      - Always show help when given the help flag even when the config file
   774        contains invalid entries
   775      - General code cleanup and minor optimizations
   776  
   777  Changes in 0.8.0-beta (Sun May 25 2014)
   778    - Btcd is now Beta (https://github.com/conformal/btcd/issues/130)
   779    - Add a new checkpoint at block height 300255
   780    - Protocol and network related changes:
   781      - Lower the minimum transaction relay fee to 1000 satoshi to match
   782        recent reference client changes
   783        (https://github.com/conformal/btcd/issues/100)
   784      - Raise the maximum signature script size to support standard 15-of-15
   785        multi-signature pay-to-sript-hash transactions with compressed pubkeys
   786        to remain compatible with the reference client
   787        (https://github.com/conformal/btcd/issues/128)
   788      - Reduce max bytes allowed for a standard nulldata transaction to 40 for
   789        compatibility with the reference client
   790      - Introduce a new btcnet package which houses all of the network params
   791        for each network (mainnet, testnet3, regtest) to ultimately enable
   792        easier addition and tweaking of networks without needing to change
   793        several packages
   794      - Fix several script discrepancies found by reference client test data
   795      - Add new DNS seed for peer discovery (seed.bitnodes.io)
   796      - Reduce the max known inventory cache from 20000 items to 1000 items
   797      - Fix an issue where unknown inventory types could lead to a hung peer
   798      - Implement inventory rebroadcast handler for sendrawtransaction
   799        (https://github.com/conformal/btcd/issues/99)
   800      - Update user agent to fully support BIP0014
   801        (https://github.com/conformal/btcwire/issues/10)
   802    - Implement initial mining support:
   803      - Add a new logging subsystem for mining related operations
   804      - Implement infrastructure for creating block templates
   805      - Provide options to control block template creation settings
   806      - Support the getwork RPC
   807      - Allow address identifiers to apply to more than one network since both
   808        testnet3 and the regression test network unfortunately use the same
   809        identifier
   810    - RPC changes:
   811      - Set the content type for HTTP POST RPC connections to application/json
   812        (https://github.com/conformal/btcd/issues/121)
   813      - Modified the RPC server startup so it only requires at least one valid
   814        listen interface
   815      - Correct an error path where it was possible certain errors would not
   816        be returned
   817      - Implement getwork command
   818        (https://github.com/conformal/btcd/issues/125)
   819      - Update sendrawtransaction command to reject orphans
   820      - Update sendrawtransaction command to include the reason a transaction
   821        was rejected
   822      - Update getinfo command to populate connection count field
   823      - Update getinfo command to include relay fee field
   824        (https://github.com/conformal/btcd/issues/107)
   825      - Allow transactions submitted with sendrawtransaction to bypass the
   826        rate limiter
   827      - Allow the getcurrentnet and getbestblock extensions to be accessed via
   828        HTTP POST in addition to Websockets
   829        (https://github.com/conformal/btcd/issues/127)
   830    - Websocket changes:
   831      - Rework notifications to ensure they are delivered in the order they
   832        occur
   833      - Rename notifynewtxs command to notifyreceived (funds received)
   834      - Rename notifyallnewtxs command to notifynewtransactions
   835      - Rename alltx notification to txaccepted
   836      - Rename allverbosetx notification to txacceptedverbose
   837        (https://github.com/conformal/btcd/issues/98)
   838      - Add rescan progress notification
   839      - Add recvtx notification
   840      - Add redeemingtx notification
   841      - Modify notifyspent command to accept an array of outpoints
   842        (https://github.com/conformal/btcd/issues/123)
   843      - Significantly optimize the rescan command to yield up to a 60x speed
   844        increase
   845    - btcctl utility changes:
   846      - Add createencryptedwallet command
   847      - Add getblockchaininfo command
   848      - Add importwallet command
   849      - Add addmultisigaddress command
   850      - Add setgenerate command
   851      - Accept --testnet and --wallet flags which automatically select
   852        the appropriate port and TLS certificates needed to communicate
   853        with btcd and btcwallet (https://github.com/conformal/btcd/issues/112)
   854      - Allow path expansion from config file entries
   855        (https://github.com/conformal/btcd/issues/113)
   856      - Minor refactor simplify handling of options
   857    - addblock utility changes:
   858      - Improve logging by making it consistent with the logging provided by
   859        btcd (https://github.com/conformal/btcd/issues/90)
   860    - Improve several package APIs for developers:
   861      - Add new amount type for consistently handling monetary values
   862      - Add new coin selector API
   863      - Add new WIF (Wallet Import Format) API
   864      - Add new crypto types for private keys and signatures
   865      - Add new API to sign transactions including script merging and hash
   866        types
   867      - Expose function to extract all pushed data from a script
   868        (https://github.com/conformal/btcscript/issues/8)
   869    - Misc changes:
   870      - Optimize address manager shuffling to do 67% less work on average
   871      - Resolve a couple of benign data races found by the race detector
   872        (https://github.com/conformal/btcd/issues/101)
   873      - Add IP address to all peer related errors to clarify which peer is the
   874        cause (https://github.com/conformal/btcd/issues/102)
   875      - Fix a UPNP case issue that prevented the --upnp option from working
   876        with some UPNP servers
   877      - Update documentation in the sample config file regarding debug levels
   878      - Adjust some logging levels to improve debug messages
   879      - Improve the throughput of query messages to the block manager
   880      - Several minor optimizations to reduce GC churn and enhance speed
   881      - Other minor refactoring
   882      - General code cleanup
   883  
   884  Changes in 0.7.0 (Thu Feb 20 2014)
   885    - Fix an issue when parsing scripts which contain a multi-signature script
   886      which require zero signatures such as testnet block
   887      000000001881dccfeda317393c261f76d09e399e15e27d280e5368420f442632
   888      (https://github.com/conformal/btcscript/issues/7)
   889    - Add check to ensure all transactions accepted to mempool only contain
   890      canonical data pushes (https://github.com/conformal/btcscript/issues/6)
   891    - Fix an issue causing excessive memory consumption
   892    - Significantly rework and improve the websocket notification system:
   893      - Each client is now independent so slow clients no longer limit the
   894        speed of other connected clients
   895      - Potentially long-running operations such as rescans are now run in
   896        their own handler and rate-limited to one operation at a time without
   897        preventing simultaneous requests from the same client for the faster
   898        requests or notifications
   899      - A couple of scenarios which could cause shutdown to hang have been
   900        resolved
   901      - Update notifynewtx notifications to support all address types instead
   902        of only pay-to-pubkey-hash
   903      - Provide a --rpcmaxwebsockets option to allow limiting the number of
   904        concurrent websocket clients
   905      - Add a new websocket command notifyallnewtxs to request notifications
   906        (https://github.com/conformal/btcd/issues/86) (thanks @flammit)
   907    - Improve btcctl utility in the following ways:
   908      - Add getnetworkhashps command
   909      - Add gettransaction command (wallet-specific)
   910      - Add signmessage command (wallet-specific)
   911      - Update getwork command to accept
   912    - Continue cleanup and work on implementing the RPC API:
   913      - Implement getnettotals command
   914        (https://github.com/conformal/btcd/issues/84)
   915      - Implement networkhashps command
   916        (https://github.com/conformal/btcd/issues/87)
   917      - Update getpeerinfo to always include syncnode field even when false
   918      - Remove help addenda for getpeerinfo now that it supports all fields
   919    - Close standard RPC connections on auth failure
   920    - Provide a --rpcmaxclients option to allow limiting the number of
   921      concurrent RPC clients (https://github.com/conformal/btcd/issues/68)
   922    - Include IP address in RPC auth failure log messages
   923    - Resolve a rather harmless data races found by the race detector
   924      (https://github.com/conformal/btcd/issues/94)
   925    - Increase block priority size and max standard transaction size to 50k
   926      and 100k, respectively (https://github.com/conformal/btcd/issues/71)
   927    - Add rate limiting of free transactions to the memory pool to prevent
   928      penny flooding (https://github.com/conformal/btcd/issues/40)
   929    - Provide a --logdir option (https://github.com/conformal/btcd/issues/95)
   930    - Change the default log file path to include the network
   931    - Add a new ScriptBuilder interface to btcscript to support creation of
   932      custom scripts (https://github.com/conformal/btcscript/issues/5)
   933    - General code cleanup
   934  
   935  Changes in 0.6.0 (Tue Feb 04 2014)
   936    - Fix an issue when parsing scripts which contain invalid signatures that
   937      caused a chain fork on block
   938      0000000000000001e4241fd0b3469a713f41c5682605451c05d3033288fb2244
   939    - Correct an issue which could lead to an error in removeBlockNode
   940      (https://github.com/conformal/btcchain/issues/4)
   941    - Improve addblock utility as follows:
   942      - Check imported blocks against all chain rules and checkpoints
   943      - Skip blocks which are already known so you can stop and restart the
   944        import or start the import after you have already downloaded a portion
   945        of the chain
   946      - Correct an issue where the utility did not shutdown cleanly after
   947        processing all blocks
   948      - Add error on attempt to import orphan blocks
   949      - Improve error handling and reporting
   950      - Display statistics after input file has been fully processed
   951    - Rework, optimize, and improve headers-first mode:
   952      - Resuming the chain sync from any point before the final checkpoint
   953        will now use headers-first mode
   954        (https://github.com/conformal/btcd/issues/69)
   955      - Verify all checkpoints as opposed to only the final one
   956      - Reduce and bound memory usage
   957      - Rollback to the last known good point when a header does not match a
   958        checkpoint
   959      - Log information about what is happening with headers
   960    - Improve btcctl utility in the following ways:
   961      - Add getaddednodeinfo command
   962      - Add getnettotals command
   963      - Add getblocktemplate command (wallet-specific)
   964      - Add getwork command (wallet-specific)
   965      - Add getnewaddress command (wallet-specific)
   966      - Add walletpassphrasechange command (wallet-specific)
   967      - Add walletlock command (wallet-specific)
   968      - Add sendfrom command (wallet-specific)
   969      - Add sendmany command (wallet-specific)
   970      - Add settxfee command (wallet-specific)
   971      - Add listsinceblock command (wallet-specific)
   972      - Add listaccounts command (wallet-specific)
   973      - Add keypoolrefill command (wallet-specific)
   974      - Add getreceivedbyaccount command (wallet-specific)
   975      - Add getrawchangeaddress command (wallet-specific)
   976      - Add gettxoutsetinfo command (wallet-specific)
   977      - Add listaddressgroupings command (wallet-specific)
   978      - Add listlockunspent command (wallet-specific)
   979      - Add listlock command (wallet-specific)
   980      - Add listreceivedbyaccount command (wallet-specific)
   981      - Add validateaddress command (wallet-specific)
   982      - Add verifymessage command (wallet-specific)
   983      - Add sendtoaddress command (wallet-specific)
   984    - Continue cleanup and work on implementing the RPC API:
   985      - Implement submitblock command
   986        (https://github.com/conformal/btcd/issues/61)
   987      - Implement help command
   988      - Implement ping command
   989      - Implement getaddednodeinfo command
   990        (https://github.com/conformal/btcd/issues/78)
   991      - Implement getinfo command
   992      - Update getpeerinfo to support bytesrecv and bytessent
   993        (https://github.com/conformal/btcd/issues/83)
   994    - Improve and correct several RPC server and websocket areas:
   995      - Change the connection endpoint for websockets from /wallet to /ws
   996        (https://github.com/conformal/btcd/issues/80)
   997      - Implement an alternative authentication for websockets so clients
   998        such as javascript from browsers that don't support setting HTTP
   999        headers can authenticate (https://github.com/conformal/btcd/issues/77)
  1000      - Add an authentication deadline for RPC connections
  1001        (https://github.com/conformal/btcd/issues/68)
  1002      - Use standard authentication failure responses for RPC connections
  1003      - Make automatically generated certificate more standard so it works
  1004        from client such as node.js and Firefox
  1005      - Correct some minor issues which could prevent the RPC server from
  1006        shutting down in an orderly fashion
  1007      - Make all websocket notifications require registration
  1008      - Change the data sent over websockets to text since it is JSON-RPC
  1009      - Allow connections that do not have an Origin header set
  1010    - Expose and track the number of bytes read and written per peer
  1011      (https://github.com/conformal/btcwire/issues/6)
  1012    - Correct an issue with sendrawtransaction when invoked via websockets
  1013      which prevented a minedtx notification from being added
  1014    - Rescan operations issued from remote wallets are no stopped when
  1015      the wallet disconnects mid-operation
  1016      (https://github.com/conformal/btcd/issues/66)
  1017    - Several optimizations related to fetching block information from the
  1018      database
  1019    - General code cleanup
  1020  
  1021  Changes in 0.5.0 (Mon Jan 13 2014)
  1022    - Optimize initial block download by introducing a new mode which
  1023      downloads the block headers first (up to the final checkpoint)
  1024    - Improve peer handling to remove the potential for slow peers to cause
  1025      sluggishness amongst all peers
  1026      (https://github.com/conformal/btcd/issues/63)
  1027    - Fix an issue where the initial block sync could stall when the sync peer
  1028      disconnects (https://github.com/conformal/btcd/issues/62)
  1029    - Correct an issue where --externalip was doing a DNS lookup on the full
  1030      host:port instead of just the host portion
  1031      (https://github.com/conformal/btcd/issues/38)
  1032    - Fix an issue which could lead to a panic on chain switches
  1033      (https://github.com/conformal/btcd/issues/70)
  1034    - Improve btcctl utility in the following ways:
  1035      - Show getdifficulty output as floating point to 6 digits of precision
  1036      - Show all JSON object replies formatted as standard JSON
  1037      - Allow btcctl getblock to accept optional params
  1038      - Add getaccount command (wallet-specific)
  1039      - Add getaccountaddress command (wallet-specific)
  1040      - Add sendrawtransaction command
  1041    - Continue cleanup and work on implementing RPC API calls
  1042      - Update getrawmempool to support new optional verbose flag
  1043      - Update getrawtransaction to match the reference client
  1044      - Update getblock to support new optional verbose flag
  1045      - Update raw transactions to fully match the reference client including
  1046        support for all transaction types and address types
  1047      - Correct getrawmempool fee field to return BTC instead of Satoshi
  1048      - Correct getpeerinfo service flag to return 8 digit string so it
  1049        matches the reference client
  1050      - Correct verifychain to return a boolean
  1051      - Implement decoderawtransaction command
  1052      - Implement createrawtransaction command
  1053      - Implement decodescript command
  1054      - Implement gethashespersec command
  1055      - Allow RPC handler overrides when invoked via a websocket versus
  1056        legacy connection
  1057    - Add new DNS seed for peer discovery
  1058    - Display user agent on new valid peer log message
  1059      (https://github.com/conformal/btcd/issues/64)
  1060    - Notify wallet when new transactions that pay to registered addresses
  1061      show up in the mempool before being mined into a block
  1062    - Support a tor-specific proxy in addition to a normal proxy
  1063      (https://github.com/conformal/btcd/issues/47)
  1064    - Remove deprecated sqlite3 imports from utilities
  1065    - Remove leftover profile write from addblock utility
  1066    - Quite a bit of code cleanup and refactoring to improve maintainability
  1067  
  1068  Changes in 0.4.0 (Thu Dec 12 2013)
  1069    - Allow listen interfaces to be specified via --listen instead of only the
  1070      port (https://github.com/conformal/btcd/issues/33)
  1071    - Allow listen interfaces for the RPC server to be specified via
  1072      --rpclisten instead of only the port
  1073      (https://github.com/conformal/btcd/issues/34)
  1074    - Only disable listening when --connect or --proxy are used when no
  1075      --listen interface are specified
  1076      (https://github.com/conformal/btcd/issues/10)
  1077    - Add several new standard transaction checks to transaction memory pool:
  1078      - Support nulldata scripts as standard
  1079      - Only allow a max of one nulldata output per transaction
  1080      - Enforce a maximum of 3 public keys in multi-signature transactions
  1081      - The number of signatures in multi-signature transactions must not
  1082        exceed the number of public keys
  1083      - The number of inputs to a signature script must match the expected
  1084        number of inputs for the script type
  1085      - The number of inputs pushed onto the stack by a redeeming signature
  1086        script must match the number of inputs consumed by the referenced
  1087        public key script
  1088    - When a block is connected, remove any transactions from the memory pool
  1089      which are now double spends as a result of the newly connected
  1090      transactions
  1091    - Don't relay transactions resurrected during a chain switch since
  1092      other peers will also be switching chains and therefore already know
  1093      about them
  1094    - Cleanup a few cases where rejected transactions showed as an error
  1095      rather than as a rejected transaction
  1096    - Ignore the default configuration file when --regtest (regression test
  1097      mode) is specified
  1098    - Implement TLS support for RPC including automatic certificate generation
  1099    - Support HTTP authentication headers for web sockets
  1100    - Update address manager to recognize and properly work with Tor
  1101      addresses (https://github.com/conformal/btcd/issues/36) and
  1102      (https://github.com/conformal/btcd/issues/37)
  1103    - Improve btcctl utility in the following ways:
  1104      - Add the ability to specify a configuration file
  1105      - Add a default entry for the RPC cert to point to the location
  1106        it will likely be in the btcd home directory
  1107      - Implement --version flag
  1108      - Provide a --notls option to support non-TLS configurations
  1109    - Fix a couple of minor races found by the Go race detector
  1110    - Improve logging
  1111      - Allow logging level to be specified on a per subsystem basis
  1112        (https://github.com/conformal/btcd/issues/48)
  1113      - Allow logging levels to be dynamically changed via RPC
  1114        (https://github.com/conformal/btcd/issues/15)
  1115      - Implement a rolling log file with a max of 10MB per file and a
  1116        rotation size of 3 which results in a max logging size of 30 MB
  1117    - Correct a minor issue with the rescanning websocket call
  1118      (https://github.com/conformal/btcd/issues/54)
  1119    - Fix a race with pushing address messages that could lead to a panic
  1120      (https://github.com/conformal/btcd/issues/58)
  1121    - Improve which external IP address is reported to peers based on which
  1122      interface they are connected through
  1123      (https://github.com/conformal/btcd/issues/35)
  1124    - Add --externalip option to allow an external IP address to be specified
  1125      for cases such as tor hidden services or advanced network configurations
  1126      (https://github.com/conformal/btcd/issues/38)
  1127    - Add --upnp option to support automatic port mapping via UPnP
  1128      (https://github.com/conformal/btcd/issues/51)
  1129    - Update Ctrl+C interrupt handler to properly sync address manager and
  1130      remove the UPnP port mapping (if needed)
  1131    - Continue cleanup and work on implementing RPC API calls
  1132      - Add importprivkey (import private key) command to btcctl
  1133      - Update getrawtransaction to provide addresses properly, support
  1134        new verbose param, and match the reference implementation with the
  1135        exception of MULTISIG (thanks @flammit)
  1136      - Update getblock with new verbose flag (thanks @flammit)
  1137      - Add listtransactions command to btcctl
  1138      - Add getbalance command to btcctl
  1139    - Add basic support for btcd to run as a native Windows service
  1140      (https://github.com/conformal/btcd/issues/42)
  1141    - Package addblock utility with Windows MSIs
  1142    - Add support for TravisCI (continuous build integration)
  1143    - Cleanup some documentation and usage
  1144    - Several other minor bug fixes and general code cleanup
  1145  
  1146  Changes in 0.3.3 (Wed Nov 13 2013)
  1147    - Significantly improve initial block chain download speed
  1148      (https://github.com/conformal/btcd/issues/20)
  1149    - Add a new checkpoint at block height 267300
  1150    - Optimize most recently used inventory handling
  1151      (https://github.com/conformal/btcd/issues/21)
  1152    - Optimize duplicate transaction input check
  1153      (https://github.com/conformal/btcchain/issues/2)
  1154    - Optimize transaction hashing
  1155      (https://github.com/conformal/btcd/issues/25)
  1156    - Rework and optimize wallet listener notifications
  1157      (https://github.com/conformal/btcd/issues/22)
  1158    - Optimize serialization and deserialization
  1159      (https://github.com/conformal/btcd/issues/27)
  1160    - Add support for minimum transaction fee to memory pool acceptance
  1161      (https://github.com/conformal/btcd/issues/29)
  1162    - Improve leveldb database performance by removing explicit GC call
  1163    - Fix an issue where Ctrl+C was not always finishing orderly database
  1164      shutdown
  1165    - Fix an issue in the script handling for OP_CHECKSIG
  1166    - Impose max limits on all variable length protocol entries to prevent
  1167      abuse from malicious peers
  1168    - Enforce DER signatures for transactions allowed into the memory pool
  1169    - Separate the debug profile http server from the RPC server
  1170    - Rework of the RPC code to improve performance and make the code cleaner
  1171    - The getrawtransaction RPC call now properly checks the memory pool
  1172      before consulting the db (https://github.com/conformal/btcd/issues/26)
  1173    - Add support for the following RPC calls: getpeerinfo, getconnectedcount,
  1174      addnode, verifychain
  1175      (https://github.com/conformal/btcd/issues/13)
  1176      (https://github.com/conformal/btcd/issues/17)
  1177    - Implement rescan websocket extension to allow wallet rescans
  1178    - Use correct paths for application data storage for all supported
  1179      operating systems (https://github.com/conformal/btcd/issues/30)
  1180    - Add a default redirect to the http profiling page when accessing the
  1181      http profile server
  1182    - Add a new --cpuprofile option which can be used to generate CPU
  1183      profiling data on platforms that support it
  1184    - Several other minor performance optimizations
  1185    - Other minor bug fixes and general code cleanup
  1186  
  1187  Changes in 0.3.2 (Tue Oct 22 2013)
  1188    - Fix an issue that could cause the download of the block chain to stall
  1189      (https://github.com/conformal/btcd/issues/12)
  1190    - Remove deprecated sqlite as an available database backend
  1191    - Close sqlite compile issue as sqlite has now been removed
  1192      (https://github.com/conformal/btcd/issues/11)
  1193    - Change default RPC ports to 8334 (mainnet) and 18334 (testnet)
  1194    - Continue cleanup and work on implementing RPC API calls
  1195    - Add support for the following RPC calls: getrawmempool,
  1196      getbestblockhash, decoderawtransaction, getdifficulty,
  1197      getconnectioncount, getpeerinfo, and addnode
  1198    - Improve the btcctl utility that is used to issue JSON-RPC commands
  1199    - Fix an issue preventing btcd from cleanly shutting down with the RPC
  1200      stop command
  1201    - Add a number of database interface tests to ensure backends implement
  1202      the expected interface
  1203    - Expose some additional information from btcscript to be used for
  1204      identifying "standard"" transactions
  1205    - Add support for plan9 - thanks @mischief
  1206      (https://github.com/conformal/btcd/pull/19)
  1207    - Other minor bug fixes and general code cleanup
  1208  
  1209  Changes in 0.3.1-alpha (Tue Oct 15 2013)
  1210    - Change default database to leveldb
  1211      NOTE: This does mean you will have to redownload the block chain.  Since we
  1212      are still in alpha, we didn't feel writing a converter was worth the time as
  1213      it would take away from more important issues at this stage
  1214    - Add a warning if there are multiple block chain databases of different types
  1215    - Fix issue with unexpected EOF in leveldb -- https://github.com/conformal/btcd/issues/18
  1216    - Fix issue preventing block 21066 on testnet -- https://github.com/conformal/btcchain/issues/1
  1217    - Fix issue preventing block 96464 on testnet -- https://github.com/conformal/btcscript/issues/1
  1218    - Optimize transaction lookups
  1219    - Correct a few cases of list removal that could result in improper cleanup
  1220      of no longer needed orphans
  1221    - Add functionality to increase ulimits on non-Windows platforms
  1222    - Add support for mempool command which allows remote peers to query the
  1223      transaction memory pool via the bitcoin protocol
  1224    - Clean up logging a bit
  1225    - Add a flag to disable checkpoints for developers
  1226    - Add a lot of useful debug logging such as message summaries
  1227    - Other minor bug fixes and general code cleanup
  1228  
  1229  Initial Release 0.3.0-alpha (Sat Oct 05 2013):
  1230    - Initial release