Commit Graph

16326 Commits

Author SHA1 Message Date
Alexander Block
2f21e55514 Remove legacy InstantSend code (#3020)
* Remove ppszTypeName from protocol.cpp and reimplement GetCommand

This removes the need to carefully maintain ppszTypeName, which required
correct order and also did not allow to permanently remove old message
types.

To get the command name for an INV type, GetCommandInternal uses a switch
which needs to be maintained from now on.

The way this is implemented also resembles the way it is implemented in
Bitcoin today, but it's not identical. The original PR that introduced the
switch case in Bitcoin was part of the Segwit changes and thus never got
backported. I decided to implement it in a slightly different way that
avoids throwing exceptions when an unknown INV type is encountered.

IsKnownType will now also leverage GetCommandInternal() to figure out if
the INV type is known locally. This has the side effect of old/legacy
message types to return false from now on. We will depend on this side
effect in later commits when we remove legacy InstantSend code.

* Stop handling/relaying legacy IX messages

When we receive an IX message, we simply treat it as a regular TX and relay
it as such.

We'll however still request IX messages when they are announced to us. We
can't simply revert to requesting TX messages in this case as it might
result in the other peer not answering due to the TX not being in mapRelay
yet. We should at some point in the future completely drop handling of IX
messages instead.

* Remove IsNewInstantSendEnabled() and only use IsInstantSendEnabled()

* Remove legacy InstantSend from GUI

* Remove InstantSend from Bitcoin/Dash URIs

* Remove legacy InstantSend from RPC commands

* Remove legacy InstantSend from wallet

* Remove legacy instantsend.h include

* Remove legacy InstantSend from validation code

* Completely remove remaining legacy InstantSend code

* Remove now unused spork

* Fix InstantSend related test failures

* Remove now obsolete auto IS tests

* Make spork2 and spork3 disabled by default

This should have no influence on mainnet as these sporks are actually set
there. This will however affect regtest, which shouldn't have LLMQ based
InstantSend enabled by default.

* Remove instantsend tests from dip3-deterministicmns.py

These were only testing legacy InstantSend

* Fix .QCheckBox#checkUsePrivateSend styling a bit

* s/TXLEGACYLOCKREQUEST/LEGACYTXLOCKREQUEST/

* Revert "verified via InstantSend" back to "verified via LLMQ based InstantSend"

* Use cmd == nullptr instead of !cmd

* Remove last parameter from AvailableCoins call

This was for fUseInstantSend which is not present anymore since rebase
2019-07-09 17:50:08 +03:00
Alexander Block
7a440d626b 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-07-09 08:59:57 +03:00
UdjinM6
3c7d2f0903
Merge pull request #3021 from PastaPastaPasta/backports-0.15-pr18
Backports 0.15 pr18
2019-07-09 08:58:53 +03:00
Pasta
594eb74442
remove unneeded parenthesises
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-08 13:50:05 -05:00
Pasta
d93b837326
Use InsecureRandRange instead of InsecureRandBool
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-08 13:50:05 -05:00
Wladimir J. van der Laan
1099c1ad60
Merge #10546: Remove 33 unused Boost includes
49de096 Remove unused Boost includes (practicalswift)

Tree-SHA512: ff2dad94f9eeb1dc50fcffd0e94e1686be04e4e5bc45f58ae955d630c15cd25bb8f5583d0aa1f2f263b5a723be79747ef3c6e6b417c7be7787c0abc8d1874019
2019-07-08 13:50:05 -05:00
Wladimir J. van der Laan
80b8032501
Merge #10561: Remove duplicate includes
e53a0fa Remove duplicate includes (practicalswift)

Tree-SHA512: 5101afaf190ade3ffbea666ff5d0cb59d3e1dbdd9a3db3d91df7b51c13cc9f5a699438e8a753655365f6dc14529bc95883e715b5a6ab73158374e13ec311f70b
2019-07-08 13:50:05 -05:00
Wladimir J. van der Laan
dc5dc4186b
Merge #10566: [docs] Use the "domain name setup" image (previously unused) in the gitian docs
7631066 Use the "domain name setup" image (previously unused) in the gitian docs (practicalswift)

Tree-SHA512: 747f3afa15dd6007076fb20d5fd16e20e2fb920c5eea5557664ddd42bd2c52e1a517124a649e3d1605fcc9e0c06a567c63b1023dda22f813a2d331b28097baa0
2019-07-08 13:50:05 -05:00
Wladimir J. van der Laan
6a0f565783
Merge #10560: Remove unused constants
dce8239 Comment out unused constant REJECT_DUST (practicalswift)
3289ef4 Remove unused constant MEMPOOL_GD_VERSION (practicalswift)

Tree-SHA512: 8dd772c963037cd0a1db0d5bf5f7a5cce3f5cd8fb6fa983949f9f0c1c8312ffd251a62c1e5d32f3584d2bcc562d8c8a9bf7900609dee9a4f12898caa2be9c38f
2019-07-08 13:50:05 -05:00
Wladimir J. van der Laan
2bfa374729
Merge #10569: Fix stopatheight
c45cbaf Fix stopatheight (Andrew Chow)

Tree-SHA512: 7df07ca1d40a5a3a8d93ad8943cd04954d587e19bbb63ed084b7aff9503788ec73a1045fbfc4a36d9775975032c2ee0bcc76eb4da10e879f483eaa6f351c19b2
2019-07-08 13:50:05 -05:00
Pieter Wuille
f6400a8713
Merge #10521: Limit variable scope
90593ed92 Limit variable scope (practicalswift)

Tree-SHA512: 4719e303688a31aefbe1d239e86b21dd3c2045524e08bd628c6ba0c6c2a97de14d04305b9beafe0b1dcde7229793e6663168953f192e88ed409be5c30fd2a9a9
2019-07-08 13:50:05 -05:00
Pasta
e9b389d19c
continued, dash code
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-08 10:24:30 -05:00
Wladimir J. van der Laan
b92d2dd66a
Merge #10545: Use list initialization (C++11) for maps/vectors instead of boost::assign::map_list_of/list_of
3fb81a8 Use list initialization (C++11) for maps/vectors instead of boost::assign::map_list_of/list_of (practicalswift)

Tree-SHA512: 63a9ac9ec5799472943dce1cd92a4b14e7f1fe12758a5fc4b1efceaf2c85a4ba71dad5ccc50813527f18b192e7714c076e2478ecd6ca0d452b24e88416f872f7
2019-07-08 10:24:30 -05:00
Wladimir J. van der Laan
7e7c3ce6ca
Merge #10548: Use std::unordered_{map,set} (C++11) instead of boost::unordered_{map,set}
246a02f Use std::unordered_{map,set} (C++11) instead of boost::unordered_{map,set} (practicalswift)

Tree-SHA512: 35cd42012248174751e4b87efbc78689957f731d7710dea7e369974c6ec31b15b32d1537fb0d875c94c7ffb5046d9784735e218e5baeed96d525861dab6d4252
2019-07-08 10:24:29 -05:00
Wladimir J. van der Laan
b6dc579be8
Merge #10547: [tests] Use FastRandomContext instead of boost::random::{mt19937,uniform_int_distribution}
227ae9b [tests] Use FastRandomContext instead of boost::random::{mt19937,uniform_int_distribution} (practicalswift)

Tree-SHA512: 1bde6c8b9498051fa2eae4913eb1f5411adea8dea1511c0df859aea57a2a7db6f5839945ddf2eccdddfa322bceacad35a5d875742db7d15e40dbea83185307bb
2019-07-08 10:24:29 -05:00
Wladimir J. van der Laan
20e30fb93c
Merge #10524: [tests] Remove printf(...)
0abc588 [tests] Remove printf(...) (practicalswift)

Tree-SHA512: a56fa1edce050f5a44a53842223fc99e4e8ade413047e04f2064faeb5c4a418864a94471853d5c26a20608d1dcc18b9226d7fe15172f79a66cc5cf6e1443f7e9
2019-07-08 10:24:28 -05:00
Pasta
6318ca6367
insecure_rand() -> InsecureRandBits
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-08 10:24:28 -05:00
Pieter Wuille
57c5cfb0f6
Merge #10321: Use FastRandomContext for all tests
e94584858 scripted-diff: Use new naming style for insecure_rand* functions (Pieter Wuille)
2fcd9cc86 scripted-diff: Use randbits/bool instead of randrange where possible (Pieter Wuille)
2ada67852 Use randbits instead of ad-hoc emulation in prevector tests (Pieter Wuille)
5f0b04eed Replace rand() & ((1 << N) - 1) with randbits(N) (Pieter Wuille)
3ecabae36 Replace more rand() % NUM by randranges (Pieter Wuille)
efee1db21 scripted-diff: use insecure_rand256/randrange more (Pieter Wuille)
1119927df Add various insecure_rand wrappers for tests (Pieter Wuille)
124d13a58 Merge test_random.h into test_bitcoin.h (Pieter Wuille)
90620d66c scripted-diff: Rename cuckoo tests' local rand context (Pieter Wuille)
37e864eb9 Add FastRandomContext::rand256() and ::randbytes() (Pieter Wuille)

Tree-SHA512: d09705a3ec718ae792f7d66a75401903ba7b9c9d3fc36669d6e3b9242f0194738106be26baefc8a8e3fa6df7c9a35978c71c0c430278a028b331df23a3ea3070
2019-07-08 10:24:27 -05:00
Pieter Wuille
5edec30db0
Merge #10523: Perform member initialization in initialization lists where possible
656dbd871 Perform member initialization in initialization lists where possible (practicalswift)

Tree-SHA512: 048380f4da23ab1eaaf471801a01dbd76f2235afb686c1489b30a6bac109195134afc83414b8378d3482a9042d537ec62d30136dadb9347cf06b07fb5c693208
2019-07-08 10:24:26 -05:00
MarcoFalke
648848b797
Merge #10331: Share config between util and functional tests
8ad5bde Merge bctest.py into bitcoin-util-test.py (John Newbery)
95836c5 Use shared config file for functional and util tests (John Newbery)
89fcd35 Use an .ini config file for environment vars in bitcoin-util-test.py (John Newbery)
e9265df Change help_text in bitcoin-util-test.py to a docstring. (John Newbery)
ce58e93 Change bitcoin-util-test.py to use Python3 (John Newbery)

Tree-SHA512: 66dab0b4a8546aee0dfaef134a165f1447aff4c0ec335754bbc7d9e55909721c62f09cdbf4b22d02ac1fcd5a9b66780f91e1cc4d8687fae7288cc9072a23a78f
2019-07-08 10:24:26 -05:00
Wladimir J. van der Laan
42985c31bb
Merge #10463: Names: BIP9 vs versionbits
b463bc9 scripted-diff: s/BIP9DeploymentInfo/VBDeploymentInfo/ (Jorge Timón)
29c0719 Rename -bip9params to -vbparams (shaolinfry)

Tree-SHA512: a8a2bf6e24a4a7fc82f784c78c0cd92472e9ba55ce3fb22dafef3eccdcfccb2da5a6078fbeec1a8a4b6ab1f1b226976c5aba964dd5e3d029a21b109a7c044374
2019-07-08 10:23:19 -05:00
MarcoFalke
37659cd522
Merge #10431: Prevent shadowing the global dustRelayFee
43c5877 Prevent shadowing the global dustRelayFee. (Pavel Janík)

Tree-SHA512: 9765931a7753c484990003396afd0bb65a53f42d1cad9502017720618ce90b3c5ae68591db01e3524adecdbe6925a5eeeebf04012ba644ef3b65073af207ae5d
2019-07-08 10:23:19 -05:00
Alexander Block
85fcf32c97 Remove support for InstantSend locked gobject collaterals (#3019) 2019-07-08 18:17:30 +03:00
UdjinM6
53efd1f9e1
Merge pull request #3007 from PastaPastaPasta/backports-0.15-pr17
Backports 0.15 pr17
2019-07-08 18:16:05 +03:00
Alexander Block
72a1b6f59d
Use sync_with_ping to ensure that we don't start generating blocks too early 2019-07-08 07:42:27 -05:00
PastaPastaPasta
bdec34c949 remove DS mixes once they have been included in a chainlocked block (#3015)
* remove DS mixes once they have been included in a chainlocked block

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

* Use multiple if checks instead of one line conditional

Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-07 01:07:03 +03:00
UdjinM6
54ab2048ca
Merge pull request #3016 from UdjinM6/mergemaster01402
Merge master 0.14.0.2 back into develop
2019-07-07 01:06:35 +03:00
UdjinM6
3fe858e53f wait for node1 in fundrawtransaction(-hd).py tests 2019-07-05 22:21:00 -05:00
UdjinM6
6c0b5053bc
Fix start_/stop_node-s 2019-07-05 12:15:32 -05:00
UdjinM6
493f4336a3
fix tx rate 2019-07-05 12:13:15 -05:00
Pasta
de33753f06
Revert "Merge #10376: [tests] fix disconnect_ban intermittency"
This reverts commit b6b486c274.
2019-07-05 12:11:56 -05:00
Pasta
b791821c80
start_node -> self.start_node
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-04 23:46:15 -05:00
Pasta
3c96b25262
stop_node(s) -> self.stop_node(s) in dash specific tests
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-04 22:59:48 -05:00
UdjinM6
666b459198 Merge branch 'master' into mergemaster01402
Conflicts:
.travis.yml
configure.ac
doc/Doxyfile.in
doc/man/dash-cli.1
doc/man/dash-qt.1
doc/man/dash-tx.1
doc/man/dashd.1
src/clientversion.h
src/net_processing.cpp
2019-07-04 17:14:59 +03:00
Pasta
46dd6a3575 make mainnetDefaultPort static
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-03 17:07:07 -05:00
Pasta
a685391c77 fix AvailableCoins Calls
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-03 17:04:07 -05:00
Alexander Block
28a219ff0a
[v0.14.0.x] Update release notes for 0.14.0.2 (#3012)
* Update release notes for 0.14.0.2

* Review suggestions

Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>

* Add commits to release-notes.md
2019-07-03 15:56:09 +02:00
UdjinM6
f7c97186d0
Merge pull request #3011 from codablock/pr_v14_backports
[v0.14.0.x] Backport pending PRs
2019-07-03 14:11:17 +03:00
Alexander Block
d2ff63e8d3 Use std::unique_ptr for mnList in CSimplifiedMNList (#3014)
This allows much faster sorting as it avoids copying/swapping
expensive objects.
2019-07-03 08:49:42 +02:00
Alexander Block
ee9adb9482 Use std::unique_ptr for mnList in CSimplifiedMNList (#3014)
This allows much faster sorting as it avoids copying/swapping
expensive objects.
2019-07-02 23:46:03 +03:00
UdjinM6
b401a3baa9
Fix compilation on Ubuntu 16.04 (#3013) 2019-07-02 23:45:33 +03:00
Alexander Block
c6eededcab 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-07-02 23:44:29 +03:00
Pasta
1bbe050fe0
adjust check || -> &&
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-02 10:38:11 -05:00
Pasta
9e2235a4bc
add initializing to regtest
Signed-off-by: Pasta <pasta@dashboost.org>
2019-07-02 10:34:23 -05:00
Alexander Block
321bbf5af4 Fix excessive memory use when flushing chainstate and EvoDB (#3008)
* Specialize Serialize(CSizeComputer&) for BLS objects

Speeds up size computation for BLS objects.

* Track memory usage in CDBTransaction and CEvoDB

* Take memory used by CEvoDB/CDBTransaction into account when flushing

* Implement specialized SerReadWrite for immer maps

This allows to use READWRITE and fixes compilation errors with CSizeComputer

* Log EvoDB memory usage independently

Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>
2019-07-02 16:25:28 +02:00
Pasta
4968710a2f
Resolve AvailableCoins method call 2019-07-02 00:38:07 -05:00
Alexander Block
0410259dd5 Fix 2 common Travis failures which happen when Travis has network issues (#3003)
* Retry downloading of depends sources 3 times

* Manually invoke apt-get update and install instead of using addon

This allows us to use travis_retry on these operations.

* Add exception for depends/Makefile in .gitignore

* Remove --retry from curl call

This avoids future confusion as we don't rely on curl anymore to properly
retry downloads. curls does only retry on transient errors, while Travis
might cause all kinds of errors which circumvent the retry logic of curl.
2019-07-02 06:41:10 +02:00
Alexander Block
8d763c1440 Only load signingActiveQuorumCount + 1 quorums into cache (#3002)
No need to load 25 quorums when we're scanning for the larger quorums which
only have 4 active quorums. This avoids loading thousands of masternode
lists unnecessarily.
2019-07-02 06:40:47 +02:00
UdjinM6
2dc1b06ec7 Remove skipped denom from the list on tx commit (#2997)
* Remove skipped denom from the list on tx commit

Regardless of the tx type (PS or not).

* Update src/privatesend/privatesend-client.cpp

Co-Authored-By: Alexander Block <ablock84@gmail.com>
2019-07-02 06:40:28 +02:00
Alexander Block
b9aadc071b Fix excessive memory use when flushing chainstate and EvoDB (#3008)
* Specialize Serialize(CSizeComputer&) for BLS objects

Speeds up size computation for BLS objects.

* Track memory usage in CDBTransaction and CEvoDB

* Take memory used by CEvoDB/CDBTransaction into account when flushing

* Implement specialized SerReadWrite for immer maps

This allows to use READWRITE and fixes compilation errors with CSizeComputer

* Log EvoDB memory usage independently

Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>
2019-07-02 07:16:27 +03:00