Commit Graph

17459 Commits

Author SHA1 Message Date
Wladimir J. van der Laan
c8081ae192
Merge #11132: Document assumptions that are being made to avoid NULL pointer dereferences
fdc3293 Document assumptions that are being made to avoid NULL pointer dereferences (practicalswift)

Pull request description:

  Document assumptions (via `assert(…)`:s) that are being made avoid `NULL` pointer dereferences.

  Rationale:
  * Make it clear to human reviewers and non-human static analyzers that what might look like potential `NULL` pointer dereferences are written the way they are intentionally (these cases are currently flagged by various static analyzers).

Tree-SHA512: b424328195e2680e1e4ec546298f718c49e5ad182147dc004de580693db1b50eec4065e1c4f232bdb302baa12954265a50ba21cb5ba4ff30248535b2de778672
2020-01-10 10:34:00 -06:00
MarcoFalke
218f65d208
Merge #11340: Trivial: Fix validation comments
a0b4c2461 Trivial: Fix validation comments (Dan Raviv)

Pull request description:

  - Move comment about transaction/block weight calculation so it applies not only to the GetBlockWeight function but also to GetTransactionWeight
  - Fix comment in validation.cpp referencing future deployment of BIP113. It has already been deployed.
  - The doc comment for BLOCK_DOWNLOAD_WINDOW wasn't updated since pruning was introduced, so it still refers to pruning as something that might happen in the future. A larger BLOCK_DOWNLOAD_WINDOW window would now, indeed, make pruning harder.

Tree-SHA512: ff86ff02c993e8317b9a0decfe5f5b6aae77b7d50e2b253ed73eb553348142bfc30cfeda15fae91907bab8f920e0ea7c52714f4cc7f33a9d6a777f708e2c99ba
2020-01-10 10:34:00 -06:00
MarcoFalke
45d1923490
Merge #11330: Trivial: Fix comments for DEFAULT_WHITELIST[FORCE]RELAY
dc2f737ae Trivial: Fix comments for DEFAULT_WHITELIST[FORCE]RELAY (danra)

Pull request description:

Tree-SHA512: 1156a34f19be81029e736a672df4eda4578ccfea2b3446356c071409db2652e4517246a8e4c23f7c2bf3d6cd8c61501db05fbf6628c1c55ca8f9e04107f3eab8
2020-01-10 10:33:59 -06:00
MarcoFalke
99ccb6ebdd
Merge #10767: [wallet] Clarify wallet initialization / destruction interface
5d2a3995e [trivial] fixup comment for VerifyWallets() (John Newbery)
43b0e81d0 [wallet] Add StartWallets() function to wallet/init.cpp (John Newbery)
290f3c56d [wallet] Add RegisterWalletRPC() function to wallet/init.cpp (John Newbery)
062d63102 [wallet] Add CloseWallets() function to wallet/init.cpp (John Newbery)
77fe07c15 [wallet] Add StopWallets() function to wallet/init.cpp (John Newbery)
2da5eafa4 [wallet] Add FlushWallets() function to wallet/init.cpp (John Newbery)
1b9cee66e [wallet] Rename WalletVerify() to VerifyWallets() (John Newbery)
9c76ba18c [wallet] Rename InitLoadWallet() to OpenWallets() (John Newbery)

Pull request description:

  Apologies for the mostly code move only PR. This is a pre-req for both #10740 and #10762

  All wallet component initialization/destruction functions are now in their own `wallet/init.cpp` translation unit and are no longer static functions on the CWallet class. The bitcoin_server also no longer has any knowledge that there are multiple wallets in vpwallet.

  There should be no changes in behavior from this PR.

Tree-SHA512: 7c260eb094f2fa1a88d803769ba60935810968a7309f731135e4b17623b97f18c03bbcd293c942093d1efce62c6c978f9ff484d54dc9a60bc2fcb5af2d160fcd
2020-01-10 10:33:59 -06:00
Wladimir J. van der Laan
ec496efdb9
Merge #11238: Add assertions before potential null deferences
c00199244 Fix potential null dereferences (MeshCollider)

