Commit graph

20830 commits

Author SHA1 Message Date
MarcoFalke fa2b083c3f
[test] Add test to check mempool consistency in case of reorgs 2019-06-07 11:07:23 +02:00
MarcoFalke fabeb1f613
validation: Add missing mempool locks 2019-06-07 11:07:09 +02:00
MarcoFalke fa0c9dbf91
txpool: Make nTransactionsUpdated atomic 2019-06-07 11:06:00 +02:00
Jon Atack d7c0542777
doc: update release process with SECURITY.md 2019-06-07 11:05:54 +02:00
Jon Atack e4e2b28cf1
doc: clarify support in SECURITY.md 2019-06-07 10:43:05 +02:00
fanquake 8081927c33
scripts: add key for fanquake to trusted keys list 2019-06-07 09:48:12 +02:00
MarcoFalke d0f81a96d9
Merge #16129: refactor: Remove unused includes
67f4e9c522 Include core_io.h from core_read.cpp (practicalswift)
eca9767673 Make reasoning about dependencies easier by not including unused dependencies (practicalswift)

Pull request description:

  Make reasoning about dependencies easier by not including unused dependencies.

  Please note that the removed headers are _not_ "transitively included" by other still included headers. Thus the removals are real.

  As an added bonus this change means less work for the preprocessor/compiler. At least 51 393 lines of code no longer needs to be processed:

  ```
  $ git diff -u HEAD~1 | grep -E '^\-#include ' | cut -f2 -d"<" | cut -f1 -d">" | \
        sed 's%^%src/%g' | xargs cat | wc -l
  51393
  ```

  Note that 51 393 is the lower bound: the real number is likely much higher when taking into account transitively included headers :-)

ACKs for commit 67f4e9:

Tree-SHA512: 0c8868aac59813f099ce53d5307eed7962dd6f2ff3546768ef9e5c4508b87f8210f1a22c7e826c3c06bebbf28bdbfcf1628ed354c2d0fdb9a31a42cefb8fdf13
2019-06-06 16:41:40 +02:00
Matt Corallo f27309f55c Move DEFAULT_PEERBLOOMFILTERS from validation.h to net_processing.h 2019-06-06 10:01:13 -04:00
Matt Corallo 5efcb77283 Disable bloom filtering by default.
BIP 37 bloom filters have been well-known to be a significant DoS
target for some time. However, in order to provide continuity for
SPV clients relying on it, the NODE_BLOOM service flag was added,
and left as a default, to ensure sufficient nodes exist with such a
flag.

NODE_BLOOM is, at this point, well-established and, as long as
there exist 0.18 nodes with default config (which I'd anticipate
will be true for many years), will be available from some peers. By
that time, the continued slowdown of BIP 37-based filtering will
likely have rendered it useless (though this is already largely the
case). Further, BIP 37 was deliberately never updated to support
witness-based filtering as newer wallets are expected to migrate to
some yet-to-be-network-exposed filters.
2019-06-06 10:01:13 -04:00
Wladimir J. van der Laan 36fb968825
Merge #15461: [depends] update to Boost 1.70
2620e24b83 [depends] boost: update to 1.70 (Sjors Provoost)

