@davecgh davecgh released this Mar 2, 2015 · 1041 commits to master since this release

Assets 4

Protocol and network related changes:

  • Add a new checkpoint at block height 343185
  • Implement BIP066 which includes support for version 3 blocks, a new consensus rule which prevents non-DER encoded signatures, and a double-threshold switchover mechanism
  • Rather than announcing all known addresses on getaddr requests which can possibly result in multiple messages, randomize the results and limit them to the max allowed by a single message (1000 addresses)
  • Add more reserved IP spaces to the address manager

Transaction relay (memory pool) changes:

  • Make transactions which contain reserved opcodes nonstandard
  • No longer accept or relay free and low-fee transactions that have insufficient priority to be mined in the next block
  • Implement support for the following rules specified by BIP0062:
    • ECDSA signature must use strict DER encoding (rule 1)
    • The signature script must only contain push operations (rule 2)
    • All push operations must use the smallest possible encoding (rule 3)
    • All stack values interpreted as a number must be encoding using the shortest possible form (rule 4)
    • NOTE: Rule 1 was already enforced, however the entire script now evaluates to false rather than only the signature verification as required by BIP0062
  • Allow transactions with nulldata transaction outputs to be treated as standard

Mining support changes:

  • Modify the getblocktemplate RPC to generate and return block templates for version 3 blocks which are compatible with BIP0066
  • Allow getblocktemplate to serve blocks when the current time is less than the minimum allowed time for a generated block template (#209)

Crypto changes:

  • Optimize scalar multiplication by the base point by using a pre-computed table which results in approximately a 35% speedup (btcsuite/btcec#2)
  • Optimize general scalar multiplication by using the secp256k1 endomorphism which results in approximately a 17-20% speedup (btcsuite/btcec#1)
  • Optimize general scalar multiplication by using non-adjacent form which results in approximately an additional 8% speedup (btcsuite/btcec#3)

Implement optional address indexing:

  • Add a new parameter --addrindex which will enable the creation of an address index which can be queried to determine all transactions which involve a given address (#190)
  • Add a new logging subsystem for address index related operations
  • Support new searchrawtransactions RPC (#185)

RPC changes:

  • Require TLS version 1.2 as the minimum version for all TLS connections
  • Provide support for disabling TLS when only listening on localhost (#192)
  • Modify help output for all commands to provide much more consistent and detailed information
  • Correct case in getrawtransaction which would refuse to serve certain transactions with invalid scripts (#210)
  • Correct error handling in the getrawtransaction RPC which could lead to a crash in rare cases (#196)
  • Update getinfo RPC to include the appropriate 'timeoffset' calculated from the median network time
  • Modify listreceivedbyaddress result type to include txids field so it is compatible
  • Add 'iswatchonly' field to validateaddress result
  • Add 'startingpriority' and 'currentpriority' fields to getrawmempool (#178)
  • Don't omit the 'confirmations' field from getrawtransaction when it is zero

Websocket changes:

  • Modify the behavior of the rescan command to automatically register for notifications about transactions paying to rescanned addresses or spending outputs from the final rescan utxo set when the rescan is through the best block in the chain

btcctl utility changes:

  • Make the list of commands available via the -l option rather than dumping the entire list on usage errors
  • Alphabetize and categorize the list of commands by chain and wallet
  • Make the help option only show the help options instead of also dumping all of the commands
  • Make the usage syntax much more consistent and correct a few cases of misnamed fields (#305)
  • Improve usage errors to show the specific parameter number, reason, and error code
  • Only show the usage for specific command is shown when a valid command is provided with invalid parameters
  • Add support for a SOCK5 proxy
  • Modify output for integer fields (such as timestamps) to display normally instead in scientific notation
  • Add invalidateblock command
  • Add reconsiderblock command
  • Add createnewaccount command
  • Add renameaccount command
  • Add searchrawtransactions command
  • Add importaddress command
  • Add importpubkey command

showblock utility changes:

  • Remove utility in favor of the RPC getblock method

Notable developer-related package changes:

  • Many of the core packages have been relocated into the btcd repository
  • A new version of the btcjson package that has been completely redesigned from the ground up based based upon how the project has evolved and lessons learned while using it since it was first written is now available in the btcjson/v2/btcjson directory
    • This will ultimately replace the current version so anyone making use of this package will need to update their code accordingly
  • The btcec package now provides better facilities for working directly with its public and private keys without having to mix elements from the ecdsa package
  • Update the script builder to ensure all rules specified by BIP0062 are adhered to when creating scripts
  • The blockchain package now provides a MedianTimeSource interface and concrete implementation for providing time samples from remote peers and using that data to calculate an offset against the local time

Misc changes:

  • Fix a slow memory leak due to tickers not being stopped (#189)
  • Fix an issue where a mix of orphans and SPV clients could trigger a condition where peers would no longer be served (#231)
  • The RPC username and password can now contain symbols which previously conflicted with special symbols used in URLs
  • Improve handling of obtaining random nonces to prevent cases where it could error when not enough entropy was available
  • Improve handling of home directory creation errors such as in the case of unmounted symlinks (#193)
  • Improve the error reporting for rejected transactions to include the inputs which are missing and/or being double spent
  • Update sample config file with new options and correct a comment regarding the fact the RPC server only listens on localhost by default (#218)
  • Update the continuous integration builds to run several tools which help keep code quality high
  • Significant amount of internal code cleanup and improvements
  • Other minor internal optimizations

Code Contributors (alphabetical order):
Ben Holden-Crowther
Dave Collins
David Evans
David Hill
Guilherme Salgado
Javed Khan
Jimmy Song
John C. Vernaleo
Jonathan Gillham
Josh Rickmar
Michael Ford
Michail Kargakis
Olaoluwa Osuntokun