Update docs from Bitcoin Core 0.13.2
@@ -28,13 +28,13 @@ DOXYFILE_ENCODING = UTF-8
|
||||
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
|
||||
# by quotes) that should identify the project.
|
||||
|
||||
PROJECT_NAME = Blackcoin More
|
||||
PROJECT_NAME = "Bitcoin Core"
|
||||
|
||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = 2.12.2
|
||||
PROJECT_NUMBER = 0.13.2
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Bitcoin Core 0.12.1
|
||||
Bitcoin Core 0.13.2
|
||||
=====================
|
||||
|
||||
Setup
|
||||
@@ -57,6 +57,7 @@ The Bitcoin repo's [root README](/README.md) contains relevant information on th
|
||||
- [Shared Libraries](shared-libraries.md)
|
||||
- [BIPS](bips.md)
|
||||
- [Dnsseed Policy](dnsseed-policy.md)
|
||||
- [Benchmarking](benchmarking.md)
|
||||
|
||||
### Resources
|
||||
* Discuss on the [BitcoinTalk](https://bitcointalk.org/) forums, in the [Development & Technical Discussion board](https://bitcointalk.org/index.php?board=6.0).
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
Deterministic OS X Dmg Notes.
|
||||
|
||||
Working OS X DMGs are created in Linux by combining a recent clang,
|
||||
the Apple's binutils (ld, ar, etc), and DMG authoring tools.
|
||||
the Apple binutils (ld, ar, etc) and DMG authoring tools.
|
||||
|
||||
Apple uses clang extensively for development and has upstreamed the necessary
|
||||
functionality so that a vanilla clang can take advantage. It supports the use
|
||||
of -F, -target, -mmacosx-version-min, and --sysroot, which are all necessary
|
||||
when building for OS X. A pre-compiled version of 3.2 is used because it was not
|
||||
available in the Precise repositories at the time this work was started. In the
|
||||
future, it can be switched to use system packages instead.
|
||||
when building for OS X.
|
||||
|
||||
Apple's version of binutils (called cctools) contains lots of functionality
|
||||
missing in the FSF's binutils. In addition to extra linker options for
|
||||
frameworks and sysroots, several other tools are needed as well such as
|
||||
install_name_tool, lipo, and nmedit. These do not build under linux, so they
|
||||
have been patched to do so. The work here was used as a starting point:
|
||||
https://github.com/mingwandroid/toolchain4
|
||||
[mingwandroid/toolchain4](https://github.com/mingwandroid/toolchain4).
|
||||
|
||||
In order to build a working toolchain, the following source packages are needed
|
||||
from Apple: cctools, dyld, and ld64.
|
||||
@@ -24,21 +22,24 @@ These tools inject timestamps by default, which produce non-deterministic
|
||||
binaries. The ZERO_AR_DATE environment variable is used to disable that.
|
||||
|
||||
This version of cctools has been patched to use the current version of clang's
|
||||
headers and and its libLTO.so rather than those from llvmgcc, as it was
|
||||
headers and its libLTO.so rather than those from llvmgcc, as it was
|
||||
originally done in toolchain4.
|
||||
|
||||
To complicate things further, all builds must target an Apple SDK. These SDKs
|
||||
are free to download, but not redistributable.
|
||||
To obtain it, register for a developer account, then download the Xcode 6.1.1 dmg:
|
||||
https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_6.1.1/xcode_6.1.1.dmg
|
||||
To obtain it, register for a developer account, then download the [Xcode 7.3.1 dmg](https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg).
|
||||
|
||||
This file is several gigabytes in size, but only a single directory inside is
|
||||
needed: Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
|
||||
needed:
|
||||
```
|
||||
Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
|
||||
```
|
||||
|
||||
Unfortunately, the usual linux tools (7zip, hpmount, loopback mount) are incapable of opening this file.
|
||||
To create a tarball suitable for Gitian input, mount the dmg in OS X, then create it with:
|
||||
$ tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.9.sdk.tar.gz MacOSX10.9.sdk
|
||||
|
||||
```
|
||||
$ tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.11.sdk.tar.gz MacOSX10.11.sdk
|
||||
```
|
||||
|
||||
The Gitian descriptors build 2 sets of files: Linux tools, then Apple binaries
|
||||
which are created using these tools. The build process has been designed to
|
||||
@@ -48,15 +49,14 @@ fully deterministic and may be freely redistributed.
|
||||
genisoimage is used to create the initial DMG. It is not deterministic as-is,
|
||||
so it has been patched. A system genisoimage will work fine, but it will not
|
||||
be deterministic because the file-order will change between invocations.
|
||||
The patch can be seen here:
|
||||
https://raw.githubusercontent.com/theuni/osx-cross-depends/master/patches/cdrtools/genisoimage.diff
|
||||
The patch can be seen here: [theuni/osx-cross-depends](https://raw.githubusercontent.com/theuni/osx-cross-depends/master/patches/cdrtools/genisoimage.diff).
|
||||
No effort was made to fix this cleanly, so it likely leaks memory badly. But
|
||||
it's only used for a single invocation, so that's no real concern.
|
||||
|
||||
genisoimage cannot compress DMGs, so afterwards, the 'dmg' tool from the
|
||||
libdmg-hfsplus project is used to compress it. There are several bugs in this
|
||||
tool and its maintainer has seemingly abandoned the project. It has been forked
|
||||
and is available (with fixes) here: https://github.com/theuni/libdmg-hfsplus .
|
||||
and is available (with fixes) here: [theuni/libdmg-hfsplus](https://github.com/theuni/libdmg-hfsplus).
|
||||
|
||||
The 'dmg' tool has the ability to create DMGs from scratch as well, but this
|
||||
functionality is broken. Only the compression feature is currently used.
|
||||
@@ -77,6 +77,6 @@ build process to remain somewhat deterministic. Here's how it works:
|
||||
that have been previously (deterministically) built in order to create a
|
||||
final dmg.
|
||||
- The Apple keyholder uses this unsigned app to create a detached signature,
|
||||
using the script that is also included there.
|
||||
using the script that is also included there. Detached signatures are available from this [repository](https://github.com/bitcoin-core/bitcoin-detached-sigs).
|
||||
- Builders feed the unsigned app + detached signature back into Gitian. It
|
||||
uses the pre-built tools to recombine the pieces into a deterministic dmg.
|
||||
@@ -1,4 +1,4 @@
|
||||
Bitcoin Core 0.12.1
|
||||
Bitcoin Core 0.13.2
|
||||
=====================
|
||||
|
||||
Intro
|
||||
|
||||
30
doc/benchmarking.md
Normal file
@@ -0,0 +1,30 @@
|
||||
Benchmarking
|
||||
============
|
||||
|
||||
Bitcoin Core has an internal benchmarking framework, with benchmarks
|
||||
for cryptographic algorithms such as SHA1, SHA256, SHA512 and RIPEMD160. As well as the rolling bloom filter.
|
||||
|
||||
After compiling bitcoin-core, the benchmarks can be run with:
|
||||
`src/bench/bench_bitcoin`
|
||||
|
||||
The output will look similar to:
|
||||
```
|
||||
#Benchmark,count,min,max,average
|
||||
RIPEMD160,448,0.001245033173334,0.002638196945190,0.002461894814457
|
||||
RollingBloom-refresh,1,0.000635000000000,0.000635000000000,0.000635000000000
|
||||
RollingBloom-refresh,1,0.000108000000000,0.000108000000000,0.000108000000000
|
||||
RollingBloom-refresh,1,0.000107000000000,0.000107000000000,0.000107000000000
|
||||
RollingBloom-refresh,1,0.000204000000000,0.000204000000000,0.000204000000000
|
||||
SHA1,640,0.000909024336207,0.001938136418660,0.001843086257577
|
||||
SHA256,256,0.002209486499909,0.008500099182129,0.004300644621253
|
||||
SHA512,384,0.001319904176016,0.002813005447388,0.002615700786312
|
||||
Sleep100ms,10,0.205592155456543,0.210056066513062,0.104166316986084
|
||||
Trig,67108864,0.000000014997003,0.000000015448112,0.000000015188842
|
||||
```
|
||||
|
||||
More benchmarks are needed for, in no particular order:
|
||||
- Script Validation
|
||||
- CCoinDBView caching
|
||||
- Coins database
|
||||
- Memory pool
|
||||
- Wallet coin selection
|
||||
13
doc/bips.md
@@ -1,5 +1,6 @@
|
||||
BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.12.0**):
|
||||
BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.13.0**):
|
||||
|
||||
* [`BIP 9`](https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki): The changes allowing multiple soft-forks to be deployed in parallel have been implemented since **v0.12.1** ([PR #7575](https://github.com/bitcoin/bitcoin/pull/7575))
|
||||
* [`BIP 11`](https://github.com/bitcoin/bips/blob/master/bip-0011.mediawiki): Multisig outputs are standard since **v0.6.0** ([PR #669](https://github.com/bitcoin/bitcoin/pull/669)).
|
||||
* [`BIP 13`](https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki): The address format for P2SH addresses has been implemented since **v0.6.0** ([PR #669](https://github.com/bitcoin/bitcoin/pull/669)).
|
||||
* [`BIP 14`](https://github.com/bitcoin/bips/blob/master/bip-0014.mediawiki): The subversion string is being used as User Agent since **v0.6.0** ([PR #669](https://github.com/bitcoin/bitcoin/pull/669)).
|
||||
@@ -9,6 +10,7 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.12.0**):
|
||||
* [`BIP 23`](https://github.com/bitcoin/bips/blob/master/bip-0023.mediawiki): Some extensions to GBT have been implemented since **v0.10.0rc1**, including longpolling and block proposals ([PR #1816](https://github.com/bitcoin/bitcoin/pull/1816)).
|
||||
* [`BIP 30`](https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki): The evaluation rules to forbid creating new transactions with the same txid as previous not-fully-spent transactions were implemented since **v0.6.0**, and the rule took effect on *March 15th 2012* ([PR #915](https://github.com/bitcoin/bitcoin/pull/915)).
|
||||
* [`BIP 31`](https://github.com/bitcoin/bips/blob/master/bip-0031.mediawiki): The 'pong' protocol message (and the protocol version bump to 60001) has been implemented since **v0.6.1** ([PR #1081](https://github.com/bitcoin/bitcoin/pull/1081)).
|
||||
* [`BIP 32`](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki): Hierarchical Deterministic Wallets has been implemented since **v0.13.0** ([PR #8035](https://github.com/bitcoin/bitcoin/pull/8035)).
|
||||
* [`BIP 34`](https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki): The rule that requires blocks to contain their height (number) in the coinbase input, and the introduction of version 2 blocks has been implemented since **v0.7.0**. The rule took effect for version 2 blocks as of *block 224413* (March 5th 2013), and version 1 blocks are no longer allowed since *block 227931* (March 25th 2013) ([PR #1526](https://github.com/bitcoin/bitcoin/pull/1526)).
|
||||
* [`BIP 35`](https://github.com/bitcoin/bips/blob/master/bip-0035.mediawiki): The 'mempool' protocol message (and the protocol version bump to 60002) has been implemented since **v0.7.0** ([PR #1641](https://github.com/bitcoin/bitcoin/pull/1641)).
|
||||
* [`BIP 37`](https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki): The bloom filtering for transaction relaying, partial merkle trees for blocks, and the protocol version bump to 70001 (enabling low-bandwidth SPV clients) has been implemented since **v0.8.0** ([PR #1795](https://github.com/bitcoin/bitcoin/pull/1795)).
|
||||
@@ -16,8 +18,17 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.12.0**):
|
||||
* [`BIP 61`](https://github.com/bitcoin/bips/blob/master/bip-0061.mediawiki): The 'reject' protocol message (and the protocol version bump to 70002) was added in **v0.9.0** ([PR #3185](https://github.com/bitcoin/bitcoin/pull/3185)).
|
||||
* [`BIP 65`](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki): The CHECKLOCKTIMEVERIFY softfork was merged in **v0.12.0** ([PR #6351](https://github.com/bitcoin/bitcoin/pull/6351)), and backported to **v0.11.2** and **v0.10.4**. Mempool-only CLTV was added in [PR #6124](https://github.com/bitcoin/bitcoin/pull/6124).
|
||||
* [`BIP 66`](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki): The strict DER rules and associated version 3 blocks have been implemented since **v0.10.0** ([PR #5713](https://github.com/bitcoin/bitcoin/pull/5713)).
|
||||
* [`BIP 68`](https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki): Sequence locks have been implemented as of **v0.12.1** ([PR #7184](https://github.com/bitcoin/bitcoin/pull/7184)), and have been activated since *block 419328*.
|
||||
* [`BIP 70`](https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki) [`71`](https://github.com/bitcoin/bips/blob/master/bip-0071.mediawiki) [`72`](https://github.com/bitcoin/bips/blob/master/bip-0072.mediawiki): Payment Protocol support has been available in Bitcoin Core GUI since **v0.9.0** ([PR #5216](https://github.com/bitcoin/bitcoin/pull/5216)).
|
||||
* [`BIP 111`](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki): `NODE_BLOOM` service bit added, and enforced for all peer versions as of **v0.13.0** ([PR #6579](https://github.com/bitcoin/bitcoin/pull/6579) and [PR #6641](https://github.com/bitcoin/bitcoin/pull/6641)).
|
||||
* [`BIP 112`](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki): The CHECKSEQUENCEVERIFY opcode has been implemented since **v0.12.1** ([PR #7524](https://github.com/bitcoin/bitcoin/pull/7524)) and has been activated since *block 419328*.
|
||||
* [`BIP 113`](https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki): Median time past lock-time calculations have been implemented since **v0.12.1** ([PR #6566](https://github.com/bitcoin/bitcoin/pull/6566)) and have been activated since *block 419328*.
|
||||
* [`BIP 125`](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki): Opt-in full replace-by-fee signaling honoured in mempool and mining as of **v0.12.0** ([PR 6871](https://github.com/bitcoin/bitcoin/pull/6871)).
|
||||
* [`BIP 130`](https://github.com/bitcoin/bips/blob/master/bip-0130.mediawiki): direct headers announcement is negotiated with peer versions `>=70012` as of **v0.12.0** ([PR 6494](https://github.com/bitcoin/bitcoin/pull/6494)).
|
||||
* [`BIP 133`](https://github.com/bitcoin/bips/blob/master/bip-0133.mediawiki): feefilter messages are respected and sent for peer versions `>=70013` as of **v0.13.0** ([PR 7542](https://github.com/bitcoin/bitcoin/pull/7542)).
|
||||
* [`BIP 141`](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki): Segregated Witness (Consensus Layer) as of **v0.13.0** ([PR 8149](https://github.com/bitcoin/bitcoin/pull/8149)), and defined for mainnet as of **v0.13.1** ([PR 8937](https://github.com/bitcoin/bitcoin/pull/8937)).
|
||||
* [`BIP 143`](https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki): Transaction Signature Verification for Version 0 Witness Program as of **v0.13.0** ([PR 8149](https://github.com/bitcoin/bitcoin/pull/8149)) and defined for mainnet as of **v0.13.1** ([PR 8937](https://github.com/bitcoin/bitcoin/pull/8937)).
|
||||
* [`BIP 144`](https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki): Segregated Witness as of **0.13.0** ([PR 8149](https://github.com/bitcoin/bitcoin/pull/8149)).
|
||||
* [`BIP 145`](https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki): getblocktemplate updates for Segregated Witness as of **v0.13.0** ([PR 8149](https://github.com/bitcoin/bitcoin/pull/8149)).
|
||||
* [`BIP 147`](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki): NULLDUMMY softfork as of **v0.13.1** ([PR 8636](https://github.com/bitcoin/bitcoin/pull/8636) and [PR 8937](https://github.com/bitcoin/bitcoin/pull/8937)).
|
||||
* [`BIP 152`](https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki): Compact block transfer and related optimizations are used as of **v0.13.0** ([PR 8068](https://github.com/bitcoin/bitcoin/pull/8068)).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
OpenBSD build guide
|
||||
======================
|
||||
(updated for OpenBSD 5.7)
|
||||
(updated for OpenBSD 5.9)
|
||||
|
||||
This guide describes how to build bitcoind and command-line utilities on OpenBSD.
|
||||
|
||||
@@ -15,11 +15,10 @@ Run the following as root to install the base dependencies for building:
|
||||
pkg_add gmake libtool libevent
|
||||
pkg_add autoconf # (select highest version, e.g. 2.69)
|
||||
pkg_add automake # (select highest version, e.g. 1.15)
|
||||
pkg_add python # (select version 2.7.x, not 3.x)
|
||||
ln -sf /usr/local/bin/python2.7 /usr/local/bin/python2
|
||||
pkg_add python # (select highest version, e.g. 3.5)
|
||||
```
|
||||
|
||||
The default C++ compiler that comes with OpenBSD 5.7 is g++ 4.2. This version is old (from 2007), and is not able to compile the current version of Bitcoin Core. It is possible to patch it up to compile, but with the planned transition to C++11 this is a losing battle. So here we will be installing a newer compiler.
|
||||
The default C++ compiler that comes with OpenBSD 5.9 is g++ 4.2. This version is old (from 2007), and is not able to compile the current version of Bitcoin Core, primarily as it has no C++11 support, but even before there were issues. So here we will be installing a newer compiler.
|
||||
|
||||
GCC
|
||||
-------
|
||||
@@ -27,7 +26,7 @@ GCC
|
||||
You can install a newer version of gcc with:
|
||||
|
||||
```bash
|
||||
pkg_add g++ # (select newest 4.x version, e.g. 4.9.2)
|
||||
pkg_add g++ # (select newest 4.x version, e.g. 4.9.3)
|
||||
```
|
||||
|
||||
This compiler will not overwrite the system compiler, it will be installed as `egcc` and `eg++` in `/usr/local/bin`.
|
||||
@@ -49,18 +48,15 @@ BOOST_PREFIX="${BITCOIN_ROOT}/boost"
|
||||
mkdir -p $BOOST_PREFIX
|
||||
|
||||
# Fetch the source and verify that it is not tampered with
|
||||
wget http://heanet.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2
|
||||
echo '727a932322d94287b62abb1bd2d41723eec4356a7728909e38adb65ca25241ca boost_1_59_0.tar.bz2' | sha256 -c
|
||||
# MUST output: (SHA256) boost_1_59_0.tar.bz2: OK
|
||||
tar -xjf boost_1_59_0.tar.bz2
|
||||
curl -o boost_1_61_0.tar.bz2 http://heanet.dl.sourceforge.net/project/boost/boost/1.61.0/boost_1_61_0.tar.bz2
|
||||
echo 'a547bd06c2fd9a71ba1d169d9cf0339da7ebf4753849a8f7d6fdb8feee99b640 boost_1_61_0.tar.bz2' | sha256 -c
|
||||
# MUST output: (SHA256) boost_1_61_0.tar.bz2: OK
|
||||
tar -xjf boost_1_61_0.tar.bz2
|
||||
|
||||
# Boost 1.59 needs two small patches for OpenBSD
|
||||
cd boost_1_59_0
|
||||
# Boost 1.61 needs one small patch for OpenBSD
|
||||
cd boost_1_61_0
|
||||
# Also here: https://gist.githubusercontent.com/laanwj/bf359281dc319b8ff2e1/raw/92250de8404b97bb99d72ab898f4a8cb35ae1ea3/patch-boost_test_impl_execution_monitor_ipp.patch
|
||||
patch -p0 < /usr/ports/devel/boost/patches/patch-boost_test_impl_execution_monitor_ipp
|
||||
# https://github.com/boostorg/filesystem/commit/90517e459681790a091566dce27ca3acabf9a70c
|
||||
sed 's/__OPEN_BSD__/__OpenBSD__/g' < libs/filesystem/src/path.cpp > libs/filesystem/src/path.cpp.tmp
|
||||
mv libs/filesystem/src/path.cpp.tmp libs/filesystem/src/path.cpp
|
||||
|
||||
# Build w/ minimum configuration necessary for bitcoin
|
||||
echo 'using gcc : : eg++ : <cxxflags>"-fvisibility=hidden -fPIC" <linkflags>"" <archiver>"ar" <striper>"strip" <ranlib>"ranlib" <rc>"" : ;' > user-config.jam
|
||||
@@ -84,7 +80,7 @@ BDB_PREFIX="${BITCOIN_ROOT}/db4"
|
||||
mkdir -p $BDB_PREFIX
|
||||
|
||||
# Fetch the source and verify that it is not tampered with
|
||||
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
|
||||
curl -o db-4.8.30.NC.tar.gz 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
|
||||
echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256 -c
|
||||
# MUST output: (SHA256) db-4.8.30.NC.tar.gz: OK
|
||||
tar -xzf db-4.8.30.NC.tar.gz
|
||||
@@ -93,9 +89,25 @@ tar -xzf db-4.8.30.NC.tar.gz
|
||||
cd db-4.8.30.NC/build_unix/
|
||||
# Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
|
||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX CC=egcc CXX=eg++ CPP=ecpp
|
||||
make install
|
||||
make install # do NOT use -jX, this is broken
|
||||
```
|
||||
|
||||
### Resource limits
|
||||
|
||||
The standard ulimit restrictions in OpenBSD are very strict:
|
||||
|
||||
data(kbytes) 1572864
|
||||
|
||||
This is, unfortunately, no longer enough to compile some `.cpp` files in the project,
|
||||
at least with gcc 4.9.3 (see issue https://github.com/bitcoin/bitcoin/issues/6658).
|
||||
If your user is in the `staff` group the limit can be raised with:
|
||||
|
||||
ulimit -d 3000000
|
||||
|
||||
The change will only affect the current shell and processes spawned by it. To
|
||||
make the change system-wide, change `datasize-cur` and `datasize-max` in
|
||||
`/etc/login.conf`, and reboot.
|
||||
|
||||
### Building Bitcoin Core
|
||||
|
||||
**Important**: use `gmake`, not `make`. The non-GNU `make` will exit with a horrible error.
|
||||
@@ -123,7 +135,7 @@ To configure without wallet:
|
||||
|
||||
Build and run the tests:
|
||||
```bash
|
||||
gmake
|
||||
gmake # can use -jX here for parallelism
|
||||
gmake check
|
||||
```
|
||||
|
||||
|
||||
128
doc/build-osx.md
@@ -1,68 +1,80 @@
|
||||
Mac OS X Build Instructions and Notes
|
||||
====================================
|
||||
This guide will show you how to build bitcoind (headless client) for OS X.
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
* Tested on OS X 10.7 through 10.11 on 64-bit Intel processors only.
|
||||
|
||||
* All of the commands should be executed in a Terminal application. The
|
||||
built-in one is located in `/Applications/Utilities`.
|
||||
The commands in this guide should be executed in a Terminal application.
|
||||
The built-in one is located in `/Applications/Utilities/Terminal.app`.
|
||||
|
||||
Preparation
|
||||
-----------
|
||||
Install the OS X command line tools:
|
||||
|
||||
You need to install Xcode with all the options checked so that the compiler
|
||||
and everything is available in /usr not just /Developer. Xcode should be
|
||||
available on your OS X installation media, but if not, you can get the
|
||||
current version from https://developer.apple.com/xcode/. If you install
|
||||
Xcode 4.3 or later, you'll need to install its command line tools. This can
|
||||
be done in `Xcode > Preferences > Downloads > Components` and generally must
|
||||
be re-done or updated every time Xcode is updated.
|
||||
`xcode-select --install`
|
||||
|
||||
You will also need to install [Homebrew](http://brew.sh) in order to install library
|
||||
dependencies.
|
||||
When the popup appears, click `Install`.
|
||||
|
||||
The installation of the actual dependencies is covered in the instructions
|
||||
sections below.
|
||||
Then install [Homebrew](http://brew.sh).
|
||||
|
||||
Instructions: Homebrew
|
||||
Dependencies
|
||||
----------------------
|
||||
|
||||
#### Install dependencies using Homebrew
|
||||
brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config homebrew/versions/protobuf260 --c++11 qt5 libevent
|
||||
|
||||
brew install autoconf automake berkeley-db5 libtool boost miniupnpc openssl pkg-config protobuf qt5 libevent
|
||||
NOTE: Building with Qt4 is still supported, however, could result in a broken UI. Building with Qt5 is recommended.
|
||||
|
||||
NOTE: Building with Qt4 is still supported, however, could result in a broken UI. As such, building with Qt5 is recommended.
|
||||
Build Bitcoin Core
|
||||
------------------------
|
||||
|
||||
### Building `bitcoin`
|
||||
1. Clone the bitcoin source code and cd into `bitcoin`
|
||||
|
||||
1. Clone the GitHub tree to get the source code and go into the directory.
|
||||
|
||||
git clone https://github.com/bitcoin/bitcoin.git
|
||||
git clone https://github.com/bitcoin/bitcoin
|
||||
cd bitcoin
|
||||
|
||||
2. Build bitcoin-core:
|
||||
This will configure and build the headless bitcoin binaries as well as the gui (if Qt is found).
|
||||
You can disable the gui build by passing `--without-gui` to configure.
|
||||
|
||||
Configure and build the headless bitcoin binaries as well as the GUI (if Qt is found).
|
||||
|
||||
You can disable the GUI build by passing `--without-gui` to configure.
|
||||
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
|
||||
3. It is also a good idea to build and run the unit tests:
|
||||
3. It is recommended to build and run the unit tests:
|
||||
|
||||
make check
|
||||
|
||||
4. (Optional) You can also install bitcoind to your path:
|
||||
4. You can also create a .dmg that contains the .app bundle (optional):
|
||||
|
||||
make install
|
||||
make deploy
|
||||
|
||||
Use Qt Creator as IDE
|
||||
Running
|
||||
-------
|
||||
|
||||
Bitcoin Core is now available at `./src/bitcoind`
|
||||
|
||||
Before running, it's recommended you create an RPC configuration file.
|
||||
|
||||
echo -e "rpcuser=bitcoinrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
|
||||
|
||||
chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
|
||||
|
||||
The first time you run bitcoind, it will start downloading the blockchain. This process could take several hours.
|
||||
|
||||
You can monitor the download process by looking at the debug.log file:
|
||||
|
||||
tail -f $HOME/Library/Application\ Support/Bitcoin/debug.log
|
||||
|
||||
Other commands:
|
||||
-------
|
||||
|
||||
./src/bitcoind -daemon # Starts the bitcoin daemon.
|
||||
./src/bitcoin-cli --help # Outputs a list of command-line options.
|
||||
./src/bitcoin-cli help # Outputs a list of RPC commands when the daemon is running.
|
||||
|
||||
Using Qt Creator as IDE
|
||||
------------------------
|
||||
You can use Qt Creator as IDE, for debugging and for manipulating forms, etc.
|
||||
Download Qt Creator from https://www.qt.io/download/. Download the "community edition" and only install Qt Creator (uncheck the rest during the installation process).
|
||||
You can use Qt Creator as an IDE, for bitcoin development.
|
||||
Download and install the community edition of [Qt Creator](https://www.qt.io/download/).
|
||||
Uncheck everything except Qt Creator during the installation process.
|
||||
|
||||
1. Make sure you installed everything through Homebrew mentioned above
|
||||
2. Do a proper ./configure --enable-debug
|
||||
@@ -75,45 +87,9 @@ Download Qt Creator from https://www.qt.io/download/. Download the "community ed
|
||||
9. Select LLDB as debugger (you might need to set the path to your installation)
|
||||
10. Start debugging with Qt Creator
|
||||
|
||||
Creating a release build
|
||||
------------------------
|
||||
You can ignore this section if you are building `bitcoind` for your own use.
|
||||
Notes
|
||||
-----
|
||||
|
||||
bitcoind/bitcoin-cli binaries are not included in the Bitcoin-Qt.app bundle.
|
||||
* Tested on OS X 10.8 through 10.12 on 64-bit Intel processors only.
|
||||
|
||||
If you are building `bitcoind` or `Bitcoin Core` for others, your build machine should be set up
|
||||
as follows for maximum compatibility:
|
||||
|
||||
All dependencies should be compiled with these flags:
|
||||
|
||||
-mmacosx-version-min=10.7
|
||||
-arch x86_64
|
||||
-isysroot $(xcode-select --print-path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk
|
||||
|
||||
Once dependencies are compiled, see [doc/release-process.md](release-process.md) for how the Bitcoin Core
|
||||
bundle is packaged and signed to create the .dmg disk image that is distributed.
|
||||
|
||||
Running
|
||||
-------
|
||||
|
||||
It's now available at `./bitcoind`, provided that you are still in the `src`
|
||||
directory. We have to first create the RPC configuration file, though.
|
||||
|
||||
Run `./bitcoind` to get the filename where it should be put, or just try these
|
||||
commands:
|
||||
|
||||
echo -e "rpcuser=bitcoinrpc\nrpcpassword=$(xxd -l 16 -p /dev/urandom)" > "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
|
||||
chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
|
||||
|
||||
The next time you run it, it will start downloading the blockchain, but it won't
|
||||
output anything while it's doing this. This process may take several hours;
|
||||
you can monitor its process by looking at the debug.log file, like this:
|
||||
|
||||
tail -f $HOME/Library/Application\ Support/Bitcoin/debug.log
|
||||
|
||||
Other commands:
|
||||
-------
|
||||
|
||||
./bitcoind -daemon # to start the bitcoin daemon.
|
||||
./bitcoin-cli --help # for a list of command-line options.
|
||||
./bitcoin-cli help # When the daemon is running, to get a list of RPC commands
|
||||
* Building with downloaded Qt binaries is not officially supported. See the notes in [#7714](https://github.com/bitcoin/bitcoin/issues/7714)
|
||||
|
||||
@@ -7,11 +7,11 @@ Some notes on how to build Bitcoin Core in Unix.
|
||||
Note
|
||||
---------------------
|
||||
Always use absolute paths to configure and compile bitcoin and the dependencies,
|
||||
for example, when specifying the the path of the dependency:
|
||||
for example, when specifying the path of the dependency:
|
||||
|
||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
|
||||
|
||||
Here BDB_PREFIX must absolute path - it is defined using $(pwd) which ensures
|
||||
Here BDB_PREFIX must be an absolute path - it is defined using $(pwd) which ensures
|
||||
the usage of the absolute path.
|
||||
|
||||
To Build
|
||||
@@ -42,7 +42,7 @@ Optional dependencies:
|
||||
Library | Purpose | Description
|
||||
------------|------------------|----------------------
|
||||
miniupnpc | UPnP Support | Firewall-jumping support
|
||||
libdb | Berkeley DB | Wallet storage (only needed when wallet enabled)
|
||||
libdb4.8 | Berkeley DB | Wallet storage (only needed when wallet enabled)
|
||||
qt | GUI | GUI toolkit (only needed when GUI enabled)
|
||||
protobuf | Payments in GUI | Data interchange format used for payment protocol (only needed when GUI enabled)
|
||||
libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled)
|
||||
@@ -51,12 +51,15 @@ Optional dependencies:
|
||||
|
||||
For the versions used in the release, see [release-process.md](release-process.md) under *Fetch and build inputs*.
|
||||
|
||||
System requirements
|
||||
Memory Requirements
|
||||
--------------------
|
||||
|
||||
C++ compilers are memory-hungry. It is recommended to have at least 1 GB of
|
||||
memory available when compiling Bitcoin Core. With 512MB of memory or less
|
||||
compilation will take much longer due to swap thrashing.
|
||||
C++ compilers are memory-hungry. It is recommended to have at least 1.5 GB of
|
||||
memory available when compiling Bitcoin Core. On systems with less, gcc can be
|
||||
tuned to conserve memory with additional CXXFLAGS:
|
||||
|
||||
|
||||
./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768"
|
||||
|
||||
Dependency Build Instructions: Ubuntu & Debian
|
||||
----------------------------------------------
|
||||
@@ -64,26 +67,29 @@ Build requirements:
|
||||
|
||||
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils
|
||||
|
||||
On at least Ubuntu 14.04+ and Debian 7+ there are generic names for the
|
||||
Options when installing required Boost library files:
|
||||
|
||||
1. On at least Ubuntu 14.04+ and Debian 7+ there are generic names for the
|
||||
individual boost development packages, so the following can be used to only
|
||||
install necessary parts of boost:
|
||||
|
||||
sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev
|
||||
|
||||
If that doesn't work, you can install all boost development packages with:
|
||||
2. If that doesn't work, you can install all boost development packages with:
|
||||
|
||||
sudo apt-get install libboost-all-dev
|
||||
|
||||
BerkeleyDB is required for the wallet. db5.3 packages are available [here](https://launchpad.net/~bitcoin/+archive/bitcoin).
|
||||
BerkeleyDB is required for the wallet. db4.8 packages are available [here](https://launchpad.net/~bitcoin/+archive/bitcoin).
|
||||
You can add the repository and install using the following commands:
|
||||
|
||||
sudo apt-get install software-properties-common
|
||||
sudo add-apt-repository ppa:bitcoin/bitcoin
|
||||
sudo apt-get update
|
||||
sudo apt-get install libdb-dev libdb++-dev
|
||||
sudo apt-get install libdb4.8-dev libdb4.8++-dev
|
||||
|
||||
Ubuntu and Debian have their own libdb-dev and libdb++-dev packages, but these will install
|
||||
BerkeleyDB 5.3 or later, which break binary wallet compatibility with the distributed executables which
|
||||
are based on BerkeleyDB 5.3. If you do not care about wallet compatibility,
|
||||
BerkeleyDB 5.1 or later, which break binary wallet compatibility with the distributed executables which
|
||||
are based on BerkeleyDB 4.8. If you do not care about wallet compatibility,
|
||||
pass `--with-incompatible-bdb` to configure.
|
||||
|
||||
See the section "Disable-wallet mode" to build Bitcoin Core without wallet.
|
||||
@@ -119,6 +125,24 @@ libqrencode (optional) can be installed with:
|
||||
Once these are installed, they will be found by configure and a bitcoin-qt executable will be
|
||||
built by default.
|
||||
|
||||
Dependency Build Instructions: Fedora
|
||||
-------------------------------------
|
||||
Build requirements:
|
||||
|
||||
sudo dnf install gcc-c++ libtool make autoconf automake openssl-devel libevent-devel boost-devel libdb4-devel libdb4-cxx-devel
|
||||
|
||||
Optional:
|
||||
|
||||
sudo dnf install miniupnpc-devel
|
||||
|
||||
To build with Qt 5 (recommended) you need the following:
|
||||
|
||||
sudo dnf install qt5-qttools-devel qt5-qtbase-devel protobuf-devel
|
||||
|
||||
libqrencode (optional) can be installed with:
|
||||
|
||||
sudo dnf install qrencode-devel
|
||||
|
||||
Notes
|
||||
-----
|
||||
The release is built with GCC and then "strip bitcoind" to strip the debug
|
||||
@@ -149,13 +173,13 @@ BDB_PREFIX="${BITCOIN_ROOT}/db4"
|
||||
mkdir -p $BDB_PREFIX
|
||||
|
||||
# Fetch the source and verify that it is not tampered with
|
||||
wget 'http://download.oracle.com/berkeley-db/db-5.3.28.NC.tar.gz'
|
||||
echo '76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013ef db-5.3.28.NC.tar.gz' | sha256sum -c
|
||||
# -> db-5.2.28.NC.tar.gz: OK
|
||||
tar -xzvf db-5.3.28.NC.tar.gz
|
||||
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
|
||||
echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256sum -c
|
||||
# -> db-4.8.30.NC.tar.gz: OK
|
||||
tar -xzvf db-4.8.30.NC.tar.gz
|
||||
|
||||
# Build the library and install to our prefix
|
||||
cd db-5.3.28.NC/build_unix/
|
||||
cd db-4.8.30.NC/build_unix/
|
||||
# Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
|
||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
|
||||
make install
|
||||
@@ -233,7 +257,7 @@ disable-wallet mode with:
|
||||
|
||||
./configure --disable-wallet
|
||||
|
||||
In this case there is no dependency on Berkeley DB 5.3.
|
||||
In this case there is no dependency on Berkeley DB 4.8.
|
||||
|
||||
Mining is also possible in disable-wallet mode, but only using the `getblocktemplate` RPC
|
||||
call not `getwork`.
|
||||
@@ -244,15 +268,36 @@ A list of additional configure flags can be displayed with:
|
||||
|
||||
./configure --help
|
||||
|
||||
|
||||
Setup and Build Example: Arch Linux
|
||||
-----------------------------------
|
||||
This example lists the steps necessary to setup and build a command line only, non-wallet distribution of the latest changes on Arch Linux:
|
||||
|
||||
pacman -S git base-devel boost libevent python
|
||||
git clone https://github.com/bitcoin/bitcoin.git
|
||||
cd bitcoin/
|
||||
./autogen.sh
|
||||
./configure --disable-wallet --without-gui --without-miniupnpc
|
||||
make check
|
||||
|
||||
Note:
|
||||
Enabling wallet support requires either compiling against a Berkeley DB newer than 4.8 (package `db`) using `--with-incompatible-bdb`,
|
||||
or building and depending on a local version of Berkeley DB 4.8. The readily available Arch Linux packages are currently built using
|
||||
`--with-incompatible-bdb` according to the [PKGBUILD](https://projects.archlinux.org/svntogit/community.git/tree/bitcoin/trunk/PKGBUILD).
|
||||
As mentioned above, when maintaining portability of the wallet between the standard Bitcoin Core distributions and independently built
|
||||
node software is desired, Berkeley DB 4.8 must be used.
|
||||
|
||||
|
||||
ARM Cross-compilation
|
||||
-------------------
|
||||
These steps can be performed on, for example, an Ubuntu VM. The depends system
|
||||
will also work on other Linux distributions, however the commands for
|
||||
installing the toolchain will be different.
|
||||
|
||||
First install the toolchain:
|
||||
Make sure you install the build requirements mentioned above.
|
||||
Then, install the toolchain and curl:
|
||||
|
||||
sudo apt-get install g++-arm-linux-gnueabihf
|
||||
sudo apt-get install g++-arm-linux-gnueabihf curl
|
||||
|
||||
To build executables for ARM:
|
||||
|
||||
@@ -264,4 +309,3 @@ To build executables for ARM:
|
||||
|
||||
|
||||
For further documentation on the depends system see [README.md](../depends/README.md) in the depends directory.
|
||||
>>>>>>> 3e55b3a... [doc] added depends cross compile info
|
||||
|
||||
@@ -16,9 +16,11 @@ These steps can be performed on, for example, an Ubuntu VM. The depends system
|
||||
will also work on other Linux distributions, however the commands for
|
||||
installing the toolchain will be different.
|
||||
|
||||
First install the toolchains:
|
||||
Make sure you install the build requirements mentioned in
|
||||
[build-unix.md](/doc/build-unix.md).
|
||||
Then, install the toolchains and curl:
|
||||
|
||||
sudo apt-get install g++-mingw-w64-i686 mingw-w64-i686-dev g++-mingw-w64-x86-64 mingw-w64-x86-64-dev
|
||||
sudo apt-get install g++-mingw-w64-i686 mingw-w64-i686-dev g++-mingw-w64-x86-64 mingw-w64-x86-64-dev curl
|
||||
|
||||
To build executables for Windows 32-bit:
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@ Various coding styles have been used during the history of the codebase,
|
||||
and the result is not very consistent. However, we're now trying to converge to
|
||||
a single style, so please use it in new code. Old code will be converted
|
||||
gradually.
|
||||
- Basic rules specified in src/.clang-format. Use a recent clang-format-3.5 to format automatically.
|
||||
- Basic rules specified in [src/.clang-format](/src/.clang-format).
|
||||
Use a recent clang-format to format automatically using one of the [dev scripts]
|
||||
(/contrib/devtools/README.md#clang-formatpy).
|
||||
- Braces on new lines for namespaces, classes, functions, methods.
|
||||
- Braces on the same line for everything else.
|
||||
- 4 space indentation (no tabs) for every block except namespaces.
|
||||
@@ -263,7 +265,7 @@ General C++
|
||||
the `.h` to the `.cpp` should not result in build errors
|
||||
|
||||
- Use the RAII (Resource Acquisition Is Initialization) paradigm where possible. For example by using
|
||||
`scoped_pointer` for allocations in a function.
|
||||
`unique_ptr` for allocations in a function.
|
||||
|
||||
- *Rationale*: This avoids memory and resource leaks, and ensures exception safety
|
||||
|
||||
@@ -282,10 +284,9 @@ C++ data structures
|
||||
- *Rationale*: Behavior is undefined. In C++ parlor this means "may reformat
|
||||
the universe", in practice this has resulted in at least one hard-to-debug crash bug
|
||||
|
||||
- Watch out for vector out-of-bounds exceptions. `&vch[0]` is illegal for an
|
||||
empty vector, `&vch[vch.size()]` is always illegal. Use `begin_ptr(vch)` and
|
||||
`end_ptr(vch)` to get the begin and end pointer instead (defined in
|
||||
`serialize.h`)
|
||||
- Watch out for out-of-bounds vector access. `&vch[vch.size()]` is illegal,
|
||||
including `&vch[0]` for an empty vector. Use `vch.data()` and `vch.data() +
|
||||
vch.size()` instead.
|
||||
|
||||
- Vector bounds checking is only enabled in debug mode. Do not rely on it
|
||||
|
||||
@@ -379,3 +380,51 @@ GUI
|
||||
- *Rationale*: Model classes pass through events and data from the core, they
|
||||
should not interact with the user. That's where View classes come in. The converse also
|
||||
holds: try to not directly access core data structures from Views.
|
||||
|
||||
Git and github tips
|
||||
---------------------
|
||||
|
||||
- For resolving merge/rebase conflicts, it can be useful to enable diff3 style using
|
||||
`git config merge.conflictstyle diff3`. Instead of
|
||||
|
||||
<<<
|
||||
yours
|
||||
===
|
||||
theirs
|
||||
>>>
|
||||
|
||||
you will see
|
||||
|
||||
<<<
|
||||
yours
|
||||
|||
|
||||
original
|
||||
===
|
||||
theirs
|
||||
>>>
|
||||
|
||||
This may make it much clearer what caused the conflict. In this style, you can often just look
|
||||
at what changed between *original* and *theirs*, and mechanically apply that to *yours* (or the other way around).
|
||||
|
||||
- When reviewing patches which change indentation in C++ files, use `git diff -w` and `git show -w`. This makes
|
||||
the diff algorithm ignore whitespace changes. This feature is also available on github.com, by adding `?w=1`
|
||||
at the end of any URL which shows a diff.
|
||||
|
||||
- When reviewing patches that change symbol names in many places, use `git diff --word-diff`. This will instead
|
||||
of showing the patch as deleted/added *lines*, show deleted/added *words*.
|
||||
|
||||
- When reviewing patches that move code around, try using
|
||||
`git diff --patience commit~:old/file.cpp commit:new/file/name.cpp`, and ignoring everything except the
|
||||
moved body of code which should show up as neither `+` or `-` lines. In case it was not a pure move, this may
|
||||
even work when combined with the `-w` or `--word-diff` options described above.
|
||||
|
||||
- When looking at other's pull requests, it may make sense to add the following section to your `.git/config`
|
||||
file:
|
||||
|
||||
[remote "upstream-pull"]
|
||||
fetch = +refs/pull/*:refs/remotes/upstream-pull/*
|
||||
url = git@github.com:bitcoin/bitcoin.git
|
||||
|
||||
This will add an `upstream-pull` remote to your git repository, which can be fetched using `git fetch --all`
|
||||
or `git fetch upstream-pull`. Afterwards, you can use `upstream-pull/NUMBER/head` in arguments to `git show`,
|
||||
`git checkout` and anywhere a commit id would be acceptable to see the changes from pull request NUMBER.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Gitian building
|
||||
================
|
||||
|
||||
*Setup instructions for a Gitian build of Bitcoin using a Debian VM or physical system.*
|
||||
*Setup instructions for a Gitian build of Bitcoin Core using a Debian VM or physical system.*
|
||||
|
||||
Gitian is the deterministic build process that is used to build the Bitcoin
|
||||
Core executables. It provides a way to be reasonably sure that the
|
||||
@@ -26,7 +26,7 @@ Table of Contents
|
||||
- [Installing Gitian](#installing-gitian)
|
||||
- [Setting up the Gitian image](#setting-up-the-gitian-image)
|
||||
- [Getting and building the inputs](#getting-and-building-the-inputs)
|
||||
- [Building Bitcoin](#building-bitcoin)
|
||||
- [Building Bitcoin Core](#building-bitcoin-core)
|
||||
- [Building an alternative repository](#building-an-alternative-repository)
|
||||
- [Signing externally](#signing-externally)
|
||||
- [Uploading signatures](#uploading-signatures)
|
||||
@@ -47,7 +47,7 @@ You can also install Gitian on actual hardware instead of using virtualization.
|
||||
|
||||
Create a new VirtualBox VM
|
||||
---------------------------
|
||||
In the VirtualBox GUI click "Create" and choose the following parameters in the wizard:
|
||||
In the VirtualBox GUI click "New" and choose the following parameters in the wizard:
|
||||
|
||||

|
||||
|
||||
@@ -55,7 +55,7 @@ In the VirtualBox GUI click "Create" and choose the following parameters in the
|
||||
|
||||

|
||||
|
||||
- Memory Size: at least 1024MB, anything less will really slow down the build.
|
||||
- Memory Size: at least 3000MB, anything less and the build might not complete.
|
||||
|
||||

|
||||
|
||||
@@ -74,13 +74,6 @@ In the VirtualBox GUI click "Create" and choose the following parameters in the
|
||||
- File location and size: at least 40GB; as low as 20GB *may* be possible, but better to err on the safe side
|
||||
- Click `Create`
|
||||
|
||||
Get the [Debian 8.x net installer](http://cdimage.debian.org/debian-cd/8.3.0/amd64/iso-cd/debian-8.3.0-amd64-netinst.iso) (a more recent minor version should also work, see also [Debian Network installation](https://www.debian.org/CD/netinst/)).
|
||||
This DVD image can be validated using a SHA256 hashing tool, for example on
|
||||
Unixy OSes by entering the following in a terminal:
|
||||
|
||||
echo "dd25bcdde3c6ea5703cc0f313cde621b13d42ff7d252e2538a11663c93bf8654 debian-8.3.0-amd64-netinst.iso" | sha256sum -c
|
||||
# (must return OK)
|
||||
|
||||
After creating the VM, we need to configure it.
|
||||
|
||||
- Click the `Settings` button, then go to the `Network` tab. Adapter 1 should be attached to `NAT`.
|
||||
@@ -102,6 +95,13 @@ After creating the VM, we need to configure it.
|
||||
|
||||
- Click `Ok` twice to save.
|
||||
|
||||
Get the [Debian 8.x net installer](http://cdimage.debian.org/debian-cd/8.5.0/amd64/iso-cd/debian-8.5.0-amd64-netinst.iso) (a more recent minor version should also work, see also [Debian Network installation](https://www.debian.org/CD/netinst/)).
|
||||
This DVD image can be validated using a SHA256 hashing tool, for example on
|
||||
Unixy OSes by entering the following in a terminal:
|
||||
|
||||
echo "ad4e8c27c561ad8248d5ebc1d36eb172f884057bfeb2c22ead823f59fa8c3dff debian-8.5.0-amd64-netinst.iso" | sha256sum -c
|
||||
# (must return OK)
|
||||
|
||||
Then start the VM. On the first launch you will be asked for a CD or DVD image. Choose the downloaded iso.
|
||||
|
||||

|
||||
@@ -160,6 +160,10 @@ To select a different button, press `Tab`.
|
||||
|
||||

|
||||
|
||||
- Partition Disks -> *All files in one partition*
|
||||
|
||||

|
||||
|
||||
- Finish partitioning and write changes to disk -> *Yes* (`Tab`, `Enter` to select the `Yes` button)
|
||||
|
||||

|
||||
@@ -313,7 +317,7 @@ Setting up the Gitian image
|
||||
-------------------------
|
||||
|
||||
Gitian needs a virtual image of the operating system to build in.
|
||||
Currently this is Ubuntu Precise x86_64.
|
||||
Currently this is Ubuntu Trusty x86_64.
|
||||
This image will be copied and used every time that a build is started to
|
||||
make sure that the build is deterministic.
|
||||
Creating the image will take a while, but only has to be done once.
|
||||
@@ -333,15 +337,15 @@ Getting and building the inputs
|
||||
--------------------------------
|
||||
|
||||
Follow the instructions in [doc/release-process.md](release-process.md#fetch-and-build-inputs-first-time-or-when-dependency-versions-change)
|
||||
in the bitcoin repository under 'Fetch and build inputs' to install sources which require
|
||||
in the bitcoin repository under 'Fetch and create inputs' to install sources which require
|
||||
manual intervention. Also optionally follow the next step: 'Seed the Gitian sources cache
|
||||
and offline git repositories' which will fetch the remaining files required for building
|
||||
offline.
|
||||
|
||||
Building Bitcoin
|
||||
Building Bitcoin Core
|
||||
----------------
|
||||
|
||||
To build Bitcoin (for Linux, OS X and Windows) just follow the steps under 'perform
|
||||
To build Bitcoin Core (for Linux, OS X and Windows) just follow the steps under 'perform
|
||||
Gitian builds' in [doc/release-process.md](release-process.md#perform-gitian-builds) in the bitcoin repository.
|
||||
|
||||
This may take some time as it will build all the dependencies needed for each descriptor.
|
||||
@@ -363,7 +367,7 @@ Output from `gbuild` will look something like
|
||||
Resolving deltas: 100% (41590/41590), done.
|
||||
From https://github.com/bitcoin/bitcoin
|
||||
... (new tags, new branch etc)
|
||||
--- Building for precise amd64 ---
|
||||
--- Building for trusty amd64 ---
|
||||
Stopping target if it is up
|
||||
Making a new image copy
|
||||
stdin: is not a tty
|
||||
@@ -412,14 +416,14 @@ So, if you use LXC:
|
||||
export PATH="$PATH":/path/to/gitian-builder/libexec
|
||||
export USE_LXC=1
|
||||
cd /path/to/gitian-builder
|
||||
./libexec/make-clean-vm --suite precise --arch amd64
|
||||
./libexec/make-clean-vm --suite trusty --arch amd64
|
||||
|
||||
LXC_ARCH=amd64 LXC_SUITE=precise on-target -u root apt-get update
|
||||
LXC_ARCH=amd64 LXC_SUITE=precise on-target -u root \
|
||||
LXC_ARCH=amd64 LXC_SUITE=trusty on-target -u root apt-get update
|
||||
LXC_ARCH=amd64 LXC_SUITE=trusty on-target -u root \
|
||||
-e DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends -y install \
|
||||
$( sed -ne '/^packages:/,/[^-] .*/ {/^- .*/{s/"//g;s/- //;p}}' ../bitcoin/contrib/gitian-descriptors/*|sort|uniq )
|
||||
LXC_ARCH=amd64 LXC_SUITE=precise on-target -u root apt-get -q -y purge grub
|
||||
LXC_ARCH=amd64 LXC_SUITE=precise on-target -u root -e DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade
|
||||
LXC_ARCH=amd64 LXC_SUITE=trusty on-target -u root apt-get -q -y purge grub
|
||||
LXC_ARCH=amd64 LXC_SUITE=trusty on-target -u root -e DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade
|
||||
```
|
||||
|
||||
And then set offline mode for apt-cacher-ng:
|
||||
@@ -439,8 +443,8 @@ Then when building, override the remote URLs that gbuild would otherwise pull fr
|
||||
cd /some/root/path/
|
||||
git clone https://github.com/bitcoin-core/bitcoin-detached-sigs.git
|
||||
|
||||
BTCPATH=/some/root/path/bitcoin.git
|
||||
SIGPATH=/some/root/path/bitcoin-detached-sigs.git
|
||||
BTCPATH=/some/root/path/bitcoin
|
||||
SIGPATH=/some/root/path/bitcoin-detached-sigs
|
||||
|
||||
./bin/gbuild --url bitcoin=${BTCPATH},signature=${SIGPATH} ../bitcoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
||||
```
|
||||
|
||||
BIN
doc/gitian-building/all_files_in_one_partition.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 71 KiB |
@@ -1,47 +1,51 @@
|
||||
Bitcoin Core version 0.12.2 is now available from:
|
||||
Bitcoin Core version 0.13.x is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.12.2/>
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.13.x/>
|
||||
|
||||
This is a new minor version release, including ........,
|
||||
various bugfixes and updated translations.
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
<https://bitcoincore.org/en/list/announcements/join/>
|
||||
|
||||
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/Bitcoin-Qt (on Mac) or
|
||||
bitcoind/bitcoin-qt (on Linux).
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Downgrade warning
|
||||
-----------------
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
an OS initially released in 2001. This means that not even critical security
|
||||
updates will be released anymore. Without security updates, using a bitcoin
|
||||
wallet on a XP machine is irresponsible at least.
|
||||
|
||||
### Downgrade to a version < 0.12.0
|
||||
In addition to that, with 0.12.x there have been varied reports of Bitcoin Core
|
||||
randomly crashing on Windows XP. It is [not clear](https://github.com/bitcoin/bitcoin/issues/7681#issuecomment-217439891)
|
||||
what the source of these crashes is, but it is likely that upstream
|
||||
libraries such as Qt are no longer being tested on XP.
|
||||
|
||||
Because release 0.12.0 and later will obfuscate the chainstate on every
|
||||
fresh sync or reindex, the chainstate is not backwards-compatible with
|
||||
pre-0.12 versions of Bitcoin Core or other software.
|
||||
We do not have time nor resources to provide support for an OS that is
|
||||
end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are
|
||||
suggested to upgrade to a newer version of Windows, or install an alternative OS
|
||||
that is supported.
|
||||
|
||||
If you want to downgrade after you have done a reindex with 0.12.0 or later,
|
||||
you will need to reindex when you first start Bitcoin Core version 0.11 or
|
||||
earlier.
|
||||
No attempt is made to prevent installing or running the software on Windows XP,
|
||||
you can still do so at your own risk, but do not expect it to work: do not
|
||||
report issues about Windows XP to the issue tracker.
|
||||
|
||||
From 0.13.1 onwards OS X 10.7 is no longer supported. 0.13.0 was intended to work on 10.7+,
|
||||
but severe issues with the libc++ version on 10.7.x keep it from running reliably.
|
||||
0.13.1 now requires 10.8+, and will communicate that to 10.7 users, rather than crashing unexpectedly.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Example item
|
||||
---------------------------------------
|
||||
-----------------------------------------------
|
||||
|
||||
Example text.
|
||||
|
||||
0.12.1 Change log
|
||||
0.13.x Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
@@ -49,60 +53,13 @@ behavior, not code moves, refactors and string updates. For convenience in locat
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and REST
|
||||
|
||||
Asm script outputs replacements for OP_NOP2 and OP_NOP3
|
||||
-------------------------------------------------------
|
||||
|
||||
OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by [BIP
|
||||
65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki)
|
||||
|
||||
OP_NOP3 has been renamed to OP_CHECKSEQUENCEVERIFY by [BIP
|
||||
112](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki)
|
||||
|
||||
The following outputs are affected by this change:
|
||||
- RPC `getrawtransaction` (in verbose mode)
|
||||
- RPC `decoderawtransaction`
|
||||
- RPC `decodescript`
|
||||
- REST `/rest/tx/` (JSON format)
|
||||
- REST `/rest/block/` (JSON format when including extended tx details)
|
||||
- `bitcoin-tx -json`
|
||||
|
||||
### Configuration and command-line options
|
||||
|
||||
### Block and transaction handling
|
||||
|
||||
### P2P protocol and network code
|
||||
|
||||
The p2p alert system has been removed in #7692 and the 'alert' message is no longer supported.
|
||||
|
||||
|
||||
Fee filtering of invs (BIP 133)
|
||||
------------------------------------
|
||||
|
||||
The optional new p2p message "feefilter" is implemented and the protocol
|
||||
version is bumped to 70013. Upon receiving a feefilter message from a peer,
|
||||
a node will not send invs for any transactions which do not meet the filter
|
||||
feerate. [BIP 133](https://github.com/bitcoin/bips/blob/master/bip-0133.mediawiki)
|
||||
|
||||
### Validation
|
||||
|
||||
### Build system
|
||||
|
||||
### Wallet
|
||||
|
||||
### GUI
|
||||
|
||||
### Tests and QA
|
||||
|
||||
### Miscellaneous
|
||||
[to be filled in at release]
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
[to be filled in at release]
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
||||
|
||||
|
||||
172
doc/release-notes/release-notes-0.10.4.md
Normal file
@@ -0,0 +1,172 @@
|
||||
Bitcoin Core version 0.10.4 is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.10.4/>
|
||||
|
||||
This is a new minor version release, bringing bug fixes, the BIP65
|
||||
(CLTV) consensus change, and relay policy preparation for BIP113. It is
|
||||
recommended to upgrade to this version as soon as possible.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
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/Bitcoin-Qt (on Mac) or
|
||||
bitcoind/bitcoin-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility. There are no
|
||||
known problems when downgrading from 0.11.x to 0.10.x.
|
||||
|
||||
Notable changes since 0.10.3
|
||||
============================
|
||||
|
||||
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.
|
||||
|
||||
1. This release will only relay and mine transactions spending a CLTV
|
||||
output if they comply with the BIP65 rules as provided in code.
|
||||
|
||||
2. This release will produce version 4 blocks by default. Please see the
|
||||
*notice to miners* below.
|
||||
|
||||
3. 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 more information about the soft-forking change, please see
|
||||
<https://github.com/bitcoin/bitcoin/pull/6351>
|
||||
|
||||
Graphs showing the progress towards block version 4 adoption may be
|
||||
found at the URLs below:
|
||||
|
||||
- Block versions over the last 50,000 blocks as progress towards BIP65
|
||||
consensus enforcement: <http://bitcoin.sipa.be/ver-50k.png>
|
||||
|
||||
- Block versions over the last 2,000 blocks showing the days to the
|
||||
earliest possible BIP65 consensus-enforced block: <http://bitcoin.sipa.be/ver-2k.png>
|
||||
|
||||
**Notice to miners:** Bitcoin 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 FIXME or any version from FIXME onward.
|
||||
|
||||
- If you are solo mining, this will affect you the moment you upgrade
|
||||
Bitcoin Core, which must be done prior to BIP65 achieving its 951/1001
|
||||
status.
|
||||
|
||||
- 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.
|
||||
|
||||
[BIP65]: https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
|
||||
|
||||
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 Bitcoin 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.
|
||||
|
||||
For more information, see: <https://github.com/bitcoin/bitcoin/pull/6917>
|
||||
|
||||
Other fixes for database corruption on Windows are expected in the
|
||||
next major release.
|
||||
|
||||
0.10.4 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
- #6953 `8b3311f` alias -h for --help
|
||||
- #6953 `97546fc` Change URLs to https in debian/control
|
||||
- #6953 `38671bf` Update debian/changelog and slight tweak to debian/control
|
||||
- #6953 `256321e` Correct spelling mistakes in doc folder
|
||||
- #6953 `eae0350` Clarification of unit test build instructions
|
||||
- #6953 `90897ab` Update bluematt-key, the old one is long-since revoked
|
||||
- #6953 `a2f2fb6` build: disable -Wself-assign
|
||||
- #6953 `cf67d8b` Bugfix: Allow mining on top of old tip blocks for testnet (fixes testnet-in-a-box use case)
|
||||
- #6953 `b3964e3` Drop "with minimal dependencies" from description
|
||||
- #6953 `43c2789` Split bitcoin-tx into its own package
|
||||
- #6953 `dfe0d4d` Include bitcoin-tx binary on Debian/Ubuntu
|
||||
- #6953 `612efe8` [Qt] Raise debug window when requested
|
||||
- #6953 `3ad96bd` Fix locking in GetTransaction
|
||||
- #6953 `9c81005` Fix spelling of Qt
|
||||
- #6946 `94b67e5` Update LevelDB
|
||||
- #6706 `5dc72f8` CLTV: Add more tests to improve coverage
|
||||
- #6706 `6a1343b` Add RPC tests for the CHECKLOCKTIMEVERIFY (BIP65) soft-fork
|
||||
- #6706 `4137248` Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic
|
||||
- #6706 `0e01d0f` Enable CHECKLOCKTIMEVERIFY as a standard script verify flag
|
||||
- #6706 `6d01325` Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)
|
||||
- #6706 `750d54f` Move LOCKTIME_THRESHOLD to src/script/script.h
|
||||
- #6706 `6897468` Make CScriptNum() take nMaxNumSize as an argument
|
||||
- #6867 `5297194` Set TCP_NODELAY on P2P sockets
|
||||
- #6836 `fb818b6` Bring historical release notes up to date
|
||||
- #6852 `0b3fd07` build: make sure OpenSSL heeds noexecstack
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- Daniel Cousens
|
||||
- Diego Viola
|
||||
- Eric Lombrozo
|
||||
- Esteban Ordano
|
||||
- Gregory Maxwell
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- Matt Corallo
|
||||
- Micha
|
||||
- Mitchell Cash
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- Wladimir J. van der Laan
|
||||
- Zak Wilcox
|
||||
|
||||
And those who contributed additional code review and/or security research.
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
217
doc/release-notes/release-notes-0.11.2.md
Normal file
@@ -0,0 +1,217 @@
|
||||
Bitcoin Core version 0.11.2 is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.11.2/>
|
||||
|
||||
This is a new minor version release, bringing bug fixes, the BIP65
|
||||
(CLTV) consensus change, and relay policy preparation for BIP113. It is
|
||||
recommended to upgrade to this version as soon as possible.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
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/Bitcoin-Qt (on Mac) or
|
||||
bitcoind/bitcoin-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility. There are no
|
||||
known problems when downgrading from 0.11.x to 0.10.x.
|
||||
|
||||
Notable changes since 0.11.1
|
||||
============================
|
||||
|
||||
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.
|
||||
|
||||
1. This release will only relay and mine transactions spending a CLTV
|
||||
output if they comply with the BIP65 rules as provided in code.
|
||||
|
||||
2. This release will produce version 4 blocks by default. Please see the
|
||||
*notice to miners* below.
|
||||
|
||||
3. 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 more information about the soft-forking change, please see
|
||||
<https://github.com/bitcoin/bitcoin/pull/6351>
|
||||
|
||||
Graphs showing the progress towards block version 4 adoption may be
|
||||
found at the URLs below:
|
||||
|
||||
- Block versions over the last 50,000 blocks as progress towards BIP65
|
||||
consensus enforcement: <http://bitcoin.sipa.be/ver-50k.png>
|
||||
|
||||
- Block versions over the last 2,000 blocks showing the days to the
|
||||
earliest possible BIP65 consensus-enforced block: <http://bitcoin.sipa.be/ver-2k.png>
|
||||
|
||||
**Notice to miners:** Bitcoin 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 0.4.3 or any version from 0.5.2 onward.
|
||||
|
||||
- If you are solo mining, this will affect you the moment you upgrade
|
||||
Bitcoin Core, which must be done prior to BIP65 achieving its 951/1001
|
||||
status.
|
||||
|
||||
- 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.
|
||||
|
||||
[BIP65]: https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
|
||||
|
||||
BIP113 mempool-only locktime enforcement using GetMedianTimePast()
|
||||
----------------------------------------------------------------
|
||||
|
||||
Bitcoin transactions currently may specify a locktime indicating when
|
||||
they may be added to a valid block. Current consensus rules require
|
||||
that blocks have a block header time greater than the locktime specified
|
||||
in any transaction in that block.
|
||||
|
||||
Miners get to choose what time they use for their header time, with the
|
||||
consensus rule being that no node will accept a block whose time is more
|
||||
than two hours in the future. This creates a incentive for miners to
|
||||
set their header times to future values in order to include locktimed
|
||||
transactions which weren't supposed to be included for up to two more
|
||||
hours.
|
||||
|
||||
The consensus rules also specify that valid blocks may have a header
|
||||
time greater than that of the median of the 11 previous blocks. This
|
||||
GetMedianTimePast() time has a key feature we generally associate with
|
||||
time: it can't go backwards.
|
||||
|
||||
[BIP113][] specifies a soft fork (**not enforced in this release**) that
|
||||
weakens this perverse incentive for individual miners to use a future
|
||||
time by requiring that valid blocks have a computed GetMedianTimePast()
|
||||
greater than the locktime specified in any transaction in that block.
|
||||
|
||||
Mempool inclusion rules currently require transactions to be valid for
|
||||
immediate inclusion in a block in order to be accepted into the mempool.
|
||||
This release begins applying the BIP113 rule to received transactions,
|
||||
so transaction whose time is greater than the GetMedianTimePast() will
|
||||
no longer be accepted into the mempool.
|
||||
|
||||
**Implication for miners:** you will begin rejecting transactions that
|
||||
would not be valid under BIP113, which will prevent you from producing
|
||||
invalid blocks if/when BIP113 is enforced on the network. Any
|
||||
transactions which are valid under the current rules but not yet valid
|
||||
under the BIP113 rules will either be mined by other miners or delayed
|
||||
until they are valid under BIP113. Note, however, that time-based
|
||||
locktime transactions are more or less unseen on the network currently.
|
||||
|
||||
**Implication for users:** GetMedianTimePast() always trails behind the
|
||||
current time, so a transaction locktime set to the present time will be
|
||||
rejected by nodes running this release until the median time moves
|
||||
forward. To compensate, subtract one hour (3,600 seconds) from your
|
||||
locktimes to allow those transactions to be included in mempools at
|
||||
approximately the expected time.
|
||||
|
||||
[BIP113]: https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki
|
||||
|
||||
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 Bitcoin 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.
|
||||
|
||||
For more information, see: <https://github.com/bitcoin/bitcoin/pull/6917>
|
||||
|
||||
Other fixes for database corruption on Windows are expected in the
|
||||
next major release.
|
||||
|
||||
0.11.2 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
- #6124 `684636b` Make CScriptNum() take nMaxNumSize as an argument
|
||||
- #6124 `4fa7a04` Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)
|
||||
- #6124 `6ea5ca4` Enable CHECKLOCKTIMEVERIFY as a standard script verify flag
|
||||
- #6351 `5e82e1c` Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic
|
||||
- #6353 `ba1da90` Show softfork status in getblockchaininfo
|
||||
- #6351 `6af25b0` Add BIP65 to getblockchaininfo softforks list
|
||||
- #6688 `01878c9` Fix locking in GetTransaction
|
||||
- #6653 `b3eaa30` [Qt] Raise debug window when requested
|
||||
- #6600 `1e672ae` Debian/Ubuntu: Include bitcoin-tx binary
|
||||
- #6600 `2394f4d` Debian/Ubuntu: Split bitcoin-tx into its own package
|
||||
- #5987 `33d6825` Bugfix: Allow mining on top of old tip blocks for testnet
|
||||
- #6852 `21e58b8` build: make sure OpenSSL heeds noexecstack
|
||||
- #6846 `af6edac` alias `-h` for `--help`
|
||||
- #6867 `95a5039` Set TCP_NODELAY on P2P sockets.
|
||||
- #6856 `dfe55bd` Do not allow blockfile pruning during reindex.
|
||||
- #6566 `a1d3c6f` Add rules--presently disabled--for using GetMedianTimePast as end point for lock-time calculations
|
||||
- #6566 `f720c5f` Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints
|
||||
- #6917 `0af5b8e` leveldb: Win32WritableFile without memory mapping
|
||||
- #6948 `4e895b0` Always flush block and undo when switching to new file
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- ฿tcDrak
|
||||
- Chris Kleeschulte
|
||||
- Daniel Cousens
|
||||
- Diego Viola
|
||||
- Eric Lombrozo
|
||||
- Esteban Ordano
|
||||
- Gregory Maxwell
|
||||
- Luke Dashjr
|
||||
- Marco Falke
|
||||
- Mark Friedenbach
|
||||
- Matt Corallo
|
||||
- Micha
|
||||
- Mitchell Cash
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- Wladimir J. van der Laan
|
||||
- Zak Wilcox
|
||||
|
||||
And those who contributed additional code review and/or security research.
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
@@ -104,9 +104,6 @@ announcing their headers directly, instead of just announcing the hash. In a
|
||||
reorganization, all new headers are sent, instead of just the new tip. This
|
||||
can often prevent an extra roundtrip before the actual block is downloaded.
|
||||
|
||||
With this change, pruning nodes are now able to relay new blocks to compatible
|
||||
peers.
|
||||
|
||||
Memory pool limiting
|
||||
--------------------
|
||||
|
||||
@@ -188,6 +185,14 @@ the OP_RETURN. The limit on OP_RETURN output size is now applied to the entire
|
||||
serialized scriptPubKey, 83 bytes by default. (the previous 80 byte default plus
|
||||
three bytes overhead)
|
||||
|
||||
Relay: New and only new blocks relayed when pruning
|
||||
---------------------------------------------------
|
||||
|
||||
When running in pruned mode, the client will now relay new blocks. When
|
||||
responding to the `getblocks` message, only hashes of blocks that are on disk
|
||||
and are likely to remain there for some reasonable time window (1 hour) will be
|
||||
returned (previously all relevant hashes were returned).
|
||||
|
||||
Relay and Mining: Priority transactions
|
||||
---------------------------------------
|
||||
|
||||
@@ -887,5 +892,3 @@ Thanks to everyone who directly contributed to this release:
|
||||
- zathras-crypto
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
||||
|
||||
|
||||
@@ -1,198 +0,0 @@
|
||||
Bitcoin Core version 0.12.1 is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.12.1/>
|
||||
|
||||
This is a new minor version release, including the BIP9, BIP68 and BIP112
|
||||
softfork, various bugfixes and updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
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/Bitcoin-Qt (on Mac) or
|
||||
bitcoind/bitcoin-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
-----------------
|
||||
|
||||
### Downgrade to a version < 0.12.0
|
||||
|
||||
Because release 0.12.0 and later will obfuscate the chainstate on every
|
||||
fresh sync or reindex, the chainstate is not backwards-compatible with
|
||||
pre-0.12 versions of Bitcoin Core or other software.
|
||||
|
||||
If you want to downgrade after you have done a reindex with 0.12.0 or later,
|
||||
you will need to reindex when you first start Bitcoin Core version 0.11 or
|
||||
earlier.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
First version bits BIP9 softfork deployment
|
||||
-------------------------------------------
|
||||
|
||||
This release includes a soft fork deployment to enforce [BIP68][],
|
||||
[BIP112][] and [BIP113][] using the [BIP9][] deployment mechanism.
|
||||
|
||||
The deployment sets the block version number to 0x20000001 between
|
||||
midnight 1st May 2016 and midnight 1st May 2017 to signal readiness for
|
||||
deployment. The version number consists of 0x20000000 to indicate version
|
||||
bits together with setting bit 0 to indicate support for this combined
|
||||
deployment, shown as "csv" in the `getblockchaininfo` RPC call.
|
||||
|
||||
For more information about the soft forking change, please see
|
||||
<https://github.com/bitcoin/bitcoin/pull/7648>
|
||||
|
||||
This specific backport pull-request can be viewed at
|
||||
<https://github.com/bitcoin/bitcoin/pull/7543>
|
||||
|
||||
[BIP9]: https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki
|
||||
[BIP68]: https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki
|
||||
[BIP112]: https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki
|
||||
[BIP113]: https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki
|
||||
|
||||
BIP68 soft fork to enforce sequence locks for relative locktime
|
||||
---------------------------------------------------------------
|
||||
|
||||
[BIP68][] introduces relative lock-time consensus-enforced semantics of
|
||||
the sequence number field to enable a signed transaction input to remain
|
||||
invalid for a defined period of time after confirmation of its corresponding
|
||||
outpoint.
|
||||
|
||||
For more information about the implementation, see
|
||||
<https://github.com/bitcoin/bitcoin/pull/7184>
|
||||
|
||||
BIP112 soft fork to enforce OP_CHECKSEQUENCEVERIFY
|
||||
--------------------------------------------------
|
||||
|
||||
[BIP112][] redefines the existing OP_NOP3 as OP_CHECKSEQUENCEVERIFY (CSV)
|
||||
for a new opcode in the Bitcoin 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.
|
||||
|
||||
For more information about the implementation, see
|
||||
<https://github.com/bitcoin/bitcoin/pull/7524>
|
||||
|
||||
BIP113 locktime enforcement soft fork
|
||||
-------------------------------------
|
||||
|
||||
Bitcoin Core 0.11.2 previously introduced mempool-only locktime
|
||||
enforcement using GetMedianTimePast(). This release seeks to
|
||||
consensus enforce the rule.
|
||||
|
||||
Bitcoin transactions currently may specify a locktime indicating when
|
||||
they may be added to a valid block. Current consensus rules require
|
||||
that blocks have a block header time greater than the locktime specified
|
||||
in any transaction in that block.
|
||||
|
||||
Miners get to choose what time they use for their header time, with the
|
||||
consensus rule being that no node will accept a block whose time is more
|
||||
than two hours in the future. This creates a incentive for miners to
|
||||
set their header times to future values in order to include locktimed
|
||||
transactions which weren't supposed to be included for up to two more
|
||||
hours.
|
||||
|
||||
The consensus rules also specify that valid blocks may have a header
|
||||
time greater than that of the median of the 11 previous blocks. This
|
||||
GetMedianTimePast() time has a key feature we generally associate with
|
||||
time: it can't go backwards.
|
||||
|
||||
[BIP113][] specifies a soft fork enforced in this release that
|
||||
weakens this perverse incentive for individual miners to use a future
|
||||
time by requiring that valid blocks have a computed GetMedianTimePast()
|
||||
greater than the locktime specified in any transaction in that block.
|
||||
|
||||
Mempool inclusion rules currently require transactions to be valid for
|
||||
immediate inclusion in a block in order to be accepted into the mempool.
|
||||
This release begins applying the BIP113 rule to received transactions,
|
||||
so transaction whose time is greater than the GetMedianTimePast() will
|
||||
no longer be accepted into the mempool.
|
||||
|
||||
**Implication for miners:** you will begin rejecting transactions that
|
||||
would not be valid under BIP113, which will prevent you from producing
|
||||
invalid blocks when BIP113 is enforced on the network. Any
|
||||
transactions which are valid under the current rules but not yet valid
|
||||
under the BIP113 rules will either be mined by other miners or delayed
|
||||
until they are valid under BIP113. Note, however, that time-based
|
||||
locktime transactions are more or less unseen on the network currently.
|
||||
|
||||
**Implication for users:** GetMedianTimePast() always trails behind the
|
||||
current time, so a transaction locktime set to the present time will be
|
||||
rejected by nodes running this release until the median time moves
|
||||
forward. To compensate, subtract one hour (3,600 seconds) from your
|
||||
locktimes to allow those transactions to be included in mempools at
|
||||
approximately the expected time.
|
||||
|
||||
For more information about the implementation, see
|
||||
<https://github.com/bitcoin/bitcoin/pull/6566>
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
The p2p alert system is off by default. To turn on, use `-alert` with
|
||||
startup configuration.
|
||||
|
||||
0.12.1 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
- #7739 `7ffc2bd` Add abandoned status to listtransactions (jonasschnelli)
|
||||
|
||||
### Block and transaction handling
|
||||
- #7543 `834aaef` Backport BIP9, BIP68 and BIP112 with softfork (btcdrak)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #7804 `90f1d24` Track block download times per individual block (sipa)
|
||||
- #7832 `4c3a00d` Reduce block timeout to 10 minutes (laanwj)
|
||||
|
||||
### Validation
|
||||
- #7821 `4226aac` init: allow shutdown during 'Activating best chain...' (laanwj)
|
||||
- #7835 `46898e7` Version 2 transactions remain non-standard until CSV activates (sdaftuar)
|
||||
|
||||
### Build system
|
||||
- #7487 `00d57b4` Workaround Travis-side CI issues (luke-jr)
|
||||
- #7606 `a10da9a` No need to set -L and --location for curl (MarcoFalke)
|
||||
- #7614 `ca8f160` Add curl to packages (now needed for depends) (luke-jr)
|
||||
- #7776 `a784675` Remove unnecessary executables from gitian release (laanwj)
|
||||
|
||||
### Wallet
|
||||
- #7715 `19866c1` Fix calculation of balances and available coins. (morcos)
|
||||
|
||||
### Miscellaneous
|
||||
- #7617 `f04f4fd` Fix markdown syntax and line terminate LogPrint (MarcoFalke)
|
||||
- #7747 `4d035bc` added depends cross compile info (accraze)
|
||||
- #7741 `a0cea89` Mark p2p alert system as deprecated (btcdrak)
|
||||
- #7780 `c5f94f6` Disable bad-chain alert (btcdrak)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- accraze
|
||||
- Alex Morcos
|
||||
- BtcDrak
|
||||
- Jonas Schnelli
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- Mark Friedenbach
|
||||
- NicolasDorier
|
||||
- Pieter Wuille
|
||||
- Suhas Daftuar
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
||||
863
doc/release-notes/release-notes-0.13.0.md
Normal file
@@ -0,0 +1,863 @@
|
||||
Bitcoin Core version 0.13.0 is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.13.0/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://bitcoincore.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
an OS initially released in 2001. This means that not even critical security
|
||||
updates will be released anymore. Without security updates, using a bitcoin
|
||||
wallet on a XP machine is irresponsible at least.
|
||||
|
||||
In addition to that, with 0.12.x there have been varied reports of Bitcoin Core
|
||||
randomly crashing on Windows XP. It is [not clear](https://github.com/bitcoin/bitcoin/issues/7681#issuecomment-217439891)
|
||||
what the source of these crashes is, but it is likely that upstream
|
||||
libraries such as Qt are no longer being tested on XP.
|
||||
|
||||
We do not have time nor resources to provide support for an OS that is
|
||||
end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are
|
||||
suggested to upgrade to a newer verion of Windows, or install an alternative OS
|
||||
that is supported.
|
||||
|
||||
No attempt is made to prevent installing or running the software on Windows XP,
|
||||
you can still do so at your own risk, but do not expect it to work: do not
|
||||
report issues about Windows XP to the issue tracker.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
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.
|
||||
|
||||
For nodes on low-memory systems, the database cache can be changed back to
|
||||
100 MiB (or to another value) by either:
|
||||
|
||||
- Adding `dbcache=100` in bitcoin.conf
|
||||
- Changing it in the GUI under `Options → Size of database cache`
|
||||
|
||||
Note that the database cache setting has the most performance impact
|
||||
during initial sync of a node, and when catching up after downtime.
|
||||
|
||||
|
||||
bitcoin-cli: arguments privacy
|
||||
------------------------------
|
||||
|
||||
The RPC command line client gained a new argument, `-stdin`
|
||||
to read extra arguments from standard input, one per line until EOF/Ctrl-D.
|
||||
For example:
|
||||
|
||||
$ src/bitcoin-cli -stdin walletpassphrase
|
||||
mysecretcode
|
||||
120
|
||||
..... press Ctrl-D here to end 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. This means that a C++11-capable compiler is now needed for
|
||||
building. Effectively this means GCC 4.7 or higher, or Clang 3.3 or higher.
|
||||
|
||||
When cross-compiling for a target that doesn't have C++11 libraries, configure with
|
||||
`./configure --enable-glibc-back-compat ... LDFLAGS=-static-libstdc++`.
|
||||
|
||||
For running the functional tests in `qa/rpc-tests`, Python3.4 or higher is now
|
||||
required.
|
||||
|
||||
|
||||
Linux ARM builds
|
||||
----------------
|
||||
|
||||
Due to popular request, Linux ARM builds have been added to the uploaded
|
||||
executables.
|
||||
|
||||
The following extra files can be found in the download directory or torrent:
|
||||
|
||||
- `bitcoin-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries for the most
|
||||
common 32-bit ARM architecture.
|
||||
- `bitcoin-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries for the most
|
||||
common 64-bit ARM architecture.
|
||||
|
||||
ARM builds are still experimental. If you have problems on a certain device or
|
||||
Linux distribution combination please report them on the bug tracker, it may be
|
||||
possible to resolve them.
|
||||
|
||||
Note that Android is not considered ARM Linux in this context. The executables
|
||||
are not expected to work out of the box on Android.
|
||||
|
||||
|
||||
Compact Block support (BIP 152)
|
||||
-------------------------------
|
||||
|
||||
Support for block relay using the Compact Blocks protocol has been implemented
|
||||
in PR 8068.
|
||||
|
||||
The primary goal is reducing the bandwidth spikes at relay time, though in many
|
||||
cases it also reduces propagation delay. It is automatically enabled between
|
||||
compatible peers.
|
||||
[BIP 152](https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki)
|
||||
|
||||
As a side-effect, ordinary non-mining nodes will download and upload blocks
|
||||
faster if those blocks were produced by miners using similar transaction
|
||||
filtering policies. This means that a miner who produces a block with many
|
||||
transactions discouraged by your node will be relayed slower than one with
|
||||
only transactions already in your memory pool. The overall effect of such
|
||||
relay differences on the network may result in blocks which include widely-
|
||||
discouraged transactions losing a stale block race, and therefore miners may
|
||||
wish to configure their node to take common relay policies into consideration.
|
||||
|
||||
|
||||
Hierarchical Deterministic Key Generation
|
||||
-----------------------------------------
|
||||
Newly created wallets will use hierarchical deterministic key generation
|
||||
according to BIP32 (keypath m/0'/0'/k').
|
||||
Existing wallets will still use traditional key generation.
|
||||
|
||||
Backups of HD wallets, regardless of when they have been created, can
|
||||
therefore be used to re-generate all possible private keys, even the
|
||||
ones which haven't already been generated during the time of the backup.
|
||||
**Attention:** Encrypting the wallet will create a new seed which requires
|
||||
a new backup!
|
||||
|
||||
Wallet dumps (created using the `dumpwallet` RPC) will contain the deterministic
|
||||
seed. This is expected to allow future versions to import the seed and all
|
||||
associated funds, but this is not yet implemented.
|
||||
|
||||
HD key generation for new wallets can be disabled by `-usehd=0`. Keep in
|
||||
mind that this flag only has affect on newly created wallets.
|
||||
You can't disable HD key generation once you have created a HD wallet.
|
||||
|
||||
There is no distinction between internal (change) and external keys.
|
||||
|
||||
HD wallets are incompatible with older versions of Bitcoin Core.
|
||||
|
||||
[Pull request](https://github.com/bitcoin/bitcoin/pull/8035/files), [BIP 32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)
|
||||
|
||||
|
||||
Segregated Witness
|
||||
------------------
|
||||
|
||||
The code preparations for Segregated Witness ("segwit"), as described in [BIP
|
||||
141](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki), [BIP
|
||||
143](https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki), [BIP
|
||||
144](https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki), and [BIP
|
||||
145](https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki) are
|
||||
finished and included in this release. However, BIP 141 does not yet specify
|
||||
activation parameters on mainnet, and so this release does not support segwit
|
||||
use on mainnet. Testnet use is supported, and after BIP 141 is updated with
|
||||
proposed parameters, a future release of Bitcoin Core is expected that
|
||||
implements those parameters for mainnet.
|
||||
|
||||
Furthermore, because segwit activation is not yet specified for mainnet,
|
||||
version 0.13.0 will behave similarly as other pre-segwit releases even after a
|
||||
future activation of BIP 141 on the network. Upgrading from 0.13.0 will be
|
||||
required in order to utilize segwit-related features on mainnet (such as signal
|
||||
BIP 141 activation, mine segwit blocks, fully validate segwit blocks, relay
|
||||
segwit blocks to other segwit nodes, and use segwit transactions in the
|
||||
wallet, etc).
|
||||
|
||||
|
||||
Mining transaction selection ("Child Pays For Parent")
|
||||
------------------------------------------------------
|
||||
|
||||
The mining transaction selection algorithm has been replaced with an algorithm
|
||||
that selects transactions based on their feerate inclusive of unconfirmed
|
||||
ancestor transactions. This means that a low-fee transaction can become more
|
||||
likely to be selected if a high-fee transaction that spends its outputs is
|
||||
relayed.
|
||||
|
||||
With this change, the `-blockminsize` command line option has been removed.
|
||||
|
||||
The command line option `-blockmaxsize` remains an option to specify the
|
||||
maximum number of serialized bytes in a generated block. In addition, the new
|
||||
command line option `-blockmaxweight` has been added, which specifies the
|
||||
maximum "block weight" of a generated block, as defined by [BIP 141 (Segregated
|
||||
Witness)] (https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki).
|
||||
|
||||
In preparation for Segregated Witness, the mining algorithm has been modified
|
||||
to optimize transaction selection for a given block weight, rather than a given
|
||||
number of serialized bytes in a block. In this release, transaction selection
|
||||
is unaffected by this distinction (as BIP 141 activation is not supported on
|
||||
mainnet in this release, see above), but in future releases and after BIP 141
|
||||
activation, these calculations would be expected to differ.
|
||||
|
||||
For optimal runtime performance, miners using this release should specify
|
||||
`-blockmaxweight` on the command line, and not specify `-blockmaxsize`.
|
||||
Additionally (or only) specifying `-blockmaxsize`, or relying on default
|
||||
settings for both, may result in performance degradation, as the logic to
|
||||
support `-blockmaxsize` performs additional computation to ensure that
|
||||
constraint is met. (Note that for mainnet, in this release, the equivalent
|
||||
parameter for `-blockmaxweight` would be four times the desired
|
||||
`-blockmaxsize`. See [BIP 141]
|
||||
(https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki) for additional
|
||||
details.)
|
||||
|
||||
In the future, the `-blockmaxsize` option may be removed, as block creation is
|
||||
no longer optimized for this metric. Feedback is requested on whether to
|
||||
deprecate or keep this command line option in future releases.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
The two phases are distinct in the Bitcoin-Qt GUI. During the first one,
|
||||
"Reindexing blocks on disk" is shown. During the second (slower) one,
|
||||
"Processing blocks on disk" is shown.
|
||||
|
||||
It is possible to only redo validation now, without rebuilding the block index,
|
||||
using the command line option `-reindex-chainstate` (in addition to
|
||||
`-reindex` which does both). This new option is useful when the blocks on disk
|
||||
are assumed to be fine, but the chainstate is still corrupted. It is also
|
||||
useful for benchmarks.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
The overall result of this is that `setgenerate` RPC call has been removed, as
|
||||
well as the `-gen` and `-genproclimit` command-line options.
|
||||
|
||||
For testing, the `generate` call can still be used to mine a block, and a new
|
||||
RPC call `generatetoaddress` has been added to mine to a specific address. This
|
||||
works with wallet disabled.
|
||||
|
||||
|
||||
New bytespersigop implementation
|
||||
--------------------------------
|
||||
|
||||
The former implementation of the bytespersigop filter accidentally broke bare
|
||||
multisig (which is meant to be controlled by the `permitbaremultisig` option),
|
||||
since the consensus protocol always counts these older transaction forms as 20
|
||||
sigops for backwards compatibility. Simply fixing this bug by counting more
|
||||
accurately would have reintroduced a vulnerability. It has therefore been
|
||||
replaced with a new implementation that rather than filter such transactions,
|
||||
instead treats them (for fee purposes only) as if they were in fact the size
|
||||
of a transaction actually using all 20 sigops.
|
||||
|
||||
|
||||
Low-level P2P changes
|
||||
----------------------
|
||||
|
||||
- The optional new p2p message "feefilter" is implemented and the protocol
|
||||
version is bumped to 70013. Upon receiving a feefilter message from a peer,
|
||||
a node will not send invs for any transactions which do not meet the filter
|
||||
feerate. [BIP 133](https://github.com/bitcoin/bips/blob/master/bip-0133.mediawiki)
|
||||
|
||||
- The P2P alert system has been removed in PR #7692 and the `alert` P2P message
|
||||
is no longer supported.
|
||||
|
||||
- The transaction relay mechanism used to relay one quarter of all transactions
|
||||
instantly, while queueing up the rest and sending them out in batch. As
|
||||
this resulted in chains of dependent transactions being reordered, it
|
||||
systematically hurt transaction relay. The relay code was redesigned in PRs
|
||||
\#7840 and #8082, and now always batches transactions announcements while also
|
||||
sorting them according to dependency order. This significantly reduces orphan
|
||||
transactions. To compensate for the removal of instant relay, the frequency of
|
||||
batch sending was doubled for outgoing peers.
|
||||
|
||||
- Since PR #7840 the BIP35 `mempool` command is also subject to batch processing.
|
||||
Also the `mempool` message is no longer handled for non-whitelisted peers when
|
||||
`NODE_BLOOM` is disabled through `-peerbloomfilters=0`.
|
||||
|
||||
- The maximum size of orphan transactions that are kept in memory until their
|
||||
ancestors arrive has been raised in PR #8179 from 5000 to 99999 bytes. They
|
||||
are now also removed from memory when they are included in a block, conflict
|
||||
with a block, and time out after 20 minutes.
|
||||
|
||||
- We respond at most once to a getaddr request during the lifetime of a
|
||||
connection since PR #7856.
|
||||
|
||||
- Connections to peers who have recently been the first one to give us a valid
|
||||
new block or transaction are protected from disconnections since PR #8084.
|
||||
|
||||
|
||||
Low-level RPC changes
|
||||
----------------------
|
||||
|
||||
- RPC calls have been added to output detailed statistics for individual mempool
|
||||
entries, as well as to calculate the in-mempool ancestors or descendants of a
|
||||
transaction: see `getmempoolentry`, `getmempoolancestors`, `getmempooldescendants`.
|
||||
|
||||
- `gettxoutsetinfo` UTXO hash (`hash_serialized`) has changed. There was a divergence between
|
||||
32-bit and 64-bit platforms, and the txids were missing in the hashed data. This has been
|
||||
fixed, but this means that the output will be different than from previous versions.
|
||||
|
||||
- Full UTF-8 support in the RPC API. Non-ASCII characters in, for example,
|
||||
wallet labels have always been malformed because they weren't taken into account
|
||||
properly in JSON RPC processing. This is no longer the case. This also affects
|
||||
the GUI debug console.
|
||||
|
||||
- Asm script outputs replacements for OP_NOP2 and OP_NOP3
|
||||
|
||||
- OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by [BIP
|
||||
65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki)
|
||||
|
||||
- OP_NOP3 has been renamed to OP_CHECKSEQUENCEVERIFY by [BIP
|
||||
112](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki)
|
||||
|
||||
- The following outputs are affected by this change:
|
||||
|
||||
- RPC `getrawtransaction` (in verbose mode)
|
||||
- RPC `decoderawtransaction`
|
||||
- RPC `decodescript`
|
||||
- REST `/rest/tx/` (JSON format)
|
||||
- REST `/rest/block/` (JSON format when including extended tx details)
|
||||
- `bitcoin-tx -json`
|
||||
|
||||
- The sorting of the output of the `getrawmempool` output has changed.
|
||||
|
||||
- New RPC commands: `generatetoaddress`, `importprunedfunds`, `removeprunedfunds`, `signmessagewithprivkey`,
|
||||
`getmempoolancestors`, `getmempooldescendants`, `getmempoolentry`,
|
||||
`createwitnessaddress`, `addwitnessaddress`.
|
||||
|
||||
- Removed RPC commands: `setgenerate`, `getgenerate`.
|
||||
|
||||
- New options were added to `fundrawtransaction`: `includeWatching`, `changeAddress`, `changePosition` and `feeRate`.
|
||||
|
||||
|
||||
Low-level ZMQ changes
|
||||
----------------------
|
||||
|
||||
- Each ZMQ notification now contains an up-counting sequence number that allows
|
||||
listeners to detect lost notifications.
|
||||
The sequence number is always the last element in a multi-part ZMQ notification and
|
||||
therefore backward compatible. Each message type has its own counter.
|
||||
PR [#7762](https://github.com/bitcoin/bitcoin/pull/7762).
|
||||
|
||||
|
||||
0.13.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
|
||||
- #7156 `9ee02cf` Remove cs_main lock from `createrawtransaction` (laanwj)
|
||||
- #7326 `2cd004b` Fix typo, wrong information in gettxout help text (paveljanik)
|
||||
- #7222 `82429d0` Indicate which transactions are signaling opt-in RBF (sdaftuar)
|
||||
- #7480 `b49a623` Changed getnetworkhps value to double to avoid overflow (instagibbs)
|
||||
- #7550 `8b958ab` Input-from-stdin mode for bitcoin-cli (laanwj)
|
||||
- #7670 `c9a1265` Use cached block hash in blockToJSON() (rat4)
|
||||
- #7726 `9af69fa` Correct importaddress help reference to importpubkey (CypherGrue)
|
||||
- #7766 `16555b6` Register calls where they are defined (laanwj)
|
||||
- #7797 `e662a76` Fix generatetoaddress failing to parse address (mruddy)
|
||||
- #7774 `916b15a` Add versionHex in getblock and getblockheader JSON results (mruddy)
|
||||
- #7863 `72c54e3` Getblockchaininfo: make bip9_softforks an object, not an array (rustyrussell)
|
||||
- #7842 `d97101e` Do not print minping time in getpeerinfo when no ping received yet (paveljanik)
|
||||
- #7518 `be14ca5` Add multiple options to fundrawtransaction (promag)
|
||||
- #7756 `9e47fce` Add cursor to iterate over utxo set, use this in `gettxoutsetinfo` (laanwj)
|
||||
- #7848 `88616d2` Divergence between 32- and 64-bit when hashing >4GB affects `gettxoutsetinfo` (laanwj)
|
||||
- #7827 `4205ad7` Speed up `getchaintips` (mrbandrews)
|
||||
- #7762 `a1eb344` Append a message sequence number to every ZMQ notification (jonasschnelli)
|
||||
- #7688 `46880ed` List solvability in listunspent output and improve help (sipa)
|
||||
- #7926 `5725807` Push back `getaddednodeinfo` dead value (instagibbs)
|
||||
- #7953 `0630353` Create `signmessagewithprivkey` rpc (achow101)
|
||||
- #8049 `c028c7b` Expose information on whether transaction relay is enabled in `getnetworkinfo` (laanwj)
|
||||
- #7967 `8c1e49b` Add feerate option to `fundrawtransaction` (jonasschnelli)
|
||||
- #8118 `9b6a48c` Reduce unnecessary hashing in `signrawtransaction` (jonasnick)
|
||||
- #7957 `79004d4` Add support for transaction sequence number (jonasschnelli)
|
||||
- #8153 `75ec320` `fundrawtransaction` feeRate: Use BTC/kB (MarcoFalke)
|
||||
- #7292 `7ce9ac5` Expose ancestor/descendant information over RPC (sdaftuar)
|
||||
- #8171 `62fcf27` Fix createrawtx sequence number unsigned int parsing (jonasschnelli)
|
||||
- #7892 `9c3d0fa` Add full UTF-8 support to RPC (laanwj)
|
||||
- #8317 `304eff3` Don't use floating point in rpcwallet (MarcoFalke)
|
||||
- #8258 `5a06ebb` Hide softfork in `getblockchaininfo` if timeout is 0 (jl2012)
|
||||
- #8244 `1922e5a` Remove unnecessary LOCK(cs_main) in getrawmempool (dcousens)
|
||||
|
||||
### Block and transaction handling
|
||||
|
||||
- #7056 `6a07208` Save last db read (morcos)
|
||||
- #6842 `0192806` Limitfreerelay edge case bugfix (ptschip)
|
||||
- #7084 `11d74f6` Replace maxFeeRate of 10000*minRelayTxFee with maxTxFee in mempool (MarcoFalke)
|
||||
- #7539 `9f33dba` Add tags to mempool's mapTx indices (sdaftuar)
|
||||
- #7592 `26a2a72` Re-remove ERROR logging for mempool rejects (laanwj)
|
||||
- #7187 `14d6324` Keep reorgs fast for SequenceLocks checks (morcos)
|
||||
- #7594 `01f4267` Mempool: Add tracking of ancestor packages (sdaftuar)
|
||||
- #7904 `fc9e334` Txdb: Fix assert crash in new UTXO set cursor (laanwj)
|
||||
- #7927 `f9c2ac7` Minor changes to dbwrapper to simplify support for other databases (laanwj)
|
||||
- #7933 `e26b620` Fix OOM when deserializing UTXO entries with invalid length (sipa)
|
||||
- #8020 `5e374f7` Use SipHash-2-4 for various non-cryptographic hashes (sipa)
|
||||
- #8076 `d720980` VerifyDB: don't check blocks that have been pruned (sdaftuar)
|
||||
- #8080 `862fd24` Do not use mempool for GETDATA for tx accepted after the last mempool req (gmaxwell)
|
||||
- #7997 `a82f033` Replace mapNextTx with slimmer setSpends (kazcw)
|
||||
- #8220 `1f86d64` Stop trimming when mapTx is empty (sipa)
|
||||
- #8273 `396f9d6` Bump `-dbcache` default to 300MiB (laanwj)
|
||||
- #7225 `eb33179` Eliminate unnecessary call to CheckBlock (sdaftuar)
|
||||
- #7907 `006cdf6` Optimize and Cleanup CScript::FindAndDelete (pstratem)
|
||||
- #7917 `239d419` Optimize reindex (sipa)
|
||||
- #7763 `3081fb9` Put hex-encoded version in UpdateTip (sipa)
|
||||
- #8149 `d612837` Testnet-only segregated witness (sipa)
|
||||
- #8305 `3730393` Improve handling of unconnecting headers (sdaftuar)
|
||||
- #8363 `fca1a41` Rename "block cost" to "block weight" (sdaftuar)
|
||||
- #8381 `f84ee3d` Make witness v0 outputs non-standard (jl2012)
|
||||
- #8364 `3f65ba2` Treat high-sigop transactions as larger rather than rejecting them (sipa)
|
||||
|
||||
### P2P protocol and network code
|
||||
|
||||
- #6589 `dc0305d` Log bytes recv/sent per command (jonasschnelli)
|
||||
- #7164 `3b43cad` Do not download transactions during initial blockchain sync (ptschip)
|
||||
- #7458 `898fedf` peers.dat, banlist.dat recreated when missing (kirkalx)
|
||||
- #7637 `3da5d1b` Fix memleak in TorController (laanwj, jonasschnelli)
|
||||
- #7553 `9f14e5a` Remove vfReachable and modify IsReachable to only use vfLimited (pstratem)
|
||||
- #7708 `9426632` De-neuter NODE_BLOOM (pstratem)
|
||||
- #7692 `29b2be6` Remove P2P alert system (btcdrak)
|
||||
- #7542 `c946a15` Implement "feefilter" P2P message (morcos)
|
||||
- #7573 `352fd57` Add `-maxtimeadjustment` command line option (mruddy)
|
||||
- #7570 `232592a` Add IPv6 Link-Local Address Support (mruddy)
|
||||
- #7874 `e6a4d48` Improve AlreadyHave (morcos)
|
||||
- #7856 `64e71b3` Only send one GetAddr response per connection (gmaxwell)
|
||||
- #7868 `7daa3ad` Split DNS resolving functionality out of net structures (theuni)
|
||||
- #7919 `7617682` Fix headers announcements edge case (sdaftuar)
|
||||
- #7514 `d9594bf` Fix IsInitialBlockDownload for testnet (jmacwhyte)
|
||||
- #7959 `03cf6e8` fix race that could fail to persist a ban (kazcw)
|
||||
- #7840 `3b9a0bf` Several performance and privacy improvements to inv/mempool handling (sipa)
|
||||
- #8011 `65aecda` Don't run ThreadMessageHandler at lowered priority (kazcw)
|
||||
- #7696 `5c3f8dd` Fix de-serialization bug where AddrMan is left corrupted (EthanHeilman)
|
||||
- #7932 `ed749bd` CAddrMan::Deserialize handle corrupt serializations better (pstratem)
|
||||
- #7906 `83121cc` Prerequisites for p2p encapsulation changes (theuni)
|
||||
- #8033 `18436d8` Fix Socks5() connect failures to be less noisy and less unnecessarily scary (wtogami)
|
||||
- #8082 `01d8359` Defer inserting into maprelay until just before relaying (gmaxwell)
|
||||
- #7960 `6a22373` Only use AddInventoryKnown for transactions (sdaftuar)
|
||||
- #8078 `2156fa2` Disable the mempool P2P command when bloom filters disabled (petertodd)
|
||||
- #8065 `67c91f8` Addrman offline attempts (gmaxwell)
|
||||
- #7703 `761cddb` Tor: Change auth order to only use password auth if -torpassword (laanwj)
|
||||
- #8083 `cd0c513` Add support for dnsseeds with option to filter by servicebits (jonasschnelli)
|
||||
- #8173 `4286f43` Use SipHash for node eviction (sipa)
|
||||
- #8154 `1445835` Drop vAddrToSend after sending big addr message (kazcw)
|
||||
- #7749 `be9711e` Enforce expected outbound services (sipa)
|
||||
- #8208 `0a64777` Do not set extra flags for unfiltered DNS seed results (sipa)
|
||||
- #8084 `e4bb4a8` Add recently accepted blocks and txn to AttemptToEvictConnection (gmaxwell)
|
||||
- #8113 `3f89a53` Rework addnode behaviour (sipa)
|
||||
- #8179 `94ab58b` Evict orphans which are included or precluded by accepted blocks (gmaxwell)
|
||||
- #8068 `e9d76a1` Compact Blocks (TheBlueMatt)
|
||||
- #8204 `0833894` Update petertodd's testnet seed (petertodd)
|
||||
- #8247 `5cd35d3` Mark my dnsseed as supporting filtering (sipa)
|
||||
- #8275 `042c323` Remove bad chain alert partition check (btcdrak)
|
||||
- #8271 `1bc9c80` Do not send witnesses in cmpctblock (sipa)
|
||||
- #8312 `ca40ef6` Fix mempool DoS vulnerability from malleated transactions (sdaftuar)
|
||||
- #7180 `16ccb74` Account for `sendheaders` `verack` messages (laanwj)
|
||||
- #8102 `425278d` Bugfix: use global ::fRelayTxes instead of CNode in version send (sipa)
|
||||
- #8408 `b7e2011` Prevent fingerprinting, disk-DoS with compact blocks (sdaftuar)
|
||||
|
||||
### Build system
|
||||
|
||||
- #7302 `41f1a3e` C++11 build/runtime fixes (theuni)
|
||||
- #7322 `fd9356b` c++11: add scoped enum fallbacks to CPPFLAGS rather than defining them locally (theuni)
|
||||
- #7441 `a6771fc` Use Debian 8.3 in gitian build guide (fanquake)
|
||||
- #7349 `152a821` Build against system UniValue when available (luke-jr)
|
||||
- #7520 `621940e` LibreSSL doesn't define OPENSSL_VERSION, use LIBRESSL_VERSION_TEXT instead (paveljanik)
|
||||
- #7528 `9b9bfce` autogen.sh: warn about needing autoconf if autoreconf is not found (knocte)
|
||||
- #7504 `19324cf` Crystal clean make clean (paveljanik)
|
||||
- #7619 `18b3f1b` Add missing sudo entry in gitian VM setup (btcdrak)
|
||||
- #7616 `639ec58` [depends] Delete unused patches (MarcoFalke)
|
||||
- #7658 `c15eb28` Add curl to Gitian setup instructions (btcdrak)
|
||||
- #7710 `909b72b` [Depends] Bump miniupnpc and config.guess+sub (fanquake)
|
||||
- #7723 `5131005` build: python 3 compatibility (laanwj)
|
||||
- #7477 `28ad4d9` Fix quoting of copyright holders in configure.ac (domob1812)
|
||||
- #7711 `a67bc5e` [build-aux] Update Boost & check macros to latest serials (fanquake)
|
||||
- #7788 `4dc1b3a` Use relative paths instead of absolute paths in protoc calls (paveljanik)
|
||||
- #7809 `bbd210d` depends: some base fixes/changes (theuni)
|
||||
- #7603 `73fc922` Build System: Use PACKAGE_TARNAME in NSIS script (JeremyRand)
|
||||
- #7905 `187186b` test: move accounting_tests and rpc_wallet_tests to wallet/test (laanwj)
|
||||
- #7911 `351abf9` leveldb: integrate leveldb into our buildsystem (theuni)
|
||||
- #7944 `a407807` Re-instate TARGET_OS=linux in configure.ac. Removed by 351abf9e035 (randy-waterhouse)
|
||||
- #7920 `c3e3cfb` Switch Travis to Trusty (theuni)
|
||||
- #7954 `08b37c5` build: quiet annoying warnings without adding new ones (theuni)
|
||||
- #7165 `06162f1` build: Enable C++11 in build, require C++11 compiler (laanwj)
|
||||
- #7982 `559fbae` build: No need to check for leveldb atomics (theuni)
|
||||
- #8002 `f9b4582` [depends] Add -stdlib=libc++ to darwin CXX flags (fanquake)
|
||||
- #7993 `6a034ed` [depends] Bump Freetype, ccache, ZeroMQ, miniupnpc, expat (fanquake)
|
||||
- #8167 `19ea173` Ship debug tarballs/zips with debug symbols (theuni)
|
||||
- #8175 `f0299d8` Add --disable-bench to config flags for windows (laanwj)
|
||||
- #7283 `fd9881a` [gitian] Default reference_datetime to commit author date (MarcoFalke)
|
||||
- #8181 `9201ce8` Get rid of `CLIENT_DATE` (laanwj)
|
||||
- #8133 `fde0ac4` Finish up out-of-tree changes (theuni)
|
||||
- #8188 `65a9d7d` Add armhf/aarch64 gitian builds (theuni)
|
||||
- #8194 `cca1c8c` [gitian] set correct PATH for wrappers (MarcoFalke)
|
||||
- #8198 `5201614` Sync ax_pthread with upstream draft4 (fanquake)
|
||||
- #8210 `12a541e` [Qt] Bump to Qt5.6.1 (jonasschnelli)
|
||||
- #8285 `da50997` windows: Add testnet link to installer (laanwj)
|
||||
- #8304 `0cca2fe` [travis] Update SDK_URL (MarcoFalke)
|
||||
- #8310 `6ae20df` Require boost for bench (theuni)
|
||||
- #8315 `2e51590` Don't require sudo for Linux (theuni)
|
||||
- #8314 `67caef6` Fix pkg-config issues for 0.13 (theuni)
|
||||
- #8373 `1fe7f40` Fix OSX non-deterministic dmg (theuni)
|
||||
- #8358 `cfd1280` Gbuild: Set memory explicitly (default is too low) (MarcoFalke)
|
||||
|
||||
### GUI
|
||||
|
||||
- #7154 `00b4b8d` Add InMempool() info to transaction details (jonasschnelli)
|
||||
- #7068 `5f3c670` [RPC-Tests] add simple way to run rpc test over QT clients (jonasschnelli)
|
||||
- #7218 `a1c185b` Fix misleading translation (MarcoFalke)
|
||||
- #7214 `be9a9a3` qt5: Use the fixed font the system recommends (MarcoFalke)
|
||||
- #7256 `08ab906` Add note to coin control dialog QT5 workaround (fanquake)
|
||||
- #7255 `e289807` Replace some instances of formatWithUnit with formatHtmlWithUnit (fanquake)
|
||||
- #7317 `3b57e9c` Fix RPCTimerInterface ordering issue (jonasschnelli)
|
||||
- #7327 `c079d79` Transaction View: LastMonth calculation fixed (crowning-)
|
||||
- #7334 `e1060c5` coincontrol workaround is still needed in qt5.4 (fixed in qt5.5) (MarcoFalke)
|
||||
- #7383 `ae2db67` Rename "amount" to "requested amount" in receive coins table (jonasschnelli)
|
||||
- #7396 `cdcbc59` Add option to increase/decrease font size in the console window (jonasschnelli)
|
||||
- #7437 `9645218` Disable tab navigation for peers tables (Kefkius)
|
||||
- #7604 `354b03d` build: Remove spurious dollar sign. Fixes #7189 (dooglus)
|
||||
- #7605 `7f001bd` Remove openssl info from init/log and from Qt debug window (jonasschnelli)
|
||||
- #7628 `87d6562` Add 'copy full transaction details' option (ericshawlinux)
|
||||
- #7613 `3798e5d` Add autocomplete to bitcoin-qt's console window (GamerSg)
|
||||
- #7668 `b24266c` Fix history deletion bug after font size change (achow101)
|
||||
- #7680 `41d2dfa` Remove reflection from `about` icon (laanwj)
|
||||
- #7686 `f034bce` Remove 0-fee from send dialog (MarcoFalke)
|
||||
- #7506 `b88e0b0` Use CCoinControl selection in CWallet::FundTransaction (promag)
|
||||
- #7732 `0b98dd7` Debug window: replace "Build date" with "Datadir" (jonasschnelli)
|
||||
- #7761 `60db51d` remove trailing output-index from transaction-id (jonasschnelli)
|
||||
- #7772 `6383268` Clear the input line after activating autocomplete (paveljanik)
|
||||
- #7925 `f604bf6` Fix out-of-tree GUI builds (laanwj)
|
||||
- #7939 `574ddc6` Make it possible to show details for multiple transactions (laanwj)
|
||||
- #8012 `b33824b` Delay user confirmation of send (Tyler-Hardin)
|
||||
- #8006 `7c8558d` Add option to disable the system tray icon (Tyler-Hardin)
|
||||
- #8046 `169d379` Fix Cmd-Q / Menu Quit shutdown on OSX (jonasschnelli)
|
||||
- #8042 `6929711` Don't allow to open the debug window during splashscreen & verification state (jonasschnelli)
|
||||
- #8014 `77b49ac` Sort transactions by date (Tyler-Hardin)
|
||||
- #8073 `eb2f6f7` askpassphrasedialog: Clear pass fields on accept (rat4)
|
||||
- #8129 `ee1533e` Fix RPC console auto completer (UdjinM6)
|
||||
- #7636 `fb0ac48` Add bitcoin address label to request payment QR code (makevoid)
|
||||
- #8231 `760a6c7` Fix a bug where the SplashScreen will not be hidden during startup (jonasschnelli)
|
||||
- #8256 `af2421c` BUG: bitcoin-qt crash (fsb4000)
|
||||
- #8257 `ff03c50` Do not ask a UI question from bitcoind (sipa)
|
||||
- #8288 `91abb77` Network-specific example address (laanwj)
|
||||
- #7707 `a914968` UI support for abandoned transactions (jonasschnelli)
|
||||
- #8207 `f7a403b` Add a link to the Bitcoin-Core repository and website to the About Dialog (MarcoFalke)
|
||||
- #8281 `6a87eb0` Remove client name from debug window (laanwj)
|
||||
- #8407 `45eba4b` Add dbcache migration path (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
|
||||
- #7262 `fc08994` Reduce inefficiency of GetAccountAddress() (dooglus)
|
||||
- #7537 `78e81b0` Warn on unexpected EOF while salvaging wallet (laanwj)
|
||||
- #7521 `3368895` Don't resend wallet txs that aren't in our own mempool (morcos)
|
||||
- #7576 `86a1ec5` Move wallet help string creation to CWallet (jonasschnelli)
|
||||
- #7577 `5b3b5a7` Move "load wallet phase" to CWallet (jonasschnelli)
|
||||
- #7608 `0735c0c` Move hardcoded file name out of log messages (MarcoFalke)
|
||||
- #7649 `4900641` Prevent multiple calls to CWallet::AvailableCoins (promag)
|
||||
- #7646 `e5c3511` Fix lockunspent help message (promag)
|
||||
- #7558 `b35a591` Add import/removeprunedfunds rpc call (instagibbs)
|
||||
- #6215 `48c5adf` add bip32 pub key serialization (jonasschnelli)
|
||||
- #7913 `bafd075` Fix for incorrect locking in GetPubKey() (keystore.cpp) (yurizhykin)
|
||||
- #8036 `41138f9` init: Move berkeleydb version reporting to wallet (laanwj)
|
||||
- #8028 `373b50d` Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDisk (pstratem)
|
||||
- #8061 `f6b7df3` Improve Wallet encapsulation (pstratem)
|
||||
- #7891 `950be19` Always require OS randomness when generating secret keys (sipa)
|
||||
- #7689 `b89ef13` Replace OpenSSL AES with ctaes-based version (sipa)
|
||||
- #7825 `f972b04` Prevent multiple calls to ExtractDestination (pedrobranco)
|
||||
- #8137 `243ac0c` Improve CWallet API with new AccountMove function (pstratem)
|
||||
- #8142 `52c3f34` Improve CWallet API with new GetAccountPubkey function (pstratem)
|
||||
- #8035 `b67a472` Add simplest BIP32/deterministic key generation implementation (jonasschnelli)
|
||||
- #7687 `a6ddb19` Stop treating importaddress'ed scripts as change (sipa)
|
||||
- #8298 `aef3811` wallet: Revert input selection post-pruning (laanwj)
|
||||
- #8324 `bc94b87` Keep HD seed during salvagewallet (jonasschnelli)
|
||||
- #8323 `238300b` Add HD keypath to CKeyMetadata, report metadata in validateaddress (jonasschnelli)
|
||||
- #8367 `3b38a6a` Ensure <0.13 clients can't open HD wallets (jonasschnelli)
|
||||
- #8378 `ebea651` Move SetMinVersion for FEATURE_HD to SetHDMasterKey (pstratem)
|
||||
- #8390 `73adfe3` Correct hdmasterkeyid/masterkeyid name confusion (jonasschnelli)
|
||||
- #8206 `18b8ee1` Add HD xpriv to dumpwallet (jonasschnelli)
|
||||
- #8389 `c3c82c4` Create a new HD seed after encrypting the wallet (jonasschnelli)
|
||||
|
||||
### Tests and QA
|
||||
|
||||
- #7320 `d3dfc6d` Test walletpassphrase timeout (MarcoFalke)
|
||||
- #7208 `47c5ed1` Make max tip age an option instead of chainparam (laanwj)
|
||||
- #7372 `21376af` Trivial: [qa] wallet: Print maintenance (MarcoFalke)
|
||||
- #7280 `668906f` [travis] Fail when documentation is outdated (MarcoFalke)
|
||||
- #7177 `93b0576` [qa] Change default block priority size to 0 (MarcoFalke)
|
||||
- #7236 `02676c5` Use createrawtx locktime parm in txn_clone (dgenr8)
|
||||
- #7212 `326ffed` Adds unittests for CAddrMan and CAddrinfo, removes source of non-determinism (EthanHeilman)
|
||||
- #7490 `d007511` tests: Remove May15 test (laanwj)
|
||||
- #7531 `18cb2d5` Add bip68-sequence.py to extended rpc tests (btcdrak)
|
||||
- #7536 `ce5fc02` test: test leading spaces for ParseHex (laanwj)
|
||||
- #7620 `1b68de3` [travis] Only run check-doc.py once (MarcoFalke)
|
||||
- #7455 `7f96671` [travis] Exit early when check-doc.py fails (MarcoFalke)
|
||||
- #7667 `56d2c4e` Move GetTempPath() to testutil (musalbas)
|
||||
- #7517 `f1ca891` test: script_error checking in script_invalid tests (laanwj)
|
||||
- #7684 `3d0dfdb` Extend tests (MarcoFalke)
|
||||
- #7697 `622fe6c` Tests: make prioritise_transaction.py more robust (sdaftuar)
|
||||
- #7709 `efde86b` Tests: fix missing import in mempool_packages (sdaftuar)
|
||||
- #7702 `29e1131` Add tests verifychain, lockunspent, getbalance, listsinceblock (MarcoFalke)
|
||||
- #7720 `3b4324b` rpc-test: Normalize assert() (MarcoFalke)
|
||||
- #7757 `26794d4` wallet: Wait for reindex to catch up (MarcoFalke)
|
||||
- #7764 `a65b36c` Don't run pruning.py twice (MarcoFalke)
|
||||
- #7773 `7c80e72` Fix comments in tests (btcdrak)
|
||||
- #7489 `e9723cb` tests: Make proxy_test work on travis servers without IPv6 (laanwj)
|
||||
- #7801 `70ac71b` Remove misleading "errorString syntax" (MarcoFalke)
|
||||
- #7803 `401c65c` maxblocksinflight: Actually enable test (MarcoFalke)
|
||||
- #7802 `3bc71e1` httpbasics: Actually test second connection (MarcoFalke)
|
||||
- #7849 `ab8586e` tests: add varints_bitpatterns test (laanwj)
|
||||
- #7846 `491171f` Clean up lockorder data of destroyed mutexes (sipa)
|
||||
- #7853 `6ef5e00` py2: Unfiddle strings into bytes explicitly (MarcoFalke)
|
||||
- #7878 `53adc83` [test] bctest.py: Revert faa41ee (MarcoFalke)
|
||||
- #7798 `cabba24` [travis] Print the commit which was evaluated (MarcoFalke)
|
||||
- #7833 `b1bf511` tests: Check Content-Type header returned from RPC server (laanwj)
|
||||
- #7851 `fa9d86f` pull-tester: Don't mute zmq ImportError (MarcoFalke)
|
||||
- #7822 `0e6fd5e` Add listunspent() test for spendable/unspendable UTXO (jpdffonseca)
|
||||
- #7912 `59ad568` Tests: Fix deserialization of reject messages (sdaftuar)
|
||||
- #7941 `0ea3941` Fixing comment in script_test.json test case (Christewart)
|
||||
- #7807 `0ad1041` Fixed miner test values, gave constants for less error-prone values (instagibbs)
|
||||
- #7980 `88b77c7` Smartfees: Properly use ordered dict (MarcoFalke)
|
||||
- #7814 `77b637f` Switch to py3 (MarcoFalke)
|
||||
- #8030 `409a8a1` Revert fatal-ness of missing python-zmq (laanwj)
|
||||
- #8018 `3e90fe6` Autofind rpc tests --srcdir (jonasschnelli)
|
||||
- #8016 `5767e80` Fix multithread CScheduler and reenable test (paveljanik)
|
||||
- #7972 `423ca30` pull-tester: Run rpc test in parallel (MarcoFalke)
|
||||
- #8039 `69b3a6d` Bench: Add crypto hash benchmarks (laanwj)
|
||||
- #8041 `5b736dd` Fix bip9-softforks blockstore issue (MarcoFalke)
|
||||
- #7994 `1f01443` Add op csv tests to script_tests.json (Christewart)
|
||||
- #8038 `e2bf830` Various minor fixes (MarcoFalke)
|
||||
- #8072 `1b87e5b` Travis: 'make check' in parallel and verbose (theuni)
|
||||
- #8056 `8844ef1` Remove hardcoded "4 nodes" from test_framework (MarcoFalke)
|
||||
- #8047 `37f9a1f` Test_framework: Set wait-timeout for bitcoind procs (MarcoFalke)
|
||||
- #8095 `6700cc9` Test framework: only cleanup on successful test runs (sdaftuar)
|
||||
- #8098 `06bd4f6` Test_framework: Append portseed to tmpdir (MarcoFalke)
|
||||
- #8104 `6ff2c8d` Add timeout to sync_blocks() and sync_mempools() (sdaftuar)
|
||||
- #8111 `61b8684` Benchmark SipHash (sipa)
|
||||
- #8107 `52b803e` Bench: Added base58 encoding/decoding benchmarks (yurizhykin)
|
||||
- #8115 `0026e0e` Avoid integer division in the benchmark inner-most loop (gmaxwell)
|
||||
- #8090 `a2df115` Adding P2SH(p2pkh) script test case (Christewart)
|
||||
- #7992 `ec45cc5` Extend #7956 with one more test (TheBlueMatt)
|
||||
- #8139 `ae5575b` Fix interrupted HTTP RPC connection workaround for Python 3.5+ (sipa)
|
||||
- #8164 `0f24eaf` [Bitcoin-Tx] fix missing test fixtures, fix 32bit atoi issue (jonasschnelli)
|
||||
- #8166 `0b5279f` Src/test: Do not shadow local variables (paveljanik)
|
||||
- #8141 `44c1b1c` Continuing port of java comparison tool (mrbandrews)
|
||||
- #8201 `36b7400` fundrawtransaction: Fix race, assert amounts (MarcoFalke)
|
||||
- #8214 `ed2cd59` Mininode: fail on send_message instead of silent return (MarcoFalke)
|
||||
- #8215 `a072d1a` Don't use floating point in wallet tests (MarcoFalke)
|
||||
- #8066 `65c2058` Test_framework: Use different rpc_auth_pair for each node (MarcoFalke)
|
||||
- #8216 `0d41d70` Assert 'changePosition out of bounds' (MarcoFalke)
|
||||
- #8222 `961893f` Enable mempool consistency checks in unit tests (sipa)
|
||||
- #7751 `84370d5` test_framework: python3.4 authproxy compat (laanwj)
|
||||
- #7744 `d8e862a` test_framework: detect failure of bitcoind startup (laanwj)
|
||||
- #8280 `115735d` Increase sync_blocks() timeouts in pruning.py (MarcoFalke)
|
||||
- #8340 `af9b7a9` Solve trivial merge conflict in p2p-segwit.py (MarcoFalke)
|
||||
- #8067 `3e4cf8f` Travis: use slim generic image, and some fixups (theuni)
|
||||
- #7951 `5c7df70` Test_framework: Properly print exception (MarcoFalke)
|
||||
- #8070 `7771aa5` Remove non-determinism which is breaking net_tests #8069 (EthanHeilman)
|
||||
- #8309 `bb2646a` Add wallet-hd test (MarcoFalke)
|
||||
- #8444 `cd0910b` Fix p2p-feefilter.py for changed tx relay behavior (sdaftuar)
|
||||
|
||||
### Mining
|
||||
|
||||
- #7507 `11c7699` Remove internal miner (Leviathn)
|
||||
- #7663 `c87f51e` Make the generate RPC call function for non-regtest (sipa)
|
||||
- #7671 `e2ebd25` Add generatetoaddress RPC to mine to an address (achow101)
|
||||
- #7935 `66ed450` Versionbits: GBT support (luke-jr)
|
||||
- #7600 `66db2d6` Select transactions using feerate-with-ancestors (sdaftuar)
|
||||
- #8295 `f5660d3` Mining-related fixups for 0.13.0 (sdaftuar)
|
||||
- #7796 `536b75e` Add support for negative fee rates, fixes `prioritizetransaction` (MarcoFalke)
|
||||
- #8362 `86edc20` Scale legacy sigop count in CreateNewBlock (sdaftuar)
|
||||
- #8489 `8b0eee6` Bugfix: Use pre-BIP141 sigops until segwit activates (GBT) (luke-jr)
|
||||
|
||||
### Documentation and miscellaneous
|
||||
|
||||
- #7423 `69e2a40` Add example for building with constrained resources (jarret)
|
||||
- #8254 `c2c69ed` Add OSX ZMQ requirement to QA readme (fanquake)
|
||||
- #8203 `377d131` Clarify documentation for running a tor node (nathaniel-mahieu)
|
||||
- #7428 `4b12266` Add example for listing ./configure flags (nathaniel-mahieu)
|
||||
- #7847 `3eae681` Add arch linux build example (mruddy)
|
||||
- #7968 `ff69aaf` Fedora build requirements (wtogami)
|
||||
- #8013 `fbedc09` Fedora build requirements, add gcc-c++ and fix typo (wtogami)
|
||||
- #8009 `fbd8478` Fixed invalid example paths in gitian-building.md (JeremyRand)
|
||||
- #8240 `63fbdbc` Mention Windows XP end of support in release notes (laanwj)
|
||||
- #8303 `5077d2c` Update bips.md for CSV softfork (fanquake)
|
||||
- #7789 `e0b3e19` Add note about using the Qt official binary installer (paveljanik)
|
||||
- #7791 `e30a5b0` Change Precise to Trusty in gitian-building.md (JeremyRand)
|
||||
- #7838 `8bb5d3d` Update gitian build guide to debian 8.4.0 (fanquake)
|
||||
- #7855 `b778e59` Replace precise with trusty (MarcoFalke)
|
||||
- #7975 `fc23fee` Update bitcoin-core GitHub links (MarcoFalke)
|
||||
- #8034 `e3a8207` Add basic git squash workflow (fanquake)
|
||||
- #7813 `214ec0b` Update port in tor.md (MarcoFalke)
|
||||
- #8193 `37c9830` Use Debian 8.5 in the gitian-build guide (fanquake)
|
||||
- #8261 `3685e0c` Clarify help for `getblockchaininfo` (paveljanik)
|
||||
- #7185 `ea0f5a2` Note that reviewers should mention the id of the commits they reviewed (pstratem)
|
||||
- #7290 `c851d8d` [init] Add missing help for args (MarcoFalke)
|
||||
- #7281 `f9fd4c2` Improve CheckInputs() comment about sig verification (petertodd)
|
||||
- #7417 `1e06bab` Minor improvements to the release process (PRabahy)
|
||||
- #7444 `4cdbd42` Improve block validity/ConnectBlock() comments (petertodd)
|
||||
- #7527 `db2e1c0` Fix and cleanup listreceivedbyX documentation (instagibbs)
|
||||
- #7541 `b6e00af` Clarify description of blockindex (pinheadmz)
|
||||
- #7590 `f06af57` Improving wording related to Boost library requirements [updated] (jonathancross)
|
||||
- #7635 `0fa88ef` Add dependency info to test docs (elliotolds)
|
||||
- #7609 `3ba07bd` RPM spec file project (AliceWonderMiscreations)
|
||||
- #7850 `229a17c` Removed call to `TryCreateDirectory` from `GetDefaultDataDir` in `src/util.cpp` (alexreg)
|
||||
- #7888 `ec870e1` Prevector: fix 2 bugs in currently unreached code paths (kazcw)
|
||||
- #7922 `90653bc` CBase58Data::SetString: cleanse the full vector (kazcw)
|
||||
- #7881 `c4e8390` Update release process (laanwj)
|
||||
- #7952 `a9c8b74` Log invalid block hash to make debugging easier (paveljanik)
|
||||
- #7974 `8206835` More comments on the design of AttemptToEvictConnection (gmaxwell)
|
||||
- #7795 `47a7cfb` UpdateTip: log only one line at most per block (laanwj)
|
||||
- #8110 `e7e25ea` Add benchmarking notes (fanquake)
|
||||
- #8121 `58f0c92` Update implemented BIPs list (fanquake)
|
||||
- #8029 `58725ba` Simplify OS X build notes (fanquake)
|
||||
- #8143 `d46b8b5` comment nit: miners don't vote (instagibbs)
|
||||
- #8136 `22e0b35` Log/report in 10% steps during VerifyDB (jonasschnelli)
|
||||
- #8168 `d366185` util: Add ParseUInt32 and ParseUInt64 (laanwj)
|
||||
- #8178 `f7b1bfc` Add git and github tips and tricks to developer notes (sipa)
|
||||
- #8177 `67db011` developer notes: updates for C++11 (kazcw)
|
||||
- #8229 `8ccdac1` [Doc] Update OS X build notes for 10.11 SDK (fanquake)
|
||||
- #8233 `9f1807a` Mention Linux ARM executables in release process and notes (laanwj)
|
||||
- #7540 `ff46dd4` Rename OP_NOP3 to OP_CHECKSEQUENCEVERIFY (btcdrak)
|
||||
- #8289 `26316ff` bash-completion: Adapt for 0.12 and 0.13 (roques)
|
||||
- #7453 `3dc3149` Missing patches from 0.12 (MarcoFalke)
|
||||
- #7113 `54a550b` Switch to a more efficient rolling Bloom filter (sipa)
|
||||
- #7257 `de9e5ea` Combine common error strings for different options so translations can be shared and reused (luke-jr)
|
||||
- #7304 `b8f485c` [contrib] Add clang-format-diff.py (MarcoFalke)
|
||||
- #7378 `e6f97ef` devtools: replace github-merge with python version (laanwj)
|
||||
- #7395 `0893705` devtools: show pull and commit information in github-merge (laanwj)
|
||||
- #7402 `6a5932b` devtools: github-merge get toplevel dir without extra whitespace (achow101)
|
||||
- #7425 `20a408c` devtools: Fix utf-8 support in messages for github-merge (laanwj)
|
||||
- #7632 `409f843` Delete outdated test-patches reference (Lewuathe)
|
||||
- #7662 `386f438` remove unused NOBLKS_VERSION_{START,END} constants (rat4)
|
||||
- #7737 `aa0d2b2` devtools: make github-merge.py use py3 (laanwj)
|
||||
- #7781 `55db5f0` devtools: Auto-set branch to merge to in github-merge (laanwj)
|
||||
- #7934 `f17032f` Improve rolling bloom filter performance and benchmark (sipa)
|
||||
- #8004 `2efe38b` signal handling: fReopenDebugLog and fRequestShutdown should be type sig_atomic_t (catilac)
|
||||
- #7713 `f6598df` Fixes for verify-commits script (petertodd)
|
||||
- #8412 `8360d5b` libconsensus: Expose a flag for BIP112 (jtimon)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- 21E14
|
||||
- accraze
|
||||
- Adam Brown
|
||||
- Alexander Regueiro
|
||||
- Alex Morcos
|
||||
- Alfie John
|
||||
- Alice Wonder
|
||||
- AlSzacrel
|
||||
- Andrew Chow
|
||||
- Andrés G. Aragoneses
|
||||
- Bob McElrath
|
||||
- BtcDrak
|
||||
- calebogden
|
||||
- Cédric Félizard
|
||||
- Chirag Davé
|
||||
- Chris Moore
|
||||
- Chris Stewart
|
||||
- Christian von Roques
|
||||
- Chris Wheeler
|
||||
- Cory Fields
|
||||
- crowning-
|
||||
- Daniel Cousens
|
||||
- Daniel Kraft
|
||||
- Denis Lukianov
|
||||
- Elias Rohrer
|
||||
- Elliot Olds
|
||||
- Eric Shaw
|
||||
- error10
|
||||
- Ethan Heilman
|
||||
- face
|
||||
- fanquake
|
||||
- Francesco 'makevoid' Canessa
|
||||
- fsb4000
|
||||
- Gavin Andresen
|
||||
- gladoscc
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders
|
||||
- instagibbs
|
||||
- James O'Beirne
|
||||
- Jannes Faber
|
||||
- Jarret Dyrbye
|
||||
- Jeremy Rand
|
||||
- jloughry
|
||||
- jmacwhyte
|
||||
- Joao Fonseca
|
||||
- Johnson Lau
|
||||
- Jonas Nick
|
||||
- Jonas Schnelli
|
||||
- Jonathan Cross
|
||||
- João Barbosa
|
||||
- Jorge Timón
|
||||
- Kaz Wesley
|
||||
- Kefkius
|
||||
- kirkalx
|
||||
- Krzysztof Jurewicz
|
||||
- Leviathn
|
||||
- lewuathe
|
||||
- Luke Dashjr
|
||||
- Luv Khemani
|
||||
- Marcel Krüger
|
||||
- Marco Falke
|
||||
- Mark Friedenbach
|
||||
- Matt
|
||||
- Matt Bogosian
|
||||
- Matt Corallo
|
||||
- Matthew English
|
||||
- Matthew Zipkin
|
||||
- mb300sd
|
||||
- Mitchell Cash
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- Murch
|
||||
- Mustafa
|
||||
- Nathaniel Mahieu
|
||||
- Nicolas Dorier
|
||||
- Patrick Strateman
|
||||
- Paul Rabahy
|
||||
- paveljanik
|
||||
- Pavel Janík
|
||||
- Pavel Vasin
|
||||
- Pedro Branco
|
||||
- Peter Todd
|
||||
- Philip Kaufmann
|
||||
- Pieter Wuille
|
||||
- Prayag Verma
|
||||
- ptschip
|
||||
- Puru
|
||||
- randy-waterhouse
|
||||
- R E Broadley
|
||||
- Rusty Russell
|
||||
- Suhas Daftuar
|
||||
- Suriyaa Kudo
|
||||
- TheLazieR Yip
|
||||
- Thomas Kerin
|
||||
- Tom Harding
|
||||
- Tyler Hardin
|
||||
- UdjinM6
|
||||
- Warren Togami
|
||||
- Will Binns
|
||||
- Wladimir J. van der Laan
|
||||
- Yuri Zhykin
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
410
doc/release-notes/release-notes-0.13.1.md
Normal file
@@ -0,0 +1,410 @@
|
||||
Bitcoin Core version 0.13.1 is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.13.1/>
|
||||
|
||||
This is a new minor version release, including activation parameters for the
|
||||
segwit softfork, various bugfixes and performance improvements, as well as
|
||||
updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://bitcoincore.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
an OS initially released in 2001. This means that not even critical security
|
||||
updates will be released anymore. Without security updates, using a bitcoin
|
||||
wallet on a XP machine is irresponsible at least.
|
||||
|
||||
In addition to that, with 0.12.x there have been varied reports of Bitcoin Core
|
||||
randomly crashing on Windows XP. It is [not clear](https://github.com/bitcoin/bitcoin/issues/7681#issuecomment-217439891)
|
||||
what the source of these crashes is, but it is likely that upstream
|
||||
libraries such as Qt are no longer being tested on XP.
|
||||
|
||||
We do not have time nor resources to provide support for an OS that is
|
||||
end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are
|
||||
suggested to upgrade to a newer version of Windows, or install an alternative OS
|
||||
that is supported.
|
||||
|
||||
No attempt is made to prevent installing or running the software on Windows XP,
|
||||
you can still do so at your own risk, but do not expect it to work: do not
|
||||
report issues about Windows XP to the issue tracker.
|
||||
|
||||
From 0.13.1 onwards OS X 10.7 is no longer supported. 0.13.0 was intended to work on 10.7+,
|
||||
but severe issues with the libc++ version on 10.7.x keep it from running reliably.
|
||||
0.13.1 now requires 10.8+, and will communicate that to 10.7 users, rather than crashing unexpectedly.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Segregated witness soft fork
|
||||
----------------------------
|
||||
|
||||
Segregated witness (segwit) is a soft fork that, if activated, will
|
||||
allow transaction-producing software 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:
|
||||
|
||||
- **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 Bitcoin wallet
|
||||
software more difficult and which seriously complicates the design of smart
|
||||
contracts for Bitcoin.
|
||||
|
||||
- **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 of the advanced-style payments
|
||||
(such as multisig) than it can support now because of the different weighting
|
||||
given to different parts of a transaction after segwit activates (see the
|
||||
following section for details).
|
||||
|
||||
- **Weighting data based on how it affects node performance:** Some parts of
|
||||
each Bitcoin block need to be stored by nodes in order to validate future
|
||||
blocks; other parts of a block can be immediately forgotten (pruned) or used
|
||||
only for helping other nodes sync their copy of the block chain. 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.
|
||||
|
||||
- **Signature covers value:** A simple improvement in the way signatures are
|
||||
generated in segwit simplifies the design of secure signature generators
|
||||
(such as hardware wallets), reduces the amount of data the signature
|
||||
generator needs to download, and allows the signature generator to operate
|
||||
more quickly. This is made possible by having the generator sign the amount
|
||||
of bitcoins they think they are spending, and by having full nodes refuse to
|
||||
accept those signatures unless the amount of bitcoins 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.
|
||||
|
||||
- **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 method that doesn't suffer from this problem and doesn't
|
||||
have any unwanted side-effects.
|
||||
|
||||
- **Increased security for multisig:** Bitcoin addresses (both P2PKH addresses
|
||||
that start with a '1' 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 Bitcoin's choice of parameters for its Elliptic
|
||||
Curve Digital Security Algorithm [ECDSA].)
|
||||
|
||||
- **More efficient almost-full-node security** Satoshi Nakamoto's original
|
||||
Bitcoin paper describes a method for allowing newly-started full nodes 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 Bitcoin'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 Bitcoin Core does not provide an option to use this capability as
|
||||
of this 0.13.1 release.
|
||||
|
||||
- **Script versioning:** Segwit makes it easy for future soft forks to allow
|
||||
Bitcoin users to individually opt-in to almost any change in the Bitcoin
|
||||
Script language when those users receive new transactions. Features
|
||||
currently being researched by Bitcoin 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 Merklized Abstract Syntax Trees (MAST), which can
|
||||
improve the privacy and efficiency of scripts with two or more conditions.
|
||||
Other Bitcoin community members are studying several other improvements
|
||||
that can be made using script versioning.
|
||||
|
||||
Activation for the segwit soft fork is being managed using BIP9
|
||||
versionbits. Segwit's version bit is bit 1, and nodes will begin
|
||||
tracking which blocks signal support for segwit at the beginning of the
|
||||
first retarget period after segwit's start date of 15 November 2016. If
|
||||
95% of blocks within a 2,016-block retarget period (about two weeks)
|
||||
signal support for segwit, the soft fork will be locked in. After
|
||||
another 2,016 blocks, segwit will activate.
|
||||
|
||||
For more information about segwit, please see the [segwit FAQ][], the
|
||||
[segwit wallet developers guide][] or BIPs [141][BIP141], [143][BIP143],
|
||||
[144][BIP144], and [145][BIP145]. If you're a miner or mining pool
|
||||
operator, please see the [versionbits FAQ][] for information about
|
||||
signaling support for a soft fork.
|
||||
|
||||
[Segwit FAQ]: https://bitcoincore.org/en/2016/01/26/segwit-benefits/
|
||||
[segwit wallet developers guide]: https://bitcoincore.org/en/segwit_wallet_dev/
|
||||
[BIP141]: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
|
||||
[BIP143]: https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
|
||||
[BIP144]: https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki
|
||||
[BIP145]: https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki
|
||||
[versionbits FAQ]: https://bitcoincore.org/en/2016/06/08/version-bits-miners-faq/
|
||||
|
||||
|
||||
Null dummy soft fork
|
||||
-------------------
|
||||
|
||||
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 Bitcoin 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][].
|
||||
|
||||
[BIP147]: https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki
|
||||
|
||||
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.
|
||||
|
||||
|
||||
Linux ARM builds
|
||||
----------------
|
||||
|
||||
With the 0.13.0 release, pre-built Linux ARM binaries were added to the set of
|
||||
uploaded executables. Additional detail on the ARM architecture targeted by each
|
||||
is provided below.
|
||||
|
||||
The following extra files can be found in the download directory or torrent:
|
||||
|
||||
- `bitcoin-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries targeting
|
||||
the 32-bit ARMv7-A architecture.
|
||||
- `bitcoin-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries targeting
|
||||
the 64-bit ARMv8-A architecture.
|
||||
|
||||
ARM builds are still experimental. If you have problems on a certain device or
|
||||
Linux distribution combination please report them on the bug tracker, it may be
|
||||
possible to resolve them. Note that the device you use must be (backward)
|
||||
compatible with the architecture targeted by the binary that you use.
|
||||
For example, a Raspberry Pi 2 Model B or Raspberry Pi 3 Model B (in its 32-bit
|
||||
execution state) device, can run the 32-bit ARMv7-A targeted binary. However,
|
||||
no model of Raspberry Pi 1 device can run either binary because they are all
|
||||
ARMv6 architecture devices that are not compatible with ARMv7-A or ARMv8-A.
|
||||
|
||||
Note that Android is not considered ARM Linux in this context. The executables
|
||||
are not expected to work out of the box on Android.
|
||||
|
||||
|
||||
0.13.1 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### Consensus
|
||||
- #8636 `9dfa0c8` Implement NULLDUMMY softfork (BIP147) (jl2012)
|
||||
- #8848 `7a34a46` Add NULLDUMMY verify flag in bitcoinconsensus.h (jl2012)
|
||||
- #8937 `8b66659` Define start and end time for segwit deployment (sipa)
|
||||
|
||||
### RPC and other APIs
|
||||
- #8581 `526d2b0` Drop misleading option in importprunedfunds (MarcoFalke)
|
||||
- #8699 `a5ec248` Remove createwitnessaddress RPC command (jl2012)
|
||||
- #8780 `794b007` Deprecate getinfo (MarcoFalke)
|
||||
- #8832 `83ad563` Throw JSONRPCError when utxo set can not be read (MarcoFalke)
|
||||
- #8884 `b987348` getblockchaininfo help: pruneheight is the lowest, not highest, block (luke-jr)
|
||||
- #8858 `3f508ed` rpc: Generate auth cookie in hex instead of base64 (laanwj)
|
||||
- #8951 `7c2bf4b` RPC/Mining: getblocktemplate: Update and fix formatting of help (luke-jr)
|
||||
|
||||
### Block and transaction handling
|
||||
- #8611 `a9429ca` Reduce default number of blocks to check at startup (sipa)
|
||||
- #8634 `3e80ab7` Add policy: null signature for failed CHECK(MULTI)SIG (jl2012)
|
||||
- #8525 `1672225` Do not store witness txn in rejection cache (sipa)
|
||||
- #8499 `9777fe1` Add several policy limits and disable uncompressed keys for segwit scripts (jl2012)
|
||||
- #8526 `0027672` Make non-minimal OP_IF/NOTIF argument non-standard for P2WSH (jl2012)
|
||||
- #8524 `b8c79a0` Precompute sighashes (sipa)
|
||||
- #8651 `b8c79a0` Predeclare PrecomputedTransactionData as struct (sipa)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #8740 `42ea51a` No longer send local address in addrMe (laanwj)
|
||||
- #8427 `69d1cd2` Ignore `notfound` P2P messages (laanwj)
|
||||
- #8573 `4f84082` Set jonasschnellis dns-seeder filter flag (jonasschnelli)
|
||||
- #8712 `23feab1` Remove maxuploadtargets recommended minimum (jonasschnelli)
|
||||
- #8862 `7ae6242` Fix a few cases where messages were sent after requested disconnect (theuni)
|
||||
- #8393 `fe1975a` Support for compact blocks together with segwit (sipa)
|
||||
- #8282 `2611ad7` Feeler connections to increase online addrs in the tried table (EthanHeilman)
|
||||
- #8612 `2215c22` Check for compatibility with download in FindNextBlocksToDownload (sipa)
|
||||
- #8606 `bbf379b` Fix some locks (sipa)
|
||||
- #8594 `ab295bb` Do not add random inbound peers to addrman (gmaxwell)
|
||||
- #8940 `5b4192b` Add x9 service bit support to dnsseed.bluematt.me, seed.bitcoinstats.com (TheBlueMatt, cdecker)
|
||||
- #8944 `685e4c7` Remove bogus assert on number of oubound connections. (TheBlueMatt)
|
||||
- #8949 `0dbc48a` Be more agressive in getting connections to peers with relevant services (gmaxwell)
|
||||
|
||||
### Build system
|
||||
- #8293 `fa5b249` Allow building libbitcoinconsensus without any univalue (luke-jr)
|
||||
- #8492 `8b0bdd3` Allow building bench_bitcoin by itself (luke-jr)
|
||||
- #8563 `147003c` Add configure check for -latomic (ajtowns)
|
||||
- #8626 `ea51b0f` Berkeley DB v6 compatibility fix (netsafe)
|
||||
- #8520 `75f2065` Remove check for `openssl/ec.h` (laanwj)
|
||||
|
||||
### GUI
|
||||
- #8481 `d9f0d4e` Fix minimize and close bugs (adlawren)
|
||||
- #8487 `a37cec5` Persist the datadir after option reset (achow101)
|
||||
- #8697 `41fd852` Fix op order to append first alert (rodasmith)
|
||||
- #8678 `8e03382` Fix UI bug that could result in paying unexpected fee (jonasschnelli)
|
||||
- #8911 `7634d8e` Translate all files, even if wallet disabled (laanwj)
|
||||
- #8540 `1db3352` Fix random segfault when closing "Choose data directory" dialog (laanwj)
|
||||
- #7579 `f1c0d78` Show network/chain errors in the GUI (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
- #8443 `464dedd` Trivial cleanup of HD wallet changes (jonasschnelli)
|
||||
- #8539 `cb07f19` CDB: fix debug output (crowning-)
|
||||
- #8664 `091cdeb` Fix segwit-related wallet bug (sdaftuar)
|
||||
- #8693 `c6a6291` Add witness address to address book (instagibbs)
|
||||
- #8765 `6288659` Remove "unused" ThreadFlushWalletDB from removeprunedfunds (jonasschnelli)
|
||||
|
||||
### Tests and QA
|
||||
- #8713 `ae8c7df` create_cache: Delete temp dir when done (MarcoFalke)
|
||||
- #8716 `e34374e` Check legacy wallet as well (MarcoFalke)
|
||||
- #8750 `d6ebe13` Refactor RPCTestHandler to prevent TimeoutExpired (MarcoFalke)
|
||||
- #8652 `63462c2` remove root test directory for RPC tests (yurizhykin)
|
||||
- #8724 `da94272` walletbackup: Sync blocks inside the loop (MarcoFalke)
|
||||
- #8400 `bea02dc` enable rpcbind_test (yurizhykin)
|
||||
- #8417 `f70be14` Add walletdump RPC test (including HD- & encryption-tests) (jonasschnelli)
|
||||
- #8419 `a7aa3cc` Enable size accounting in mining unit tests (sdaftuar)
|
||||
- #8442 `8bb1efd` Rework hd wallet dump test (MarcoFalke)
|
||||
- #8528 `3606b6b` Update p2p-segwit.py to reflect correct behavior (instagibbs)
|
||||
- #8531 `a27cdd8` abandonconflict: Use assert_equal (MarcoFalke)
|
||||
- #8667 `6b07362` Fix SIGHASH_SINGLE bug in test_framework SignatureHash (jl2012)
|
||||
- #8673 `03b0196` Fix obvious assignment/equality error in test (JeremyRubin)
|
||||
- #8739 `cef633c` Fix broken sendcmpct test in p2p-compactblocks.py (sdaftuar)
|
||||
- #8418 `ff893aa` Add tests for compact blocks (sdaftuar)
|
||||
- #8803 `375437c` Ping regularly in p2p-segwit.py to keep connection alive (jl2012)
|
||||
- #8827 `9bbe66e` Split up slow RPC calls to avoid pruning test timeouts (sdaftuar)
|
||||
- #8829 `2a8bca4` Add bitcoin-tx JSON tests (jnewbery)
|
||||
- #8834 `1dd1783` blockstore: Switch to dumb dbm (MarcoFalke)
|
||||
- #8835 `d87227d` nulldummy.py: Don't run unused code (MarcoFalke)
|
||||
- #8836 `eb18cc1` bitcoin-util-test.py should fail if the output file is empty (jnewbery)
|
||||
- #8839 `31ab2f8` Avoid ConnectionResetErrors during RPC tests (laanwj)
|
||||
- #8840 `cbc3fe5` Explicitly set encoding to utf8 when opening text files (laanwj)
|
||||
- #8841 `3e4abb5` Fix nulldummy test (jl2012)
|
||||
- #8854 `624a007` Fix race condition in p2p-compactblocks test (sdaftuar)
|
||||
- #8857 `1f60d45` mininode: Only allow named args in wait_until (MarcoFalke)
|
||||
- #8860 `0bee740` util: Move wait_bitcoinds() into stop_nodes() (MarcoFalke)
|
||||
- #8882 `b73f065` Fix race conditions in p2p-compactblocks.py and sendheaders.py (sdaftuar)
|
||||
- #8904 `cc6f551` Fix compact block shortids for a test case (dagurval)
|
||||
|
||||
### Documentation
|
||||
- #8754 `0e2c6bd` Target protobuf 2.6 in OS X build notes. (fanquake)
|
||||
- #8461 `b17a3f9` Document return value of networkhashps for getmininginfo RPC endpoint (jlopp)
|
||||
- #8512 `156e305` Corrected JSON typo on setban of net.cpp (sevastos)
|
||||
- #8683 `8a7d7ff` Fix incorrect file name bitcoin.qrc (bitcoinsSG)
|
||||
- #8891 `5e0dd9e` Update bips.md for Segregated Witness (fanquake)
|
||||
- #8545 `863ae74` Update git-subtree-check.sh README (MarcoFalke)
|
||||
- #8607 `486650a` Fix doxygen off-by-one comments, fix typos (MarcoFalke)
|
||||
- #8560 `c493f43` Fix two VarInt examples in serialize.h (cbarcenas)
|
||||
- #8737 `084cae9` UndoReadFromDisk works on undo files (rev), not on block files (paveljanik)
|
||||
- #8625 `0a35573` Clarify statement about parallel jobs in rpc-tests.py (isle2983)
|
||||
- #8624 `0e6d753` build: Mention curl (MarcoFalke)
|
||||
- #8604 `b09e13c` build,doc: Update for 0.13.0+ and OpenBSD 5.9 (laanwj)
|
||||
- #8939 `06d15fb` Update implemented bips for 0.13.1 (sipa)
|
||||
|
||||
### Miscellaneous
|
||||
- #8742 `d31ac72` Specify Protobuf version 2 in paymentrequest.proto (fanquake)
|
||||
- #8414,#8558,#8676,#8700,#8701,#8702 Add missing copyright headers (isle2983, kazcw)
|
||||
- #8899 `4ed2627` Fix wake from sleep issue with Boost 1.59.0 (fanquake)
|
||||
- #8817 `bcf3806` update bitcoin-tx to output witness data (jnewbery)
|
||||
- #8513 `4e5fc31` Fix a type error that would not compile on OSX. (JeremyRubin)
|
||||
- #8392 `30eac2d` Fix several node initialization issues (sipa)
|
||||
- #8548 `305d8ac` Use `__func__` to get function name for output printing (MarcoFalke)
|
||||
- #8291 `a987431` [util] CopyrightHolders: Check for untranslated substitution (MarcoFalke)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- adlawren
|
||||
- Alexey Vesnin
|
||||
- Anders Øyvind Urke-Sætre
|
||||
- Andrew Chow
|
||||
- Anthony Towns
|
||||
- BtcDrak
|
||||
- Chris Stewart
|
||||
- Christian Barcenas
|
||||
- Christian Decker
|
||||
- Cory Fields
|
||||
- crowning-
|
||||
- Dagur Valberg Johannsson
|
||||
- David A. Harding
|
||||
- Eric Lombrozo
|
||||
- Ethan Heilman
|
||||
- fanquake
|
||||
- Gaurav Rana
|
||||
- Gregory Maxwell
|
||||
- instagibbs
|
||||
- isle2983
|
||||
- Jameson Lopp
|
||||
- Jeremy Rubin
|
||||
- jnewbery
|
||||
- Johnson Lau
|
||||
- Jonas Schnelli
|
||||
- jonnynewbs
|
||||
- Justin Camarena
|
||||
- Kaz Wesley
|
||||
- leijurv
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- Marty Jones
|
||||
- Matt Corallo
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- mruddy
|
||||
- Pavel Janík
|
||||
- Pieter Wuille
|
||||
- rodasmith
|
||||
- Sev
|
||||
- Suhas Daftuar
|
||||
- whythat
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
178
doc/release-notes/release-notes-0.13.2.md
Normal file
@@ -0,0 +1,178 @@
|
||||
Bitcoin Core version 0.13.2 is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.13.2/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://bitcoincore.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
an OS initially released in 2001. This means that not even critical security
|
||||
updates will be released anymore. Without security updates, using a bitcoin
|
||||
wallet on a XP machine is irresponsible at least.
|
||||
|
||||
In addition to that, with 0.12.x there have been varied reports of Bitcoin Core
|
||||
randomly crashing on Windows XP. It is [not clear](https://github.com/bitcoin/bitcoin/issues/7681#issuecomment-217439891)
|
||||
what the source of these crashes is, but it is likely that upstream
|
||||
libraries such as Qt are no longer being tested on XP.
|
||||
|
||||
We do not have time nor resources to provide support for an OS that is
|
||||
end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are
|
||||
suggested to upgrade to a newer version of Windows, or install an alternative OS
|
||||
that is supported.
|
||||
|
||||
No attempt is made to prevent installing or running the software on Windows XP,
|
||||
you can still do so at your own risk, but do not expect it to work: do not
|
||||
report issues about Windows XP to the issue tracker.
|
||||
|
||||
From 0.13.1 onwards OS X 10.7 is no longer supported. 0.13.0 was intended to work on 10.7+,
|
||||
but severe issues with the libc++ version on 10.7.x keep it from running reliably.
|
||||
0.13.1 now requires 10.8+, and will communicate that to 10.7 users, rather than crashing unexpectedly.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Change to wallet handling of mempool rejection
|
||||
-----------------------------------------------
|
||||
|
||||
When a newly created transaction failed to enter the mempool due to
|
||||
the limits on chains of unconfirmed transactions the sending RPC
|
||||
calls would return an error. The transaction would still be queued
|
||||
in the wallet and, once some of the parent transactions were
|
||||
confirmed, broadcast after the software was restarted.
|
||||
|
||||
This behavior has been changed to return success and to reattempt
|
||||
mempool insertion at the same time transaction rebroadcast is
|
||||
attempted, avoiding a need for a restart.
|
||||
|
||||
Transactions in the wallet which cannot be accepted into the mempool
|
||||
can be abandoned with the previously existing abandontransaction RPC
|
||||
(or in the GUI via a context menu on the transaction).
|
||||
|
||||
|
||||
0.13.2 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### Consensus
|
||||
- #9293 `e591c10` [0.13 Backport #9053] IBD using chainwork instead of height and not using header timestamp (gmaxwell)
|
||||
- #9053 `5b93eee` IBD using chainwork instead of height and not using header timestamps (gmaxwell)
|
||||
|
||||
### RPC and other APIs
|
||||
- #8845 `1d048b9` Don't return the address of a P2SH of a P2SH (jnewbery)
|
||||
- #9041 `87fbced` keypoololdest denote Unix epoch, not GMT (s-matthew-english)
|
||||
- #9122 `f82c81b` fix getnettotals RPC description about timemillis (visvirial)
|
||||
- #9042 `5bcb05d` [rpc] ParseHash: Fail when length is not 64 (MarcoFalke)
|
||||
- #9194 `f26dab7` Add option to return non-segwit serialization via rpc (instagibbs)
|
||||
- #9347 `b711390` [0.13.2] wallet/rpc backports (MarcoFalke)
|
||||
- #9292 `c365556` Complain when unknown rpcserialversion is specified (sipa)
|
||||
- #9322 `49a612f` [qa] Don't set unknown rpcserialversion (MarcoFalke)
|
||||
|
||||
### Block and transaction handling
|
||||
- #8357 `ce0d817` [mempool] Fix relaypriority calculation error (maiiz)
|
||||
- #9267 `0a4aa87` [0.13 backport #9239] Disable fee estimates for a confirm target of 1 block (morcos)
|
||||
- #9196 `0c09d9f` Send tip change notification from invalidateblock (ryanofsky)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #8995 `9ef3875` Add missing cs_main lock to ::GETBLOCKTXN processing (TheBlueMatt)
|
||||
- #9234 `94531b5` torcontrol: Explicitly request RSA1024 private key (laanwj)
|
||||
- #8637 `2cad5db` Compact Block Tweaks (rebase of #8235) (sipa)
|
||||
- #9058 `286e548` Fixes for p2p-compactblocks.py test timeouts on travis (#8842) (ryanofsky)
|
||||
- #8865 `4c71fc4` Decouple peer-processing-logic from block-connection-logic (TheBlueMatt)
|
||||
- #9117 `6fe3981` net: don't send feefilter messages before the version handshake is complete (theuni)
|
||||
- #9188 `ca1fd75` Make orphan parent fetching ask for witnesses (gmaxwell)
|
||||
- #9052 `3a3bcbf` Use RelevantServices instead of node_network in AttemptToEvict (gmaxwell)
|
||||
- #9048 `9460771` [0.13 backport #9026] Fix handling of invalid compact blocks (sdaftuar)
|
||||
- #9357 `03b6f62` [0.13 backport #9352] Attempt reconstruction from all compact block announcements (sdaftuar)
|
||||
- #9189 `b96a8f7` Always add default_witness_commitment with GBT client support (sipa)
|
||||
- #9253 `28d0f22` Fix calculation of number of bound sockets to use (TheBlueMatt)
|
||||
- #9199 `da5a16b` Always drop the least preferred HB peer when adding a new one (gmaxwell)
|
||||
|
||||
### Build system
|
||||
- #9169 `d1b4da9` build: fix qt5.7 build under macOS (theuni)
|
||||
- #9326 `a0f7ece` Update for OpenSSL 1.1 API (gmaxwell)
|
||||
- #9224 `396c405` Prevent FD_SETSIZE error building on OpenBSD (ivdsangen)
|
||||
|
||||
### GUI
|
||||
- #8972 `6f86b53` Make warnings label selectable (jonasschnelli) (MarcoFalke)
|
||||
- #9185 `6d70a73` Fix coincontrol sort issue (jonasschnelli)
|
||||
- #9094 `5f3a12c` Use correct conversion function for boost::path datadir (laanwj)
|
||||
- #8908 `4a974b2` Update bitcoin-qt.desktop (s-matthew-english)
|
||||
- #9190 `dc46b10` Plug many memory leaks (laanwj)
|
||||
|
||||
### Wallet
|
||||
- #9290 `35174a0` Make RelayWalletTransaction attempt to AcceptToMemoryPool (gmaxwell)
|
||||
- #9295 `43bcfca` Bugfix: Fundrawtransaction: don't terminate when keypool is empty (jonasschnelli)
|
||||
- #9302 `f5d606e` Return txid even if ATMP fails for new transaction (sipa)
|
||||
- #9262 `fe39f26` Prefer coins that have fewer ancestors, sanity check txn before ATMP (instagibbs)
|
||||
|
||||
### Tests and QA
|
||||
- #9159 `eca9b46` Wait for specific block announcement in p2p-compactblocks (ryanofsky)
|
||||
- #9186 `dccdc3a` Fix use-after-free in scheduler tests (laanwj)
|
||||
- #9168 `3107280` Add assert_raises_message to check specific error message (mrbandrews)
|
||||
- #9191 `29435db` 0.13.2 Backports (MarcoFalke)
|
||||
- #9077 `1d4c884` Increase wallet-dump RPC timeout (ryanofsky)
|
||||
- #9098 `ecd7db5` Handle zombies and cluttered tmpdirs (MarcoFalke)
|
||||
- #8927 `387ec9d` Add script tests for FindAndDelete in pre-segwit and segwit scripts (jl2012)
|
||||
- #9200 `eebc699` bench: Fix subtle counting issue when rescaling iteration count (laanwj)
|
||||
|
||||
### Miscellaneous
|
||||
- #8838 `094848b` Calculate size and weight of block correctly in CreateNewBlock() (jnewbery)
|
||||
- #8920 `40169dc` Set minimum required Boost to 1.47.0 (fanquake)
|
||||
- #9251 `a710a43` Improvement of documentation of command line parameter 'whitelist' (wodry)
|
||||
- #8932 `106da69` Allow bitcoin-tx to create v2 transactions (btcdrak)
|
||||
- #8929 `12428b4` add software-properties-common (sigwo)
|
||||
- #9120 `08d1c90` bug: Missed one "return false" in recent refactoring in #9067 (UdjinM6)
|
||||
- #9067 `f85ee01` Fix exit codes (UdjinM6)
|
||||
- #9340 `fb987b3` [0.13] Update secp256k1 subtree (MarcoFalke)
|
||||
- #9229 `b172377` Remove calls to getaddrinfo_a (TheBlueMatt)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- BtcDrak
|
||||
- Cory Fields
|
||||
- fanquake
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders
|
||||
- instagibbs
|
||||
- Ivo van der Sangen
|
||||
- jnewbery
|
||||
- Johnson Lau
|
||||
- Jonas Schnelli
|
||||
- Luke Dashjr
|
||||
- maiiz
|
||||
- MarcoFalke
|
||||
- Masahiko Hyuga
|
||||
- Matt Corallo
|
||||
- matthias
|
||||
- mrbandrews
|
||||
- Pavel Janík
|
||||
- Pieter Wuille
|
||||
- randy-waterhouse
|
||||
- Russell Yanofsky
|
||||
- S. Matthew English
|
||||
- Steven
|
||||
- Suhas Daftuar
|
||||
- UdjinM6
|
||||
- Wladimir J. van der Laan
|
||||
- wodry
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
@@ -1,41 +1,63 @@
|
||||
Release Process
|
||||
====================
|
||||
|
||||
* Update translations (ping wumpus, Diapolo or tcatm on IRC) see [translation_process.md](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#syncing-with-transifex)
|
||||
* Update [bips.md](bips.md) to account for changes since the last release.
|
||||
* Update hardcoded [seeds](/contrib/seeds)
|
||||
Before every release candidate:
|
||||
|
||||
* * *
|
||||
* Update translations (ping wumpus on IRC) see [translation_process.md](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#synchronising-translations).
|
||||
|
||||
Before every minor and major release:
|
||||
|
||||
* Update [bips.md](bips.md) to account for changes since the last release.
|
||||
* Update version in sources (see below)
|
||||
* Write release notes (see below)
|
||||
* Update `src/chainparams.cpp` nMinimumChainWork with information from the getblockchaininfo rpc.
|
||||
|
||||
Before every major release:
|
||||
|
||||
* Update hardcoded [seeds](/contrib/seeds/README.md), see [this pull request](https://github.com/bitcoin/bitcoin/pull/7415) for an example.
|
||||
|
||||
### First time / New builders
|
||||
|
||||
Check out the source code in the following directory hierarchy.
|
||||
|
||||
cd /path/to/your/toplevel/build
|
||||
git clone https://github.com/bitcoin/gitian.sigs.git
|
||||
git clone https://github.com/bitcoin/bitcoin-detached-sigs.git
|
||||
git clone https://github.com/bitcoin-core/gitian.sigs.git
|
||||
git clone https://github.com/bitcoin-core/bitcoin-detached-sigs.git
|
||||
git clone https://github.com/devrandom/gitian-builder.git
|
||||
git clone https://github.com/bitcoin/bitcoin.git
|
||||
|
||||
###Bitcoin maintainers/release engineers, update (commit) version in sources
|
||||
### Bitcoin maintainers/release engineers, update version in sources
|
||||
|
||||
pushd ./bitcoin
|
||||
contrib/verifysfbinaries/verify.sh
|
||||
configure.ac
|
||||
doc/README*
|
||||
doc/Doxyfile
|
||||
contrib/gitian-descriptors/*.yml
|
||||
src/clientversion.h (change CLIENT_VERSION_IS_RELEASE to true)
|
||||
Update the following:
|
||||
|
||||
# tag version in git
|
||||
- `configure.ac`:
|
||||
- `_CLIENT_VERSION_MAJOR`
|
||||
- `_CLIENT_VERSION_MINOR`
|
||||
- `_CLIENT_VERSION_REVISION`
|
||||
- Don't forget to set `_CLIENT_VERSION_IS_RELEASE` to `true`
|
||||
- `src/clientversion.h`: (this mirrors `configure.ac` - see issue #3539)
|
||||
- `CLIENT_VERSION_MAJOR`
|
||||
- `CLIENT_VERSION_MINOR`
|
||||
- `CLIENT_VERSION_REVISION`
|
||||
- Don't forget to set `CLIENT_VERSION_IS_RELEASE` to `true`
|
||||
- `doc/README.md` and `doc/README_windows.txt`
|
||||
- `doc/Doxyfile`: `PROJECT_NUMBER` contains the full version
|
||||
- `contrib/gitian-descriptors/*.yml`: usually one'd want to do this on master after branching off the release - but be sure to at least do it before a new major release
|
||||
|
||||
git tag -s v(new version, e.g. 0.8.0)
|
||||
|
||||
# write release notes. git shortlog helps a lot, for example:
|
||||
Write release notes. git shortlog helps a lot, for example:
|
||||
|
||||
git shortlog --no-merges v(current version, e.g. 0.7.2)..v(new version, e.g. 0.8.0)
|
||||
popd
|
||||
|
||||
* * *
|
||||
(or ping @wumpus on IRC, he has specific tooling to generate the list of merged pulls
|
||||
and sort them into categories based on labels)
|
||||
|
||||
Generate list of authors:
|
||||
|
||||
git log --format='%aN' "$*" | sort -ui | sed -e 's/^/- /'
|
||||
|
||||
Tag version (or release candidate) in git
|
||||
|
||||
git tag -s v(new version, e.g. 0.8.0)
|
||||
|
||||
### Setup and perform Gitian builds
|
||||
|
||||
@@ -54,41 +76,43 @@ Check out the source code in the following directory hierarchy.
|
||||
git pull
|
||||
popd
|
||||
|
||||
Ensure gitian-builder is up-to-date to take advantage of new caching features (`e9741525c` or later is recommended).
|
||||
Ensure gitian-builder is up-to-date:
|
||||
|
||||
pushd ./gitian-builder
|
||||
git pull
|
||||
popd
|
||||
|
||||
### Fetch and create inputs: (first time, or when dependency versions change)
|
||||
|
||||
pushd ./gitian-builder
|
||||
mkdir -p inputs
|
||||
wget -P inputs https://bitcoincore.org/cfields/osslsigncode-Backports-to-1.7.1.patch
|
||||
wget -P inputs http://downloads.sourceforge.net/project/osslsigncode/osslsigncode/osslsigncode-1.7.1.tar.gz
|
||||
popd
|
||||
|
||||
Register and download the Apple SDK: see [OS X readme](README_osx.txt) for details.
|
||||
|
||||
https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_6.1.1/xcode_6.1.1.dmg
|
||||
|
||||
Using a Mac, create a tarball for the 10.9 SDK and copy it to the inputs directory:
|
||||
|
||||
tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.9.sdk.tar.gz MacOSX10.9.sdk
|
||||
Create the OS X SDK tarball, see the [OS X readme](README_osx.md) for details, and copy it into the inputs directory.
|
||||
|
||||
### Optional: Seed the Gitian sources cache and offline git repositories
|
||||
|
||||
By default, Gitian will fetch source files as needed. To cache them ahead of time:
|
||||
|
||||
pushd ./gitian-builder
|
||||
make -C ../bitcoin/depends download SOURCES_PATH=`pwd`/cache/common
|
||||
popd
|
||||
|
||||
Only missing files will be fetched, so this is safe to re-run for each build.
|
||||
|
||||
NOTE: Offline builds must use the --url flag to ensure Gitian fetches only from local URLs. For example:
|
||||
```
|
||||
|
||||
pushd ./gitian-builder
|
||||
./bin/gbuild --url bitcoin=/path/to/bitcoin,signature=/path/to/sigs {rest of arguments}
|
||||
```
|
||||
popd
|
||||
|
||||
The gbuild invocations below <b>DO NOT DO THIS</b> by default.
|
||||
|
||||
### Build and sign Bitcoin Core for Linux, Windows, and OS X:
|
||||
|
||||
pushd ./gitian-builder
|
||||
./bin/gbuild --memory 3000 --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
./bin/gsign --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
mv build/out/bitcoin-*.tar.gz build/out/src/bitcoin-*.tar.gz ../
|
||||
@@ -102,27 +126,28 @@ The gbuild invocations below <b>DO NOT DO THIS</b> by default.
|
||||
./bin/gsign --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
mv build/out/bitcoin-*-osx-unsigned.tar.gz inputs/bitcoin-osx-unsigned.tar.gz
|
||||
mv build/out/bitcoin-*.tar.gz build/out/bitcoin-*.dmg ../
|
||||
popd
|
||||
|
||||
Build output expected:
|
||||
|
||||
1. source tarball (bitcoin-${VERSION}.tar.gz)
|
||||
2. linux 32-bit and 64-bit dist tarballs (bitcoin-${VERSION}-linux[32|64].tar.gz)
|
||||
3. windows 32-bit and 64-bit unsigned installers and dist zips (bitcoin-${VERSION}-win[32|64]-setup-unsigned.exe, bitcoin-${VERSION}-win[32|64].zip)
|
||||
4. OS X unsigned installer and dist tarball (bitcoin-${VERSION}-osx-unsigned.dmg, bitcoin-${VERSION}-osx64.tar.gz)
|
||||
5. Gitian signatures (in gitian.sigs/${VERSION}-<linux|{win,osx}-unsigned>/(your Gitian key)/
|
||||
1. source tarball (`bitcoin-${VERSION}.tar.gz`)
|
||||
2. linux 32-bit and 64-bit dist tarballs (`bitcoin-${VERSION}-linux[32|64].tar.gz`)
|
||||
3. windows 32-bit and 64-bit unsigned installers and dist zips (`bitcoin-${VERSION}-win[32|64]-setup-unsigned.exe`, `bitcoin-${VERSION}-win[32|64].zip`)
|
||||
4. OS X unsigned installer and dist tarball (`bitcoin-${VERSION}-osx-unsigned.dmg`, `bitcoin-${VERSION}-osx64.tar.gz`)
|
||||
5. Gitian signatures (in `gitian.sigs/${VERSION}-<linux|{win,osx}-unsigned>/(your Gitian key)/`)
|
||||
|
||||
### Verify other gitian builders signatures to your own. (Optional)
|
||||
|
||||
Add other gitian builders keys to your gpg keyring
|
||||
|
||||
gpg --import ../bitcoin/contrib/gitian-keys/*.pgp
|
||||
gpg --import bitcoin/contrib/gitian-keys/*.pgp
|
||||
|
||||
Verify the signatures
|
||||
|
||||
pushd ./gitian-builder
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-linux ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-win-unsigned ../bitcoin/contrib/gitian-descriptors/gitian-win.yml
|
||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-osx-unsigned ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
|
||||
popd
|
||||
|
||||
### Next steps:
|
||||
@@ -138,8 +163,9 @@ Commit your signature to gitian.sigs:
|
||||
popd
|
||||
|
||||
Wait for Windows/OS X detached signatures:
|
||||
Once the Windows/OS X builds each have 3 matching signatures, they will be signed with their respective release keys.
|
||||
Detached signatures will then be committed to the [bitcoin-detached-sigs](https://github.com/bitcoin/bitcoin-detached-sigs) repository, which can be combined with the unsigned apps to create signed binaries.
|
||||
|
||||
- Once the Windows/OS X builds each have 3 matching signatures, they will be signed with their respective release keys.
|
||||
- Detached signatures will then be committed to the [bitcoin-detached-sigs](https://github.com/bitcoin-core/bitcoin-detached-sigs) repository, which can be combined with the unsigned apps to create signed binaries.
|
||||
|
||||
Create (and optionally verify) the signed OS X binary:
|
||||
|
||||
@@ -169,13 +195,36 @@ Commit your signature for the signed OS X/Windows binaries:
|
||||
git push # Assuming you can push to the gitian.sigs tree
|
||||
popd
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
### After 3 or more people have gitian-built and their results match:
|
||||
|
||||
- Create `SHA256SUMS.asc` for the builds, and GPG-sign it:
|
||||
|
||||
```bash
|
||||
sha256sum * > SHA256SUMS
|
||||
```
|
||||
|
||||
The list of files should be:
|
||||
```
|
||||
bitcoin-${VERSION}-aarch64-linux-gnu.tar.gz
|
||||
bitcoin-${VERSION}-arm-linux-gnueabihf.tar.gz
|
||||
bitcoin-${VERSION}-i686-pc-linux-gnu.tar.gz
|
||||
bitcoin-${VERSION}-x86_64-linux-gnu.tar.gz
|
||||
bitcoin-${VERSION}-osx64.tar.gz
|
||||
bitcoin-${VERSION}-osx.dmg
|
||||
bitcoin-${VERSION}.tar.gz
|
||||
bitcoin-${VERSION}-win32-setup.exe
|
||||
bitcoin-${VERSION}-win32.zip
|
||||
bitcoin-${VERSION}-win64-setup.exe
|
||||
bitcoin-${VERSION}-win64.zip
|
||||
```
|
||||
The `*-debug*` files generated by the gitian build contain debug symbols
|
||||
for troubleshooting by developers. It is assumed that anyone that is interested
|
||||
in debugging can run gitian to generate the files for themselves. To avoid
|
||||
end-user confusion about which file to pick, as well as save storage
|
||||
space *do not upload these to the bitcoin.org server, nor put them in the torrent*.
|
||||
|
||||
- GPG-sign it, delete the unsigned file:
|
||||
```
|
||||
gpg --digest-algo sha256 --clearsign SHA256SUMS # outputs SHA256SUMS.asc
|
||||
rm SHA256SUMS
|
||||
```
|
||||
@@ -185,6 +234,15 @@ Note: check that SHA256SUMS itself doesn't end up in SHA256SUMS, which is a spur
|
||||
- Upload zips and installers, as well as `SHA256SUMS.asc` from last step, to the bitcoin.org server
|
||||
into `/var/www/bin/bitcoin-core-${VERSION}`
|
||||
|
||||
- A `.torrent` will appear in the directory after a few minutes. Optionally help seed this torrent. To get the `magnet:` URI use:
|
||||
```bash
|
||||
transmission-show -m <torrent file>
|
||||
```
|
||||
Insert the magnet URI into the announcement sent to mailing lists. This permits
|
||||
people without access to `bitcoin.org` to download the binary distribution.
|
||||
Also put it into the `optional_magnetlink:` slot in the YAML file for
|
||||
bitcoin.org (see below for bitcoin.org update instructions).
|
||||
|
||||
- Update bitcoin.org version
|
||||
|
||||
- First, check to see if the Bitcoin.org maintainers have prepared a
|
||||
@@ -202,13 +260,15 @@ Note: check that SHA256SUMS itself doesn't end up in SHA256SUMS, which is a spur
|
||||
|
||||
- Announce the release:
|
||||
|
||||
- Release sticky on bitcointalk: https://bitcointalk.org/index.php?board=1.0
|
||||
- bitcoin-dev and bitcoin-core-dev mailing list
|
||||
|
||||
- Bitcoin-development mailing list
|
||||
- Bitcoin Core announcements list https://bitcoincore.org/en/list/announcements/join/
|
||||
|
||||
- bitcoincore.org blog post
|
||||
|
||||
- Update title of #bitcoin on Freenode IRC
|
||||
|
||||
- Optionally reddit /r/Bitcoin, ... but this will usually sort out itself
|
||||
- Optionally twitter, reddit /r/Bitcoin, ... but this will usually sort out itself
|
||||
|
||||
- Notify BlueMatt so that he can start building [the PPAs](https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ The interface is defined in the C header `bitcoinconsensus.h` located in `src/s
|
||||
|
||||
#### Version
|
||||
|
||||
`bitcoinconsensus_version` returns an `unsigned int` with the the API version *(currently at an experimental `0`)*.
|
||||
`bitcoinconsensus_version` returns an `unsigned int` with the API version *(currently at an experimental `0`)*.
|
||||
|
||||
#### Script Validation
|
||||
|
||||
@@ -30,12 +30,17 @@ The interface is defined in the C header `bitcoinconsensus.h` located in `src/s
|
||||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NONE`
|
||||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_P2SH` - Evaluate P2SH ([BIP16](https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki)) subscripts
|
||||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_DERSIG` - Enforce strict DER ([BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)) compliance
|
||||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY` - Enforce NULLDUMMY ([BIP147](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki))
|
||||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY` - Enable CHECKLOCKTIMEVERIFY ([BIP65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki))
|
||||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY` - Enable CHECKSEQUENCEVERIFY ([BIP112](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki))
|
||||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_WITNESS` - Enable WITNESS ([BIP141](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki))
|
||||
|
||||
##### Errors
|
||||
- `bitcoinconsensus_ERR_OK` - No errors with input parameters *(see the return value of `bitcoinconsensus_verify_script` for the verification status)*
|
||||
- `bitcoinconsensus_ERR_TX_INDEX` - An invalid index for `txTo`
|
||||
- `bitcoinconsensus_ERR_TX_SIZE_MISMATCH` - `txToLen` did not match with the size of `txTo`
|
||||
- `bitcoinconsensus_ERR_DESERIALIZE` - An error deserializing `txTo`
|
||||
- `bitcoinconsensus_ERR_AMOUNT_REQUIRED` - Input amount is required if WITNESS is used
|
||||
|
||||
### Example Implementations
|
||||
- [NBitcoin](https://github.com/NicolasDorier/NBitcoin/blob/master/NBitcoin/Script.cs#L814) (.NET Bindings)
|
||||
|
||||
20
doc/tor.md
@@ -3,7 +3,7 @@ TOR SUPPORT IN BITCOIN
|
||||
|
||||
It is possible to run Bitcoin as a Tor hidden service, and connect to such services.
|
||||
|
||||
The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on a random port. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly
|
||||
The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on port 9150. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly
|
||||
configure Tor.
|
||||
|
||||
|
||||
@@ -95,12 +95,22 @@ Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
|
||||
API, to create and destroy 'ephemeral' hidden services programmatically.
|
||||
Bitcoin Core has been updated to make use of this.
|
||||
|
||||
This means that if Tor is running (and proper authorization is available),
|
||||
Bitcoin Core automatically creates a hidden service to listen on, without
|
||||
manual configuration. This will positively affect the number of available
|
||||
.onion nodes.
|
||||
This means that if Tor is running (and proper authentication has been configured),
|
||||
Bitcoin Core automatically creates a hidden service to listen on. This will positively
|
||||
affect the number of available .onion nodes.
|
||||
|
||||
This new feature is enabled by default if Bitcoin Core is listening, and
|
||||
a connection to Tor can be made. It can be configured with the `-listenonion`,
|
||||
`-torcontrol` and `-torpassword` settings. To show verbose debugging
|
||||
information, pass `-debug=tor`.
|
||||
|
||||
Connecting to Tor's control socket API requires one of two authentication methods to be
|
||||
configured. For cookie authentication the user running bitcoind must have write access
|
||||
to the `CookieAuthFile` specified in Tor configuration. In some cases this is
|
||||
preconfigured and the creation of a hidden service is automatic. If permission problems
|
||||
are seen with `-debug=tor` they can be resolved by adding both the user running tor and
|
||||
the user running bitcoind to the same group and setting permissions appropriately. On
|
||||
Debian-based systems the user running bitcoind can be added to the debian-tor group,
|
||||
which has the appropriate permissions. An alternative authentication method is the use
|
||||
of the `-torpassword` flag and a `hash-password` which can be enabled and specified in
|
||||
Tor configuration.
|
||||
@@ -6,7 +6,7 @@ The Bitcoin-Core project has been designed to support multiple localisations. Th
|
||||
### Helping to translate (using Transifex)
|
||||
Transifex is setup to monitor the Github repo for updates, and when code containing new translations is found, Transifex will process any changes. It may take several hours after a pull-request has been merged, to appear in the Transifex web interface.
|
||||
|
||||
Multiple language support is critical in assisting Bitcoin’s global adoption, and growth. One of Bitcoin’s greatest strengths is cross-boarder money transfers, any help making that easier is greatly appreciated.
|
||||
Multiple language support is critical in assisting Bitcoin’s global adoption, and growth. One of Bitcoin’s greatest strengths is cross-border money transfers, any help making that easier is greatly appreciated.
|
||||
|
||||
See the [Transifex Bitcoin project](https://www.transifex.com/projects/p/bitcoin/) to assist in translations. You should also join the translation mailing list for announcements - see details below.
|
||||
|
||||
@@ -94,7 +94,7 @@ When new plurals are added to the source file, it's important to do the followin
|
||||
7. Save the source file
|
||||
|
||||
### Translating a new language
|
||||
To create a new language template, you will need to edit the languages manifest file `src/qt/bitcoin.qrc` and add a new entry. Below is an example of the english language entry.
|
||||
To create a new language template, you will need to edit the languages manifest file `src/qt/bitcoin_locale.qrc` and add a new entry. Below is an example of the English language entry.
|
||||
|
||||
```xml
|
||||
<qresource prefix="/translations">
|
||||
|
||||
@@ -27,7 +27,7 @@ In order to avoid rebuilding all dependencies for each build, the binaries are
|
||||
cached and re-used when possible. Changes in the dependency-generator will
|
||||
trigger cache-invalidation and rebuilds as necessary.
|
||||
|
||||
These caches can be manually removed if necessary. This is one of the the very few
|
||||
These caches can be manually removed if necessary. This is one of the very few
|
||||
manual operations that is possible with Travis, and it can be done by the
|
||||
Bitcoin Core committer via the Travis web interface.
|
||||
|
||||
|
||||