Wednesday, January 11, 2017

Litecoin Core v0.13.2

Follow the Google+ page or Twitter for the latest dev news.
We are pleased to release Litecoin Core 0.13.2, a major release featuring many protocol level improvements, code optimizations, the ability to roll out several soft forks at once and the greatly anticipated segregated witness (segwit) innovation. Some of the most notable features include:
  • Segregated Witness - to allow for greater transaction output and mitigation of transaction malleability.
  • Hierarchical Deterministic wallets - Litecoin Core will support hierarchical deterministic wallets also known as HD wallets.
  • Faster signature validation using the libsecp256k library developed by Bitcoin Core developers.
  • Wallet pruning to reduce block size storage.
  • Memory usage improvements including better mempool filtering of transactions.
  • Inbuilt Tor control socket API support if Tor is running and also stream isolation for Tor communication.
  • Functionality to reduce upload traffic.
  • ZMQ support - ZeroMQ is a high performance asynchronous messaging library, aimed at use in distributed concurrent connections. Litecoin will support ZMQ for broadcasting block and transaction data.
  • Obfuscated blockchain data - Several antivirus applications detect the Litecoin stored blockchain data as a malware threat. Litecoin 0.13 will obfuscate the blockchain data to rid these false positives.
This update will also see the inclusion of several BIPs which can be seen below;
  • BIP9 - This BIP allows multiple soft fork changes to be deployed in parallel.
  • BIP32 - This BIP allows Litecoin Core to support hierarchical deterministic wallets.
  • BIP68 - This BIP allows relative locktime enforcement through sequence numbers.
  • BIP111 - This BIP extends BIP 37, Connection Bloom filtering, by defining a service bit to allow peers to advertise that they support bloom filters explicitly. It also bumps the protocol version to allow peers to identify old nodes which allow bloom filtering of the connection despite lacking the new service bit.
  • BIP112 - This BIP is a proposal to redefine the semantics used in determining a time-locked transaction's eligibility for inclusion in a block. The median of the last 11 blocks is used instead of the block's timestamp, ensuring that it increases monotonically with each block.
  • BIP113 - This BIP describes a new opcode (CHECKSEQUENCEVERIFY) for the Litecoin scripting system that in combination with BIP68 allows execution pathways of a script to be restricted based on the age of the output being spent.
  • BIP130 - This BIP adds a new message, "sendheaders", which indicates that a node prefers to receive new block announcements via a "headers" message rather than an "inv".
  • BIP133 - This BIP adds a new message “feefilter”, which serves to instruct peers not to send “inv”s to the node for transactions with fees below the specified fee rate.
  • BIP141 - This BIP defines a new structure called a “witness” that is committed to blocks separated from the transaction merkle tree.
  • BIP143 - This BIP contains the logic for signature verification for version 0 witness program.
  • BIP144 - This BIP contains the logic for new messages and serialization formats for propagation of transactions and blocks committing to segregated witness structures.
  • BIP147 - This BIP contains changes to the transaction validity rules to fix a malleability vector.
  • BIP152 - This BIP add compact block relay to reduce the bandwidth required to propagate new blocks.
For details on all the changes made in Litecoin Core 0.13.2, please read the release notes.

Segregated Witness Upgrade Information

The segwit soft fork is fully backwards compatible with all Litecoin wallets, so you will continue to be able to safely send and receive Litecoins whether or not segwit is activated. You can track activation at http://litecoinblockhalf.com/segwit.php.
Segwit timeline:
  • Signal: Miners will be able to signal that they are willing and able to enforce segwit starting at the beginning of the first 8064-block retarget period on or after 28 January 2017 (UTC).
  • Lock-in: If 75% of blocks within any retarget period signal support for segwit, it locks-in. SegWit transactions are now opt-in.
  • Activate: After another 8064-block (roughly two week) retarget period, segwit will activate, allowing miners to produce blocks containing segwit transactions on Litecoin’s mainnet.
When segwit is activated, transaction-producing software will be able to separate (segregate) transaction signatures (witnesses) from the part of the data in a transaction that is covered by the txid. This provides several immediate benefits:
Segwit benefits

1. Elimination of unwanted transaction malleability

