Commit Graph

10945 Commits

Author SHA1 Message Date
Alexander Block
d653ace99e Update CbTx in TestChainSetup
We need to update the CbTx's merkle root for the masternode list here as
tests might add transactions into a block which cause the list to change.
2018-09-05 18:40:53 +02:00
Alexander Block
9674be8f96 Refactor TestChain100Setup to allow different test chain setups
Allows testing of features which depend on BIP9 deployments
2018-09-05 18:40:53 +02:00
UdjinM6
ad31dbbd73
Add more variance to coin selection in PS mixing (#2261)
* Lean towards "from high to low" branch but still mix via "from low to high" one someties

* Try to mix non-duplicate txids only

* Lean towards edges but still mix starting from the middle sometimes

If failed when started from the middle try mixing from the edges right away.

Note: liqudity providers always start from 0

* map -> set

* Refactor nRoundStart calculations
2018-09-05 19:35:33 +03:00
Alexander Block
cb37c39725 Bump PROTOCOL_VERSION to 70211, bump MIN_* protocols to 70210 (#2256)
Bump PROTOCOL_VERSION to 70211, bump MIN_* protocols to 70210
2018-09-05 19:34:56 +03:00
Alexander Block
d8247dfffa Use refactored payment logic when spork15 is active
Related to https://github.com/dashpay/dash/pull/2237
2018-09-05 14:06:50 +02:00
Alexander Block
60002b7ddb Payout and enforce operator reward payments 2018-09-05 14:06:50 +02:00
Alexander Block
2c481f0f86 Implement deterministic version of CMasternodePayments::IsScheduled
Needed for privatesend when choosing masternodes
2018-09-05 14:06:50 +02:00
Alexander Block
44706dc88a Implement projection of MN reward winners in "masternode winners" 2018-09-05 14:06:50 +02:00
Alexander Block
e6b699bc26 Enforce MN and superblock payments in same block
1. Enforce payment to masternodes in IsBlockPayeeValid even if superblocks
   are triggered. This new rule only gets activated when spork15 activates.

2. Always enforce masternode payments when spork15 is activated and ignore
   spork8 in that case. spork8 can be removed after spork15 activation
   and hardening of the spork15 height into consensus params.
2018-09-05 14:06:31 +02:00
Alexander Block
19fbf8ab76 Move cs_main lock from CMasternode::UpdateLastPaid to CMasternodeMan
Ensure correct locking order to fix deadlock.
2018-09-05 14:06:31 +02:00
Alexander Block
dc7292afa9 Implement new MN payments logic and add compatibility code 2018-09-05 14:06:31 +02:00
PastaPastaPasta
fded838c9d RPC folder: Cleaned up brackets on if, while, for, BOOST_FOREACH. Some whitespace fixes (#2257)
* Cleaned up brackets on if, while, for, BOOST_FOREACH. Some whitespace fixes

* gov, mn and mining cleanup

* Revert "Cleaned up brackets on if, while, for, BOOST_FOREACH. Some whitespace fixes"

This reverts commit 4a2a1b0645c5195025d0c7e6dad2e01a93efbfd6.

* Revert "gov, mn and mining cleanup"

This reverts commit 7cb91aabc67df0ab60db4ee84e3aaaf6cf6b7881.

* cleanup some dash specific

* "if(" -> "if ("     "for(" -> "for (" + corrected some else blocks
2018-09-05 15:04:24 +03:00
UdjinM6
8c9cb29092
Revert 2075 (#2259)
* Revert "Require all participants to submit equal number of inputs (#2075)"

This reverts commit 7ac4b972ab.

* Backward compatibility for nInputCount
2018-09-05 14:19:03 +03:00
UdjinM6
b164bcc7a5
Split PS into Manager and Session and allow running multiple mixing sessions in parallel (client side) (#2203)
* Split PS into Manager and Session

* Adjust log messages accordingly

* add -privatesendsessions cmd-line option

* address review comments

* bump MAX_OUTBOUND_MASTERNODE_CONNECTIONS to 30

+10 for parallel mixing

* protect vecSessions

* constructors

* Rewrite CMasternodeMan::ProcessMasternodeConnections() to use CPrivateSendClientManager::GetMixingMasternodesInfo().

This should solve potential deadlock cs_vecqueue vs cs_vNodes.

* Drop no longer used IsMixingMasternode()

* lock cs_wallet when mixing uses balance related functions
2018-09-04 13:54:59 +03:00
Alexander Block
d4530eb7d5 Put all masternodes in MASTERNODE_ENABLED state when spork15 is active 2018-09-03 13:31:40 +02:00
Alexander Block
31b4f83543 Forbid starting of legacy masternodes with non matching ProTx collateral values
If the masternode is already upgraded to ProTx, it's address and key
must match with the started masternode.
2018-09-03 13:31:40 +02:00
Alexander Block
2d8f1244cf Implement 'masternode info <proTxHash>' RPC 2018-09-03 13:31:40 +02:00
Alexander Block
e2a9dbbce1 Better "masternode status" for deterministic masternodes 2018-09-03 13:31:40 +02:00
Alexander Block
50ac6fb3aa Throw exception when trying to invoke start-xxx RPC in deterministic mode 2018-09-03 13:31:40 +02:00
Alexander Block
5050a92053 Add compatibility code for FindRandomNotInVec and GetMasternodeScores 2018-09-03 13:31:40 +02:00
Alexander Block
cc73422f88 Add methods to add/remove (non-)deterministic MNs 2018-09-03 13:31:40 +02:00
Alexander Block
7d14566bcd Add compatibility code to CMasternodeMan so that old code is still compatible
...when deterministic MNs are activated.
2018-09-03 13:31:40 +02:00
Alexander Block
27e8b48a60 Stop executing legacy MN list code when spork 15 is activated 2018-09-03 13:31:40 +02:00
Alexander Block
6764dafece Skip initial masternode list sync if spork 15 is active 2018-09-03 13:31:40 +02:00
Alexander Block
d90b139967 Implement CActiveDeterministicMasternodeManager 2018-09-03 13:31:40 +02:00
UdjinM6
a5e65aa373
Erase mnListCache entry on UndoBlock (#2254) 2018-09-03 13:18:20 +03:00
Alexander Block
88e7888de9 Try using cache in GetListForBlock before reading from disk (#2253)
* Try using cache in GetListForBlock before reading from disk

* Use std::list for vecDiff
2018-09-03 13:17:41 +03:00
Alexander Block
fced9a4b86 Ban peers that send us MNLISTDIFF messages
These are only meant to be sent to SPV clients
2018-09-03 10:46:52 +02:00
Alexander Block
d3ac86206c Implement GETMNLISTDIFF and MNLISTDIFF P2P messages
Also add "protx diff" RPC
2018-09-03 10:46:52 +02:00
Alexander Block
bcc0719578 Calculate and enforce DIP4 masternodes merkle root in CbTx
Also add "coinbase_payload" field to block templates
2018-09-03 10:46:51 +02:00
Alexander Block
0a086898f5 Implement and enforce CbTx with correct block height and deprecate BIP34 2018-09-03 10:46:40 +02:00
Alexander Block
58aa813649 Implement "protx revoke" RPC 2018-08-31 17:06:33 +02:00
Alexander Block
9653af2f30 Classes, validation and update logic for CProUpRevTX 2018-08-31 17:06:33 +02:00
Alexander Block
185416b970 Implement "protx update_registrar" RPC 2018-08-31 17:06:24 +02:00
Alexander Block
1c68d11077 Classes, validation and update logic for CProUpRegTX 2018-08-31 17:06:24 +02:00
Alexander Block
32951f795c Implement "protx update_service" RPC 2018-08-31 17:06:24 +02:00
Alexander Block
8aca3b0404 Also check duplicate addresses for CProUpServTX in CTxMemPool 2018-08-31 17:06:24 +02:00
Alexander Block
923fd67395 Implement CProUpServTx logic in CDeterministicMNManager 2018-08-31 17:06:24 +02:00
Alexander Block
6ec0d7aea5 Classes and basic validation of ProUpServTx 2018-08-31 17:06:24 +02:00
Alexander Block
255403e927 Include proTx data in json formatted transactions 2018-08-31 15:33:09 +02:00
Alexander Block
25545fc1e7 Split keyIDMasternode into keyIDOwner/keyIDOperator/keyIDVoting (#2248)
* Split keyIDMasternode into keyIDOwner/keyIDOperator/keyIDVoting

keyIDOwner is the key used for things which should stay in control of the
collateral owner, like proposal voting.

keyIDOperator is the key used for operational things, like signing network
messages, signing trigger/watchdog objects and trigger votes.

keyIDVoting is the key used for proposal voting

Legacy masternodes will always have the same key for all 3 to keep
compatibility.

Using different keys is only allowed after spork15 activation.

* Forbid reusing collateral keys for operator/owner keys and vice versa

* Bump SERIALIZATION_VERSION_STRING in CMasternodeMan
2018-08-31 16:31:59 +03:00
Alexander Block
5295c78cca Fix typo in "penalty" (#2247) 2018-08-31 12:33:37 +03:00
Alexander Block
c566ce75d9 Update copyright in specialtx.h/cpp 2018-08-30 19:47:48 +02:00
Alexander Block
5e3abeca24 Implement "protx list" RPC 2018-08-30 19:47:48 +02:00
Alexander Block
2c172873aa Don't allow non-ProTx masternode collaterals after DIP3 activation 2018-08-30 19:47:48 +02:00
Alexander Block
5461e92bf4 Add spork to control deterministic MN lists activation 2018-08-30 19:47:48 +02:00
Alexander Block
9e8a867149 Implementation of deterministic MNs list 2018-08-30 19:47:48 +02:00
Alexander Block
76fd308947 Automatically lock ProTx collaterals when TX is added/loaded to wallet
Avoid accidential spending of ProTx collaterals.
2018-08-30 19:47:38 +02:00
Alexander Block
cdd723ede6 Conflict handling for ProRegTx in mempool 2018-08-30 19:47:38 +02:00
Alexander Block
c772423468 Implement "protx register" RPC 2018-08-30 19:47:38 +02:00
Alexander Block
958b84ace3 Implementation of ProRegTx with basic validation (no processing) 2018-08-30 19:47:30 +02:00
Alexander Block
c9a72e8880 Introduce CEvoDB for all evo related things, e.g. DIP3
Also add transaction handling to ConnectTip and DisconnectTip and a few
other places where blocks are processed.
2018-08-30 19:47:22 +02:00
Alexander Block
4531f6b896 Implement CDBTransaction and CScopedDBTransaction
Allows easier commit/rollback handling, especially useful when AcceptBlock
fails and things need to be reverted.
2018-08-29 15:49:31 +02:00
Alexander Block
e002c50b04 Add "immer" functional/immutable containers library (#2244)
Add "immer" functional/immutable containers library
2018-08-29 16:31:21 +03:00
Alexander Block
e225cebcdb Use previous block for CheckSpecialTx (#2243)
We actually can't use the current block as that one might not be fully
processed/built yet.
2018-08-29 16:26:16 +03:00
gladcow
1c25658044 Refactor masternode and gobject RPCs to support help command subCommand syntax (#2240)
* Support help for masternode rpc call subcommands

* Support help for gobject rpc call subcommands

* squash ifs for conditions to show help

* remove code duplication for masternode list and masternodelist help calls
2018-08-29 14:36:35 +03:00
UdjinM6
40eee1775f
Fix sync in regtest (again) (#2241)
Should only call SwitchToNextAsset() while being in specific state and not on every tick
2018-08-29 13:02:54 +03:00
Alexander Block
fb4d301a20 Add extraPayloadSize/extraPayload fields to RPC help 2018-08-29 11:45:53 +02:00
Alexander Block
8af7f62232 Account for extraPayload when calculating fees in FundTransaction 2018-08-29 11:36:14 +02:00
Alexander Block
61bbe54ab3 Add Get-/SetTxPayload helpers 2018-08-29 11:36:14 +02:00
Alexander Block
cebf71bbc3 Stubs for special TX validation and processing 2018-08-29 11:36:14 +02:00
Alexander Block
d6c5a72e2f Basic validation of version 3 TXs in CheckTransaction 2018-08-29 11:36:14 +02:00
Alexander Block
a3c4ee3fda DIP2 changes to CTransaction and CMutableTransaction 2018-08-29 11:36:14 +02:00
Alexander Block
d20100ecd4 DIP0003 deployment 2018-08-29 11:36:14 +02:00
Alexander Block
b6896387ae Move DIP1 transaction size checks out of ContextualCheckBlock and use ContextualCheckTransaction instead (#2238)
* Pass consensus params to ContextualCheckTransaction

As we do with ContextualCheckBlock

* Use ContextualCheckTransaction in ContextualCheckBlock instead of duplicating the check

* Fix pindexPrev parameter signature in ContextualCheckTransaction
2018-08-28 14:43:58 +03:00
Alexander Block
e415fd049a Revert CMasternodePayments::IsTransactionValid to the logic before the recent refactorings (#2237)
partially reverts #2216
2018-08-27 15:48:45 +03:00
Nathan Marley
73c2ddde7a extract sporkmanager from sporkmessage (#2234)
The SporkMessage is a lower-level construct which shouldn't be aware of
SporkManager. This commit moves the `sporkManager.IsSporkActive()` calls
outside the SporkMessage functions. This follows the dependency injection
pattern and makes it easier to test SporkMessage as well.
2018-08-22 17:46:27 +03:00
Alexander Block
8da88ecf68 Don't crash when formatting in logging throws exceptions (#2231)
* Don't crash when formatting in logging throws exceptions

* Preserve exception like output
2018-08-21 18:34:26 +03:00
gladcow
b92bd8997a Fix mninfo search by payee (#2233) 2018-08-21 17:08:42 +03:00
Nathan Marley
2997d6d268 add compressed option to masternode genkey (#2232)
* add compressed option to `masternode genkey`

* use ParseBoolV method

* adjust help message for masternode genkey
2018-08-21 17:08:11 +03:00
PastaPastaPasta
98ed90cbb4 adds rpc calls for setprivatesendrounds and setprivatesendamount (#2230)
* adds rpc calls for `setprivatesendrounds` and `setprivatesendamount`

* tabs -> spaces

* @gladcow change request

* Whops tab -> spaces

* @Udjin changes, not the CAmount -> int

* int stuff

* Throw error when rounds / amount isn't within range
2018-08-21 17:07:54 +03:00
gladcow
2e06f8133f fix missed format parameter (#2229) 2018-08-21 17:07:32 +03:00
Alexander Block
50eb98d901 Prepare for DIP3 operator reward payments and switch to array in getblocktemplate (#2216)
* Prepare for DIP3 operator reward payments and switch to array in getblocktemplate

This commit allows to later split MN rewards into multiple recipients, e.g.
the owner reward and operator reward. It also updates the getblocktemplate
output to return an array of MN payments instead of a single entry.

This should allow MN miners and pool operators to prepare themself for the
upcoming changes in regard to operator rewards.

* txoutsMasternode -> voutMasternode

* More renaming

* Consider all masternode payments when looking for a known masternode
2018-08-14 12:58:38 +03:00
Alexander Block
c09f57bd78 Backport move to Ubuntu Bionic and GCC7 in Gitian builds (#2225)
* Add stdin, stdout, stderr to ignored export list

* Merge #13171: Change gitian-descriptors to use bionic instead

c1afe3232fa10e290fb355cf37ea4c7bc1084065 Change gitian-descriptors to use bionic instead (Chun Kuan Lee)

Pull request description:

  I have tested this with Ubuntu Bionic host with lxc 3.0.0, the gitian-build for Windows and MacOSX work fine, but there is an issue about it for Linux. Failed at check-symbol:
  ```
  test/test_bitcoin: symbol __divmoddi4 from unsupported version GCC_7.0.0
  test/test_bitcoin: symbol log2f from unsupported version GLIBC_2.27
  qt/bitcoin-qt: symbol __divmoddi4 from unsupported version GCC_7.0.0
  qt/bitcoin-qt: symbol log2f from unsupported version GLIBC_2.27
  ```
  I think this should be fixed in `./configure --enable-glibc-back-compat`

  Should not be merged before #13177 devrandom/gitian-builder#178

  Close #12511

Tree-SHA512: 257d75d5b6864e105279f7a7b992fbbd7903cdbe3300b66dacec0a783d267707d9dbbfe0e64a36983ca1eca50a2a5e1cdb222b6d3745ccc3e5fc5636c88b581f

* Use IN6ADDR_ANY_INIT instead of in6addr_any

This is the same fix as fc6a9f2ab1
Couldn't backport the original commit as we are missing some refactorings.
2018-08-13 23:21:42 +03:00
gladcow
1767e3457e Save/load spork cache (#2206)
* CSporkManager class serialization

* Read/write sporks.dat file

* Move mapSporks into CSporkManager and serialize it

* fix GetSporkByHash

* spork tests

* add missed cs lock

* clear mapSporksByHash in CSporkManager::Clear

* use spork active rpc call to hide spork inner logic

* set small pause between rpc calls in cycles
2018-08-13 23:21:21 +03:00
Alexander Block
4d3518fe04 Refactor MN payee logic in preparation for DIP3 (#2215)
* Refactor block payee filling/validation

1. Move out old budget validation into it's own function (IsOldBudgetBlockValueValid)
2. Refactor IsBlockValueValid to bail out early instead of using deep
   nested if/else blocks. IMHO, I feel that this makes the code much easier
   to read and less error prone.
3. Refactor/rename CreateSuperblock and CMasternodePayments::FillBlockPayee
   to be getters without actually modifying the coinbase TX. The coinbase
   is now only modified from the global FillBlockPayments function. Makes
   later changes in DIP3 easier (allowing superblock and MN rewards in same block)

* Use __func__ for logging in block payee code

* Fix code style nit
2018-08-12 18:27:09 +03:00
Alexander Block
d946f21bd9 Masternode related refactorings in preparation of DIP3 (#2212)
* Split CActiveMasternode into CActiveMasternodeInfo and CLegacyActiveMasternodeManager

* Use CKeyID instead of CPubKey whenever possible in masternode code

* Rename activeMasternode to activeMasternodeInfo and make it a struct

* Rename pubKeyIDXXX to keyIDXXX

* Bump SERIALIZATION_VERSION_STRING

* Fix build error after rebase

* Fix compilation warning/error with clang
2018-08-11 22:55:56 +03:00
Alexander Block
633879cd28 Only use version 1 and 2 transactions for sighash_tests (#2219)
Also regenerated sighash.json with the help of PRINT_SIGHASH_JSON
2018-08-11 01:36:36 +03:00
Alexander Block
2d4e18537c Some useful commits from the DIP3 PR in regard to integration tests (#2218)
* Allow changing budget parameters for regtest

* Lift some limitations for local addresses for masternodes in regtest

Needed to make masternodes works in regtest mode

* Add "masternode check" RPC to force invocation of CheckAndRemove

Useful in integration tests where MN lists must be predictable
2018-08-11 01:36:17 +03:00
Alexander Block
a959f60aa7 De-duplicate "gobject vote-alias" and "gobject "vote-many" code (#2217)
Use same code for both vote modes
2018-08-11 01:35:52 +03:00
Alexander Block
075ca0903f Protect CSporkManager with critical section (#2213) 2018-08-11 01:34:28 +03:00
Alexander Block
106bab1ae1 Add new ParseXXX methods to easily parse UniValue values (#2211) 2018-08-11 01:33:56 +03:00
Alexander Block
566fa5ec3b Add support for "help command subCommand" (#2210) 2018-08-11 01:30:55 +03:00
UdjinM6
4cd969e3d2
Add previousbits field to getblocktemplate output (#2201)
* Add `previousbits` field to `getblocktemplate` output

* add comment to nPrevBits
2018-08-11 01:28:30 +03:00
UdjinM6
c4ee2c89ef
Fix mnsync in regtest (#2202) 2018-08-04 16:39:15 +03:00
strophy
d4d11476aa Fix typo and grammar in PS error message (#2199)
* Fix typo

* Grammar fix
2018-08-04 16:38:57 +03:00
UdjinM6
6bcd868de7
Fix lockedByInstantSend initialization (#2197) 2018-07-29 09:39:37 +03:00
gladcow
0a6f47323b Remove dummy confirmations in RPC API and GUI for InstantSend transactions (#2040)
* remove instandsenddepth option

* remove CInstantSend::GetConfirmations

* Explicit IXlocks processing in the code using GetDepthInMainChain

* remove dummy confirmations for IX locks

* remove unused constant

* Track IS status in TransactionStatus

* Highlight IS in tx list

* Customize confirmation icons for IS txes

* Fix issues:

- bring back removed comment;
- simplify 2 complex condition to ose `IsTrusted()` function only;
- rename `IsLockedIX` function to 'IsLockedByInstantSend`;

* Revert condition with IsTrusted()

* code style fix

* remove dummy confirmations from instantsend.md

* fix instantsend.md
2018-07-28 19:39:37 +03:00
UdjinM6
a83ab55010
Fix wallet lock check in DoAutomaticDenominating (#2196) 2018-07-28 16:51:45 +03:00
UdjinM6
96435288fa
Move block template specific stuff from CBlock to CBlockTemplate (#2195) 2018-07-28 16:51:29 +03:00
UdjinM6
3d002c9463
Fix active masternode task schedule (#2193) 2018-07-28 16:51:13 +03:00
UdjinM6
ac30196bc5
Show some info about the wallet dumped via dumpwallet (#2191)
Also show a warning that the file must be kept secure.
2018-07-28 16:50:58 +03:00
UdjinM6
30fa8bc33c
Make sure pwalletMain is not null whenever it's used in PS client (#2190)
* Make sure pwalletMain is not null whenever it's used in PS client

* partially revert
2018-07-28 16:50:41 +03:00
UdjinM6
65b9045269
Add helpers GetSentinelString() and GetDaemonString() to CMasternodePing (#2192) 2018-07-25 18:09:48 +03:00
UdjinM6
a5643f899d
Switch RequestGovernanceObjectVotes from pointers to hashes (#2189)
* No need for pointers to gobjects, can simply use hashes in RequestGovernanceObjectVotes

* Drop `swap` and `=` in GovernanceObject

Were used for shuffling, no longer needed
2018-07-25 18:09:30 +03:00
gladcow
ace980834f Extend Bloom Filter support to InstantSend related messages (#2184)
* use bloom filters for IX lock votes

* code style fixes
2018-07-20 16:32:41 +03:00
PaulieD
d7e2103411 Fixes inaccurate round count in CoinControlDialog (#2137)
* fixes #2068

* Revert prior and update in correct location
2018-07-16 15:48:02 +03:00
UdjinM6
1681d6366f
Replace Dash-specific threads with Dash-specific scheduled tasks (#2043)
* Replace Dash-specific threads with scheduled tasks

* Fix rare crash when trying to shutdown wallet during mixing

Should stop PS and release all keys _before_ wallet is destroyed.

* fix nowallet

* update doc
2018-07-16 15:47:37 +03:00
Nathan Marley
dac090964f remove dashpay.io dns seed entry (#2181) 2018-07-13 13:00:55 +03:00
Alexander Block
f3e380659a Move to in-docker CI builds and add Jenkins support (#2178)
* GCC-7 and glibc-2.27 compat code

* Statically link libstdc++ for GCC based builds

Makes sure binaries which are built on a newer build host still work
on older distros.

* Use python3 when installing MacOS native tools

* Move actual build logic out of Travis and upgrade to gcc-7

Travis will now simply call a few scripts which do the actual work.
These scripts will first create a "builder image" which contains the
necessary environment for the actual build. Then scripts are called
inside this builder image to do the build.

This should make us more independant from Travis and also allows us
to do local CI testing.

The build matrix is also moved out of .travis.yml and instead moved
into ci/matrix.sh. This script is sourced with only "BUILD_TARGET" being
set so that it internally can figure out which other environment
variables need to be set.

This commit also upgrades the used GCC version to 7. This is due to the
use of ubuntu:bionic as base image for the builder image.

* Add Jenkinsfiles for regular CI and nightly gitian builds

* Automatically download OSX SDK in gitian-build.sh

* Remove bogus "export MAKEJOBS=-j5"

* Forward cache/src dirs into builder container

Fixes caching issues on Travis.

* fix

* Fail build immediately when building depends took too long
2018-07-12 16:28:59 +03:00
Alexander Block
23dde9f12b Remove a few annoying debug prints from CMasternodeMan (#2179)
These are occurring every second and cause more noise than actual
information.
2018-07-12 12:17:19 +03:00
Nathan Marley
e23339d6f0 use nullptr in Dash-specific code (#2166)
This is recommended in modern C++ code as nullptr is more type-safe and can't
be converted to an integer, unlike NULL.
2018-07-12 12:08:43 +03:00
Nathan Marley
42c193df08 replace map count/insert w/emplace in instantx.cpp (#2165)
* replace map count/insert w/emplace in instantx.cpp

This feels like an optimization, something about:

```
if map.count(key)
     return false
else
     insert(pair)
     return true
```

... just feels icky. Plus, `vote.GetMasternodeOutpoint()` is only called
once. The previous version might be slightly more readable, however.

* use std::pair template constructor shortcut
2018-07-12 12:08:22 +03:00
Nathan Marley
fd70a1eb92 iterator cleanup in several places (#2164)
* iterator cleanup in Dash-specific code

* const

* *Pair/pair

* it++ -> ++it
2018-07-12 12:07:51 +03:00
strophy
df1be90ce1 Update links to obsolete documentation (#2162)
* Update links to obsolete documentation

* Change link text
2018-07-12 12:07:17 +03:00
PaulieD
0e689341d2 Implement Governance ZMQ notification messages (#2160)
* fix whitespace

* added zmq stuff for governance objects and votes
it seems that zmq is currently not in a working state, need to figure that out.

Need to:
plug in the new methods added
possibly plug in the old methods, as it doesn't look like they are.

* formatting fix. Will probably need to revert for this PR

* continue linking new zmq messages in

* added comment, might need to revert

* fixes error of it not knowing about the classes

* Actually link in, all new govobjects and govvotes should be broadcast over zmq now.

* fix compile error, forgot to change params when copying

* fix compile error

* add imports to the header files in zmqconfig.h

* fixing linking(i think) error

* Revert "added comment, might need to revert"

This reverts commit 2918ea40fe.

* Revert "formatting fix. Will probably need to revert for this PR"

This reverts commit ca10558866.

* fix tabs etc

* EOL added

* optimization of hash.begin() @nmarley thoughts?

* remove formatting changes

* iterator i -> it and removal of notifier

* typo in df879f57

* use auto for the iterators

* introduce hash prefix

* implement changes in zmq_sub.py, update the doc, and change argument name to fix typo

* deref iterators before calling methods

* continued e8a4c505

* missed one... continued e8a4c505

* killing some tabs

* fix spacing for setting or comparing iterators

* change order of new variables to match current setup

* re-add elif's I didn't realize got removed

* Revert "fix spacing for setting or comparing iterators"

This reverts commit 8ce2068148.

* Revert "use auto for the iterators"

This reverts commit cb16cf0760.

* Revert "missed one... continued e8a4c505"

This reverts commit 2087cf894f.

* Revert "continued e8a4c505"

This reverts commit a78c8ad2c9.

* Revert "deref iterators before calling methods"

This reverts commit e8a4c505d1.

* Revert "iterator i -> it and removal of notifier"

This reverts commit 29574248b1.

* Revert "fix whitespace"

This reverts commit 612be48d96.

* Revert "typo in df879f5"

* Revert "Optimization of hash.begin()"

* fixes problem with revert

* Udjin complain's a lot ;)

* help text, init.cpp

* add signals in validationinterface.cpp

* Change location of vote notification call.

* remain consistent

* remove unneeded include due to change of notification location

* implement raw notifications
2018-07-12 12:06:30 +03:00
PaulieD
448e92f4aa GetOutPointPrivateSendRounds readability (#2149)
* .gitnore visual studio bs

* Improves the readability of the `GetOutpointPrivateSendRounds` function by not having the second argument be needed, as the second arg should only not be 0 when it is recursively calling itself

* Revert ".gitnore visual studio bs"

This reverts commit 129b5242ad.

* changed back comment and fixed allignment

* refactor based on Udjin's suggestions.

* refactor based on Udjin's suggestions.

* fix alignment

* Revert "fix alignment"

This reverts commit c2cc2ae531.

* actually fix alignment

* actually fix alignment
2018-07-12 12:05:39 +03:00
gladcow
6da2837bdd InstantSend Integration tests (#2141)
* adjust `AddLocal` method only in regtest mode

* Create Masternodes in regtest

* sentinelping call for masternodes

* set externalip option for masternodes in regtest

* fix MNB relay during masternodes creation

* fix node_count naming

* instantsend doublespend

* decrease node restarts

* prevent spending masternode collaterals

* move long test to the test list start

* remove InstantSend spork sending

* remove spork-specific code

* fix checking double spend rejection
2018-07-12 12:04:42 +03:00
UdjinM6
3c89983db6
Remove DarksendConfig (#2132) 2018-07-12 12:03:26 +03:00
PaulieD
43091a3efd PrivateSend Enhancement: Up default round count to 4 and allow user to mix up to 16 rounds (#2128)
* Allows a user to mix up to 16 rounds

All codebase appears to accept up to 16 rounds, however this form was capped at 8; restricting users to 2-8 rounds. This commit allows a user to actually use up to 16 rounds in practice. This will greatly enhance the privacy of those very worried about their privacy, as well as possibly increasing liquidity and increasing the privacy of all users.

* Up the default for PS mixing to 4 rounds.
2018-07-12 12:02:51 +03:00
Nathan Marley
8ee9333bc2 remove boost dependency from Dash-specific code (#2072)
* replace boost casts in dash-specific code

Specifically for spork.cpp : this should be temporary until all spork
sigs are based on hash and not string serialization format, after which
I expect the old signatures (else branch) should go away altogether. But
I still think it's worth it to get pieces of the boost dependency
removed, and this is an easy win, and could be merged now or in a patch
release w/o issue.

* replace boost::shared_ptr w/std::shared_ptr
2018-07-12 12:02:20 +03:00
gladcow
2c0d4c9d77 Save/load InstantSend cache (#2051)
* CTxLockCandidate serialization

* COutPointLock serialization

* CInstantSend serialization

* Read/write instantsend.dat file

* Read\write InstantSend cache only if InstantSend is enabled
2018-07-12 12:01:48 +03:00
UdjinM6
a527845e4f
Bump to 0.12.4.0 pre-release (#2167) 2018-07-12 12:01:10 +03:00
UdjinM6
2ba0c77604
Add tests for special rules for slow blocks on devnet/testnet (#2176)
* Add tests for special rules for slow blocks on devnet/testnet

* add 20m and 3h
2018-07-09 12:42:11 +03:00
UdjinM6
b9a83d2ae6
Allow mining min diff for very slow (2h+) blocks (#2175) 2018-07-08 14:05:55 +03:00
UdjinM6
7b9919d182
Fix issues with selections on Masternode tab (#2170)
Preserve selection on "My Masternodes" sub-tab, disable selections on "All Masternodes" sub-tab.
2018-07-08 00:20:15 +03:00
UdjinM6
2474d9cb8c
Sync mn list and mnw list from 3 peers max (#2169)
Should solve issues with initial sync and reduce load/bandwidth in general.
2018-07-08 00:19:54 +03:00
Alexander Block
2c303cdb11 A few devnet related fixes (#2168)
* Remove testnet seeds from devnet

* Lift multiple ports restriction on devnet when considering new nodes

Allow to connect to multiple nodes behind the same IP

* Don't skip addresses with non-default port if it matches -port

If the user specified -port, he very likely intends to connect to nodes
with the same port.

* Don't pass false to CAddrMan constructor as it is already the default

* Make if statements easier to read
2018-07-08 00:19:33 +03:00
UdjinM6
050cabdf52
Adjust diff for slow testnet/devnet blocks a bit smoother (#2161)
* Adjust diff for slow testnet/devnet blocks a bit smoother

* bump to 000000000000000000000000000000000000000000000000003ff00000000000

* bump slow blocks to 10 minutes
2018-07-08 00:19:01 +03:00
PaulieD
c4698d5f3d Make PS Buttons not react to spacebar (#2154)
* Make the togglePrivateSend button not react to the spacebar or enter. #1766

* redo comment

* change `privateSendAuto` focus policy to remain consistent
2018-07-08 00:18:29 +03:00
UdjinM6
f833e2ed6c
Bump to 0.12.3.2 (#2173) 2018-07-08 00:17:36 +03:00
UdjinM6
cf0ef9e63c
Bump to 0.12.3.1 (#2158)
* update release notes

* Bump to 0.12.3.1

* update Doxyfile
2018-06-30 23:39:49 +03:00
UdjinM6
fda74b4a8c
Use correct protocol when serializing messages in reply to getdata (#2157)
Messages should be serialized according the protocol of the peer who asked us or otherwise peers running on other protocols won't be able to deserialize the message correctly.
2018-06-30 21:18:37 +03:00
Kamil Woźniak
4dbde218b9 Fix p2pkh tests asserts (#2153)
Even the results were as expected,
IsPayToPublicKeyHash() breaks at size checking step now, as was intended.
Also removes compile time array-bounds warning.
2018-06-29 01:23:25 +03:00
UdjinM6
26c891f67f
Fix block value/payee validation in lite mode (#2148) 2018-06-29 01:23:06 +03:00
UdjinM6
7ab5b4a28e
Update/optimize images (#2147)
* update optimize-pngs.py with new paths

* `python contrib/devtools/optimize-pngs.py`

Total reduction: 22025 bytes

* update share/pixmaps/*
2018-06-29 01:22:48 +03:00
UdjinM6
9af9d57b41
Release 0.12.3 (#2145)
CLIENT_VERSION_IS_RELEASE false->true
2018-06-24 21:21:56 +03:00
InhumanPerfection
0d5426343d Fix an edge case in PrepareDenominate (#2138)
* PrepareDenominate fix

* Fix conditions
2018-06-22 18:57:46 +03:00
UdjinM6
8e6364694f
Bump SERIALIZATION_VERSION_STRINGs (#2136)
This is needed to ensure masternode and governance cache cleanup on migration.
2018-06-19 18:48:16 +03:00
PaulieD
700b7ceb73 RPC: dumphdinfo should throw an error when wallet isn't HD (#2134)
* Throws an RPCError `RPC_WALLET_ERROR` when the command `dumphdinfo` is called and the wallet is not HD

* Refactor based on @Udjin's post
2018-06-19 08:52:32 +03:00
UdjinM6
6410705211
Fix 2 small issues in sporks module (#2133)
* Fix a crash when someone tries to update sporks without specifying `sporkkey`

Before:
Crashes with `Assertion failed: (fValid), function GetPubKey, file key.cpp, line 156.`

After:
Fails and prints rpc help for `spork`

* Silence logging in CSporkMessage::CheckSignature() a bit

CMessageSigner::VerifyMessage() failure is not really an error
if CHashSigner::VerifyHash() below passes with no issues.
No need to log this.
2018-06-19 02:40:55 +03:00
UdjinM6
6bf389afb8
Don't drop mnb-s for outdated MNs (#2131)
Instead just mark them as MASTERNODE_UPDATE_REQUIRED and proceed further.
2018-06-19 02:40:38 +03:00
UdjinM6
97b9b4fedc
Bump nMinimumChainWork, defaultAssumeValid and checkpoints (#2130) 2018-06-19 02:40:10 +03:00
UdjinM6
b7c326115e
Do not create mnb until sync is finished (#2122)
We don't relay mnb if sync is still in progress. Creating mnb without
relaying it only increases inconsistency and leads to user confusion.
Unifying conditions for creation and relaying fixes this.
2018-06-18 19:08:00 +03:00
UdjinM6
b98643c27d
Split sentinel expiration in CMasternode::Check() in two parts (timeout and version) (#2121)
The initial ping is sent with defaults which switch MNs to SENTINEL_PING_EXPIRED state
while they should really be in PRE_ENABLED state. The fix is to split this verification
in two parts - this way sentinel version is only checked after at least one ping is received
from the masternode itself and not from the cold wallet.
2018-06-18 19:07:34 +03:00
UdjinM6
5669fc880e
Fix typos and rpc help text (#2120)
* Fix typo in PS info dialog

Also adjust translations accordingly.

* Fix typo in PS low key warning

* Fix typo in sendrawtransaction help

* Fix sendtoaddress/sendmany help text

* Fix listreceivedby* help text

* Fix typo in listunspent help

* Fix spelling "recieves"->"receives"

Shame on me

* transactions->transaction

* receives->"incoming payments grouped"
2018-06-18 19:07:09 +03:00
UdjinM6
836e104710
Bump proto to 70210 (#2109) 2018-06-12 14:33:41 +03:00
UdjinM6
8d8fdb4339
sendrawtransaction no longer bypasses transaction policy limits by default (#2110)
* [rpc] sendrawtransaction no longer bypasses minRelayTxFee

The prioritisetransaction API can always be used if a transaction needs to be submitted that bypasses minRelayTxFee.

* Allow to bypass transaction policy limits in sendrawtransaction

Add new rpc param to sendrawtransaction to have an ability to tweak its behaviour.
Default is `false` i.e. "do not bypass".

* fix
2018-06-12 14:33:23 +03:00
UdjinM6
8e129877a6
Partially revert 1922 (#2108)
Turned out we actually need mixing collaterals charged as fees in our mempool for them to be relayed.
2018-06-11 13:14:41 +03:00
UdjinM6
8c2d16f5f3
Limit IS quorums by updated MNs only (#2107) 2018-06-11 13:14:24 +03:00
Semen Martynov
0a71c693e7 Remove explicit wallet lock in MasternodeList::StartAll() (#2106)
Possible fix #2104
2018-06-11 13:14:00 +03:00
UdjinM6
0de79d70b5
Do not create oversized transactions (bad-txns-oversize) (#2103) 2018-06-11 13:13:20 +03:00
UdjinM6
fcac40ab4e
RPC: fix wallet lock check in privatesend start (#2102) 2018-06-11 13:13:03 +03:00
UdjinM6
23ba94b370
Bump remaining min protocols (#2097)
* bump MIN_GOVERNANCE_PEER_PROTO_VERSION

* bump MIN_MASTERNODE_PAYMENT_PROTO_VERSION_2
2018-06-06 19:06:52 +03:00
UdjinM6
6c79c348ee
Drop "MAY, 2018" clause for proposal validation on mainnet (#2101) 2018-06-06 19:06:23 +03:00
UdjinM6
6079b860e3
Drop trigger objects when triggers are deleted or failed to be created (#2098)
* Mark an object for deletion when the corresponding trigger is deleted

* Mark objects for deletion if creation of corresponding triggers failed

* NULL -> nullptr

* Make sure pObj is not null
2018-06-06 18:56:33 +03:00
UdjinM6
9299a84b1f
Bump few consts (#2096)
* bump BLOCK_CHAIN_SIZE

* bump nMinBlocksToStore default
2018-06-06 10:59:25 +03:00
UdjinM6
dbbedc031c
Fix JoinExistingQueue bug (#2100)
10s denoms were ignored due to the value overflow
2018-06-06 10:59:09 +03:00
Alexander Block
cc593615e1 Bump copyright year to 2018 (#2087) 2018-05-30 15:28:44 +03:00
Nathan Marley
82805a6c69 swap out old logo for T&C logo in Qt GUI (#2081)
* Qt: rename light theme to light-retro

* add new light theme with new logo images

* revert changes to light.css

* Qt: rename light-hires theme to light-hires-retro

* copy, not move

* restore light-hires.css

* all links updated from light to light-retro

* revert rm trailing spaces in src/qt/guiutil.cpp

* all links updated from light-hires to light-hires-retro
2018-05-29 18:13:08 +03:00
UdjinM6
c60079b594
ThreadOpenMasternodeConnections should process only one mn at a time (#2080) 2018-05-26 21:03:49 +03:00
UdjinM6
7ac4b972ab
Require all participants to submit equal number of inputs (#2075)
Activates via SPORK_6_NEW_SIGS to avoid nInputCount malleability
2018-05-26 21:03:23 +03:00
UdjinM6
0260821f87
fix SelectCoinsByDenominations (#2074)
Should return all denoms, excluding some for privacy reason is the job for PrepareDenominate
2018-05-26 21:03:08 +03:00
UdjinM6
5d057cf664
Add string_cast benchmark (#2073)
* Add string_cast benchmark

* add NumberToString
2018-05-26 21:02:49 +03:00
UdjinM6
cf71f5767d
Fix potential DoS vector for masternode payments (#2071)
* Skip only already verified mn payments vote duplicates

* Update mn payment vote stats only if mn payment vote sig is ok
2018-05-26 21:02:23 +03:00
thephez
ef85d5144d Comment updates - InstantSend (#2062)
* [Comment] - Minor Instantx comment updates and additions

* [Comment] - Update to doxygen recognised format
 - Capitalisation changes

* [Comment] - Add some minor InstantSend comments
2018-05-13 23:58:01 +03:00
UdjinM6
febdc2116c
Fix nl locale alias (#2061) 2018-05-13 23:57:43 +03:00
UdjinM6
1264a55779
Fix spork signature check for new nodes after SPORK_6_NEW_SIGS is switched to ON (#2060)
Unlike for other messages we have to check for new format even with SPORK_6_NEW_SIGS inactive because SPORK_6_NEW_SIGS default is OFF it is not the first spork to sync (and even if it would, spork order can't be guaranteed anyway).
2018-05-13 23:57:32 +03:00
Nathan Marley
41680f4d94 small cleanup in a few places (#2058)
* move nStart closer to used and initialize it

* Quells warning displayed with `-Wmaybe-uninitialized` flag

* remove unused mnEntries vectors

* add devnet magic bytes to mininode.py

* remove unused governance-misc.h file

* remove old TODO comments

* replace map count/insert w/emplace in instantx.cpp

This feels like an optimization, something about:

```
if map.count(key)
     return false
else
     insert(pair)
     return true
```

... just feels icky. Plus, `vote.GetMasternodeOutpoint()` is only called
once. The previous version might be slightly more readable, however.

* Revert "replace map count/insert w/emplace in instantx.cpp"

This reverts commit d7f876e863.
2018-05-13 23:57:12 +03:00
UdjinM6
ff93dd6131
Check devnet genesis block (#2057)
* Fix off-by-one in BIPXX activation heights for devnet

* Fail on invalid devnet genesis block
2018-05-13 23:56:51 +03:00
Alexander Block
1dbf5a0f63 Fix transaction/block versions for devnet genesis blocks (#2056)
* Fix transaction/block versions for devnet genesis blocks

56ff71fcec mistakenly increased the coinbase transaction version instead
of the block version. This fixes it.

* Use v1 for coinbase transaction
2018-05-13 23:56:21 +03:00
UdjinM6
741b94875b
Translations201804 (#2012)
* fix doc

* fix string in masternode list

* make translate

* fix askpassphrasedialog.cpp

* ru

* add fr and sk

* 	add fi

* update fi

* update ru

* it, pl, zh_TW

Note: zh_TW has one issue: `Mismatch between 'Too many %f denominations, removing.' and '太多輸入金額,正在移除。'`

* add/update bg, de, fi, it, vi, zh_CN, zh_TW

* add nl

* update es

* add pt_BR (97.5%)
2018-04-30 01:10:20 +03:00
UdjinM6
6ab1fd7636
RPC: Add description for InstantSend-related fields of mempool entry (#2050) 2018-04-30 01:09:47 +03:00
Nathan Marley
8e24b087b4 replace boost iterators in dash-specific code (#2048) 2018-04-23 13:25:04 +03:00
UdjinM6
2583e1963c
Test: Add few valid/invalid proposals (internationalization) (#2044)
Co-authored-by: Alex Werner <Alex-Werner@users.noreply.github.com>
2018-04-23 13:24:15 +03:00
Nathan Marley
25eb6d7b33 clean up governance vote code (#2042)
* clean up governance vote code

* remove old comment on votemanager design

* use map::find for signal string lookup

* make mapStrVoteSignals const and static

* this should be read-only for lookups (const)
* this should be allocated only once (static)
2018-04-23 13:23:58 +03:00
Alexander Block
7719b7ec25 Update BIP147 deployment times, nMinimumChainWork and defaultAssumeValid (#2030)
* Update BIP147 deployment times

* Update nMinimumChainWork and defaultAssumeValid of mainnet
2018-04-20 13:54:49 +03:00
UdjinM6
b07503f013
Some cleanup (mostly trivial) (#2038)
* Drop CInstantSend::IsEnoughOrphanVotesForTxAndOutPoint

* small cleanup in rpc tests

* move some pieces from .h to .cpp

* fix few log outputs

* fix some comments

* some trivial fixes + readability
2018-04-20 13:53:23 +03:00
UdjinM6
a648d6efff
Drop delayed headers logic and fix duplicate initial headers sync by handling block inv correctly (#2032)
* Drop custom logic for delaying GETHEADERS

Reverts "Fix duplicate headers download in initial sync (#1589)" and all following fixes

This reverts commit 169afafd50.

* Fix duplicate initial headers sync
2018-04-20 13:53:05 +03:00
Nathan Marley
99085c5b68 swap devnet magic bytes around (#2028)
Prevents testnet and devnet messages from being confused and helps
differentiate which network messages should refer to.
2018-04-20 13:52:31 +03:00
UdjinM6
138441eb82
Add forkpoint to getchaintips (#2039) 2018-04-18 14:50:52 +03:00
Nathan Marley
f8e5c5d56e Simplify spork defaults by using a map (#2037) 2018-04-18 14:50:26 +03:00
Spencer Lievens
6dd8304a5c Remove duplication of "class CBlockIndex;" (#2036) 2018-04-18 14:50:08 +03:00
UdjinM6
4ea7903777
Dashify lib names (#2035) 2018-04-18 14:49:57 +03:00
UdjinM6
a37dbd6d2b
Fix netfulfilledman usage (#2033)
* drop CMasternodeSync::ClearFulfilledRequests()

* Cleanup netfulfilledman periodically

* Do not expose RemoveFulfilledRequest()
2018-04-18 14:49:25 +03:00
Alexander Block
f7b9aae273 Correctly update pindexBestHeader and pindexBestInvalid in InvalidateBlock (#2029)
Stale pindexBestHeader values cause invalid high-work chains to stay as
pindexBestHeader forever and causes initial syncing to fail.

Observed on testnet.
2018-04-15 08:10:25 +02:00
UdjinM6
880cbf43b7
Backport fPowAllowMinDifficultyBlocks rule to DarkGravityWave (#2027) 2018-04-11 18:17:29 +03:00
Alexander Block
8b4c419ed6 Revert "Merge #7542: Implement "feefilter" P2P message" (#2025)
This reverts commit 11ac70af9e.
2018-04-11 18:16:43 +03:00
UdjinM6
8b09e779b6
Bump testnet checkpoint and nMinimumChainWork/defaultAssumeValid params (#2026)
* bump testnet minchainwork/assumevalid

* add testnet checkpoint at block 100000

blockhash: 0000000003aa53e24b6e60ef97642e4193611f2bcb75ea1fa8105f0b5ffd5242
2018-04-11 14:07:37 +03:00
Nathan Marley
27dfed424b Bump default max block size from 750k to 2MB (#2023) 2018-04-11 14:06:44 +03:00
Nathan Marley
79183f6307 Add tests for GetBlockSubsidy algorithm (#2022)
* remove commented subsidy tests from main_tests

* add tests for GetBlockSubsidy

* fix copyright header in subsidy tests
2018-04-11 14:06:27 +03:00
gladcow
bc45a2f87a Backport compact blocks functionality from bitcoin (#1966)
* Merge #8068: Compact Blocks

48efec8 Fix some minor compact block issues that came up in review (Matt Corallo)
ccd06b9 Elaborate bucket size math (Pieter Wuille)
0d4cb48 Use vTxHashes to optimize InitData significantly (Matt Corallo)
8119026 Provide a flat list of txid/terators to txn in CTxMemPool (Matt Corallo)
678ee97 Add BIP 152 to implemented BIPs list (Matt Corallo)
56ba516 Add reconstruction debug logging (Matt Corallo)
2f34a2e Get our "best three" peers to announce blocks using cmpctblocks (Matt Corallo)
927f8ee Add ability to fetch CNode by NodeId (Matt Corallo)
d25cd3e Add receiver-side protocol implementation for CMPCTBLOCK stuff (Matt Corallo)
9c837d5 Add sender-side protocol implementation for CMPCTBLOCK stuff (Matt Corallo)
00c4078 Add protocol messages for short-ids blocks (Matt Corallo)
e3b2222 Add some blockencodings tests (Matt Corallo)
f4f8f14 Add TestMemPoolEntryHelper::FromTx version for CTransaction (Matt Corallo)
85ad31e Add partial-block block encodings API (Matt Corallo)
5249dac Add COMPACTSIZE wrapper similar to VARINT for serialization (Matt Corallo)
cbda71c Move context-required checks from CheckBlockHeader to Contextual... (Matt Corallo)
7c29ec9 If AcceptBlockHeader returns true, pindex will be set. (Matt Corallo)
96806c3 Stop trimming when mapTx is empty (Pieter Wuille)

* Merge #8408: Prevent fingerprinting, disk-DoS with compact blocks

1d06e49 Ignore CMPCTBLOCK messages for pruned blocks (Suhas Daftuar)
1de2a46 Ignore GETBLOCKTXN requests for unknown blocks (Suhas Daftuar)

* Merge #8418: Add tests for compact blocks

45c7ddd Add p2p test for BIP 152 (compact blocks) (Suhas Daftuar)
9a22a6c Add support for compactblocks to mininode (Suhas Daftuar)
a8689fd Tests: refactor compact size serialization in mininode (Suhas Daftuar)
9c8593d Implement SipHash in Python (Pieter Wuille)
56c87e9 Allow changing BIP9 parameters on regtest (Suhas Daftuar)

* Merge #8505: Trivial: Fix typos in various files

1aacfc2 various typos (leijurv)

* Merge #8449: [Trivial] Do not shadow local variable, cleanup

a159f25 Remove redundand (and shadowing) declaration (Pavel Janík)
cce3024 Do not shadow local variable, cleanup (Pavel Janík)

* Merge #8739: [qa] Fix broken sendcmpct test in p2p-compactblocks.py

157254a Fix broken sendcmpct test in p2p-compactblocks.py (Suhas Daftuar)

* Merge #8854: [qa] Fix race condition in p2p-compactblocks test

b5fd666 [qa] Fix race condition in p2p-compactblocks test (Suhas Daftuar)

* Merge #8393: Support for compact blocks together with segwit

27acfc1 [qa] Update p2p-compactblocks.py for compactblocks v2 (Suhas Daftuar)
422fac6 [qa] Add support for compactblocks v2 to mininode (Suhas Daftuar)
f5b9b8f [qa] Fix bug in mininode witness deserialization (Suhas Daftuar)
6aa28ab Use cmpctblock type 2 for segwit-enabled transfer (Pieter Wuille)
be7555f Fix overly-prescriptive p2p-segwit test for new fetch logic (Matt Corallo)
06128da Make GetFetchFlags always request witness objects from witness peers (Matt Corallo)

* Merge #8882: [qa] Fix race conditions in p2p-compactblocks.py and sendheaders.py

b55d941 [qa] Fix race condition in sendheaders.py (Suhas Daftuar)
6976db2 [qa] Another attempt to fix race condition in p2p-compactblocks.py (Suhas Daftuar)

* Merge #8904: [qa] Fix compact block shortids for a test case

4cdece4 [qa] Fix compact block shortids for a test case (Dagur Valberg Johannsson)

* Merge #8637: Compact Block Tweaks (rebase of #8235)

3ac6de0 Align constant names for maximum compact block / blocktxn depth (Pieter Wuille)
b2e93a3 Add cmpctblock to debug help list (instagibbs)
fe998e9 More agressively filter compact block requests (Matt Corallo)
02a337d Dont remove a "preferred" cmpctblock peer if they provide a block (Matt Corallo)

* Merge #8975: Chainparams: Trivial: In AppInit2(), s/Params()/chainparams/

6f2f639 Chainparams: Trivial: In AppInit2(), s/Params()/chainparams/ (Jorge Timón)

* Merge #8968: Don't hold cs_main when calling ProcessNewBlock from a cmpctblock

72ca7d9 Don't hold cs_main when calling ProcessNewBlock from a cmpctblock (Matt Corallo)

* Merge #8995: Add missing cs_main lock to ::GETBLOCKTXN processing

dfe7906 Add missing cs_main lock to ::GETBLOCKTXN processing (Matt Corallo)

* Merge #8515: A few mempool removal optimizations

0334430 Add some missing includes (Pieter Wuille)
4100499 Return shared_ptr<CTransaction> from mempool removes (Pieter Wuille)
51f2783 Make removed and conflicted arguments optional to remove (Pieter Wuille)
f48211b Bypass removeRecursive in removeForReorg (Pieter Wuille)

* Merge #9026: Fix handling of invalid compact blocks

d4833ff Bump the protocol version to distinguish new banning behavior. (Suhas Daftuar)
88c3549 Fix compact block handling to not ban if block is invalid (Suhas Daftuar)
c93beac [qa] Test that invalid compactblocks don't result in ban (Suhas Daftuar)

* Merge #9039: Various serialization simplifcations and optimizations

d59a518 Use fixed preallocation instead of costly GetSerializeSize (Pieter Wuille)
25a211a Add optimized CSizeComputer serializers (Pieter Wuille)
a2929a2 Make CSerAction's ForRead() constexpr (Pieter Wuille)
a603925 Avoid -Wshadow errors (Pieter Wuille)
5284721 Get rid of nType and nVersion (Pieter Wuille)
657e05a Make GetSerializeSize a wrapper on top of CSizeComputer (Pieter Wuille)
fad9b66 Make nType and nVersion private and sometimes const (Pieter Wuille)
c2c5d42 Make streams' read and write return void (Pieter Wuille)
50e8a9c Remove unused ReadVersion and WriteVersion (Pieter Wuille)

* Merge #9058: Fixes for p2p-compactblocks.py test timeouts on travis (#8842)

dac53b5 Modify getblocktxn handler not to drop requests for old blocks (Russell Yanofsky)
55bfddc [qa] Fix stale data bug in test_compactblocks_not_at_tip (Russell Yanofsky)
47e9659 [qa] Fix bug in compactblocks v2 merge (Russell Yanofsky)

* Merge #9160: [trivial] Fix hungarian variable name

ec34648 [trivial] Fix hungarian variable name (Russell Yanofsky)

* Merge #9159: [qa] Wait for specific block announcement in p2p-compactblocks

dfa44d1 [qa] Wait for specific block announcement in p2p-compactblocks (Russell Yanofsky)

* Merge #9125: Make CBlock a vector of shared_ptr of CTransactions

b4e4ba4 Introduce convenience type CTransactionRef (Pieter Wuille)
1662b43 Make CBlock::vtx a vector of shared_ptr<CTransaction> (Pieter Wuille)
da60506 Add deserializing constructors to CTransaction and CMutableTransaction (Pieter Wuille)
0e85204 Add serialization for unique_ptr and shared_ptr (Pieter Wuille)

* Merge #8872: Remove block-request logic from INV message processing

037159c Remove block-request logic from INV message processing (Matt Corallo)
3451203 [qa] Respond to getheaders and do not assume a getdata on inv (Matt Corallo)
d768f15 [qa] Make comptool push blocks instead of relying on inv-fetch (mrbandrews)

* Merge #9199: Always drop the least preferred HB peer when adding a new one.

ca8549d Always drop the least preferred HB peer when adding a new one. (Gregory Maxwell)

* Merge #9233: Fix some typos

15fa95d Fix some typos (fsb4000)

* Merge #9260: Mrs Peacock in The Library with The Candlestick (killed main.{h,cpp})

76faa3c Rename the remaining main.{h,cpp} to validation.{h,cpp} (Matt Corallo)
e736772 Move network-msg-processing code out of main to its own file (Matt Corallo)
87c35f5 Remove orphan state wipe from UnloadBlockIndex. (Matt Corallo)

* Merge #9014: Fix block-connection performance regression

dd0df81 Document ConnectBlock connectTrace postconditions (Matt Corallo)
2d6e561 Switch pblock in ProcessNewBlock to a shared_ptr (Matt Corallo)
2736c44 Make the optional pblock in ActivateBestChain a shared_ptr (Matt Corallo)
ae4db44 Create a shared_ptr for the block we're connecting in ActivateBCS (Matt Corallo)
fd9d890 Keep blocks as shared_ptrs, instead of copying txn in ConnectTip (Matt Corallo)
6fdd43b Add struct to track block-connect-time-generated info for callbacks (Matt Corallo)

* Merge #9240: Remove txConflicted

a874ab5 remove internal tracking of mempool conflicts for reporting to wallet (Alex Morcos)
bf663f8 remove external usage of mempool conflict tracking (Alex Morcos)

* Merge #9344: Do not run functions with necessary side-effects in assert()

da9cdd2 Do not run functions with necessary side-effects in assert() (Gregory Maxwell)

* Merge #9273: Remove unused CDiskBlockPos* argument from ProcessNewBlock

a13fa4c Remove unused CDiskBlockPos* argument from ProcessNewBlock (Matt Corallo)

* Merge #9352: Attempt reconstruction from all compact block announcements

813ede9 [qa] Update compactblocks test for multi-peer reconstruction (Suhas Daftuar)
7017298 Allow compactblock reconstruction when block is in flight (Suhas Daftuar)

* Merge #9252: Release cs_main before calling ProcessNewBlock, or processing headers (cmpctblock handling)

bd02bdd Release cs_main before processing cmpctblock as header (Suhas Daftuar)
680b0c0 Release cs_main before calling ProcessNewBlock (cmpctblock handling) (Suhas Daftuar)

* Merge #9283: A few more CTransactionRef optimizations

91335ba Remove unused MakeTransactionRef overloads (Pieter Wuille)
6713f0f Make FillBlock consume txn_available to avoid shared_ptr copies (Pieter Wuille)
62607d7 Convert COrphanTx to keep a CTransactionRef (Pieter Wuille)
c44e4c4 Make AcceptToMemoryPool take CTransactionRef (Pieter Wuille)

* Merge #9375: Relay compact block messages prior to full block connection

02ee4eb Make most_recent_compact_block a pointer to a const (Matt Corallo)
73666ad Add comment to describe callers to ActivateBestChain (Matt Corallo)
962f7f0 Call ActivateBestChain without cs_main/with most_recent_block (Matt Corallo)
0df777d Use a temp pindex to avoid a const_cast in ProcessNewBlockHeaders (Matt Corallo)
c1ae4fc Avoid holding cs_most_recent_block while calling ReadBlockFromDisk (Matt Corallo)
9eb67f5 Ensure we meet the BIP 152 old-relay-types response requirements (Matt Corallo)
5749a85 Cache most-recently-connected compact block (Matt Corallo)
9eaec08 Cache most-recently-announced block's shared_ptr (Matt Corallo)
c802092 Relay compact block messages prior to full block connection (Matt Corallo)
6987219 Add a CValidationInterface::NewPoWValidBlock callback (Matt Corallo)
180586f Call AcceptBlock with the block's shared_ptr instead of CBlock& (Matt Corallo)
8baaba6 [qa] Avoid race in preciousblock test. (Matt Corallo)
9a0b2f4 [qa] Make compact blocks test construction using fetch methods (Matt Corallo)
8017547 Make CBlockIndex*es in net_processing const (Matt Corallo)

* Merge #9486: Make peer=%d log prints consistent

e6111b2 Make peer id logging consistent ("peer=%d" instead of "peer %d") (Matt Corallo)

* Merge #9400: Set peers as HB peers upon full block validation

d4781ac Set peers as HB peers upon full block validation (Gregory Sanders)

* Merge #9499: Use recent-rejects, orphans, and recently-replaced txn for compact-block-reconstruction

c594580 Add braces around AddToCompactExtraTransactions (Matt Corallo)
1ccfe9b Clarify comment about mempool/extra conflicts (Matt Corallo)
fac4c78 Make PartiallyDownloadedBlock::InitData's second param const (Matt Corallo)
b55b416 Add extra_count lower bound to compact reconstruction debug print (Matt Corallo)
863edb4 Consider all (<100k memusage) txn for compact-block-extra-txn cache (Matt Corallo)
7f8c8ca Consider all orphan txn for compact-block-extra-txn cache (Matt Corallo)
93380c5 Use replaced transactions in compact block reconstruction (Matt Corallo)
1531652 Keep shared_ptrs to recently-replaced txn for compact blocks (Matt Corallo)
edded80 Make ATMP optionally return the CTransactionRefs it replaced (Matt Corallo)
c735540 Move ORPHAN constants from validation.h to net_processing.h (Matt Corallo)

* Merge #9587: Do not shadow local variable named `tx`.

44f2baa Do not shadow local variable named `tx`. (Pavel Janík)

* Merge #9510: [trivial] Fix typos in comments

cc16d99 [trivial] Fix typos in comments (practicalswift)

* Merge #9604: [Trivial] add comment about setting peer as HB peer.

dd5b011 [Trivial] add comment about setting peer as HB peer. (John Newbery)

* Fix using of AcceptToMemoryPool in PrivateSend code

* add `override`

* fSupportsDesiredCmpctVersion

* bring back tx ressurection in DisconnectTip

* Fix delayed headers

* Remove unused CConnman::FindNode overload

* Fix typos and comments

* Fix minor code differences

* Don't use rejection cache for corrupted transactions

Partly based on https://github.com/bitcoin/bitcoin/pull/8525

* Backport missed cs_main locking changes

Missed from 58a215ce8c

* Backport missed comments and mapBlockSource.emplace call

Missed from two commits:
88c35491ab
7c98ce584e

* Add CheckPeerHeaders() helper and check in (nCount == 0) too
2018-04-11 14:06:01 +03:00
UdjinM6
eecc692236
Fix a very ancient bug from mid 2015 (#2021)
Introduced in c701839a43 (diff-2e2ff25b7bc057a741bf93c35ae3b624R42) (committed on 10 Jul 2015). Survived all the refactoring for almost 3 years and was revealed by 525c049316 (diff-49ff8fea774f647034a130c40d4f3c65R519) (as a part of https://github.com/dashpay/dash/pull/1856) by causing silent crashes on multiple nodes (testnet). v0.12.2.x and earlier branches/versions aren't affected, they simply print meaningless log entry.
2018-04-05 15:34:40 +03:00
UdjinM6
a0874b72a9
Validate data size for proposals only (#2004)
There are no watchdogs and it makes no sense to limit triggers by size (invalid triggers are going to be voted down anyway).
512 bytes should be more than enough for any proposal - the only value we do not check size of is URL and with 512 bytes total limit URL has space for almost 300 bytes.
2018-04-05 15:34:26 +03:00
Alexander Block
c0a1099986 Fix instantsend in testnet and regtest (#2016)
#1962 changes the minimum required confirmations for InstantSend to 2 when
running in testnet. This resulted in the quorum rank calculation to pick
blocks which are higher then the current chain tip. This commit fixes this
by calculating the added height based on nInstantSendConfirmationsRequired.

This results in the value 4 for mainnet, so no incompatibility is
introduced. On testnet and regtest, this results in 0.
2018-03-29 18:08:24 +03:00
UdjinM6
72a225b9bf
Few fixes for lite mode (#2014)
* Allow disabling txindex in lite mode

* Do not load/store Dash-specific cache in lite mode

* Do not create/show masternode tab in lite mode

* Do not connect PS actions in lite mode

* Fix sync/ignore block updates in Dash submodules in lite mode
2018-03-29 18:08:00 +03:00
UdjinM6
2f1661678c
Locked txes should not expire until mined and have sufficient confirmations (#2011) 2018-03-29 18:07:40 +03:00
UdjinM6
d1bf615f33
No POOL_STATE_ERROR or POOL_STATE_SUCCESS on masternodes (#2009)
The reason for this removal is that this block was a copy/paste when we spit one huge privatesend file into multiple classes/files trying to make as little changes as possible to not to break anything. If you look at CPrivateSendServer::SetState() you'll notice that these states (POOL_STATE_ERROR and POOL_STATE_SUCCESS) are illegal for masternodes anyway, so no reason to have conditions relying on that or trying to set illigal state.
2018-03-21 14:10:19 +03:00
UdjinM6
d03adb7c39
Check if in masternode mode first and only then do the job (or not) (#2008)
* Check if in masternode mode first and only then do the job (or not)

* address review comment
2018-03-21 14:10:01 +03:00
UdjinM6
846f1d217a
Avoid processing tx lock request twice in the wallet it was sent from (#2007) 2018-03-21 14:09:47 +03:00
UdjinM6
c0c998da35
Fix CInstantSend::GetTxLockRequest() (#2006)
Should fail for empty lock request
2018-03-21 14:09:28 +03:00
UdjinM6
15fac7c7e7
Validate proposals for expiration (#2003)
Postpone this on mainnet until old proposals are done
2018-03-21 14:09:13 +03:00
UdjinM6
b7bd96e2bb
Clarify the warning displayed when encrypting HD wallet (#2002)
* Clarify the warning displayed when encrypting HD wallet

* `dashs` -> `funds`
2018-03-21 14:08:55 +03:00
UdjinM6
c7e9ea9fba
Avoid repeating the full scan in CMasternodeMan::UpdateLastPaid() on non-MNs (#1985)
Instead, remember the block height previous scan was performed at and scan back to that height only (but at least LAST_PAID_SCAN_BLOCKS).
2018-03-21 14:08:35 +03:00
UdjinM6
4930bb9f5f
Don't hold cs_storage in CKeyHolderStorage while calling functions which might lock cs_wallet (#2000)
Co-authored-by: Alexander Block <ablock84@gmail.com>
2018-03-20 14:06:07 +03:00
UdjinM6
4d442376e9
Limit the scope of cs_wallet lock in CPrivateSendClient::PrepareDenominate() (#1997) 2018-03-20 14:05:39 +03:00
UdjinM6
a3bcc4307d
Refactor governance (#1993)
* Refactor CGovernanceObject::IsValidLocally()

* Refactor CGovernanceObject::ProcessVote()

* Refactor CGovernanceObject::CountMatchingVotes()

* Refactor CGovernanceObjectVoteFile::HasVote()

* Refactor CGovernance* (more consts and refs)

* Refactor CGovernanceManager::HaveVoteForHash()

* Refactor CGovernanceManager::SerializeVoteForHash()

* Refactor CGovernanceManager::SyncSingleObjAndItsVotes()
2018-03-20 14:04:59 +03:00
UdjinM6
f28a58e0a9
Refactor and fix restart (#1999)
* Refactor restart

* Correctly interrupt all threads on restart

Fixes the issue with restart when running with `-server`
2018-03-19 16:09:47 +03:00
UdjinM6
7248700b33
Add missing cs_main locks (#1998)
`Misbehaving()` and `State()` require `cs_main` to be locked, this PR adds missing ones (in Dash specific code only).
2018-03-19 16:09:29 +03:00
UdjinM6
ddff32b96a
Fix TransactionRecord::PrivateSendMakeCollaterals tx type (#1996)
CPrivateSendClient::MakeCollateralAmounts() creates inputs of exactly CPrivateSend::GetMaxCollateralAmount()
2018-03-19 16:09:13 +03:00
UdjinM6
4f978a2634
Drop Nx requirements for PS collaterals (#1995) 2018-03-19 16:08:57 +03:00
UdjinM6
9e98c856f2
A pack of small fixes (#1992)
* Make sure gobject collateral was mined

`CGovernanceObject::IsCollateralValid()` would still fail for non-mined collateral later trying to check confirmations

* Fix powLimit for mainnet/testnet

That's a legacy thing, slightly rising it to match the actual bit-shifted value has no effect because real values are already lower.
Also clarify values for all networks in comments.

* Check for script addresses in CSuperblock::ParsePaymentSchedule()

Sentinel should already be downvoting such triggers if they would exist, no need to store/relay them.

* Do not process already known valid vote twice in CGovernanceObject::ProcessVote()

This should be handled by `CGovernanceManager::ProcessVote()` but imo it's better to have this at the `CGovernanceObject::ProcessVote()` level as well.

* Make sure CGovernanceObjectVoteFile::AddVote() never adds/updates already known votes

The way `CGovernanceObjectVoteFile::AddVote()` is used (i.e. wrapped in `CGovernanceObjectVoteFile::HasVote()` condition) it's already the case. Hoever nothing would guarantee consistency if it would be used elsewhere without such wrapper, so it's better to have similar check inside.

* Do not even try mnb recovery when -connect is set

`CConnman::ThreadOpenMasternodeConnections()` thread won't even start when `-connect` is set, so no need to ask for recovery, there is nothing that is going to be able to process such request.

* No need for SIGHASH_ANYONECANPAY in PS collateral signature

Collateral is just a normal tx created and signed by each participant individually, there is no need for special sig types.

* Release semMasternodeOutbound in CConnman::Interrupt()

Re-align Dash code with Bitcoin.
2018-03-19 16:08:32 +03:00
UdjinM6
9b17f2b9c8
Convert gobject count output to json (by default) (#1994)
Old mode is available via `gobject count all`
2018-03-15 22:09:06 +03:00
UdjinM6
1d32d1c327
Add missing includes required for compilation with --disable-wallet flag (#1991) 2018-03-15 22:08:11 +03:00
UdjinM6
a44f48743b
Allow data outputs in PS collaterals (#1984)
* Allow data outputs in PS collaterals

This should allow to
- reduce utxo spam caused by 1x collaterals a bit
- use otherwise non-usable small inputs (in the range of 1-2x) as PS collaterals, which should reduce utxo set even further

Requires protobump

* patch to avoid protobump requirement

* address review comments
2018-03-15 12:22:22 +03:00
UdjinM6
08033ffe4f
Reject Dash-specific messages from obsolete peers (#1983)
And send REJECT msg back to the peer we received the original message from.
Same logic as for MIN_PEER_PROTO_VERSION but using specific proto versions for each submodule.
2018-03-15 12:21:43 +03:00
UdjinM6
e9f63073dc
Warn when more than 50% of masternodes are using newer version (#1963)
* Warn when more than 50% of masternodes are using newer version than our local one (i.e. CLIENT_VERSION)

Closes trac#64

* fix
2018-03-15 12:21:12 +03:00
UdjinM6
04a23bf0c8
Fix the bug in CGovernanceObject::ProcessVote() (#1989)
Introduced in #1977
2018-03-14 20:50:07 +03:00
UdjinM6
4b128b1b94
Fix listaddressbalances (#1987) 2018-03-14 19:14:37 +03:00
Alexander Block
19ea1a7918 Use operator[] instead of emplace in CMasternodePayments::AddPaymentVote (#1980)
Found this when running dip3 integration tests. Votes stopped being
propagated.

When NetMsgType::MASTERNODEPAYMENTVOTE is handled, the payment vote is
already added to mapMasternodePaymentVotes and then marked as not verified.

When AddPaymentVote is then called shortly after that, the emplace does not
update the already added vote.

The real problem here is actually something different. AddPaymentVote is
named badly (should be more like AddOrUpdatePaymentVote) which resulted in
the non-obvious error while refactoring this code (who could have known
that we rely on that side effect?). So I renamed that method as well now.
2018-03-10 15:35:27 +03:00
UdjinM6
7d5223b5e4
Network-specific thresholds for required confirmations (IS) (#1962) 2018-03-10 15:35:09 +03:00
UdjinM6
6536003528
Draw text on top of everything else in TrafficGraphWidget (#1944) 2018-03-10 15:34:50 +03:00
UdjinM6
ca3655f494
Fix some (potential dead)locks (#1977)
* Avoid locking cs_main in CMasternode/Ping/Broadcast

Deligate this to CMasternodeMan and use AssertLockHeld instead

* Ensure consistent locking order (cs_main, cs_wallet, mempool.cs, cs_instantsend) in CInstantSend while avoiding potential deadlocks at the same time

* Add missing locks in wallet

* Add missing locks in governance

* Fix cs_vPendingMasternodes vs cs_main potential deadlock

SendVerifyRequest no longer opens connection directly, so no cs_main is needed here
2018-03-09 17:15:48 +03:00
Alexander Block
2a7e6861d2 Include "clientversion.h" in rpc/masternode.cpp (#1979)
Otherwise it fails to compile when the wallet is disabled at compile time
2018-03-09 15:41:51 +03:00
UdjinM6
d115efacb8
[RPC] Few additions to masternodelist (#1971)
* RPC: Add `masternodelist daemon`

* RPC: Add `masternodelist json` and make it default

* RPC: Add `masternodelist sentinel`
2018-03-08 15:22:13 +03:00
crowning-
a9d8e2c5dd [Init] Avoid segfault when called with -enableinstantsend=0 (#1976) 2018-03-08 15:19:25 +03:00
Alexander Block
3200eae9b1 Don't use short version of 'tinyformat/fmt' namespace in util.h (#1975)
* Don't use short version of 'tinyformat/fmt' namespace in util.h

Clion is not able to parse this correctly and messes up all the syntax
checks, marking large parts of C++ files as syntactically invalid, making
it hard to find real syntax errors without trying compilation.

* Also use full namespace name for strprintf in tinyformat.h
2018-03-08 15:18:51 +03:00
UdjinM6
97a07cbc4c
Refactor CMasternodePayment* (#1974)
* Refactor CMasternodePayment*: avoid using `count` and `[]`

Use iterators instead

* Refactor CMasternodePayment*: mark functions as const, pass references, adjust arg name

* Refactor/rename CMasternodePayments::CanVote()

* Refactor CMasternodePayment*: minor trivial changes

* Refactor CMasternodePayment*: reduce number of calls to GetHash()
2018-03-08 15:18:38 +03:00
UdjinM6
4ffa7bac02
Introduce DIP0001Height (#1973)
Block height at which DIP0001 becomes active

Also drop fDIP0001WasLockedIn
2018-03-08 15:18:24 +03:00
UdjinM6
9451782a04
RPC: Add listaddressbalances (#1972) 2018-03-08 15:18:06 +03:00
crowning-
118eeded6d [GUI] Create QR-code for Masternode private key (#1970) 2018-03-08 15:17:34 +03:00
UdjinM6
9ef38c6d73
Switch CNetFulfilledRequestManager and CMasternodeMan maps/funcs to CService (#1967)
* Switch CNetFulfilledRequestManager and CMasternodeMan maps/funcs to CService

This is to make them work correctly on regtest.
We make sure that behaviour on other networks is not affected though.

* Add fAllowMultiplePorts to chainparams

Tweak either we should allow nodes with the same address and multiple ports or not for this specific chain
2018-03-08 15:16:52 +03:00
UdjinM6
929c1584ac
Rename CheckPreviousBlockVotes to CheckBlockVotes and adjust its log output a bit (#1965) 2018-03-05 15:27:05 +03:00
Alexander Block
611879aa6d Use spork addresses instead of raw keys and allow changing them on startup (#1969)
* Support passing CKeyID to CMessageSigner/CHashSigner

* Use Dash addresses instead of raw public keys for sporks

The spork addresses are identical to the previously used public keys.

Also use CKeyID/CKey directly inside CSporkManager instead of parsing the
addresses/keys over and over. The default spork key (from chainparams) is
initialized with InitDefaultSporkAddress(). SetPrivKey parses the private
key now and stores it in sporkPrivKey instead of parsing it in
CSporkMessage::Sign().

* Allow setting of spork address via command line

* Remove unused strMasternodePaymentsPubKey chainparam

Traces from the past...

* Review fixes

1. Remove the need for InitDefaultSporkAddress
2. Remove bogus checks for hex private keys
3. Alphabetical order for new include
4. Add . to help string

* Add regtest spork key

As this key is not meant to be private, the private key is also added in
the form of a comment (for later use in regtests)

* Review fixes
2018-03-02 16:15:04 +03:00
UdjinM6
bf0854e58e
Swap expired and sentinel_expired states in order (#1961)
State switching should correlate with spork14 and CMasternode::IsValidForPayment() a bit better now
2018-03-02 16:13:31 +03:00
Alexander Block
9876207ce2 Multiple devnet fixes (#1960)
* Add missing help string for -devnet

* Remove testnet seeds from devnet

* Activate BIP34/65/66 at height 2 instead of 1

Height 1 is the genesis block and not the devnet genesis block. The genesis
block is still at version 1, resulting in re-indexing to fail.
2018-03-02 16:12:31 +03:00
UdjinM6
bab543f3e6
Various RPC fixes (#1958)
* RPC: fix listunspent include_unsafe param usage

* RPC: Add two fields to indicate if some mempool entry is an InstantSend tx and if it was locked or not

* RPC: Add privatesend_balance to getwalletinfo rpc

* RPC: "BTC" -> CURRENCY_UNIT

* RPC: more EnsureWalletIsAvailable in Dash-specific code

* RPC: EnsureWalletIsUnlocked in `gobject prepare`

Also fixes missing cs_wallet lock

* RPC: disable `privatesend` rpc on masternodes completely

* RPC: refactor `spork` rpc

* RPC: Show correct port in HelpExampleRpc

* RPC: few trivial fixes

* fix
2018-03-01 16:18:46 +03:00
Nathan Marley
b0868093b0 simplify gobject JSON format, remove unused fields (#1902)
* simplify gobject JSON format, remove unused fields

This allows gobject format to change from (for example):

```
[
    [
        "proposal",
        {"object": "data-here"}
    ]
]
```

... to simply:

```
{"object": "data-here"}
```

The outer array isn't needed, and the first value in the 2-item tuple is
likewise discarded by DashCore. This change should allow either data
format to exist (we can deprecate/remove the older format later) and
remove the array of different type elements (string, object).

* validator test for legacy and new proposal formats
2018-02-28 02:20:16 +03:00
UdjinM6
1dda9fe6f2
CProposalValidator refactoring and follow up fixes (#1956)
* Refactor CProposalValidator

- fix names
- MAX_NAME_SIZE instead of magic value
- move most functions to private, test actual usage (constructor and Validate), not every single function
- do not store hex string (there is no reason to do so anymore)
- remove (now) unused functions

* Make sure payment_address has no whitespaces

* Fix governance_validators_tests

* Don't allow whitespaces, drop StripWhitespaces and add corresponding tests

* Show validator internal errors on check failure
2018-02-27 16:39:48 +03:00
Alexander Block
e37b6c7dab Fix BIP147 deployment threshold parameter (#1955)
It should be 50 and not 59
2018-02-27 16:39:34 +03:00
UdjinM6
106276a3e2
Adjust/fix log output (#1954)
* fix typo in debug message

* log: specify MN

* log: fix class::func

* log: format log2_work

* log: other minor adjustments
2018-02-26 14:10:20 +03:00
UdjinM6
2c04504f1c
Refactor IS votes processing (#1951)
Also make sure orphans are actually processed
2018-02-25 08:33:40 +03:00
UdjinM6
89380b4c92
Drop watchdogs, replace them with sentinel pings (#1949)
* Drop watchdogs, replace them with sentinel pings

* Address review comments

* revert `()`
2018-02-25 08:33:27 +03:00
UdjinM6
ef9a9f2d67
Fix unlocking error on "Start Mixing" (#1941)
* Fix unlocking error on "Start Mixing"

Instead warn that wallet is fully unlocked etc.

* Revert "Fix unlocking error on "Start Mixing""

This reverts commit 4951e58f66.

* Drop mixingOnlyCheckBox and determine the correct unlock path automatically via provided mode
2018-02-22 12:00:50 +03:00
UdjinM6
0153c4c5e8
Merge pull request #1948 from UdjinM6/removeusingnamespacestd
Remove `using namespace std`
2018-02-22 10:41:52 +03:00
thephez
151152b98b rpc - Update getaddednodeinfo help to remove dummy argument (#1947) 2018-02-22 10:41:08 +03:00
UdjinM6
a4b313fd3d Fix std in DBG macro 2018-02-21 23:24:28 +03:00
UdjinM6
6a6e4cdc1b Remove remaining using namespace std 2018-02-21 22:32:13 +03:00
Wladimir J. van der Laan
08b5c69eff Merge #9643: [refactor] Remove using namespace <xxx> from wallet/ & util*
a57845c Refactor: Remove using namespace <xxx> from util* (Karl-Johan Alm)
8a52281 Refactor: Remove using namespace <xxx> from wallet/ (Karl-Johan Alm)

Tree-SHA512: cd06b569fee0ce25db753ade5ee694b582733a8883bfd62a27613020266d2a902af079ef23b58a5412f7af4afd7681e689af3c7780e5ea00c77b16d144d72db5
2018-02-21 22:32:13 +03:00
Wladimir J. van der Laan
ccca7af09e Merge #9476: [refactor] Remove using namespace <xxx> from rpc/ & script/ sources
8cbfc4e Refactor: Remove using namespace <xxx> from script/ (Karl-Johan Alm)
f3c264e Refactor: Remove using namespace <xxx> from rpc/ (Karl-Johan Alm)

Tree-SHA512: 407e80eeda0b8e1df22c5fcba33572e117542fde83c67357f6c2d98fa60bcc7b21bb88ad9a1ee59062fbec17fadaa4836b69e8e6d18188b4027b794357634467
2018-02-21 22:32:13 +03:00
UdjinM6
e71cb3861d
Store CGovernanceVote hash in memory instead of recalculating it via GetHash() every time (#1946)
* Store CGovernanceVote hash in memory instead of recalculating it via GetHash() every time

* Rename GetVoteDataStream to SerializeVoteToStream
2018-02-21 19:35:37 +03:00
Alexander Block
0abd1894ee Call CheckMnbAndUpdateMasternodeList when starting MN (#1945)
* Call CheckMnbAndUpdateMasternodeList when when starting MN

Otherwise the invoking node won't have nCollateralMinConfBlockHash
updated correctly, resulting in the MN showing up in the wrong position
when masternode ranks are calculated.

* Remove UpdateMasternodeList and remaining uses of it
2018-02-21 19:32:51 +03:00
UdjinM6
e23f61822d
Make TrafficGraphDataTests more general (#1943) 2018-02-21 19:32:35 +03:00
UdjinM6
43671a39df
Deprecate nMnCount in mnget (#1942) 2018-02-21 19:32:21 +03:00
UdjinM6
5b1c4d8a11
Few (mostly trivial) cleanups and fixes (#1940)
* Drop nBudgetProposalEstablishingTime

* Refactor: replace `== COutPoint()` with `.IsNull()`

* Refactor: add `operator bool()` to CMasternodePing

* Refactor: actually use `operator bool()` for CPendingDsaRequest

* Refactor: fixing code style in TrafficGraphData

* Fix some comments and whitespaces

* Drop CGovernanceVote::GetTypeHash()

* Drop legacy X11 code

No longer used... if it ever was used at all.

* Move `<boost/foreach.hpp>` out of coins.h

* Simplify CMasternodeBlockPayees::GetRequiredPaymentsString()

Also less of boost::lexical_cast

* Drop CTxDSIn::nSentTimes

* Fix few warnings

* fix warning (timer)

* fix nit
2018-02-21 19:32:08 +03:00
UdjinM6
99273f63aa
Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (#1937)
* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (gobject)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (gobjvote)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (mnw)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (txlvote)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (dsq)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (dstx)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (spork)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (mnb)

* Actually care about old signature format in mnp, otherwise we can start banning peers rather quickly

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (mnv)

* Unify sign/verify code a bit by using GetSignatureHash() (even when it matches GetHash())

* fix docs

* address review comments

* fix log output (copy/paste error)

* Replace custom GetSignatureHash/GetHash with serialization (where applicable)

* Convert from/to old format in SerializationOp only for p2p

* fix
2018-02-16 17:54:53 +03:00
UdjinM6
451f7f0710
Fix issues with mnp, mnw and dsq signatures via new spork (SPORK_6_NEW_SIGS) (#1936)
* Use new spork SPORK_6_NEW_SIGS to fix masternode payment vote signature format

* Use SPORK_6_NEW_SIGS to also fix masternode ping signature format

* Use SPORK_6_NEW_SIGS to also fix privatesend queue signature format

* adjust spork6 description in docs

* mnp hashing/signing changed - hash everything and use SignHash/VerifyHash directly instead of constructing a string to sign (both activate via SPORK_6_NEW_SIGS)

* fix

* cleanup
2018-02-15 17:44:22 +03:00
UdjinM6
0480626410
Force masternodes to have listen=1 and maxconnections to be at least DEFAULT_MAX_PEER_CONNECTIONS (#1935) 2018-02-15 17:43:32 +03:00
UdjinM6
aadec37354
Change format of gobject, store/transmit vchData instead of hex-encoded string of a string (#1934)
* Change format of gobject, store/transmit vchData instead of hex-encoded string

* fix (limited string for old format)
2018-02-15 17:43:17 +03:00
UdjinM6
c656133502
Switch masternode id in Dash data structures from CTxIn to COutPoint (#1933)
* Switch masternode id in Dash data structures from CTxIn to COutPoint (including p2p level)

* outpoint -> masternodeOutpoint in DSEG
2018-02-15 10:29:44 +03:00