Pull request description:

  Picked up by the static analyzer [Facebook Infer](http://fbinfer.com/) which I was playing around with for another research project. Just adding some asserts before dereferencing potentially null pointers.

Tree-SHA512: 9c01dab2d21bce75c7c7ef867236654ab538318a1fb39f96f09cdd2382a05be1a6b2db0a1169a94168864e82ffeae0686a383db6eba799742bdd89c37ac74397
2020-01-10 10:33:59 -06:00
Pasta
5d4e6dc9ae
keep nVersion as 16 byte integer
Signed-off-by: Pasta <pasta@dashboost.org>
2020-01-10 10:33:58 -06:00
Wladimir J. van der Laan
6962568009
Merge #8330: Structure Packing Optimizations in C{,Mutable}Transaction
37495e0d8 Reorder C{,Mutable}Transaction for better packing (Jeremy Rubin)

Pull request description:

  These commits revise the layout of a few key classes to eliminate padding, eliminating useless memory overhead.

  -This reduces CTransaction from 96 bytes to 88 bytes

Tree-SHA512: 91d1fec363edebbb1f1a5b98142c767511e99d3be857148a76e31cc512c9ab3d153083fa6b46b6407974d3b88de984b436c33e8606fbb2b273d74c825195aa17
2020-01-10 10:33:58 -06:00
MarcoFalke
b1774d8735
Merge #11246: github-merge: Coalesce git fetches
dabee00ef github-merge: Coalesce git fetches (Wladimir J. van der Laan)

Pull request description:

  Fetch the destination branch as well as PR in one go. Saves a few seconds (as well as one ssh authentication, when using a yubikey) when using github-merge.py.

Tree-SHA512: 618fcc07f60b63de3b7818094c5a307933324b76418aa02c509209bb7b540b3da0abe312bbfd0ca843469ed82228b2c43c2361180ba81bee13038aafac4a14b3
2020-01-10 10:33:58 -06:00
MarcoFalke
9f672f82a1
Merge #11173: RPC: Fix currency unit string in the help text
47ba2c312 Fix currency/fee-rate unit string in the help text (Akio Nakamura)

Pull request description:

  1. The RPC help text should use the constant `CURRENCY_UNIT` defined in `policy/feerate.cpp` instead of the literal `'BTC'`.
    In the following 2 RPC commands, `'BTC'` is written directly in the help text.
    This commit changes them to use that constant.
       1) `estimatesmartfee`
       2) `estimaterawfee`

  2. Some RPC command use `'satoshis'` as the unit.
    It should be written as `'satoshis'` instead of `'Satoshis'` in the RPC help text.
    So, this commit fixes this typo in `getblocktemplate`.

Tree-SHA512: d0bd1cd90560e59bf456b076b958a2a1c998f85a7e65aeb6b2abcaba18919a3ae62f7c3909210461084c1a3275a35b6ba3ea3ec8f5cce33702ffe383c9e84bce
2020-01-10 10:33:57 -06:00
Russell Yanofsky
fc4ab83c83
Merge #10976: [MOVEONLY] Move some static functions out of wallet.h/cpp #10976
Move some static functions out of wallet.h/cpp

This commit just moves a few function declarations and updates callers.
Function bodies are moved in two followup MOVEONLY commits.

This change is desirable because wallet.h/cpp are monolithic and hard to
navigate, so pulling things out and grouping together pieces of related
functionality should improve the organization.

Another proximate motivation is the wallet process separation work in
https://github.com/bitcoin/bitcoin/pull/10973, where (at least initially)
parameter parsing and fee estimation are still done in the main process rather
than the wallet process, and having functions that run in different processes
scrambled up throughout wallet.cpp is unnecessarily confusing.

MOVEONLY: Fee functions wallet/wallet.cpp -> wallet/fees.cpp

make it actual move only

Signed-off-by: Pasta <pasta@dashboost.org>

MOVEONLY: Init functions wallet/wallet.cpp -> wallet/init.cpp