Segregating the witness allows both existing and upgraded software to calculate the transaction identifier (txid) of transactions without referencing the witness, which can sometimes be changed by third-parties (such as miners) or by co-signers in a multisig spend. This solves all known cases of unwanted transaction malleability, which is a problem that makes programming Litecoin wallet software more difficult and seriously complicates the design of smart contracts for Litecoin.

2. Capacity increase

Segwit transactions contain new fields that are not part of the data currently used to calculate the size of a block, which allows a block containing segwit transactions to hold more data than allowed by the current maximum block size.
Estimates based on the transactions currently found in blocks indicate that if all wallets switch to using segwit, the network will be able to support about 70% more transactions. The network will also be able to support more advanced-style payments - such as multisig - than currently possible. This is as a result of the different weighting given to different parts of a transaction after segwit activation (see the following section for details).

3. Weighting data based on how it affects node performance

Some components of Litecoin blocks are required to be stored by nodes in order to validate future blocks; other components can be immediately forgotten (pruned) or used for helping other nodes sync their copy of the blockchain.
One large part of the immediately prunable data are transaction signatures (witnesses), and segwit makes it possible to give a different “weight” to segregated witnesses to correspond with the lower demands they place on node resources. Specifically, each byte of a segregated witness is given a weight of 1, each other byte in a block is given a weight of 4, and the maximum allowed weight of a block is 4 million. Weighting the data this way better aligns the most profitable strategy for creating blocks with the long-term costs of block validation.

4. Signature covers value

An improvement in signature generation due to segwit simplifies the design of secure signature generators (such as hardware wallets). This reduces the amount of data the signature generator needs to download, and allows the signature generator to operate more quickly and efficiently. This is made possible by having the generator sign the amount of Litecoins they think they are spending, and by requiring supernodes to reject those signatures unless the amount of Litecoins being spent is exactly the same as was signed.
For non-segwit transactions, wallets instead had to download the complete previous transactions being spent for every payment they made, which could be a slow operation on hardware wallets and in other situations where bandwidth or computation speed was constrained.

5. Linear scaling of sighash operations

In 2015 a block was produced that required about 25 seconds to validate on modern hardware because of the way transaction signature hashes are performed. Other similar blocks, or blocks that could take even longer to validate, can still be produced today. The problem that caused this can’t be fixed in a soft fork without unwanted side-effects, but transactions that opt-in to using segwit will now use a different signature hashing method that doesn’t suffer from this problem and doesn’t have any unwanted side-effects.

6. Increased security for multisig

Litecoin addresses (both P2PKH addresses that start with a ‘L’ and P2SH addresses that start with a ‘3’) use a hash function known as RIPEMD-160. For P2PKH addresses, this provides about 160 bits of security—which is beyond what cryptographers believe can be broken today. But because P2SH is more flexible, only about 80 bits of security is provided per address.
Although 80 bits is very strong security, it is within the realm of possibility that it can be broken by a powerful adversary. Segwit allows advanced transactions to use the SHA256 hash function instead, which provides about 128 bits of security (that is 281 trillion times as much security as 80 bits and is equivalent to the maximum bits of security believed to be provided by Litecoin’s choice of parameters for its Elliptic Curve Digital Security Algorithm.)

7. More efficient almost-full-node security

Satoshi Nakamoto described a method for allowing newly-started supernodes to skip downloading and validating some data from historic blocks that are protected by large amounts of proof of work. Unfortunately, Nakamoto’s method can’t guarantee that a newly-started node using this method will produce an accurate copy of Litecoin’s current ledger (called the UTXO set), making the node vulnerable to falling out of consensus with other nodes.
Although the problems with Nakamoto’s method can’t be fixed in a soft fork, segwit accomplishes something similar to his original proposal: it makes it possible for a node to optionally skip downloading some blockchain data (specifically, the segregated witnesses) while still ensuring that the node can build an accurate copy of the UTXO set for the block chain with the most proof of work. Segwit enables this capability at the consensus layer, but note that Litecoin Core does not provide an option to use this capability as of this 0.13.2 release.

8. Script versioning

