Commit Graph

16624 Commits

Author SHA1 Message Date
Pasta
9d206814cb
Merge #10783: [RPC] Various rpc argument fixes
4dc1915 check for null values in rpc args and handle appropriately (Gregory Sanders)
999ef20 importmulti options are optional (Gregory Sanders)
a70d025 fixup some rpc param counting for rpc help (Gregory Sanders)

Pull request description:

  Audited where named args will fail to use correct default values or may fail when additional optional arguments are added.

  Previously for these parameters, it was fine to omit them as positional arguments, but it would trigger UniValue runtime errors to set them to null, or to omit them while passing named parameters with greater positions (which would internally set earlier missing arguments to null). Now null values are treated the same as missing values so these errors do not occur.

  Included a few other small fixes while working on it.

  I didn't bother fixing account-based rpc calls.

Tree-SHA512: 8baf781a35bd48de7878d4726850a580dab80323d3416c1c146b4fa9062f8a233c03f37e8ae3f3159e9d04a8f39c326627ca64c14e1cb7ce72538f934ab2ae1e
2019-08-12 09:06:58 -05:00
Alexander Block
17ba23871c Re-verify invalid IS sigs when the active quorum set rotated (#3052)
* Split ProcessPendingInstantSendLocks into two methods

* Split SelectQuorumForSigning into SelectQuorumForSigning and GetActiveQuorumSet

* Implement retrying of IS lock verification when the LLMQ active set rotates
2019-08-12 09:37:22 +02:00
Alexander Block
8c49d9b545 Remove recovered sigs from the LLMQ db when corresponding IS locks get confirmed (#3048)
* Remove unused overload of RemoveInstantSendLock

* Move deletion of recovered sigs into own method

* Remove recovered sigs for fully confirmed IS locks

* Also remove rs_t entries when removing recovered sigs from the outside

CleanupOldRecoveredSigs already does this as the last step, but when
RemoveRecoveredSig is called from the outside (e.g. from InstantSend),
these keys are not removed. This PR fixes this by storing the write time
into rs_r and later uses it to remove the rs_t entry.

Old entries will be incompatible with this (1 byte written in the past,
4 bytes written now). This checked by comparing the data size with
sizeof(uint32_t).

* Add TODO
2019-08-12 09:37:14 +02:00
Alexander Block
dd7873857b
Re-verify invalid IS sigs when the active quorum set rotated (#3052)
* Split ProcessPendingInstantSendLocks into two methods

* Split SelectQuorumForSigning into SelectQuorumForSigning and GetActiveQuorumSet

* Implement retrying of IS lock verification when the LLMQ active set rotates
2019-08-12 09:36:09 +02:00
Alexander Block
13e0235106
Remove recovered sigs from the LLMQ db when corresponding IS locks get confirmed (#3048)
* Remove unused overload of RemoveInstantSendLock

* Move deletion of recovered sigs into own method

* Remove recovered sigs for fully confirmed IS locks

* Also remove rs_t entries when removing recovered sigs from the outside

CleanupOldRecoveredSigs already does this as the last step, but when
RemoveRecoveredSig is called from the outside (e.g. from InstantSend),
these keys are not removed. This PR fixes this by storing the write time
into rs_r and later uses it to remove the rs_t entry.

Old entries will be incompatible with this (1 byte written in the past,
4 bytes written now). This checked by comparing the data size with
sizeof(uint32_t).

* Add TODO
2019-08-12 09:35:44 +02:00
Alexander Block
2e0cf8a30b Add "instantsendlocks" to getmempoolinfo RPC (#3047) 2019-08-07 17:54:27 +02:00
Alexander Block
4a7525da38 Add "instantsendlocks" to getmempoolinfo RPC (#3047) 2019-08-07 18:49:44 +03:00
UdjinM6
5bc53b6c26
Merge pull request #3043 from PastaPastaPasta/backports-0.15-pr23
Backports 0.15 pr23
2019-08-07 18:48:59 +03:00
Alexander Block
a8fb8252e9 Use fEnablePrivateSend instead of fPrivateSendRunning
Required due missing refactorings.
2019-08-07 16:07:22 +02:00
Alexander Block
a198a04e04 Show number of InstantSend locks in Debug Console (#2919)
* Implement GetInstantSendLockCount in CInstantSendManager

* Add islockCountChanged signal to client model

* Show number of InstantSend locks in debug console
2019-08-07 14:15:08 +02:00
Alexander Block
013169d63d Optimize on-disk deterministic masternode storage to reduce size of evodb (#3017)
* Implement CompactFull() in CDBWrapper

This allows to compact the whole DB in one go.

* Implement more compact version of CDeterministicMNListDiff

This introduces CDeterministicMNStateDiff which requires to only store
fields on-disk which actually changed.

* Avoid writing mnUniquePropertyMap to disk when storing snapshots

This map can be rebuilt by simply using AddMN for each deserialized MN.

* Implement Serialize/Unserialize in CScript

This allows us to directly use READWRITE() on scripts and removes the need
for the ugly cast to CScriptBase. This commit also changes all Dash specific
uses of CScript to not use the cast.

* Keep track of registeration counts and introduce internalID for masternodes

The "internalId" is simply the number of MNs registered so far when the
new MN is added. It is deterministic and stays the same forever.

* Use internalId as keys in MN list diffs

This reduces the used size on-disk.

* Two simple speedups in MN list diff handling

1. Avoid full compare if dmn or state pointers match in BuildDiff
2. Use std::move when adding diff to listDiff in GetListForBlock

* Implement upgrade code for old CDeterministicMNListDiff format to new format

* Track tipIndex instead of tipHeight/tipBlockHash

* Store and pass around CBlockIndex* instead of block hash and height

This allows us to switch CDeterministicMNManager::GetListForBlock to work
with CBlockIndex.

* Refactor CDeterministicMNManager::GetListForBlock to require CBlockIndex*

Instead of requiring a block hash. This allows us to remove blockHash and
prevBlockHash from CDeterministicMNListDiff without the use of cs_main
locks in GetListForBlock.

* Remove prevBlockHash, blockHash and nHeight from CDeterministicMNListDiff

* Remove access to determinisitcMNManager in CMasternodeMetaMan::ToString()

The deterministic MN manager is not fully initialized yet at the time this
is called, which results in an empty list being returned everytime.

* Better logic to determine if an upgrade is needed

Reuse the "best block" logic to figure out if an upgrade is needed. Also
use it to ensure that older nodes are unable to start after the upgrade
was performed.

* Return null block hash if it was requested with getmnlistdiff

* bump CGovernanceManager::SERIALIZATION_VERSION_STRING

* Check SERIALIZATION_VERSION_STRING before deserializing anything else

* Invoke Clear() before deserializing just to be sure
2019-08-07 12:19:49 +02:00
Alexander Block
9ac7a998be Add "isValidMember" and "memberIndex" to "quorum memberof" and allow to specify quorum scan count (#3009)
* Add "isValidMember" and "memberIndex" to output of "quorum memberof"

* Allow to specify how many quorums to scan for in "quorum memberof"
2019-08-07 12:19:49 +02:00
Alexander Block
99824a8792 Implement "quorum memberof" (#3004)
* Implement BuildQuorumInfo and call it from quorum_info

* Add type to result of BuildQuorumInfo

* Implement "quorum memberof"
2019-08-07 12:19:49 +02:00
UdjinM6
7ea319fd25 Bail out properly on Evo DB consistency check failures in ConnectBlock/DisconnectBlock (#3044) 2019-08-07 12:19:49 +02:00
UdjinM6
b1ffedb2dd Do not count 0-fee txes for fee estimation (#3037) 2019-08-07 12:19:49 +02:00
strophy
974055a9b6 Fix broken link in PrivateSend info dialog (#3031) 2019-08-07 12:19:49 +02:00
UdjinM6
781b165796 Merge pull request #3028 from PastaPastaPasta/backport-12588
Backport a couple of ZMQ fixes
2019-08-07 12:19:49 +02:00
Nathan Marley
5af6ce91d6 Add Dash Core Group codesign certificate (#3027) 2019-08-07 12:19:49 +02:00
Nathan Marley
873ab896ca Fix osslsigncode compile issue in gitian-build (#3026) 2019-08-07 12:19:49 +02:00
UdjinM6
ea8569e97b Backport #12783: macOS: disable AppNap during sync (and mixing) (#3024)
* Merge #12783: macOS: disable AppNap during sync

1e0f3c44992fb82e6bf36c2ef9277b0759c17c4c macOS: disable AppNap during sync (Alexey Ivanov)

Pull request description:

  Code based on pull/5804. Tested only on macOS 10.13.3 and should support 10.9+.

  What macOS versions bitcoin core currently supports?

Tree-SHA512: 85809b8d8d8a05169437b4268988da0b7372c29c6da3223ebdc106dc16dcb6d3caa5c52ace3591467005b50a63fd8b2ab1cb071cb4f450032932df25d5063315

* Refactor

* Drop `#include <memory>` from `src/qt/bitcoingui.h`

Was included by mistake.
2019-08-07 12:19:49 +02:00
UdjinM6
fbb49f92d0 Bail out properly on Evo DB consistency check failures in ConnectBlock/DisconnectBlock (#3044) 2019-08-07 11:55:06 +02:00
Alexander Block
4286dde498 Remove support for InstantSend locked gobject collaterals (#3019) 2019-08-07 11:52:09 +02:00
UdjinM6
f66ff6be02
Drop state from DisconnectBlock params (finilize 10297 backport) 2019-08-06 06:50:03 -05:00
Pasta
42cf74dec4
add #if ENABLE_MINER to relevant sections
Signed-off-by: Pasta <pasta@dashboost.org>
2019-08-06 06:50:03 -05:00
PastaPastaPasta
53f046ce2c
Fix makefile
Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>
2019-08-06 06:46:42 -05:00
PastaPastaPasta
106fdfa0b0
Fix tests
Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>
2019-08-06 06:46:42 -05:00
Wladimir J. van der Laan
6edcf43fcd
Merge #10683: rpc: Move the generate RPC call to rpcwallet
2a96283 rpc: Update `generate` for developer notes (Wladimir J. van der Laan)
df7e2f0 rpc: Move the `generate` RPC call to rpcwallet (Wladimir J. van der Laan)

Tree-SHA512: ec658d6178f8435dc54b9d9c6dd59f873055a8ae0c3f177c02049d77b93107dd5fc17a1ff56d50f051810d52fdf306846eaba2ef4fc8d2a6cfa831f57a1045c4
2019-08-05 16:49:30 -05:00
Wladimir J. van der Laan
f1f9e5dfb5
Merge #11002: [wallet] return correct error code from resendwallettransaction
055d95f [wallet] return correct error code from resendwallettransaction (John Newbery)

Pull request description:

  New code in #10995 uses `RPC_INVALID_REQUEST`. According to the comment in rpc/protocol.h:
  ```
  // RPC_INVALID_REQUEST is internally mapped to HTTP_BAD_REQUEST (400).
  // It should not be used for application-layer errors.
  ```
  Change the returned error code to `RPC_WALLET_ERROR`

  #11000 will need to be updated to test for the correct error code.

Tree-SHA512: 0201b3a2091adf17ad301825da5bd29f0ea7e284b5394cbef80483fc293a558acc849f74a0780bb8501acab324fc722e41ae049cffec7afb76884e26df4b809e
2019-08-05 16:47:12 -05:00
Wladimir J. van der Laan
a7ef222617
Merge #10995: Fix resendwallettransactions assert failure if -walletbroadcast=0
01699fb Fix resendwallettransactions assert failure if -walletbroadcast=0 (Matt Corallo)

Pull request description:

  This fixes #10981 in my preferred way.

Tree-SHA512: 2e43d3ac78d13c5d59db23a82c76c722cc3344767a8237617080e489296d27a98bb1b3bd469b2c9b289b57a9da3709c90448d7a23bcc2e1dfb791c4fd16be015
2019-08-05 16:46:46 -05:00
Pasta
60b3ae1821
add gArgs
Signed-off-by: Pasta <pasta@dashboost.org>
2019-08-02 12:41:37 -05:00
Pasta
f3259d0d28
remove DB_PEAK_USAGE_FACTOR
Signed-off-by: Pasta <pasta@dashboost.org>
2019-08-02 12:40:53 -05:00
Wladimir J. van der Laan
453d756571
Merge #10148: Use non-atomic flushing with block replay
176c021 [qa] Test non-atomic chainstate writes (Suhas Daftuar)
d6af06d Dont create pcoinsTip until after ReplayBlocks. (Matt Corallo)
eaca1b7 Random db flush crash simulator (Pieter Wuille)
0580ee0 Adapt memory usage estimation for flushing (Pieter Wuille)
013a56a Non-atomic flushing using the blockchain as replay journal (Pieter Wuille)
b3a279c [MOVEONLY] Move LastCommonAncestor to chain (Pieter Wuille)

Tree-SHA512: 47ccc62303f9075c44d2a914be75bd6969ff881a857a2ff1227f05ec7def6f4c71c46680c5a28cb150c814999526797dc05cf2701fde1369c06169f46eccddee
2019-08-01 14:57:28 -05:00
Gregory Sanders
8ed0d522fb
disable jni in builds
Github-Pull: #11056
Rebased-From: 844b73e486
Tree-SHA512: f735853c3d9abbde5032cc55201b0ddc29679e681ba7d3822cbcbeee17c7185ee984b235411224cfb8ff12550de88a0f1367d55ad24bf52c5c03061330849eb2
2019-08-01 14:48:40 -05:00
MarcoFalke
33807c8cee
Merge #11000: test: Add resendwallettransactions functional tests
bdf607e43 test: Add resendwallettransactions functional tests (João Barbosa)

Pull request description:

  Adds functional tests to cover the behaviour introduced in #10995.

Tree-SHA512: 3be337cbe51edab2cc0eb9ecfa68d00cd3c3a00aef0672cd841706802726c9cd4138626a8f209c3d9fbd207ce332daa062f270e4c94c1c2398bfc475e36423f6
2019-08-01 14:42:39 -05:00
MarcoFalke
7f1009ed57
Merge #11023: [tests] Add option to attach a python debugger if functional test fails
cc5d38f4b Add option to attach a python debugger if test fails (John Newbery)

Pull request description:

  Adds a simple option to the test_framework to attach pdb if the test fails.

  Helpful for catching and debugging intermittent failures: Run the test in a loop with this option. The first failure will cause execution to pause and nodes will be left running for interactive debugging.

  @sdaftuar

Tree-SHA512: 01cfae15fa3f04ed6ec6a99fef60a6c6a59723429309e81eacd6767caf12f5758f59b337804291ecab33a38a2958f36e2b513d201bee72a2eeb207a67046f952
2019-08-01 14:42:19 -05:00
Wladimir J. van der Laan
52aef4cfec
Merge #10301: Check if sys/random.h is required for getentropy.
ee2d10a Check if sys/random.h is required for getentropy on OSX. (James Hilliard)

Pull request description:

  This should check and include sys/random.h if required for osx as mentioned [here](https://github.com/bitcoin/bitcoin/pull/9821#issuecomment-290936636).

Tree-SHA512: e9491f67f2e8b2e6bcdbcbb8063295e844d5627daf5336e3e17b4a8027d888fa65a08e4580a745abdc35ffd8d86b4fc7434daaac172c4a06ab7566a2ed0bfb92
2019-08-01 14:41:39 -05:00
Wladimir J. van der Laan
8cb2508c93
Merge #10974: Fix typo in sendcoinsdialog.
7f121a0 Fix typo in sendcoinsdialog. (Masahiko Hyuga)

Pull request description:

Tree-SHA512: 7b3ea344a8a432b6e3835b6870ccfaa197df43f812fea506259b644a44442e36ee39967eed246d9b4b5334528b63f41d7e8af9fd2267e51bcf7557ed652452e4
2019-08-01 14:39:48 -05:00
Wladimir J. van der Laan
80bc6df26f
Merge #10892: Replace traditional for with ranged for in block and transaction primitives
72f0060 Replace traditional for with ranged for in primitives (Dag Robole)

Pull request description:

  Replace traditional for with ranged for in block and transaction primitives to improve readability

Tree-SHA512: c0fff603d2939149ca48b6aa72b59738a3658d49bd58b2d4ffbc85bdb774d8d5bb808fe526fe22bb9eb214de632834d373e2aab44f6019a83c0b09440cea6528
2019-08-01 14:36:08 -05:00
Wladimir J. van der Laan
07d08a8224
Merge #10912: [tests] Fix incorrect memory_cleanse(…) call in crypto_tests.cpp
065039d [tests] Fix incorrect memory_cleanse(…) call in crypto_tests.cpp (practicalswift)

Pull request description:

  `chKey` and `chIV` are pointers, not arrays :-)

  Probably the result of copy-pasting of old code where the code was operating on arrays instead of pointers.

  If I'm reading the code correctly the absence/presence of these `memory_cleanse(…)` calls won't alter the outcome of the test in question (`TestPassphraseSingle`) even if fixed. Therefore removing.

Tree-SHA512: a053b2817bedf6ef889744e546ce9a0f165dee94aef6850d9d6a6bb05b0018789597371ecf154a4aec8588c0ef5626ef08c23c35e35927f6b0497b5f086146fe
2019-08-01 14:32:23 -05:00
Wladimir J. van der Laan
5dc2193d2f
Merge #10824: Avoid unnecessary work in SetNetworkActive
a2420ae Avoid unnecessary work in SetNetworkActive (João Barbosa)

Pull request description:

  This PR adds an early return to avoid unnecessary notifications when the status doesn't change.

Tree-SHA512: 85d05ca6fa36cb581f94bc154d08bd72cd53f6a857173c6fb2f184058f9c0208c4cf5e5d196825a78339902d8f256688eb6793f99abc7be9c7cfac85136180d9
2019-08-01 14:32:12 -05:00
Wladimir J. van der Laan
8fdf594316
Merge #10927: test: Make sure wallet.backup is created in temp path
88af227 test: Make sure wallet.backup is created in temp path (Wladimir J. van der Laan)

Pull request description:

  This assures that we don't overwrite a random file called `wallet.backup` that happens to be in the current directory. It also assures that the temporary file will be cleaned up.

  Noticed by Evan Klitzke, came up in discussion here: https://github.com/bitcoin/bitcoin/pull/10880#discussion_r128460722

Tree-SHA512: 2d2c23c2deba26a1130a29279b3d8565b277eb90a98a6a6d7dd4948f5cbbd5ec5453b3082e3e4e21e0e2423e642bbd2f4433e4c21032d3c8cff27ee35e87e7e7
2019-08-01 14:28:36 -05:00
Wladimir J. van der Laan
b2b0bc9b0a
Merge #10870: [Qt] Use wallet 0 in rpc console if running with multiple wallets
9737572 [Qt] Use wallet 0 in rpc console if running with multiple wallets (Jonas Schnelli)

Pull request description:

  Current master with multiwallet results in accessing wallet 0 in QT (send / receive / tx history / etc.), **but** the RPC console cannot access that wallet (only non-wallet commands work).

  This is a quick solution to re-allow accessing the same wallet (Index 0) via RPC console in multiwallet.

  The solutions design is not "state of the art" (should go over WalletModel). Ideally we work on an overall multiwallet support for the GUI (which then would remove this change).

  I think we should consider this as a bugfix.

Tree-SHA512: 16cf844662248ffd3d82c7d0cbe5879f231fbc7d4f5a4aab4180a9087018519c98301e4ac311eaec2cc39dddf25d3edf9be99a6622ea682c138a820a9b21fd0c
2019-08-01 14:27:47 -05:00
Wladimir J. van der Laan
6096212d55
Merge #10883: Rename -usewallet to -rpcwallet
2264236 Rename -usewallet to -rpcwallet (Alex Morcos)

Pull request description:

Tree-SHA512: 99bdbff5d18e464e620b7b2a1ff8db874b3888db4d43348c96c372097ed51edd796b564e4ef1193ccd75d0a1fd51f865cf6fff4e0e3672654cd2933c851d210a
2019-08-01 11:36:58 -05:00
Pasta
1a96452287
add gArgs
Signed-off-by: Pasta <pasta@dashboost.org>
2019-08-01 11:33:45 -05:00
UdjinM6
8d89350b8a
Use less alarming fee warning note (#3038) 2019-08-01 17:50:42 +03:00
UdjinM6
02f6188e8f
Do not count 0-fee txes for fee estimation (#3037) 2019-08-01 17:50:23 +03:00
UdjinM6
51c84248ad
Merge pull request #3032 from PastaPastaPasta/backport-chacha-poly1305
Backport chacha-poly1305, prepare for V2 P2P Encrypted Messaging
2019-08-01 17:49:40 +03:00
UdjinM6
b4d72d4dc9
Merge pull request #3036 from PastaPastaPasta/backports-0.15-pr22
Backports 0.15 pr22
2019-08-01 17:48:57 +03:00
Wladimir J. van der Laan
fdf34ff655
Merge #10849: Multiwallet: simplest endpoint support
6b9faf7 [QA] add basic multiwallet test (Jonas Schnelli)
979d0b8 [tests] [wallet] Add wallet endpoint support to authproxy (John Newbery)
76603b1 Select wallet based on the given endpoint (Jonas Schnelli)
32c9710 Fix test_bitcoin circular dependency issue (Jonas Schnelli)
31e0720 Add wallet endpoint support to bitcoin-cli (-usewallet) (Jonas Schnelli)
dd2185c Register wallet endpoint (Jonas Schnelli)

Pull request description:

  Alternative for #10829 and #10650.
  It adds the most simplest form of wallet based endpoint support (`/wallet/<filename>`).
  No v1 and no node/wallet endpoint split.

Tree-SHA512: 23de1fd2f9b48d94682928b582fb6909e16ca507c2ee19e1f989d5a4f3aa706194c4b1fe8854d1d79ba531b7092434239776cae1ae715ff536e829424f59f9be
2019-08-01 09:05:19 -05:00
Wladimir J. van der Laan
6fb74ead60
Merge #10832: init: Factor out AppInitLockDataDirectory and fix startup core dump issue
dba485d init: Factor out AppInitLockDataDirectory (Wladimir J. van der Laan)

Pull request description:

  Alternative to #10818, alternative solution to #10815.

  After this change: All the AppInit steps before and inclusive AppInitLockDataDirectory must not have Shutdown() called in case of failure. Only when AppInitMain fails, Shutdown should be called.

  Changes the GUI and bitcoind code to consistently do this.

Tree-SHA512: 393e1a0ae05eb8e791025069e3ac4f6f3cdeb459ec63feda85d01cf6696ab3fed7632b6a0ac3641b8c7015af51d46756b5bba77f5e5f0c446f0c2dea58bbc92e
2019-08-01 09:02:48 -05:00