make it actual move only

Signed-off-by: Pasta <pasta@dashboost.org>

add keepass include

Signed-off-by: Pasta <pasta@dashboost.org>
2020-01-10 10:33:57 -06:00
Wladimir J. van der Laan
fdf3f25a0a
Merge #10969: Declare single-argument (non-converting) constructors "explicit"
64fb0ac Declare single-argument (non-converting) constructors "explicit" (practicalswift)

Pull request description:

  Declare single-argument (non-converting) constructors `explicit`.

  In order to avoid unintended implicit conversions.

  For a more thorough discussion, see ["C.46: By default, declare single-argument constructors explicit"](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c46-by-default-declare-single-argument-constructors-explicit) in the C++ Core Guidelines (Stroustrup & Sutter).

Tree-SHA512: e0c6922e56b11fa402621a38656d8b1122d16dd8f160e78626385373cf184ac7f26cb4c1851eca47e9b0dbd5e924e39a85c3cbdcb627a05ee3a655ecf5f7a0f1
2020-01-10 10:33:57 -06:00
Wladimir J. van der Laan
b5e2f73fee
contrib: Ignore historical release notes for whitespace check
Lint checks should not test these, they are historical documents,
and we don't want to encourage silly changes to them to satisfy
a checker.

Hopefully makes travis pass again on master.

Tree-SHA512: 37e6716c4fd5e8a4e579f9b84042e6b0ac224836b6c851cd1ca3f7d46611ffd3003bed0ae08dd0457f69d6eaa485a0d21c631e7ef16b14bdb0f2f78ea700332d
2020-01-10 10:33:56 -06:00
MarcoFalke
80f4de55fd
Merge #11300: Tests: Add a lint check for trailing whitespace *dash* no travis
*DASH* doesn't implement this check into travis

1f379b1f0 Add tab char lint check and exclude imported dependencies (MeshCollider)
dd365612f Add a lint check for trailing whitespace. (Evan Klitzke)

Pull request description:

  This is a new attempt at #11005

  Addressed nits, excluded imported dependencies, squashed the original commits, and added a test for tab characters in the *.cpp *.h *.md *.py *.sh files too as per @practicalswift suggestion

Tree-SHA512: d2dfbedc8469026f39b0c63d9a71d8b8e2ed3815d69fecaabad10304d977d6345728c4c865ec7600ed539b1f7cabaa826b50312f4d2eef0a1583d4ff9024c36d
2020-01-10 10:33:56 -06:00
MarcoFalke
3ca3c65897
Merge #10753: test: Check RPC argument mapping *dash* no travis
*DASH* DOES NOT IMPLEMENT RUNNING THIS IN TRAVIS

77aa9e59e test: Check RPC argument mapping (Wladimir J. van der Laan)