Pull request description:

  Version [1.70](https://www.boost.org/users/history/version_1_70_0.html) is most recent.

  Versions needed for:
  * 1.66: #12557: fixes the single arm64 configuration ([06ee5b5](06ee5b54ef))

ACKs for commit 2620e2:

Tree-SHA512: 6e0174f1d92c2c24314c0689d4809e048914f8f42d17aa73799f5ee232169e0dd0ed71f5f973903c44c08309f2837c629c493f15e5c31ec6c7bd1daae5f3b25f
2019-06-06 13:42:25 +02:00
Wladimir J. van der Laan 9fccdd4ed4
Merge #15886: qt, wallet: Revamp SendConfirmationDialog
78f9b5160f Do not show list for the only recipient. (Hennadii Stepanov)
2ee756f041 Show recipient list as detailedText of QMessageBox (Hennadii Stepanov)
654e419549 Make SendConfirmationDialog fully fledged (Hennadii Stepanov)

Pull request description:

  Fix #15667

  With this PR:
  ![Screenshot from 2019-04-24 23-47-30](https://user-images.githubusercontent.com/32963518/56692672-63400b00-66eb-11e9-87f6-15957c6e81f7.png)
  ![Screenshot from 2019-04-24 23-47-40](https://user-images.githubusercontent.com/32963518/56692681-663afb80-66eb-11e9-8b04-8a342026ada6.png)

ACKs for commit 78f9b5:
  laanwj:
    code review ACK 78f9b5160f

Tree-SHA512: f868d78d01b0898aff2277fa3a7e8c6f936acbbcfa8a0323cddcd9daba4a998030c667bd803ae67c2b9179ed8082a48a67568e9ba3c8d14e3a2d88d93ada94fa
2019-06-06 13:12:17 +02:00
Wladimir J. van der Laan 26a0d07ddb
Merge #16130: Don't GPG sign intermediate commits with github-merge tool
a352d2ae5 Don't GPG sign intermediate commits with github-merge tool (Steven Roose)

Pull request description:

  When you don't have an unencrypted key and you have git configured to always sign all commits, you have to sign three times instead of one.

ACKs for commit a352d2:
  MarcoFalke:
    utACK a352d2ae5f

Tree-SHA512: f5a1c0868c42de2b5df45126e1e94b4a7d88b041d179244228bb7b02d43d41f565388eb1052a097ab0666fc6003f8453b9e283801fcb33aef47f412b72ba9fb6
2019-06-06 12:57:57 +02:00
Wladimir J. van der Laan fc6cbc31e9
Merge #15689: netaddress: Update CNetAddr for ORCHIDv2
8be3f3063 netaddress: Update CNetAddr for ORCHIDv2 (Carl Dong)

Pull request description:

  ```
  The original ORCHID prefix was deprecated as of 2014-03, the new
  ORCHIDv2 prefix was allocated by RFC7343 as of 2014-07. We did not
  consider the original ORCHID prefix routable, and I don't see any reason
  to consider the new one to be either.
  ```

  Would like to know if people think this kind of thing is even worth keeping the codebase updated for. Perhaps it'd be nice to write a devtool to pull the csv from [here](https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml) and generate the code.

ACKs for commit 8be3f3:
  laanwj:
    utACK 8be3f3063
  ryanofsky:
    utACK 8be3f30633. Only change since last review is rebasing after #15718 merge.

Tree-SHA512: 7c93317f597b1a6c1443e12dd690010392edb9d72a479a8201970db7d3444fbb99a80b98026caad6fbfbebb455ab4035d2dde79bc9263bfd1d0398cd218392e1
2019-06-06 12:52:54 +02:00
MeshCollider 81a884bbd0 Import private keys from descriptor with importmulti if provided 2019-06-06 22:03:55 +12:00
MeshCollider a4d1bd1a29 Add private key derivation functions to descriptors 2019-06-06 22:03:55 +12:00
Sjors Provoost f874e14cd3
[build]: check std::system for -[alert|block|wallet]notify
Platforms such as iOs do not support launching a process
through system().
2019-06-06 11:54:26 +02:00
Sjors Provoost cc3ad56ff2
[build] MSVC: set HAVE_SYSTEM for desktop apps 2019-06-06 11:50:16 +02:00
Sjors Provoost c1c91bb78d
[build] detect std::system or ::wsystem 2019-06-06 11:50:16 +02:00
Tim Ruffing cac30a436c Clean up logic in memory_cleanse() for MSVC
Commit fbf327b138 ("Minimal code
changes to allow msvc compilation.") was indeed minimal in terms
of lines touched. But as a result of that minimalism it changed the
logic in memory_cleanse() to first call std::memset() and then
additionally the MSVC-specific SecureZeroMemory() function, and it
also moved a comment to the wrong location.

This commit removes the superfluous call to std::memset() on MSVC
and ensures that the comment is in the right position again.
2019-06-06 11:49:11 +02:00
practicalswift 67f4e9c522 Include core_io.h from core_read.cpp 2019-06-06 08:00:33 +02:00
practicalswift 0959d37e3e Don't use global (external) symbols for symbols that are used in only one translation unit 2019-06-06 07:45:56 +02:00
Wladimir J. van der Laan 03858b23fe
Merge #15844: depends: Purge libtool archives
8541cbea2 depends: libX*: --disable-malloc0returnsnull in conf (Carl Dong)
0e752637a depends: libXext: Bump to 1.3.3 to fix _XEatDataWords (Carl Dong)
683b7d7a3 depends: Purge libtool archives (Carl Dong)
14209286d depends: Build secondary deps statically. (Carl Dong)

Pull request description:

  ```
  We use pkg-config where we can, which generally replaces libtool at a
  higher level and does not have the same downsides as libtool. These
  archives sit in our depends tree with no purpose and pollute the final
  bitcoin build with massive overlinking.
  ```

  See [here](https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Handling_Libtool_Archives) for an explanation of the various problems libtool archives can cause.

  Unrelated in every way except in spirit: `-D__LIBTOOL_IS_A_FOOL__`!!

  -----

  This PR is based on #16041, and therefore should be merged after #16041.

ACKs for commit 8541cb:

Tree-SHA512: 76030cf32361f0b1cfe14e3827a0cbec99994e7da00a56194ca40cf6cf7d87f78552f49d03d41ce9cf9b642992b90d993578ed1f0ad6bae15cd3f1c88dfaa4b0
2019-06-05 16:37:56 +02:00
fanquake bc8863b819
depends: remove usage of TAR_OPTIONS 2019-06-05 15:39:17 +02:00
Wladimir J. van der Laan 03e2786f05
Merge #16140: docs: create security policy
fdd7fa19a docs: create security policy (Neha Narula)

Pull request description:

  Github has started supporting SECURITY.md to contain a project's
  security policy. Right now, the only place to find this project's
  security contact is on bitcoincore.org. Adding this information to the
  repository makes it easier to find as SECURITY.md becomes a standard.

  This is copied almost exactly from https://bitcoincore.org/en/contact/
  and based on conversations with EthanHeilman.

ACKs for commit fdd7fa:
  laanwj:
    ACK fdd7fa19a9

Tree-SHA512: 9d6b93d10fff6e9c7a5cb6d8c1f0660623cd7a015abac7738f2aa9d141075456e71612b830eb5c707275529e2099fb41a44c531e29d821c9d2857d22241a91c3
2019-06-05 15:30:22 +02:00
Wladimir J. van der Laan d936cf9eaf
Merge #15985: Add test for GCC bug 90348
58e291cfa Add test for GCC bug 90348 (Pieter Wuille)

Pull request description:

  This adds a test for GCC bug 90348 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90348), using a test case extracted from our own `sha256d64` test in crypto_tests.cpp, which was failing on some platforms.

  This is based on top of #15983 to make sure the bug doesn't trigger (it does in some Travis configurations without it).

ACKs for commit 58e291:

Tree-SHA512: 4dc9084e92dd143a53930e42bb68e33d922a2a2b891406b259d3a0bed4511dcc49e7447a7a8e4eb793a26e3eacb188ca293b71e0e061f9b3230f8e7fcfd29525
2019-06-05 14:35:11 +02:00
Neha Narula fdd7fa19a9 docs: create security policy
Github has started supporting SECURITY.md to contain a project's
security policy. Right now, the only place to find this project's
security contact is on bitcoincore.org. Adding this information to the
repository makes it easier to find as SECURITY.md becomes a standard.

This is copied almost exactly from https://bitcoincore.org/en/contact/
and based on conversations with Ethan Heilman.
2019-06-05 08:11:49 -04:00
Wladimir J. van der Laan 52ec4c64e8
Merge #16144: wallet: do not encrypt wallets with disabled private keys
7860c98bd wallet: do not encrypt wallets with disabled private keys (whythat)

Pull request description:

  Fix for #15635.
  Throw an `RPC_WALLET_ENCRYPTION_FAILED` error when attempting to encrypt wallet with disabled private keys. Changed `test/function/wallet_createwallet.py` to test new behavior.

ACKs for commit 7860c9:
  achow101:
    utACK 7860c98bd5
  meshcollider:
    utACK 7860c98bd5

Tree-SHA512: d0cc40efd303a00d0b4d3cb2de59d8d2d7dd35647e7f3fe9d4a8986589499c1f567c5780c83a129e1ab8dbe601279c459c6ebce3b48b1d81d47a28616ef4a369
2019-06-05 12:49:35 +02:00
Wladimir J. van der Laan 5d37c1bde0
Merge #15976: refactor: move methods under CChainState (pt. 1)
403e677c9 refactoring: IsInitialBlockDownload -> CChainState (James O'Beirne)
3ccbc376d refactoring: FlushStateToDisk -> CChainState (James O'Beirne)
4d6688603 refactoring: introduce ChainstateActive() (James O'Beirne)
d7c97edee move-only: make the CChainState interface public (James O'Beirne)

Pull request description:

  This is part of the [assumeutxo project](https://github.com/bitcoin/bitcoin/projects/11):

  Parent PR: #15606
  Issue: #15605
  Specification: https://github.com/jamesob/assumeutxo-docs/tree/2019-04-proposal/proposal

  ---

  This changeset starts moving functionality intimately related to CChainState into methods. Parameterizing these functions by a particular CChainState is necessary for the use of multiple chainstates simultaneously (e.g. for asynchronous background validation).

  In this change, we
  - make the CChainState interface public - since other units will start to invoke its methods directly,
  - introduce `::ChainstateActive()`, the CChainState equivalent for `::ChainActive()`,
  - and move `IsInitialBlockDownload()` and `FlushStateToDisk()` into methods on CChainState.

  Independent of assumeutxo, these changes better encapsulate chainstate behavior and allow easier use from a testing context.

  There are more methods that we'll move in the future, but they require other substantial changes (i.e. moving ownership of the `CCoinsView*` hierarchy into CChainState) so we'll save them for future PRs.

  ---

  The first move-only commit is most easily reviewed with `git diff ... --color-moved=dimmed_zebra`.

ACKs for commit 403e67:
  Empact:
    utACK 403e677c9e no need to address my nits herein
  Sjors:
    utACK 403e677
  ryanofsky:
    utACK 403e677c9e. Only change since previous review is removing global state comment as suggested.
  MarcoFalke:
    utACK 403e677c9e, though the diff still seems a bit bloated with some unnecessary changes in the second commit.
  promag:
    utACK 403e677 and rebased with current [master](c7cfd20a7).

Tree-SHA512: 6fcf260bb2dc201361170c0b4547405366f5f331fcc3a2bac29b24442814b7b244ca1b58aac5af716885f9a130c343b544590dff780da0bf835c7c5b3ccb2257
2019-06-05 11:56:23 +02:00
Suhas Daftuar a47df13471 [qa] Test disconnect block failure -> shutdown 2019-06-05 05:05:49 -04:00
Suhas Daftuar 4433ed0f73 [validation] Crash if disconnecting a block fails
If we're unable to disconnect a block during normal operation, then that is a
failure of our local system (such as disk failure) or the chain that we are on
(eg CVE-2018-17144), but cannot be due to failure of the (more work) chain that
we're trying to validate.

We should abort rather than stay on a less work chain.
2019-06-05 05:05:37 -04:00
MarcoFalke 51858c57f0
Merge #16139: Docs: Add riscv64 to outputs list in release-process.md
6f7f141f77 Add riscv64 to outputs list in release-process.md (JeremyRand)

Pull request description:

  The `riscv64` binary is created by the Gitian scripts and distributed by the Bitcoin Core website, so it should be listed in the release process docs.

  I placed it between i686 and x86_64 since it looked like the original list of Linux arches was in alphabetical order; I'm open to including it in a different position if the desire is to keep the two ARM arches together and the two x86 arches together.

ACKs for commit 6f7f14:
  fanquake:
    utACK 6f7f141f77

Tree-SHA512: e87723f7bddd02e33897cfacdaac9f2e3ccc2bde74eb47d52ba1dd6082c868232e58247e427d6f95dc0b54858d8ccd1b6de47a379fce0f90b63a38bd97ebf419
2019-06-04 23:24:01 +02:00
whythat 7860c98bd5 wallet: do not encrypt wallets with disabled private keys 2019-06-04 16:39:34 +03:00
practicalswift c061be1e2f tests: Mark unit test blockfilter_index_initial_sync as non-deterministic 2019-06-04 12:28:04 +02:00
Wladimir J. van der Laan d3a1c2502b
Merge #16124: tests: Limit Python linting to files in the repo
3c5254a820 Limit Python linting to files in the repo (practicalswift)

Pull request description:

  Limit Python linting to files in the repo.

  Before:

  ```
  $ test/lint/lint-python.sh
  not_under_version_control.py:195:9: F841 local variable 'e' is assigned to but never used
  $
  ```

  After:

  ```
  $ test/lint/lint-python.sh
  $
  ```

ACKs for commit 3c5254:
  fanquake:
    tACK 3c5254a820
  Empact:
    utACK 3c5254a820

Tree-SHA512: 68733494a5f2a7764eba938af227145f5ef9ddc9ff94840134e4d2684ca7b9a819fac491ec43102f93e5e9867373bfd46b46efc9d11528329b5ecb2282fffb16
2019-06-03 23:21:47 +02:00
Wladimir J. van der Laan 6520330087
Merge #16044: qt: fix opening bitcoin.conf via Preferences on macOS
6e6494b3fb qt: fix opening bitcoin.conf via Preferences on macOS; see #15409 (shannon1916)

Pull request description:

  Fix #15409. The QT wallet fail to open the configuration file on Mac, when these is no default application for `*.conf` files.

  Here is a feasible way to solve this bug. When `QDesktopServices::openUrl` fails to open `file:///path/bitcoin.conf` with its default application, use `QProcess::startDetached` to run `open -t /path/bitcoin.conf` command instead, so as to open the configuration file with system's default text editor.

ACKs for commit 6e6494:
  hebasto:
    re-ACK 6e6494b3fb
  fanquake:
    tACK 6e6494b3fb on macOS 10.14.x

Tree-SHA512: 60e898f4cb77cfd7b8adbc8d33fbebf46bac2a801bdcf40cae15e24b78ad56b1f32358b1879b670623d9f8651dea93961d34269358cea18f4e15b089a8ffcfbf
2019-06-03 23:20:03 +02:00
Wladimir J. van der Laan 599206fda7
Merge #16090: Qt: Add vertical spacer to peer detail widget
36b0a2f2a6 Add vertical spacer (Josu Goñi)

Pull request description:

  Before:

  ![image](https://user-images.githubusercontent.com/25986871/58375408-a8f22c80-7f52-11e9-96ca-14f2186e6fa7.png)

  After:

  ![image](https://user-images.githubusercontent.com/25986871/58375420-fa022080-7f52-11e9-8add-eafe98068e8d.png)

ACKs for commit 36b0a2:
  fanquake:
    utACK 36b0a2f2a6
  hebasto:
    tACK 36b0a2f2a6 on Linux Mint 19.1, Qt 5.9.5
  fanquake:
    re-utACK 36b0a2f2a6
  kristapsk:
    ACK 36b0a2f2a6 (tested with Qt 5.11.3 under Linux/Xfce4)
  promag:
    Tested ACK 36b0a2f2a6 on macos 10.14.3. Resizing the window works as expected.

Tree-SHA512: 26ec9700aa9116ec2c604f8ec7b825b30c83c1d497c21f2191d3585868db4a2e3921de607dea9f7cd9a1ea49361215d738e2aba1936566d85757d87112d73088
2019-06-03 23:17:46 +02:00
Wladimir J. van der Laan c3723c80da
Merge #16122: gui: Enable console line edit on setClientModel
2d8ad2f997 gui: Enable console line edit on setClientModel (João Barbosa)

Pull request description:

  Make console line edit disable by default, and only enable once `RPCConsole::setClientModel` is called.

  Fixes #16119.

ACKs for commit 2d8ad2:
  fanquake:
    tACK 2d8ad2f997 on macOS.

Tree-SHA512: 1418ce3c120c08e5ec3e7a7a063572a24402ce0ec541bd4adc21f61d60c4e86b711e82e940ebf5f0445ab861f89c146c2a2e7990fb52bed2c65fc199a1981f71
2019-06-03 22:20:44 +02:00
Wladimir J. van der Laan 38523721ac
Merge #16135: gui: Set progressDialog to nullptr
d2ae6be80f gui: Set progressDialog to nullptr (João Barbosa)

Pull request description:

  If a progress notification `> 0` arrives immediately after notification `= 100` then `progressDialog` is a dangling pointer.

  Potential fix for #16134.

ACKs for commit d2ae6b:
  hebasto:
    utACK d2ae6be80f
  fanquake:
    tACK d2ae6be80f

Tree-SHA512: 300ddde2f27c494b19a5bd4085400d0f5a1d4980fe8cc3c07bfebb037efc35f777215ff1a095eeb16658407e11f04456137393e88a12fdd767b7aac5f12eab5e
2019-06-03 22:08:32 +02:00
fanquake 3ff1f2a319
build: remove export GZIP from gitian descriptors 2019-06-03 15:51:59 -04:00
JeremyRand 6f7f141f77
Add riscv64 to outputs list in release-process.md
The riscv64 binary is created by the Gitian scripts and distributed by the
Bitcoin Core website, so it should be listed in the release process docs.
2019-06-03 17:51:08 +00:00
shannon1916 6e6494b3fb qt: fix opening bitcoin.conf via Preferences on macOS; see #15409 2019-06-03 10:32:15 +08:00
João Barbosa d2ae6be80f gui: Set progressDialog to nullptr 2019-06-02 22:18:19 +01:00
practicalswift eca9767673 Make reasoning about dependencies easier by not including unused dependencies 2019-06-02 17:15:23 +02:00
Pieter Wuille 58e291cfad Add test for GCC bug 90348 2019-06-02 10:19:30 +02:00
Steven Roose a352d2ae5f
Don't GPG sign intermediate commits with github-merge tool 2019-05-31 19:22:02 +01:00
João Barbosa 2d8ad2f997 gui: Enable console line edit on setClientModel 2019-05-30 23:26:18 +01:00
practicalswift 3c5254a820 Limit Python linting to files in the repo 2019-05-30 22:36:54 +02:00
João Barbosa 75485ef096 gui: Enable open wallet menu on setWalletController 2019-05-29 14:20:59 +01:00
Wladimir J. van der Laan c7cfd20a77
Merge #16086: contrib: use newer config.guess & config.sub in install_db4.sh
00fade007c contrib: use newer config.guess & config.sub in install_db4.sh (fanquake)

Pull request description:

  The `config.guess` and `config.sub` packaged with `db-4.8.30.NC.tar.gz` are fairly old (2009) and fail to identify some system types i.e `ppc64le`. Replace them with more modern versions before configuring `db4`.

  Fixes #16064.

ACKs for commit 00fade:
  jamesob:
    tACK 00fade007c
  dongcarl:
    utACK 00fade007c
  laanwj:
    Tested ACK 00fade007c

Tree-SHA512: 54f9f2b0fcf802e6a284214035fcb3833577aa5881beb293921b6036b71d0bcd0872f06d14ddc76a4f8c0eee7ba71461dcc99dc907e7ddb5ae403fc02b245538
2019-05-29 14:21:21 +02:00
MarcoFalke abcce46a33
Merge #16039: docs: add release note for 14954
0830d40456 docs: add release note for 14954 (fanquake)

Pull request description:

  Adds a release note for #14954: build: Require python 3.5.

ACKs for commit 0830d4:

Tree-SHA512: f647c065ef290fb2acb8f55390d8a8cb197372219700bd48777850646c2410b080e1878582ca08c59e6da37ea1dc2d51724e826894dbb7d8a2b218a3b5464a77
2019-05-29 08:11:10 -04:00