Segwit makes it easy for future soft forks to allow Litecoin users to individually opt-in to almost any change in the Litecoin Script language when those users receive new transactions. Features currently being researched by Litecoin Core contributors that may use this capability include support for Schnorr signatures, which can improve the privacy and efficiency of multisig transactions (or transactions with multiple inputs), and Merkelized Abstract Syntax Trees (MAST), which can improve the privacy and efficiency of scripts with two or more conditions. Other Litecoin community members are studying several other improvements that can be made using script versioning.

Null dummy soft fork

Also in Litecoin Core 0.13.2 and combined with the segwit soft fork is an additional change that turns a long-existing network relay policy into a consensus rule. The OP_CHECKMULTISIG and OP_CHECKMULTISIGVERIFY opcodes consume an extra stack element (“dummy element”) after signature validation. The dummy element is not inspected in any manner, and could be replaced by any value without invalidating the script.
Because any value can be used for this dummy element, it’s possible for a third-party to insert data into other people’s transactions, changing the transaction’s txid (called transaction malleability) and possibly causing other problems.
Since Litecoin Core 0.10.0, nodes have defaulted to only relaying and mining transactions whose dummy element was a null value (0x00, also called OP_0). The null dummy soft fork turns this relay rule into a consensus rule both for non-segwit transactions and segwit transactions, so that this method of mutating transactions is permanently eliminated from the network.
Signaling for the null dummy soft fork is done by signaling support for segwit, and the null dummy soft fork will activate at the same time as segwit.
For more information, please see BIP147.

Download Binaries

To download, please visit the download page or you can browse the download folder here.


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).


WARNING
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.


Bug Reporting



Submit any issues you encounter here and one of the Litecoin developers will assist you.


Mailing Lists



Sign up for announcements only or development discussion.

Conclusion

Litecoin Core 0.13.2 is the only soft fork release planned for the 0.13 release series. The next major planned release is Litecoin Core 0.14.0, which has feature freeze scheduled for summer 2017 and release to follow after all testing is completed (this typically takes more than a month in order to give everyone sufficient time to test).

Hashes for verification

These are the SHA-256 hashes of the released files:

f7895a5dcf6a148a8e94dfa8237697182b6520bfad4e0f47d3a8e4b4817d3913 litecoin-0.13.2-aarch64-linux-gnu.tar.gz d527eed106c65ffdfa9a71795361a73e9c132cdf17d8a395213acf93d28f9dba litecoin-0.13.2-arm-linux-gnueabihf.tar.gz b96830643e8df764c6569249fa860bc5ecefcfac312530e1bb79d367e74e88a7 litecoin-0.13.2-i686-pc-linux-gnu.tar.gz ae13cb967ff65dcfbbb00cce3ff7be9593179a313280772e30cc0af0bb361340 litecoin-0.13.2-osx64.tar.gz 958d821d27273fa0d1544c09ee3c0299649f0dce99fe4422cc5420c5144056c7 litecoin-0.13.2-win32-setup.exe a64d7b7ee53f89483eb92ebbb3a752b2f520881ed9d2110b01cc50fe6641600e litecoin-0.13.2-win32.zip d3b1628f12050582480f13d232ffe5b62caae9d4d7ac42c1559b706a50884818 litecoin-0.13.2-win64-setup.exe e1b95bea3f42ca46a3d8dcf6af97ca08589402bc654bdb54e02a1e909bfbfe10 litecoin-0.13.2-win64.zip 63c82a4d0d526b1d058c74e7da12186ae47dd86616ce95b195263e1fda2ee230 litecoin-0.13.2-x86_64-linux-gnu.tar.gz fdd354ddd4dc98c88b4c6c3b341c2b48497c9220926d670658155b5b040a46bd litecoin-0.13.2.tar.gz 5a86edc58c9bbc0ee059e933e5b94470f168caa76557bc8f255b35d3c8530954 litecoin-osx-signed.dmg

Tuesday, December 22, 2015

Litecoin Core v0.10.4.0

Follow the Google+ page or Twitter for the latest dev news.

Summary
This release of Litecoin Core is an important update, featuring the BIP65 (CLTV) consensus change and bug fixes. The most notable changes are outlined below.