Pull request description:

  Parse the dispatch tables from the server implementation files, and the conversion table from the client (see #10751).

  Perform the following consistency checks:

  - Arguments defined in conversion table, must be present in dispatch table. If not, it was probably forgotten to add them to the dispatch table, and they will not work.

  - Arguments defined in conversion table must have the same names as in the dispatch table. If not, they will not work.

  - All aliases for an argument must either be present in the conversion table, or not. Anything in between means an oversight and some aliases won't work.

  Any of these results in an error.

  It also performs a consistency check to see if the same named argument is sometimes converted, and sometimes not. E.g. one RPC call might have a 'verbose' argument that is converted,
  another RPC call might have one that is not converted. This is not necessarily wrong, but points at a possible error (as well as makes the API harder to memorize) - so it is emitted as a warning (could upgrade this to error).

  This test is added to travis and run when `CHECK_DOC`. Currently fails with the following output:
  ```
  * Checking consistency between dispatch tables and vRPCConvertParams
  ERROR: createrawtransaction argument 3 (named optintorbf in vRPCConvertParams) is not defined in dispatch table
  ERROR: getblock argument ['verbosity', 'verbose'] has conflicts in vRPCConvertParams conversion specifier [True, False]
  WARNING: conversion mismatch for argument named verbose ([('getblock', False), ('getblockheader', True), ('getmempoolancestors', True), ('getmempooldescendants', True), ('getrawmempool', True), ('getrawtransaction', True)])
  ```
  - ~#10698 fixes the first ERROR~
  - #10747 fixes the second ERROR, as well as the WARNING

  Update: #10698 was merged, leaving:
  ```
  * Checking consistency between dispatch tables and vRPCConvertParams
  ERROR: getblock argument ['verbosity', 'verbose'] has conflicts in vRPCConvertParams conversion specifier [True, False]
  WARNING: conversion mismatch for argument named verbose ([('getblock', False), ('getblockheader', True), ('getmempoolancestors', True), ('getmempooldescendants', True), ('getrawmempool', True), ('getrawtransaction', True)])
  ```

Tree-SHA512: feabebfbeda5d4613b2b9d5265aa6bde4e1a0235297ffd48fa415ad7edc531d9ed7913fe76d191ac60d481a915a326f216bc93de3c671e45e1d14e97d07dea7a
2020-01-10 10:33:56 -06:00
MarcoFalke
00167dea54
Merge #11078: [tests] Make p2p-leaktests.py more robust
0063d2c3d [tests] Make p2p-leaktests.py more robust (John Newbery)

Pull request description:

  There has been an example of p2p-leaktests.py failing on travis in the new service bits test (introduced in #11001 . It appeared to me that the previous p2p connections had not been fully disconnected before attempting to add new p2p connections.

  I've added a sleep and restarted the NetworkThread, but I don't know whether this will fix the problem, since I'm unable to reproduce the failure locally.

  @MarcoFalke - not sure what you want to do here? I don't think this change could make things any worse.

Tree-SHA512: f5427c26267185a903c9b75bb3925bf153b8afce70c8e493bf8f585f57d809d20643b4ee69081300b211d22e960242aecc3d719f4ddd230aa08fdc5484b55055
2020-01-10 10:33:55 -06:00
MarcoFalke
094298d187
Merge #10691: Trivial: Properly comment about shutdown process in init.cpp file.
581c41157 Properly comment about shutdown process in init.cpp file (Kyuntae Ethan Kim)

Pull request description:

Tree-SHA512: 8aaf739ca5eb2cf6f777b69a0d65f391ba311a33d2e23abc4d3008f90c6ef9da79d0683845abfc08978309f43409f0a7021663f8c564e157224c1dbe15138158
2020-01-10 10:33:55 -06:00
Wladimir J. van der Laan
b515e7c120
Merge #11268: [macOS] remove Growl support, remove unused code
f151f5f50 [macOS] remove Growl support, remove unused code (Jonas Schnelli)

Pull request description:

  There is no longer a reason to support Growl.
  A) It went to pay-ware since a couple of years
  B) Since OSX 10.8, the operating system has its own modal notification options (Notification Center).

  This PR removes support for Growl.
  OSX notification centre is still supported after this PR.

Tree-SHA512: eee18098d7354c4e98f927bca9963d4843ff6bceee74795f73a66c27eed33efaac00ec2cabde8807efcbc936b16ab712249006fa13f5a3f55e4d44d163f5f9a0
2020-01-10 10:33:55 -06:00
MarcoFalke
b74f55143f
Merge #11286: [depends] Don't build libevent sample code
f38c05104 [depends] Don't build libevent sample code (fanquake)

