Litecoin Core v0.18.1
Litecoin Core v0.18.1 Release
Follow our Twitter for the latest dev news.
We are pleased to release Litecoin Core 0.18.1. This is a new major version release, including new features, various bugfixes and performance improvements, as well as updated translations. It is recommended for all users to upgrade to this version.
How to Upgrade
If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over
/Applications/Litecoin-Qt (on Mac) or
litecoin-qt (on Linux).
The first time you run version 0.15.0 or newer, your chainstate database will be converted to a new format, which will take anywhere from a few minutes to half an hour, depending on the speed of your machine.
Note that the block database format also changed in version 0.8.0 and there is no automatic upgrade code from before version 0.8 to version 0.15.0 or later. Upgrading directly from 0.7.x and earlier without redownloading the blockchain is not supported. However, as usual, old wallet versions are still supported.
Litecoin Core is supported and extensively tested on operating systems using the Linux kernel, macOS 10.10+, and Windows 7 and newer. It is not recommended to use Litecoin Core on unsupported systems.
Litecoin Core should also work on most other Unix-like systems but is not as frequently tested on them.
From 0.17.0 onwards, macOS <10.10 is no longer supported. 0.17.0 is built using Qt 5.9.x, which doesn't support versions of macOS older than 10.10. Additionally, Litecoin Core does not yet change appearance when macOS "dark mode" is activated.
In addition to previously-supported CPU platforms, this release's pre-compiled distribution also provides binaries for the RISC-V platform.
For advanced users who have both (1) enabled coin control features, and (2) are using multiple wallets loaded at the same time: The coin control input selection dialog can erroneously retain wrong-wallet state when switching wallets using the dropdown menu. For now, it is recommended not to use coin control features with multiple wallets loaded.
- Calls to
getblocktemplatewill fail if the segwit rule is not specified. Calling
getblocktemplatewithout segwit specified is almost certainly a misconfiguration since doing so results in lower rewards for the miner. Failed calls will produce an error message describing how to enable the segwit rule.
Configuration option changes
- A warning is printed if an unrecognized section name is used in the configuration file. Recognized sections are
- Four new options are available for configuring the maximum number of messages that ZMQ will queue in memory (the "high water mark") before dropping additional messages. The default value is 1,000, the same as was used for previous releases. See the ZMQ documentation for details.
rpcallowipoption can no longer be used to automatically listen on all network interfaces. Instead, the
rpcbindparameter must be used to specify the IP addresses to listen on. Listening for RPC commands over a public network connection is insecure and should be disabled, so a warning is now printed if a user selects such a configuration. If you need to expose RPC in order to use a tool like Docker, ensure you only bind RPC to your localhost, e.g.
docker run [...] -p 127.0.0.1:9332:9332(this is an extra
:9332over the normal Docker port specification).
rpcpasswordoption now causes a startup error if the password set in the configuration file contains a hash character (#), as it's ambiguous whether the hash character is meant for the password or as a comment.
whitelistforcerelayoption is used to relay transactions from whitelisted peers even when not accepted to the mempool. This option now defaults to being off, so that changes in policy and disconnect/ban behavior will not cause a node that is whitelisting another to be dropped by peers. Users can still explicitly enable this behavior with the command line option (and may want to consider contacting the Litecoin Core project to let us know about their use-case, as this feature could be deprecated in the future).
When creating a transaction with a fee above
-maxtxfee (default 0.1 LTC), the RPC commands
fundrawtransaction will now fail instead of rounding down the fee. Beware that the
feeRate argument is specified in LTC per kilobyte, not litoshi per byte.
- A new short document about the JSON-RPC interface describes cases where the results of an RPC might contain inconsistencies between data sourced from different subsystems, such as wallet state and mempool state. A note is added to the REST interface documentation indicating that the same rules apply.
- Further information is added to the JSON-RPC documentation about how to secure this interface.
- A new document about the
litecoin.conffile describes how to use it to configure Litecoin Core.
- A new document introduces Litecoin Core's BIP174 Partially-Signed Litecoin Transactions (PSBT) interface, which is used to allow multiple programs to collaboratively work to create, sign, and broadcast new transactions. This is useful for offline (cold storage) wallets, multisig wallets, coinjoin implementations, and many other cases where two or more programs need to interact to generate a complete transaction.
- The output script descriptor documentation has been updated with information about new features in this still-developing language for describing the output scripts that a wallet or other program wants to receive notifications for, such as which addresses it wants to know received payments. The language is currently used in multiple new and updated RPCs described in these release notes and is expected to be adapted to other RPCs and to the underlying wallet structure.
Build system changes
- A new
--disable-bip70option may be passed to
./configureto prevent Litecoin-Qt from being built with support for the BIP70 payment protocol or from linking libssl. As the payment protocol has exposed Litecoin Core to libssl vulnerabilities in the past, builders who don't need BIP70 support are encouraged to use this option to reduce their exposure to future vulnerabilities.
- The minimum required version of Qt (when building the GUI) has been increased from 5.2 to 5.5.1 (the depends system provides 5.9.7)
getnodeaddressesreturns peer addresses known to this node. It may be used to find nodes to connect to without using a DNS seeder.
listwalletdirreturns a list of wallets in the wallet directory (either the default wallet directory or the directory configured by the
getrpcinforeturns runtime details of the RPC server. At the moment, it returns an array of the currently active commands and how long they've been running.
deriveaddressesreturns one or more addresses corresponding to an output descriptor.
getdescriptorinfoaccepts a descriptor and returns information about it, including its computed checksum.
joinpsbtsmerges multiple distinct PSBTs into a single PSBT. The multiple PSBTs must have different inputs. The resulting PSBT will contain every input and output from all of the PSBTs. Any signatures provided in any of the PSBTs will be dropped.
analyzepsbtexamines a PSBT and provides information about what the PSBT contains and the next steps that need to be taken in order to complete the transaction. For each input of a PSBT,
analyzepsbtprovides information about what information is missing for that input, including whether a UTXO needs to be provided, what pubkeys still need to be provided, which scripts need to be provided, and what signatures are still needed. Every input will also list which role is needed to complete that input, and
analyzepsbtwill also list the next role in general needed to complete the PSBT.
analyzepsbtwill also provide the estimated fee rate and estimated virtual size of the completed transaction if it has enough information to do so.
utxoupdatepsbtsearches the set of Unspent Transaction Outputs (UTXOs) to find the outputs being spent by the partial transaction. PSBTs need to have the UTXOs being spent to be provided because the signing algorithm requires information from the UTXO being spent. For segwit inputs, only the UTXO itself is necessary. For non-segwit outputs, the entire previous transaction is needed so that signers can be sure that they are signing the correct thing. Unfortunately, because the UTXO set only contains UTXOs and not full transactions,
utxoupdatepsbtwill only add the UTXO for segwit inputs.
Note: some low-level RPC changes mainly useful for testing are described in the Low-level Changes section below.
getpeerinfonow returns an additional
minfeefilterfield set to the peer's BIP133 fee filter. You can use this to detect that you have peers that are willing to accept transactions below the default minimum relay fee.
- The mempool RPCs, such as
verbose=true, now return an additional "bip125-replaceable" value indicating whether the transaction (or its unconfirmed ancestors) opts-in to asking nodes and miners to replace it with a higher-feerate transaction spending any of the same inputs.
settxfeepreviously silently ignored attempts to set the fee below the allowed minimums. It now prints a warning. The special value of "0" may still be used to request the minimum value.
getaddressinfonow provides an
ischangefield indicating whether the wallet used the address in a change output.
importmultihas been updated to support P2WSH, P2WPKH, P2SH-P2WPKH, and P2SH-P2WSH. Requests for P2WSH and P2SH-P2WSH accept an additional
importmultinow returns an additional
warningsfield for each request with an array of strings explaining when fields are being ignored or are inconsistent, if there are any.
getaddressinfonow returns an additional
solvableboolean field when Litecoin Core knows enough about the address's scriptPubKey, optional redeemScript, and optional witnessScript in order for the wallet to be able to generate an unsigned input spending funds sent to that address.
scantxoutsetRPCs now return an additional
descfield that contains an output descriptor containing all key paths and signing information for the address (except for the private key). The
descfield is only returned for
listunspentwhen the address is solvable.
importprivkeywill preserve previously-set labels for addresses or public keys corresponding to the private key being imported. For example, if you imported a watch-only address with the label "cold wallet" in earlier releases of Litecoin Core, subsequently importing the private key would default to resetting the address's label to the default empty-string label (""). In this release, the previous label of "cold wallet" will be retained. If you optionally specify any label besides the default when calling
importprivkey, the new label will be applied to the address.
- See the Mining section for changes to
currentblocktxwhen a block was never assembled via RPC on this node.
getrawtransactionRPC & REST endpoints no longer check the unspent UTXO set for a transaction. The remaining behaviors are as follows: 1. If a blockhash is provided, check the corresponding block. 2. If no blockhash is provided, check the mempool. 3. If no blockhash is provided but txindex is enabled, also check txindex.
unloadwalletis now synchronous, meaning it will not return until the wallet is fully unloaded.
importmultinow supports importing of addresses from descriptors. A "desc" parameter can be provided instead of the "scriptPubKey" in a request, as well as an optional range for ranged descriptors to specify the start and end of the range to import. Descriptors with key origin information imported through
importmultiwill have their key origin information stored in the wallet for use with creating PSBTs. More information about descriptors can be found here.
listunspenthas been modified so that it also returns
witnessScript, the witness script in the case of a P2WSH or P2SH-P2WSH output.
createwalletnow has an optional
blankargument that can be used to create a blank wallet. Blank wallets do not have any keys or HD seed. They cannot be opened in software older than 0.18. Once a blank wallet has a HD seed set (by using
sethdseed) or private keys, scripts, addresses, and other watch only things have been imported, the wallet is no longer blank and can be opened in 0.17.x. Encrypting a blank wallet will also set a HD seed for it.
Deprecated or removed RPCs
signrawtransactionis removed after being deprecated and hidden behind a special configuration option in version 0.17.0.
- The 'account' API is removed after being deprecated in v0.17. The 'label' API was introduced in v0.17 as a replacement for accounts. See the release notes from v0.17 for a full description of the changes from the 'account' API to the 'label' API.
addwitnessaddressis removed after being deprecated in version 0.16.0.
generateis deprecated and will be fully removed in a subsequent major version. This RPC is only used for testing, but its implementation reached across multiple subsystems (wallet and mining), so it is being deprecated to simplify the wallet-node interface. Projects that are using
generatefor testing purposes should transition to using the
generatetoaddressRPC, which does not require or use the wallet component. Calling
generatetoaddresswith an address returned by the
getnewaddressRPC gives the same functionality as the old
generateRPC. To continue using
generatein this version, restart litecoind with the
- Be reminded that parts of the
validateaddresscommand have been deprecated and moved to
getaddressinfo. The following deprecated fields have moved to
addressesfield has been removed from the
getaddressinfoRPC methods. This field was confusing since it referred to public keys using their P2PKH address. Clients should use the
embedded.addressfield for P2SH or P2WSH wrapped addresses, and
pubkeysfor inspecting multisig participants.
- A new
/rest/blockhashbyheight/endpoint is added for fetching the hash of the block in the current best blockchain based on its height (how many blocks it is after the Genesis Block).
Graphical User Interface (GUI)
- A new Window menu is added alongside the existing File, Settings, and Help menus. Several items from the other menus that opened new windows have been moved to this new Window menu.
- In the Send tab, the checkbox for "pay only the required fee" has been removed. Instead, the user can simply decrease the value in the Custom Feerate field all the way down to the node's configured minimum relay fee.
- In the Overview tab, the watch-only balance will be the only balance shown if the wallet was created using the
createwalletRPC and the
disable_private_keysparameter was set to true.
- The launch-on-startup option is no longer available on macOS if compiled with macosx min version greater than 10.11 (use CXXFLAGS="-mmacosx-version-min=10.11" CFLAGS="-mmacosx-version-min=10.11" for setting the deployment sdk version)
- A new
litecoin-wallettool is now distributed alongside Litecoin Core's other executables. Without needing to use any RPCs, this tool can currently create a new wallet file or display some basic information about an existing wallet, such as whether the wallet is encrypted, whether it uses an HD seed, how many transactions it contains, and how many address book entries it has.
This section describes planned changes to Litecoin Core that may affect other Litecoin software and services.
- Since version 0.16.0, Litecoin Core's built-in wallet has defaulted to generating P2SH-wrapped segwit addresses when users want to receive payments. These addresses are backwards compatible with all widely-used software. Starting with Litecoin Core 0.20, Litecoin Core will default to native segwit addresses (bech32) that provide additional fee savings and other benefits. Currently, many wallets and services already support sending to bech32 addresses, and if the Litecoin Core project sees enough additional adoption, it will instead default to bech32 receiving addresses in Litecoin Core 0.20. P2SH-wrapped segwit addresses will continue to be provided if the user requests them in the GUI or by RPC, and anyone who doesn't want the update will be able to configure their default address type. (Similarly, pioneering users who want to change their default now may set the
addresstype=bech32configuration option in any Litecoin Core release from 0.16.0 up.)
Deprecated P2P messages
- BIP 61 reject messages are now deprecated. Reject messages have no use case on the P2P network and are only logged for debugging by most network nodes. Furthermore, they increase bandwidth and can be harmful for privacy and security. It has been possible to disable BIP 61 messages since v0.17 with the
-enablebip61=0option. BIP 61 messages will be disabled by default in a future version, before being removed entirely.
This section describes RPC changes mainly useful for testing, mostly not relevant in production. The changes are mentioned for completeness.
submitblockRPC previously returned the reason a rejected block was invalid the first time it processed that block, but returned a generic "duplicate" rejection message on subsequent occasions it processed the same block. It now always returns the fundamental reason for rejecting an invalid block and only returns "duplicate" for valid blocks it has already accepted.
- A new
submitheaderRPC allows submitting block headers independently from their block. This is likely only useful for testing.
signrawtransactionwithwalletRPCs have been modified so that they also optionally accept a
witnessScript, the witness script in the case of a P2WSH or P2SH-P2WSH output. This is compatible with the change to
- For the
walletcreatefundedpsbtRPCs, if the
bip32derivsparameter is set to true but the key metadata for a public key has not been updated yet, then that key will have a derivation path as if it were just an independent key (i.e. no derivation path and its master fingerprint is itself).
-usehdconfiguration option was removed in version 0.16. From that version onwards, all new wallets created are hierarchical deterministic wallets. This release makes specifying
-usehdan invalid configuration option.
- This release allows peers that your node automatically disconnected for misbehavior (e.g. sending invalid data) to reconnect to your node if you have unused incoming connection slots. If your slots fill up, a misbehaving node will be disconnected to make room for nodes without a history of problems (unless the misbehaving node helps your node in some other way, such as by connecting to a part of the Internet from which you don't have many other peers). Previously, Litecoin Core banned the IP addresses of misbehaving peers for a period of time (default of 1 day); this was easily circumvented by attackers with multiple IP addresses. If you manually ban a peer, such as by using the
setbanRPC, all connections from that peer will still be rejected.
- The key metadata will need to be upgraded the first time that the HD seed is available. For unencrypted wallets this will occur on wallet loading. For encrypted wallets this will occur the first time the wallet is unlocked.
- Newly encrypted wallets will no longer require restarting the software. Instead such wallets will be completely unloaded and reloaded to achieve the same effect.
- A sub-project of Litecoin Core now provides Hardware Wallet Interaction (HWI) scripts that allow command-line users to use several popular hardware key management devices with Litecoin Core. See their project page for details.
- This release changes the Random Number Generator (RNG) used from OpenSSL to Litecoin Core's own implementation, although entropy gathered by Litecoin Core is fed out to OpenSSL and then read back in when the program needs strong randomness. This moves Litecoin Core a little closer to no longer needing to depend on OpenSSL, a dependency that has caused security issues in the past. The new implementation gathers entropy from multiple sources, including from hardware supporting the rdseed CPU instruction.
Changes for particular platforms
- On macOS, Litecoin Core now opts out of application CPU throttling ("app nap") during initial blockchain download, when catching up from over 100 blocks behind the current chain tip, or when reindexing chain data. This helps prevent these operations from taking an excessively long time because the operating system is attempting to conserve power.
Please use GPG to verify the integrity of the release binaries. This ensures that the binary you have downloaded has not been tampered with. Linux, MacOS and Win32 cygwin command line GPG instructions are available here. Please also note that we GPG sign the binaries as a convenience to you, the ultimate way to verify the integrity of the builds is to build them yourself using Gitian. Instructions on how to perform these builds, can be found here.
For this release, the binaries have been signed with key identifier FE3348877809386C (thrasher's key).
Despite this version being heavily tested, this version may still contain bugs. Always backup your wallet.dat file before upgrading. If you encounter any issues, please let us know by posting to the bug reporting section below.
Source code & Build instructions
The master branch contains the latest commits to the next stable releases of Litecoin Core.
Build instructions for Linux can be found here.
Build instructions for OSX can be found here.
Builds instructions for Windows can be found here.
Submit any issues you encounter here and one of the Litecoin developers will assist you.
Sign up for announcements only or development discussion.
Hashes for verification
These are the SHA-256 hashes of the released files:
e0bdd4aa81502551a0c5abcfaae52c8bbaf4a980548aa6c91053643d81924b51 litecoin-0.18.1-aarch64-linux-gnu.tar.gz59b73bc8f034208295634da56a175d74668b07613cf6484653cb467deafb1d52 litecoin-0.18.1-arm-linux-gnueabihf.tar.gz0a2788d58bd22c3754927e216bf18c64145b9fdc0d709f3f49ba3040b876a066 litecoin-0.18.1-i686-pc-linux-gnu.tar.gz4ce590ecbaecaced7253473bc574a2b70527c9aeb3a3ab33a843ea1c9caf0c86 litecoin-0.18.1-osx64.tar.gzb81d9101c6ecb38b7699cf3d05ab57df7922f40f23c8a3377750c335d7102266 litecoin-0.18.1-osx.dmge5585eaff887b9d3de9f14230db0375b858e5cccc571bdb909dfc337d5bd357c litecoin-0.18.1-riscv64-linux-gnu.tar.gz6dfa71ccf059463f0a304f85ff1ca8b88039d63e93269d6f056ab24915be936d litecoin-0.18.1.tar.gz778eac92953d82a3b2e0cdc925e7da9103edd0d9a9ffa151c3c7cc79b9814091 litecoin-0.18.1-win32-setup.exe39d02e463893c970f92ed5ffcb603a1a7b2e2dacdaea306e8526414af841d247 litecoin-0.18.1-win32.zipbd38a1d5d4ac1ca4246f9534032a369b0f3cd38fb2aa82c66010642fa72e65f7 litecoin-0.18.1-win64-setup.exe9ff1f552f8ed3f058a56332defa7c61cfb345848428d7b419182096eca2ac99a litecoin-0.18.1-win64.zipca50936299e2c5a66b954c266dcaaeef9e91b2f5307069b9894048acf3eb5751 litecoin-0.18.1-x86_64-linux-gnu.tar.gz
Thanks to everyone who directly contributed to this release:
- The Bitcoin Core Developers
- Adrian Gallagher
- Martin Smith