Litecoin Core v0.17.1
Litecoin Core v0.17.1 Release
Follow the Twitter for the latest dev news.
We are pleased to release Litecoin Core 0.17.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
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).
If your node has a txindex, the txindex db will be migrated the first time you
run 0.17.1 or newer, which may take up to a few hours. Your node will not be
functional until this migration completes.
The first time you run version 0.15.0 or newer, your chainstate database will be
converted to a new format. This 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. Upgrading
directly from 0.7.x and earlier without redownloading the blockchain is not
supported. However, as usual, old wallet versions are still supported.
The chainstate database for this release is not compatible with previous
releases, so if you run 0.15 and then decide to switch back to any older
version, you will need to run the old release with the
-reindex-chainstateoption to rebuild the chainstate data structures in the old
If your node has pruning enabled, this will entail re-downloading and processing
the entire blockchain.
Litecoin Core is extensively tested on multiple operating systems using the
Linux kernel, macOS 10.10+, and Windows 7 and newer (Windows XP is not
Litecoin Core should also work on most other Unix-like systems but is not
frequently tested on them.
From 0.17.1 onwards macOS <10.10 is no longer supported. 0.17.1 is built using
Qt 5.9.x, which doesn’t support versions of macOS older than 10.10.
- Upgrading from 0.13.2 or older currently results in memory blow-up during the
roll-back of blocks to the SegWit activation point. In these cases, a full
- The GUI suffers from visual glitches in the new MacOS dark mode. This has to do
with our Qt theme handling impacting older versions of Litecoin Core, but is
expected to be resolved in 0.17.1.
listtransactions label support
account parameter has been renamed to
When litecoin is configured with the
specifying a label/account/dummy argument will return both outgoing and incoming
transactions. Without the
-deprecatedrpc=accounts setting, it will only return
incoming transactions (because it used to be possible to create transactions
spending from specific accounts, but this is no longer possiblewith labels).
-deprecatedrpc=accounts is set, it's possible to pass the empty string ""
to list transactions that don't have any label. Without
-deprecatedrpc=accounts, passing the empty string is an error because
returning only non-labeled transactions is not generally useful behavior and can
Changed configuration options
-includeconf=<file>can be used to include additional configuration files.
Only works inside the
litecoin.conffile, not inside included files or from
command-line. Multiple files may be included. Can be disabled from command- line
-noincludeconf. Note that multi-argument commands like
as litecoin.conf will still include
- Block storage can be limited under Preferences, in the Main tab. Undoing this
setting requires downloading the full blockchain again. This mode is
incompatible with -txindex and -rescan.
External wallet files
-wallet=<path> option now accepts full paths instead of requiring wallets
to be located in the -walletdir directory.
Newly created wallet format
-wallet=<path> is specified with a path that does not exist, it will now
create a wallet directory at the specified location (containing a wallet.dat
data file, a db.log file, and database/log.?????????? files) instead of just
creating a data file at the path and storing log files in the parent directory.
This should make backing up wallets more straightforward than before because the
specified wallet path can just be directly archived without having to look in
the parent directory for transaction log files.
For backwards compatibility, wallet paths that are names of existing data files
-walletdir directory will continue to be accepted and interpreted the
same as before.
Dynamic loading and creation of wallets
Previously, wallets could only be loaded or created at startup, by specifying
-wallet parameters on the command line or in the litecoin.conf file. It is now
possible to load, create and unload wallets dynamically at runtime:
- Existing wallets can be loaded by calling the
loadwalletRPC. The wallet can
be specified as file/directory basename (which must be located in the
walletdirdirectory), or as an absolute path to a file/directory.
- New wallets can be created (and loaded) by calling the
provided name must not match a wallet file in the
walletdirdirectory or the
name of a wallet that is currently loaded.
- Loaded wallets can be unloaded by calling the
This feature is currently only available through the RPC interface.
Partial spend avoidance
When an address is paid multiple times the coins from those separate payments
can be spent separately which hurts privacy due to linking otherwise separate
addresses. A new
-avoidpartialspends flag has been added (default=false). If
enabled, the wallet will always spend existing UTXO to the same address together
even if it results in higher fees. If someone were to send coins to an address
after it was used, those coins will still be included in future coin selections.
Fee policy changes
The default minimum transaction fee
-mintxfee has been lowered to 0.0001
LTC/kB after relaxing the minimum relay and dust relay fee rates in prior
Configuration sections for testnet and regtest
It is now possible for a single configuration file to set different options for
different networks. This is done by using sections or by prefixing the option
with the network, such as:
If the following options are not in a section, they will only apply to mainnet:
The options to choose a network (
testnet=) must be specified
outside of sections.
‘label’ and ‘account’ APIs for wallet
A new ‘label’ API has been introduced for the wallet. This is intended as a
replacement for the deprecated ‘account’ API. The ‘account’ can continue to be
used in V0.17 by starting litecoind with the ‘-deprecatedrpc=accounts’ argument,
and will be fully removed in V0.18.
The label RPC methods mirror the account functionality, with the following
- Labels can be set on any address, not just receiving addresses. This
functionality was previously only available through the GUI.
- Labels can be deleted by reassigning all addresses using the
- There isn’t support for sending transactions from a label, or for determining
which label a transaction was sent from.
- Labels do not have a balance.
Here are the changes to RPC methods:
BIP 174 Partially Signed Litecoin Transactions support
BIP 174 PSBT
is an interchange format for Litecoin transactions that are not fully signed
yet, together with relevant metadata to help entities work towards signing it.
It is intended to simplify workflows where multiple parties need to cooperate to
produce a transaction. Examples include hardware wallets, multisig setups, and
For backend RPC convenience, the Litecoin devs have supported to keep the
PSBT instead of
PSLT to make crosschain application support easier.
Overall, the construction of a fully signed Litecoin transaction goes through
the following steps:
- A Creator proposes a particular transaction to be created. He constructs a PSBT
that contains certain inputs and outputs, but no additional metadata.
- For each input, an Updater adds information about the UTXOs being spent by the
transaction to the PSBT.
- A potentially other Updater adds information about the scripts and public keys
involved in each of the inputs (and possibly outputs) of the PSBT.
- Signers inspect the transaction and its metadata to decide whether they agree
with the transaction. They can use amount information from the UTXOs to assess
the values and fees involved. If they agree, they produce a partial signature
for the inputs for which they have relevant key(s).
- A Finalizer is run for each input to convert the partial signatures and possibly
script information into a final
- An Extractor produces a valid Litecoin transaction (in network format) from a
PSBT for which all inputs are finalized.
Generally, each of the above (excluding Creator and Extractor) will simply add
more and more data to a particular PSBT. In a naive workflow, they all have to
operate sequentially, passing the PSBT from one to the next, until the Extractor
can convert it to a real transaction. In order to permit parallel operation,
Combiners can be employed which merge metadata from different PSBTs for the same
The names above in bold are the names of the roles defined in BIP174. They’re
useful in understanding the underlying steps, but in practice, software and
hardware implementations will typically implement multiple roles simultaneously.
converttopsbt(Creator) is a utility RPC that converts an unsigned raw
transaction to PSBT format. It ignores existing signatures.
createpsbt(Creator) is a utility RPC that takes a list of inputs and outputs
and converts them to a PSBT with no additional information. It is equivalent to
walletcreatefundedpsbt(Creator, Updater) is a wallet RPC that creates a PSBT
with the specified inputs and outputs, adds additional inputs and change to it
to balance it out, and adds relevant metadata. In particular, for inputs that
the wallet knows about (counting towards its normal or watch-only balance), UTXO
information will be added. For outputs and inputs with UTXO information present,
key and script information will be added which the wallet knows about. It is
equivalent to running
createrawtransaction, followed by
walletprocesspsbt(Updater, Signer, Finalizer) is a wallet RPC that takes as
input a PSBT, adds UTXO, key, and script data to inputs and outputs that miss
it, and optionally signs inputs. Where possible it also finalizes the partial
finalizepsbt(Finalizer, Extractor) is a utility RPC that finalizes any
partial signatures, and if all inputs are finalized, converts the result to a
fully signed transaction which can be broadcast with
combinepsbt(Combiner) is a utility RPC that implements a Combiner. It can be
used at any point in the workflow to merge information added to different
versions of the same PSBT. In particular it is useful to combine the output of
multiple Updaters or Signers.
decodepsbtis a diagnostic utility RPC which will show all information in a
PSBT in human-readable form, as well as compute its eventual fee if known.
Upgrading non-HD wallets to HD wallets
Since Litecoin Core 0.13.2, creating new BIP 32 Hierarchical Deterministic
wallets has been supported by Litecoin Core but old non-HD wallets could not be
upgraded to HD. Now non-HD wallets can be upgraded to HD using the
-upgradewallet command line option. This upgrade will result in the all keys
in the keypool being marked as used and a new keypool generated. A new backup
must be made when this upgrade is performed.
-upgradewallet can be used to upgraded from a non-split HD chain
(all keys generated with
m/0'/0'/i') to a split HD chain (receiving keys
'm/0'/0'/i' and change keys generated with
this upgrade occurs, all keys already in the keypool will remain in the keypool
to be used until all keys from before the upgrade are exhausted. This is to
avoid issues with backups and downgrades when some keys may come from the change
key keypool. Users can begin using the new split HD chain keypools by using the
newkeypool RPC to mark all keys in the keypool as used and begin using a new
keypool generated from the split HD chain.
HD Master key rotation
A new RPC,
sethdseed, has been introduced which allows users to set a new HD
seed or set their own HD seed. This allows for a new HD seed to be used. A new
backup must be made when a new HD seed is set.
Low-level RPC changes
- The new RPC
scantxoutsetcan be used to scan the UTXO set for entries that
match certain output descriptors. Refer to the output descriptors reference
for more details. This call is similar to
listunspentbut does not use a
wallet, meaning that the wallet can be disabled at compile or run time. This
call is experimental, as such, is subject to changes or removal in future
createrawtransactionRPC will now accept an array or dictionary (kept for
compatibility) for the
outputsparameter. This means the order of transaction
outputs can be specified by the client.
fundrawtransactionRPC will reject the previously deprecated
sendmanynow shuffles outputs to improve privacy, so any previously expected
behavior with regards to output ordering can no longer be relied upon.
- The new RPC
testmempoolacceptcan be used to test acceptance of a transaction
to the mempool without adding it.
- JSON transaction decomposition now includes a
weightfield which provides the
transaction's exact weight. This is included in REST /rest/tx/ and /rest/block/
endpoints when in json mode. This is also included in
feesfield introduced in
getmempoolentrywhen verbosity is set to
LTC. This new field deprecates previous fee fields, such as
- The new RPC
getzmqnotificationsreturns information about active ZMQ
- When litecoin is not started with any
-wallet=<path>options, the name of the
default wallet returned by
listwalletsRPCs is now the
"wallet.dat". If litecoin is started with any
-wallet=<path>options, there is no change in behavior, and the name of any
wallet is just its
- Passing an empty string (
"") as the
fundrawtransactionRPCs is now an error. Previously, this would fall back to
using the default address type. It is still possible to pass null or leave the
parameter unset to use the default address type.
- Bare multisig outputs to our keys are no longer automatically treated as
incoming payments. As this feature was only available for multisig outputs for
which you had all private keys in your wallet, there was generally no use for
them compared to single-key schemes. Furthermore, no address format for such
outputs is defined, and wallet software can’t easily send to it. These outputs
will no longer show up in
listunspent, or contribute to
your balance, unless they are explicitly watched (using
importmultiwith hex script argument).
signrawtransaction*also still works
getwalletinfoRPC method now returns an
hdseedidvalue, which is always
the same as the incorrectly-named
removed in V0.18.
getaddressinfoRPC method now returns an
hdseedidvalue, which is always
the same as the incorrectly-named
removed in V0.18.
- Parts of the
validateaddressRPC method have been deprecated and moved to
getaddressinfo. Clients must transition to using
this information before upgrading to v0.18. The following deprecated fields have
getaddressinfoand will only be shown with
signrawtransactionis deprecated and will be fully removed in v0.18. To use
signrawtransactionin v0.17, restart litecoind with
-deprecatedrpc=signrawtransaction. Projects should transition to using
Other API changes
inactivehdmasterproperty in the
dumpwalletoutput has been corrected to
- The log timestamp format is now ISO 8601 (e.g. “2018–02–28T12:34:56Z”).
- When running litecoind with
-daemon, logging to stdout is
now the default behavior. Setting
-printtoconsole=1no longer implicitly
disables logging to debug.log. Instead, logging to file can be explicitly
disabled by setting
Transaction index changes
The transaction index is now built separately from the main node procedure,
-txindex flag can be toggled without a full reindex. If litecoind
is run with
-txindex on a node that is already partially or fully synced
without one, the transaction index will be built in the background and become
available once caught up. When switching from running
-txindex to running
without the flag, the transaction index database will not be deleted
automatically, meaning it could be turned back on at a later time without a full
Miner block size removed
-blockmaxsize option for miners to limit their blocks' sizes was
deprecated in V0.15.1, and has now been removed. Miners should use the
-blockmaxweight option if they want to limit the weight of their blocks.
Support for Python 2 has been discontinued for all test files and tools.
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
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
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
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
Sign up for announcements only or development discussion.
Hashes for verification
These are the SHA-256 hashes of the released files:
aa772dd38242065f9902fc529239aeca05c34851f99113f5f29d6e591e1d8aa5 litecoin-0.17.1-aarch64-linux-gnu.tar.gz 7e6f5a1f0b190de01aa20ecf5c5a2cc5a64eb7ede0806bcba983bcd803324d8a litecoin-0.17.1-arm-linux-gnueabihf.tar.gz 575f5e6614868f148b3ca3064ff7f494db84cde49669cd18be2d8275da88ebce litecoin-0.17.1-i686-pc-linux-gnu.tar.gz b93fa415c84bea1676d0b0ea819dd6e8e4f7b136167d89b18b63240b50757d4f litecoin-0.17.1-osx64.tar.gz 7f8ec34706701482970baae4d4bc0fdb19016a6ab5260f983bf478428f0da518 litecoin-0.17.1-osx.dmg 6db52aa5a67387aff937afbfb3da8321ada653c9c8f01b0e0d4dd617939639c4 litecoin-0.17.1.tar.gz 7263605a80e93da6fe56d8ef46a73eadd973673098982943f51e2d56d36f8a2f litecoin-0.17.1-win32-setup.exe 2970c94c5401008c1120313838e8e88ff437c588b5b574a1e74b190d970a54e7 litecoin-0.17.1-win32.zip fa8e0f5be6e65125fdea9e4d83bd3ea3ab2e8b185e3f94b767d77233cbbd520a litecoin-0.17.1-win64-setup.exe 8060e9bface9bbdc22c74a2687b211c8b4e32fe03c0e6c537c12de0ff6f0813b litecoin-0.17.1-win64.zip 9cab11ba75ea4fb64474d4fea5c5b6851f9a25fe9b1d4f7fc9c12b9f190fed07 litecoin-0.17.1-x86_64-linux-gnu.tar.gz
Thanks to everyone who directly contributed to this release:
- The Bitcoin Core Developers
- Adrian Gallagher
- Martin Smith
And to those that reported security issues:
- awemany (for CVE-2018–17144, previously credited as “anonymous reporter”)