Pull request description:

  Noticed today while doing Windows depends builds.
  Before and after libevent build on OS X.

  ```
  Building libevent...
    GEN      include/event2/event-config.h
  /Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
    CC       buffer.lo
    CC       bufferevent.lo
    CC       bufferevent_filter.lo
    CC       bufferevent_ratelim.lo
    CC       bufferevent_sock.lo
    CC       bufferevent_pair.lo
    CC       event.lo
    CC       evmap.lo
    CC       evthread.lo
    CC       evutil.lo
    CC       evutil_rand.lo
    CC       evutil_time.lo
    CC       listener.lo
    CC       log.lo
    CC       select.lo
    CC       poll.lo
    CC       kqueue.lo
    CC       signal.lo
    CC       evdns.lo
    CC       event_tagging.lo
    CC       evrpc.lo
    CC       http.lo
    CC       evthread_pthread.lo
    CC       sample/dns-example.o
    CC       sample/event-read-fifo.o
    CC       sample/hello-world.o
    CC       sample/http-server.o
    CC       sample/http-connect.o
    CC       sample/signal-test.o
    CC       sample/time-test.o
    CCLD     libevent_core.la
    CCLD     libevent_pthreads.la
    CCLD     libevent.la
    CCLD     libevent_extra.la
    CCLD     sample/event-read-fifo
    CCLD     sample/dns-example
    CCLD     sample/hello-world
    CCLD     sample/http-server
    CCLD     sample/http-connect
    CCLD     sample/signal-test
    CCLD     sample/time-test
  Staging libevent...
  ```

  ```
  Building libevent...
    GEN      include/event2/event-config.h
  /Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
    CC       buffer.lo
    CC       bufferevent.lo
    CC       bufferevent_filter.lo
    CC       bufferevent_pair.lo
    CC       bufferevent_ratelim.lo
    CC       bufferevent_sock.lo
    CC       event.lo
    CC       evmap.lo
    CC       evthread.lo
    CC       evutil.lo
    CC       evutil_rand.lo
    CC       evutil_time.lo
    CC       listener.lo
    CC       log.lo
    CC       select.lo
    CC       poll.lo
    CC       kqueue.lo
    CC       signal.lo
    CC       evdns.lo
    CC       event_tagging.lo
    CC       evrpc.lo
    CC       http.lo
    CC       evthread_pthread.lo
    CCLD     libevent_core.la
    CCLD     libevent_pthreads.la
    CCLD     libevent.la
    CCLD     libevent_extra.la
  Staging libevent...
  ```

Tree-SHA512: a82bde38e110a16f934c0f1e95d3ae66662c1b3c1367e4a6e7c4994f585ebeea4f5cbee4d98a8dc64a8e8936eb9f4bb0c55fb65e718f724d88e81cb8fa84be88
2020-01-10 10:33:55 -06:00
Wladimir J. van der Laan
75ec11ee93
Merge #10793: Changing &var[0] to var.data()
592404f03 Changing &vec[0] to vec.data(), what 9804 missed (MeshCollider)

Pull request description:

  This just continues the work of https://github.com/bitcoin/bitcoin/pull/9804

  Modifies a lot of `&vector[]`'s to `vector.data()`'s across all the files including tests, just the stuff that 9804 missed

Tree-SHA512: dd1a9dffb999dea4fba78dcc91fe02f90250db86f5c74948e1ff3e8b4036b2154b600555eaa04dece5368920aae3513bc36425dc96e4319ca1041b0928a6b656
2020-01-10 10:33:54 -06:00
Wladimir J. van der Laan
d7a2232103
Merge #10916: add missing lock to crypter GetKeys()
fe09b0197 add missing lock to crypter GetKeys() (Marko Bencun)
5cb3da04b keystore GetKeys(): return result instead of writing to reference (Marko Bencun)

Pull request description:

  Issue: #10905

  First commit makes GetKeys() return the result instead of writing to a reference to remove some useless lines.

Tree-SHA512: bb51255b5a6cf5488c3d5dee89f539d41f0717f018441d120047f877e0a705a133fb3b7a97d1cf8f73b5d2ed93dd2dbdfcd6f394e40105af2a12e01d397cb402
2020-01-10 10:33:54 -06:00
Wladimir J. van der Laan
84e5b323b2
Merge #11232: Ensure that data types are consistent
061297f0a Ensure that data types are consistent (jjz)

Pull request description:

  1. nStatus of CBlockIndex  is consistent with the definition of Enum(BlockStatus)
  2. The BlockHeader is consistent with the type of variable defined in CBlockHeader