BIP65 soft fork to enforce OP_CHECKLOCKTIMEVERIFY opcode
This release includes several changes related to the BIP65 soft fork which redefines the existing OP_NOP2 opcode as OP_CHECKLOCKTIMEVERIFY (CLTV) so that a transaction output can be made unspendable until a specified point in the future. This change paves the way for many new exciting features such as payment channels, time-locked refunds, escrow, two-factor wallets and is a major requirement for technologies like the lightning network.

  • This release will only relay and mine transactions spending a CLTV output if they comply with the BIP65 rules as provided in code.
  • This release will produce version 4 blocks by default. Please see the notice to miners below.
  • Once 951 out of a sequence of 1,001 blocks on the local node's best block chain contain version 4 (or higher) blocks, this release will no longer accept new version 3 blocks and it will only accept version 4 blocks if they comply with the BIP65 rules for CLTV.

For a detailed explanation about BIP65, you can view the documentation here.

Notice to miners: 
Litecoin Core’s block templates are now for version 4 blocks only, and any mining software relying on its getblocktemplate must be updated in parallel to use libblkmaker either version v0.4.3 or any version from v0.5.2 onward.

  • If you are solo mining, this will affect you the moment you upgrade Litecoin Core, which must be done prior to BIP65 achieving its 951/1001 status.
  • If you are a P2Pool user, you must upgrade to the latest version which can be obtained from here.
  • If you are mining with the stratum mining protocol: this does not affect you.
  • If you are mining with the getblocktemplate protocol to a pool: this will affect you at the pool operator’s discretion, which must be no later than BIP65 achieving its 951/1001 status.

You can track the progress of the soft fork roll out via this link:
http://www.litecoinblockhalf.com/blocks.php

Windows bug fix for corrupted UTXO database on unclean shutdowns
Several Windows users reported that they often need to reindex the entire blockchain after an unclean shutdown of Litecoin Core on Windows (or an unclean shutdown of Windows itself). Although unclean shutdowns remain unsafe, this release no longer relies on memory-mapped files for the UTXO database, which significantly reduced the frequency of unclean shutdowns leading to required reindexes during testing.

IMPORTANT
All users using versions older then Litecoin Core 0.10.2.2 MUST upgrade to ensure that your signatures are encoded using 'low-s' ECDSA signature encoding scheme. Otherwise you run the risk of your transactions not being relayed once all miners upgrade. 

If you use Electrum, a release candidate version has also been released which ensures all transactions abide by the 'low-s' ECDSA encoding scheme. The release candidate version for Electrum can be found here.

If you use the Litecoin Android wallet, and are running an older version then 3.30.10. You will need to upgrade to 3.30.10 which can be found here.

For a complete list of Litecoin Core specific changes, you can view the release notes here.
For a complete list of Bitcoin Core specific changes, you can view the release notes here.


WARNING
Despite this version being heavily tested, this version may contain bugs.  Always back up your wallet.dat file before upgrading. If you encounter any issues, please let us know by posting to the bug reporting section below.


Download Binaries
https://dev.litecoin.org/

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.

Source
https://github.com/litecoin-project/litecoin/commits/master-0.10
The master-0.10 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.

Bug Reporting
https://github.com/litecoin-project/litecoin

Mailing Lists
https://groups.google.com/forum/#!forum/litecoin-announce
https://groups.google.com/forum/#!forum/litecoin-dev
Sign up for announcements only or development discussion.


Discuss Litecoin 0.10.4.0 in this forum thread.

Thursday, June 18, 2015

Litecoin v0.10.2.2

Follow the Google+ page or Twitter for the latest dev news.

Version 0.10.2.2 is the official release version of Litecoin Core. On top of the new features, this update contains very important security fixes and all users MUST upgrade to this version as soon as possible as details on several vulnerabilities will be made public on July 7th (Official Bitcoin warning). Pool operators, P2Pool and solo miners especially, as once BIP 66 is enforced, version 2 blocks will be rejected from the network entirely. P2Pool miners must upgrade to the latest version which can be obtained from here.

