Integrate Bitcoin changes 0.13.0
Motivation
During the last 3 years, many useful changes and improvements have been made to Bitcoin source code. The current version of Bitcoin is 0.16.2, Crown is on 0.10.
-
Refactoring of different Bitcoin modules (decomposition etc.)
-
Moving from BOOST to C++ 11/14 features
-
Other functional changes
Integration analysis
0.13.0 https://bitcoin.org/en/release/v0.13.0
Major version release, including new features, various bugfixes and performance improvements, as well as updated translations.
-
End support of Microsoft XP.
-
Database cache memory increased. As a result of growth of the UTXO set, performance with the prior default database cache of 100 MiB has suffered. For this reason the default was changed to 300 MiB in this release. It should be set to be 100 MiB be default since Crown UTXO set is not that big.
-
bitcoin-cli: arguments privacy. The RPC command line client gained a new argument, -stdin to read extra arguments from standard input. It is recommended to use this for sensitive information such as wallet passphrases, as command-line arguments can usually be read from the process table by any user on the system.
-
C++11 and Python 3. Various code modernizations have been done. The Bitcoin Core code base has started using C++11. For running the functional tests in qa/rpc-tests, Python3.4 or higher is now required.
-
Linux ARM builds have been added to the uploaded executables.
-
BIP152. Support for block relay using the Compact Blocks protocol has been implemented.
-
Hierarchical Deterministic Key Generation. BIP32.
-
Segregated Witness.
-
Improves scalability (moves signatures to the side-chain). It's not necessary for Crown at this moment because there is no problem with the transactions speed processing atm, but can make Crown more scalable. At the same time, if we implement the "3rd way" it might become useless.
-
Side-chain usage though enables using off-chain protocols which is interesting in many ways, including Lighting Network. But side-chains can be implemented to fit our own purposes and don't have to be copied from Bitcoin.
-
Fix of transaction malleability. SegWit fixes this issue completely by removing signatures from the main chain. Though there are some fixes transaction malleability in Bitcoin's previous versions which might be enough without SegWit now.
-
-
Mining transaction selection (“Child Pays For Parent”). Partially implemented using SegWit.
-
Reindexing changes. In earlier versions, reindexing did validation while reading through the block files on disk. These two have now been split up, so that all blocks are known before validation starts. This was necessary to make certain optimizations that are available during normal synchronizations also available during reindexing.
-
Removal of internal miner. As CPU mining has been useless for a long time, the internal miner has been removed in this release and replaced with a simpler implementation for the test framework.
setgenerate
RPC call has been removed, as well as thegen
andgenproclimit
command-line options. A new RPC callgeneratetoaddress
has been added to mine to a specific address. -
New bytespersigop implementation
-
Low-level P2P changes
-
Low-level RPC changes
-
Low-level ZMQ changes