Tree-SHA512: 3d4a55c62d3e17b9c83807eae153db4fcfcd8477c9413a45dedfa157563e77b775a66974648d28c9d44ac45a5705eef83b31a8a3b44316dc9814b85526a9d034
2020-01-10 10:33:54 -06:00
MarcoFalke
b1af3b8db9
Merge #10680: Fix inconsistencies and grammar in various files
1d8df0141 Fix MD formatting in REST-interface.md and spelling mistake in test_runner.py (MeshCollider)
41f3e84aa Fix inconsistencies and grammar in various files (MeshCollider)

Pull request description:

  Just a simple fix of some inconsistent capitalization, formatting and grammar in a few files (no code changes)

Tree-SHA512: 60b12a5a5c69a1af4a25b7db0b32ed806ed62ad2966cee08b3792a7cfa7f51848fd485349b4c09e60a7eedfdf55ee730c51daa066d6e226ae404c93342bf3e13

Without RPM stuff
2020-01-10 10:33:53 -06:00
Alexander Block
ce924278df Don't load caches when blocks/chainstate was deleted and also delete old caches (#3280)
* Don't load caches when blocks/chainstate was not present

* Delete old cache files when we decided to not load them

* Make sure cache files are of the exact format we expected them to be, flush empty objects into them instead of deleting files naively

