git / moonbite-core / doc/litecoin-release-notes/release-notes-0.14.2.md · raw

Litecoin Core version 0.14.2 is now available from:  <https://download.litecoin.org/litecoin-0.14.2.0/>This is a new major version release, including new features, various bugfixesand performance improvements, as well as updated translations.Please report bugs using the issue tracker at github:  <https://github.com/litecoin-project/litecoin/issues>To receive security and update notifications, please subscribe to:  <https://groups.google.com/forum/#!forum/litecoin-dev>Compatibility==============Litecoin Core is extensively tested on multiple operating systems usingthe Linux kernel, macOS 10.8+, and Windows Vista and later.Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),No attempt is made to prevent installing or running the software on Windows XP, youcan still do so at your own risk but be aware that there are known instabilities and issues.Please do not report issues about Windows XP to the issue tracker.Litecoin Core should also work on most other Unix-like systems but is notfrequently tested on them.Notable changes===============New Multisig Address Prefix---------------------------Litecoin Core now supports P2SH addresses beginning with M on mainnet and Q on testnet.P2SH addresses beginning with 3 on mainnet and m or n on testnet will continue to be valid.Old and new addresses can be used interchangeably.miniupnp CVE-2017-8798----------------------Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error (present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers (within the LAN) to cause a denial of service or possibly have unspecified other impact.This only affects users that have explicitly enabled UPnP through the GUI setting or through the -upnp option, as since the last UPnP vulnerability (in Litecoin Core 0.10.4) it has been disabled by default.If you use this option, it is recommended to upgrade to this version as soon as possible.Reset Testnet-------------Testnet3 has been deprecated and replaced with Testnet4. The server port has been changed to 19335 however the RPC port remainsthe same (19332).Testnet faucets can be located at:- http://testnet.litecointools.com- http://testnet.thrasher.ioDevelopers who require the new testnet blockchain paramaters can find them [here](https://github.com/litecoin-project/litecoin/blob/master/src/chainparams.cpp#L220).Performance Improvements--------------Validation speed and network propagation performance have been greatlyimproved, leading to much shorter sync and initial block download times.- The script signature cache has been reimplemented as a "cuckoo cache",  allowing for more signatures to be cached and faster lookups.- Assumed-valid blocks have been introduced which allows script validation to  be skipped for ancestors of known-good blocks, without changing the security  model. See below for more details.- In some cases, compact blocks are now relayed before being fully validated as  per BIP152.- P2P networking has been refactored with a focus on concurrency and  throughput. Network operations are no longer bottlenecked by validation. As a  result, block fetching is several times faster than previous releases in many  cases.- The UTXO cache now claims unused mempool memory. This speeds up initial block  download as UTXO lookups are a major bottleneck there, and there is no use for  the mempool at that stage.Manual Pruning--------------Litecoin Core has supported automatically pruning the blockchain since 0.13.2. Pruningthe blockchain allows for significant storage space savings as the vast majority ofthe downloaded data can be discarded after processing so very little of it remainson the disk.Manual block pruning can now be enabled by setting `-prune=1`. Once that is set,the RPC command `pruneblockchain` can be used to prune the blockchain up to thespecified height or timestamp.`getinfo` Deprecated--------------------The `getinfo` RPC command has been deprecated. Each field in the RPC callhas been moved to another command's output with that command also givingadditional information that `getinfo` did not provide. The following tableshows where each field has been moved to:|`getinfo` field   | Moved to                                  ||------------------|-------------------------------------------|`"version"`	   | `getnetworkinfo()["version"]``"protocolversion"`| `getnetworkinfo()["protocolversion"]``"walletversion"`  | `getwalletinfo()["walletversion"]``"balance"`	   | `getwalletinfo()["balance"]``"blocks"`	   | `getblockchaininfo()["blocks"]``"timeoffset"`	   | `getnetworkinfo()["timeoffset"]``"connections"`	   | `getnetworkinfo()["connections"]``"proxy"`	   | `getnetworkinfo()["networks"][0]["proxy"]``"difficulty"`	   | `getblockchaininfo()["difficulty"]``"testnet"`	   | `getblockchaininfo()["chain"] == "test"``"keypoololdest"`  | `getwalletinfo()["keypoololdest"]``"keypoolsize"`	   | `getwalletinfo()["keypoolsize"]``"unlocked_until"` | `getwalletinfo()["unlocked_until"]``"paytxfee"`	   | `getwalletinfo()["paytxfee"]``"relayfee"`	   | `getnetworkinfo()["relayfee"]``"errors"`	   | `getnetworkinfo()["warnings"]`ZMQ On Windows--------------Previously the ZeroMQ notification system was unavailable on Windowsdue to various issues with ZMQ. These have been fixed upstream andnow ZMQ can be used on Windows. Please see [this document](https://github.com/litecoin-project/litecoin/blob/master/doc/zmq.md) forhelp with using ZMQ in general.Nested RPC Commands in Debug Console------------------------------------The ability to nest RPC commands has been added to the debug console. Thisallows users to have the output of a command become the input to anothercommand without running the commands separately.The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and canbe nested (i.e. `getblock(getblockhash(1))`). Simple queries can bedone with square brackets where object values are accessed with either an array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Bothcommas and spaces can be used to separate parameters in both the bracket syntaxand normal RPC command syntax.Network Activity Toggle-----------------------A RPC command and GUI toggle have been added to enable or disable all p2pnetwork activity. The network status icon in the bottom right hand corner is now the GUI toggle. Clicking the icon will either enable or disable allp2p network activity. If network activity is disabled, the icon will be grayed out with an X on top of it.Additionally the `setnetworkactive` RPC command has been added which doesthe same thing as the GUI icon. The command takes one boolean parameter,`true` enables networking and `false` disables it.Out-of-sync Modal Info Layer----------------------------When Litecoin Core is out-of-sync on startup, a semi-transparent informationlayer will be shown over top of the normal display. This layer containsdetails about the current sync progress and estimates the amount of timeremaining to finish syncing. This layer can also be hidden and subsequentlyunhidden by clicking on the progress bar at the bottom of the window.Support for JSON-RPC Named Arguments------------------------------------Commands sent over the JSON-RPC interface and through the `litecoin-cli` binarycan now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification)for passing parameters by-name with an object.`litecoin-cli` has been updated to support this by parsing `name=value` argumentswhen the `-named` option is given.Some examples:    src/litecoin-cli -named help command="help"    src/litecoin-cli -named getblockhash height=0    src/litecoin-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f    src/litecoin-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=trueThe order of arguments doesn't matter in this case. Named arguments are alsouseful to leave out arguments that should stay at their default value. Therarely-used arguments `comment` and `comment_to` to `sendtoaddress`, for example, canbe left out. However, this is not yet implemented for many RPC calls, this isexpected to land in a later release.The RPC server remains fully backwards compatible with positional arguments.Sensitive Data Is No Longer Stored In Debug Console History-----------------------------------------------------------The debug console maintains a history of previously entered commands that can beaccessed by pressing the Up-arrow key so that users can easily reuse previouslyentered commands. Commands which have sensitive information such as passphrases andprivate keys will now have a `(...)` in place of the parameters when accessed throughthe history.Retaining the Mempool Across Restarts-------------------------------------The mempool will be saved to the data directory prior to shutdownto a `mempool.dat` file. This file preserves the mempool so that when the noderestarts the mempool can be filled with transactions without waiting for new transactionsto be created. This will also preserve any changes made to a transaction throughcommands such as `prioritisetransaction` so that those changes will not be lost.Final Alert-----------The Alert System was disabled and deprecated in Litecoin Core 0.10.4 and removed in 0.13.2. The Alert System was retired with a maximum sequence final alert which causes any nodessupporting the Alert System to display a static hard-coded "Alert Key Compromised" message which alsoprevents any other alerts from overriding it. This final alert is hard-coded into this releaseso that all old nodes receive the final alert.GUI Changes----------- - After resetting the options by clicking the `Reset Options` button    in the options dialog or with the `-resetguioptions` startup option,    the user will be prompted to choose the data directory again. This    is to ensure that custom data directories will be kept after the    option reset which clears the custom data directory set via the choose    datadir dialog. - Multiple peers can now be selected in the list of peers in the debug    window. This allows for users to ban or disconnect multiple peers    simultaneously instead of banning them one at a time. - An indicator has been added to the bottom right hand corner of the main   window to indicate whether the wallet being used is a HD wallet. This   icon will be grayed out with an X on top of it if the wallet is not a   HD wallet.Low-level RPC changes---------------------- - `importprunedfunds` only accepts two required arguments. Some versions accept   an optional third arg, which was always ignored. Make sure to never pass more   than two arguments. - The first boolean argument to `getaddednodeinfo` has been removed. This is    an incompatible change. - RPC command `getmininginfo` loses the "testnet" field in favor of the more   generic "chain" (which has been present for years). - A new RPC command `preciousblock` has been added which marks a block as   precious. A precious block will be treated as if it were received earlier   than a competing block. - A new RPC command `importmulti` has been added which receives an array of    JSON objects representing the intention of importing a public key, a    private key, an address and script/p2sh - Use of `getrawtransaction` for retrieving confirmed transactions with unspent   outputs has been deprecated. For now this will still work, but in the future   it may change to only be able to retrieve information about transactions in   the mempool or if `txindex` is enabled. - A new RPC command `getmemoryinfo` has been added which will return information   about the memory usage of Litecoin Core. This was added in conjunction with   optimizations to memory management. See [Pull #8753](https://github.com/bitcoin/bitcoin/pull/8753)   for more information. - A new RPC command `bumpfee` has been added which allows replacing an   unconfirmed wallet transaction that signaled RBF (see the `-walletrbf`   startup option above) with a new transaction that pays a higher fee, and   should be more likely to get confirmed quickly. - The first positional argument of `createrawtransaction` was renamed from  `transactions` to `inputs`. - The argument of `disconnectnode` was renamed from `node` to `address`.Client software using these calls with named arguments needs to be updated.HTTP REST Changes----------------- - UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>   /.../<txid>-<n>.<bin|hex|json>`) responses were changed to return status    code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500)   when requests contain invalid parameters.Minimum Fee Rate Policies-------------------------Since the changes in 0.13 to automatically limit the size of the mempool and improve the performance of block creation in mining code it has not been important for relay nodes or miners to set `-minrelaytxfee`. With this release the following concepts that were tied to this option have been separated out:- calculation of threshold for a dust output. (effectively 3 * 1000 satoshis/kB)- minimum fee rate of a package of transactions to be included in a block created by the mining code. If miners wish to set this minimum they can use the new `-blockmintxfee` option.  (defaults to 1000 satoshis/kB)The `-minrelaytxfee` option continues to exist but is recommended to be left unset.Fee Estimation Changes----------------------- Since 0.13.2 fee estimation for a confirmation target of 1 block has been  disabled. The fee slider will no longer be able to choose a target of 1 block.  This is only a minor behavior change as there was often insufficient  data for this target anyway. `estimatefee 1` will now always return -1 and  `estimatesmartfee 1` will start searching at a target of 2.- The default target for fee estimation is changed to 6 blocks in both the GUI  (previously 25) and for RPC calls (previously 2).Removal of Priority Estimation------------------------------- Estimation of "priority" needed for a transaction to be included within a target  number of blocks has been removed.  The RPC calls are deprecated and will either  return -1 or 1e24 appropriately. The format for `fee_estimates.dat` has also  changed to no longer save these priority estimates. It will automatically be  converted to the new format which is not readable by prior versions of the  software.- Support for "priority" (coin age) transaction sorting for mining is  considered deprecated in Core and will be removed in the next major version.  This is not to be confused with the `prioritisetransaction` RPC which will remain  supported by Core for adding fee deltas to transactions.P2P connection management--------------------------- Peers manually added through the `-addnode` option or `addnode` RPC now have their own  limit of eight connections which does not compete with other inbound or outbound  connection usage and is not subject to the limitation imposed by the `-maxconnections`  option.- New connections to manually added peers are performed more quickly.Introduction of assumed-valid blocks-------------------------------------- A significant portion of the initial block download time is spent verifying  scripts/signatures.  Although the verification must pass to ensure the security  of the system, no other result from this verification is needed: If the node  knew the history of a given block were valid it could skip checking scripts  for its ancestors.- A new configuration option 'assumevalid' is provided to express this knowledge  to the software.  Unlike the 'checkpoints' in the past this setting does not  force the use of a particular chain: chains that are consistent with it are  processed quicker, but other chains are still accepted if they'd otherwise  be chosen as best. Also unlike 'checkpoints' the user can configure which  block history is assumed true, this means that even outdated software can  sync more quickly if the setting is updated by the user.- Because the validity of a chain history is a simple objective fact it is much  easier to review this setting.  As a result the software ships with a default  value adjusted to match the current chain shortly before release.  The use  of this default value can be disabled by setting -assumevalid=0Fundrawtransaction change address reuse----------------------------------------- Before 0.14, `fundrawtransaction` was by default wallet stateless. In  almost all cases `fundrawtransaction` does add a change-output to the  outputs of the funded transaction. Before 0.14, the used keypool key was  never marked as change-address key and directly returned to the keypool  (leading to address reuse).  Before 0.14, calling `getnewaddress`  directly after `fundrawtransaction` did generate the same address as  the change-output address.- Since 0.14, fundrawtransaction does reserve the change-output-key from  the keypool by default (optional by setting  `reserveChangeKey`, default =  `true`)- Users should also consider using `getrawchangeaddress()` in conjunction  with `fundrawtransaction`'s `changeAddress` option.Unused mempool memory used by coincache----------------------------------------- Before 0.14, memory reserved for mempool (using the `-maxmempool` option)  went unused during initial block download, or IBD. In 0.14, the UTXO DB cache  (controlled with the `-dbcache` option) borrows memory from the mempool  when there is extra memory available. This may result in an increase in  memory usage during IBD for those previously relying on only the `-dbcache`  option to limit memory during that time.Mining------In previous versions, getblocktemplate required segwit support from downstreamclients/miners once the feature activated on the network. In this version, itnow supports non-segwit clients even after activation, by removing all segwittransactions from the returned block template. This allows non-segwit miners tocontinue functioning correctly even after segwit has activated.Due to the limitations in previous versions, getblocktemplate also recommendednon-segwit clients to not signal for the segwit version-bit. Since this is nolonger an issue, getblocktemplate now always recommends signalling segwit forall miners. This is safe because ability to enforce the rule is the onlyrequired criteria for safe activation, not actually producing segwit-enabledblocks.UTXO memory accounting----------------------Memory usage for the UTXO cache is being calculated more accurately, so thatthe configured limit (`-dbcache`) will be respected when memory usage peaksduring cache flushes.  The memory accounting in prior releases is estimated toonly account for half the actual peak utilization.The default `-dbcache` has also been changed in this release to 450MiB.  Userswho currently set `-dbcache` to a high value (e.g. to keep the UTXO more fullycached in memory) should consider increasing this setting in order to achievethe same cache performance as prior releases.  Users on low-memory systems(such as systems with 1GB or less) should consider specifying a lower value forthis parameter.Additional information relating to running on low-memory systems can be foundhere, originally written for Bitcoin but can also be used for Litecoin:[reducing-bitcoind-memory-usage.md](https://gist.github.com/laanwj/efe29c7661ce9b6620a7).Credits=======Thanks to everyone who directly contributed to this release:- [The Bitcoin Core Developers](/doc/release-notes)- Adrian Gallagher- Charlie Lee- Loshan T- Shaolin Fry- Xinxi Wang