What's New in version v0.10?
This is a major release of Litecoin Core, featuring the technical equivalent of Bitcoin v0.10.2 but with Litecoin specific patches. On a general level, most of what is new is is hidden where block synchronization and various internals are considerably faster and more efficient, and it has several major privacy improvements.  The most significant changes include:


  • Watch-only wallet support. This allows the wallet to track transactions to and form wallets for which you know the address of but do not have the private key to.
  • Faster blockchain synchronization due to headers-first synchronization and support for downloading blocks in parallel. Downloading the blockchain is now much quicker and can be completed within a few hours instead of taking days for some users.
  • A REST interface which allows unauthenticated access to public node data when the -rest flag is specified.
  • RPC Server “Warm-Up” Mode which starts earlier than previous versions. This helps users or services relying on it know that the server has already started and will be available soon.
  • Improved signing security. This is due to using the libsecp256k1 library for signing instead of OpenSSL. libsecp256k1 is a cryptographic library optimized for elliptic curve uses which Litecoin relies on and was created by Bitcoin Core developer Pieter Wuille. Featuring better security, via hardening against timing leaks and derandomization, this library is believed to be better tested and more thoroughly reviewed than the implementation in OpenSSL.
  • New utility applications including litecoin-tx for transaction related functionality and litecoin-cli for RPC command line functionality as litecoind no longer accepts them.
  • Strict DER encoding for signatures (BIP 66). This introduces block version 3 and a new consensus rule which prevents non-standard transactions from being included in blocks. This also removes the dependency on OpenSSL’s signature parsing. Eventually, libsecp256k1 will be used for all consensus related tasks, depreciating the need for OpenSSL entirely.
  • RPC Access Changes. RPC access now supports binary network addresses. This means that you can specify a single IP address, a CIDR network address or a netmask for accessing the RPC service. Please note, wildcard string matching no longer works and will display an error in the debug.log file when you attempt to use a wildcard string in the rpcallowip= variable, either as a config setting or launch parameter. For some examples on what has changed, please click here.

The major user-visible features that were new in Bitcoin v0.9 and v0.10 are not actually new for Litecoin v0.10 because we backported it to Litecoin v0.8 (like Coin Control).

For a complete list of Litecoin Core specific changes, you can view the release notes here.
For a complete list of Bitcoin Core specific changes, you can view the release notes here.

What’s New in version v0.10.2.2?
Litecoin v0.10.2.2 is a minor release from the previous release candidate, featuring improvements and bug fixes. The changes can be seen below:


  • Added option -alerts’ to opt out of the network alert system. Please note that disabling network alerts should only be used by power users as this system is used for network emergencies and important security releases. The default behavior is that network alerts are enabled.
  • Detect and reject LibreSSL. This prevents a non-approved SSL library being used for compiling Litecoin Core, preventing potential consensus compatibility issues.
  • Improved getbalance RPC functionality to allow the user to display zero confirmation transactions (this works with watch-only addresses as well).
  • PID file bug fix for non-Windows based systems.
  • Bug fix for signing and verifying messages.


New GPG Signing Process
To enhance the security of Litecoin Core releases, we have changed the GPG signing procedure and opted for one of the Litecoin development team members to individually sign the release binaries.

Prior to this, we used a team signing key. The problem with this is that if the key were to be compromised, we would not be able to identify the member of who it was obtained from. Switching to this new procedure allows us to pinpoint the leak, revoke the individual key and leads to further decentralization of the build process.

As with any release, 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 the v0.10.2.2 release, the binaries have been signed with key identifier FE3348877809386C.

Download Binaries
Binaries for Litecoin can be located at https://dev.litecoin.org covering all major operating systems. Litecoin Core 64bit versions are now also available.

Source
The master-0.10 branch contains the latest commits to the next stable releases of Litecoin Core.

Bug Reporting
Updates
Updates will be placed here as needed.

Mailing Lists
Sign up for announcements only or development discussion.

WARNING
While this branch has been extensively tested to be compatible with the existing Litecoin 0.8 network there is the possibility that we missed something.  BACKUP YOUR LITECOIN DATADIR and wallet.dat because after you run v0.10 the old v0.8 version is no longer compatible with your on-disk data.

Discuss
For v0.10.2.2 discussion, please visit the forum thread here.