* Streamline logic a bit, rename fIgnoreCacheFiles to fLoadCacheFiles

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2020-01-10 13:30:56 +03:00
Alexander Block
ebf529e8aa Drop new connection instead of old one when duplicate MNAUTH is received (#3272) 2020-01-10 13:30:47 +03:00
UdjinM6
817cd9a177 AppInitMain should quit early and return false if shutdown was requested at some point (#3267)
This fixes crashes e.g. when user decided to shutdown while rescanning the wallet
2020-01-10 13:30:37 +03:00
UdjinM6
42e104932d Tweak few more strings re mixing and balances (#3265)
* Tweak few more strings re mixing and balances

* "Fully mixed"/"mixed" -> "PrivateSend"

* Apply suggestions from code review

Co-Authored-By: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>

Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
2020-01-10 13:30:18 +03:00
Alexander Block
d30eeb6f8d Use -Wno-psabi for arm builds on Travis/Gitlab (#3264)
This avoids spamming logs with "note: parameter passing for argument of type " warnings.
2020-01-10 13:30:08 +03:00
Alexander Block
1df3c67a8c A few fixes for integration tests (#3263)
* Wait a little bit longer in wallet-encryption.py

The timed wallet locking is happening by an asynchronous task internally,
which means that it might need a little bit longer then the specified
timeout.

* Add workaround for p2p-versionbits-warnings.py until we backport bitcoin#12264
2020-01-10 13:29:59 +03:00
Alexander Block
6e50a7b2a1 Fix params.size() check in "protx list wallet" RPC (#3259)
This should have been "> 4" as otherwise it bails out when the height is
specified.
2020-01-10 13:29:41 +03:00
-k
cbf9c54a1d Backport osslsigncode 2.0 - bitcoin#16669 and bitcoin#17671 (#3258)
* build: use osslsigncode 2.0 in gitian

The original osslsigncode project (https://sourceforge.net/projects/osslsigncode/) has been marked as abandonware,
"This is now - and has been for a long while - abandonware. Feel free to create your own forks etc.".

However, a fork at https://github.com/mtrojnar/osslsigncode has emerged that has incorporated
theuni's patches, updated the tool to work with OpenSSL 1.1 and made other improvements.

This commit switches the windows signer descriptor to use this new version of osslsigncode.

* Fixed wget call in gitian-build.py

Co-authored-by: Michael <fanquake@gmail.com>
Co-authored-by: willyk <k.o.willy@gmail.com>
2020-01-10 13:29:31 +03:00
Alexander Block
1a1cec224a Fix pull request detection in .gitlab-ci.yml (#3256)
* Fix pull request detection on Gitlab CI

* Fix CI_COMMIT_BEFORE_SHA
2020-01-10 13:29:22 +03:00
Alexander Block
31afa9c0fc Don't disconnect masternode connections when we have less then the desired amount of outbound nodes (#3255) 2020-01-10 13:29:11 +03:00
PastaPastaPasta
cecbbab3cd move privatesend rpc methods from rpc/masternode.cpp to new rpc/privatesend.cpp (#3253)
* move privatesend rpc methods from masternode.cpp to new privatesend.cpp

Signed-off-by: Pasta <pasta@dashboost.org>

* add ifdef ENABLE_WALLET check for wallet.h import

Signed-off-by: Pasta <pasta@dashboost.org>

* actually register privatesend rpc

Signed-off-by: Pasta <pasta@dashboost.org>

* add dropped help text and change some weird spacing below

Signed-off-by: Pasta <pasta@dashboost.org>
2020-01-10 13:29:00 +03:00
UdjinM6
8e054f3742 Sync mempool from other nodes on start (#3251)
* Sync mempool from other nodes on start

* Add `-syncmempool` cmd-line option to be able to disable mempool sync if needed

* Only sync mempool with outbound peers

Co-authored-by: Alexander Block <ablock84@gmail.com>
2020-01-10 13:28:42 +03:00
UdjinM6
474f25b8dc Push islock invs when syncing mempool (#3250)
* Push islock invs when syncing mempool

* Send islock invs right away instead of stacking them for later
2020-01-10 13:28:32 +03:00
UdjinM6
3b0f8ff8b3 Skip mnsync restrictions for whitelisted and manually added nodes (#3249) 2020-01-10 13:28:22 +03:00
UdjinM6
fd94e9c38c Streamline, refactor and unify PS checks for mixing entries and final txes (#3246)
* Move PS mixing entry verification on masternodes into `AddEntry()`

Also streamline logic a bit and drop unused/excessive parts.

* Unify PS checks among masternodes and clients

* No need to re-check outputs over and over again

* No need to count, fail early if any output is missing

* No need to look any further once we found the input we expected

A tx with duplicate inputs would be considered invalid anyway and we also know there are no duplicates because we just verified the final tx above.

Also drop an unused variable.

* Unify LogPrint-s

* Drop human-readable strings for unused PoolMessage-s

* Apply suggestions from code review

Co-Authored-By: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>

* Re-introduce zero-fee checks

* fix log

* Move all txin/txout verification logic shared by CPrivateSendClientSession::SignFinalTransaction() and CPrivateSendServer::AddEntry() into CPrivateSendBaseSession::IsValidInOuts()

* fix nit

* Add missing return

* Use CCoinsViewMemPool instead of doing it manually

Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
Co-authored-by: Alexander Block <ablock84@gmail.com>
2020-01-10 13:28:12 +03:00
UdjinM6
c42b200973 Try to avoid being marked as a bad quorum member when we sleep for too long in SleepBeforePhase (#3245)
* Do not sleep at the last block of the phase, it's not safe

* Refactor it a bit to make it clearer what's going on here

* Stop sleeping if blocks came faster than we expected
2020-01-10 13:27:58 +03:00
UdjinM6
db6ea1de8e Fix log output in CDKGPendingMessages::PushPendingMessage (#3244) 2020-01-10 13:27:47 +03:00
Alexander Block
416d85b294 Tolerate parent cache with empty cache-artifact directory (#3240) 2020-01-10 13:27:31 +03:00
Alexander Block
99715f36dd Don't load caches when blocks/chainstate was deleted and also delete old caches (#3280)
* Don't load caches when blocks/chainstate was not present

* Delete old cache files when we decided to not load them

* Make sure cache files are of the exact format we expected them to be, flush empty objects into them instead of deleting files naively

* Streamline logic a bit, rename fIgnoreCacheFiles to fLoadCacheFiles

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2020-01-10 13:24:21 +03:00
PastaPastaPasta
f4f9f918dc [Pretty Trivial] Adjust some comments (#3252)
* remove extra e

Signed-off-by: Pasta <pasta@dashboost.org>

* scripted-diff: Replace smth with something

-BEGIN VERIFY SCRIPT-
sed -i 's/smth/something/' ./src/*.h ./src/*.cpp ./src/*/*.h ./src/*/*.cpp ./src/*/*/*.h ./src/*/*/*.cpp
-END VERIFY SCRIPT-
2020-01-08 08:02:49 +01:00
Alexander Block
26fb682e91
Speed up prevector initialization and vector assignment from prevectors (#3274)
* Implement assign_to in prevector

* Implement optimized fill() methods for trivially constructible types in prevector

No need to invoke the "new" operator on every element when the elements
are trivially constructible (e.g. unsigned char)

* Benchmark prevector<...>::const_iterator vs vector.assign()

* Manually invoke ::memmove instead of relying on the stl

Some compilers do not automatically switch to memmove internally, so lets
do this manually.

* Use prevector::assign_to in benchmark

* Rename prevector benchmarks

* Use larger copy ranges in benchmarks

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2020-01-08 08:02:17 +01:00
UdjinM6
6ac36b8865 Fix log output after backporting 10303 (#3275) 2020-01-08 08:01:53 +01:00
Alexander Block
9c9cac6d67
Show quorum connections in "quorum dkgstatus" and use it in mine_quorum (#3271)
Instead of statically sleeping 2 seconds
2020-01-08 08:01:26 +01:00
Alexander Block
e732a9281c
Merge pull request #3281 from codablock/pr_backport_14630
Backport "--failfast" and "--ci" for test_runner.py
2020-01-08 08:00:45 +01:00
MarcoFalke
ef59dce92e Merge #14630: test_runner: Remove travis specific code
fa43626611 test_runner: Remove travis specific code (MarcoFalke)

Pull request description:

  The tests are no longer run on travis, but in a docker, developer machines or a windows vm.

  The code was essentially dead for months now. Fix that by explicitly passing in `--ci` to the test runner on our docker and appveyor windows vm.

Tree-SHA512: 5d48693c03e8eb27536658ccf9ba738fe93a72abd4b72c80caac084b5b2cdffa77a1031a671eeefe70b71d63500f55917803d4be54d01849722afdccb700a9e6
2020-01-07 23:12:29 +01:00
Wladimir J. van der Laan
430c0380fa Merge #13105: [qa] Add --failfast option to functional test runner
58f9a0a Use --failfast when running functional tests on Travis (James O'Beirne)
bf720c1 Add --failfast option to functional test runner (James O'Beirne)

Pull request description:

  Add the option (`--failfast`) to stop the functional test runner's execution when it encounters the first failure.

  Also cleans up run_test's arguments list ([no more mutable default for `args`](http://docs.python-guide.org/en/latest/writing/gotchas/#mutable-default-arguments)) and call site.

Tree-SHA512: e854b1b1634bf613ae8ae88e715df1460982fa68db9d785aafeb5eccf5bf324c7f20dded2ca6840ebf18a28347ecac2138d6c7592507b34939b02609ef55e1b3
2020-01-07 23:12:11 +01:00
Alexander Block
aca6af0a0e
Use smaller LLMQs in regtest (#3269)
* Rename LLMQ_5_60 to LLMQ_TEST

* Introduce -llmqtestparams which allows to modify LLMQ_TEST on regtest

Also add support in DashTestFramework

* Use parameters size=3, threshold=2 as default for LLMQ_TEST

And fall back to the old parameters where necessary

* Wait for all contributions, even when one member is lying

Otherwise we might end up continuing too fast, which would fail the DKG.

* Update src/chainparams.cpp

Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2020-01-07 13:49:51 +01:00
Alexander Block
88da298082 Add -whitelist to all nodes in smartfees.py (#3273)
This speeds up mempool synchronization a lot due to trickling being forced.
This will later conflict with bitcoin#16493 and bitcoin#16535, but this can
easily be resolved (it does the same).
2020-01-05 00:17:41 +03:00