Commit Graph

11486 Commits

Author SHA1 Message Date
Alexander Block
4a495c6b4d
Only include selected TX types into CMerkleBlock (#2737)
It was reported on iOS that CMerkleBlock sometimes included the dummy
quorum commitments introduced with v13, which led to banning of nodes as
these were not supported/expected there.

We should in general only include TXs here that are of interest for SPV
nodes, so we should maintain the list of allowed TX types.
2019-03-04 07:52:14 +01:00
Pasta
0db2d1596a
code review and reset file perms 2019-03-03 20:50:39 -06:00
Alexander Block
f971da8318 Stop g_connman first before deleting it (#2734) 2019-03-01 18:30:30 +03:00
Alexander Block
9eb0ca7040 Ignore sig share inv messages when we don't have the quorum vvec (#2733)
* Ignore sig share inv messages when we don't have the quorum vvec

* Update src/llmq/quorums_signing_shares.cpp

Co-Authored-By: codablock <ablock84@gmail.com>
2019-03-01 18:30:11 +03:00
Alexander Block
2041186f4d
On timeout, print members proTxHashes from members which did not send a share (#2731)
* On timeout, print members proTxHashes from members which did not send a share

* Move inactive quorums check above timeout checks

This allows to reuse things in the next commit

* Avoid locking cs_main through GetQuorum by using a pre-filled map

* Use find() instead of [] to access quorums map
2019-03-01 08:21:42 +01:00
Alexander Block
ea90296b6d
Actually start the timers for sig share and recSig verification (#2730)
Was wondering why verification was always 0ms...this explains it :)
2019-03-01 08:21:28 +01:00
Alexander Block
5c84cab0f1
Send/Receive multiple messages as part of one P2P message in CSigSharesManager (#2729)
* Return bool in ProcessMessageXXX methods to indicate misbehaviour

* Send/Receive multiple messages as part of one P2P message in CSigSharesManager

Many messages, especially QSIGSHARESINV and QGETSIGSHARES, are very small
by nature (5-14 bytes for a 50 members LLMQ). The message headers are
24 bytes, meaning that we produce a lot of overhead for these small messages.
This sums up quite a bit when thousands of signing sessions are happening
in parallel.

This commit changes all related P2P messages to send a vector of messages
instead of a single message.

* Remove bogus lines

Included these by accident

* Unify handling of BanNode in ProcessMessageXXX methods

* Remove bogus check for fMasternodeMode

* Properly use == instead of misleading >= in SendMessages

* Put "didSend = true" near PushMessage
2019-03-01 08:21:09 +01:00
Alexander Block
6ac49da246 Send QSIGSESANN messages when sending first message for a session 2019-02-27 17:34:08 +01:00
Alexander Block
8ce8cb9ca8 Remove MarkXXX methods from CSigSharesNodeState
We're now directly calling the Merge/Set methods on the inventory objects.
2019-02-27 17:33:40 +01:00
Alexander Block
fa25728ca5 Use new sessionId based session management in CSigSharesManager
Stop relying on the information previously found in the CSigSharesInv
and CBatchedSigShares messages and instead use the information found in
the session refereced by the session id.

This also updates a few LogPrintf calls. Previously, CSigSharesInv::ToString
also included the signHash in the returned string, which is not the case
anymore, so we have to add it manually.
2019-02-27 17:33:40 +01:00
Alexander Block
34e3f8eb53 Implement session management based on session ids and announcements 2019-02-27 17:33:40 +01:00
Alexander Block
7372f6f10b Move RebuildSigShare from CBatchedSigShares to CSigSharesManager
Needed as CBatchedSigShares doesn't have the necessary info anymore
2019-02-27 17:33:40 +01:00
Alexander Block
55a6182b10 Introduce QSIGSESANN/CSigSesAnn P2P message 2019-02-27 17:33:40 +01:00
Alexander Block
80375a0b4f Change CSigSharesInv and CBatchedSigShares to be sessionId based 2019-02-27 17:33:40 +01:00
Alexander Block
9b4285b1c8 Use salted hashing for keys for unordered maps/sets in LLMQ code
We must watch out to not blindly use externally provided keys in unordered
sets/maps, as attackers might find ways to cause unbalanced hash buckets
causing performance degradation.
2019-02-27 14:41:20 +01:00
Alexander Block
b5462f5246 Implement std::unordered_map/set compatible hasher classes for salted hashes
Allows convenient salted hashing with unordered maps and sets. Useful when
there is a risk of unbalanced hash buckets slowing things down, e.g. when
externally supplied hashes are used as keys into a map.
2019-02-27 14:40:52 +01:00
Alexander Block
c52e8402c0 Remove now obsolete TODO comment above CRecoveredSigsDb 2019-02-27 14:40:52 +01:00
Alexander Block
e83e32b956 Add in-memory cache for CRecoveredSigsDb::HasRecoveredSigForHash 2019-02-27 14:40:52 +01:00
Alexander Block
677c0040cd Add in-memory cache to CQuorumBlockProcessor::HasMinedCommitment 2019-02-27 14:40:52 +01:00
Alexander Block
f305cf77b6 Multiple fixes and optimizations for LLMQs and ChainLocks (#2724)
* Indicate success when signing was unnecessary

* Fix typo in name of LLMQ_400_60

* Move RemoveAskFor call for CLSIGs into ProcessNewChainLock

In case we got INV items for the same CLSIG that we recreated through
HandleNewRecoveredSig, (re-)requesting of the CLSIG from other peers
becomes unnecessary.

* Move Cleanup() call in CChainLocksHandler::UpdatedBlockTip up

We bail out early in a few situations from this method, so that Cleanup()
might not be called while its at the bottom.

* Bail out from CChainLocksHandler::UpdatedBlockTip if we already got the CLSIG

* Call RemoveAskFor when QFCOMMITMENT was received

Otherwise we might end up re-requesting it for a very long time when the
commitment INV was received shortly before it got mined.

* Call RemoveSigSharesForSession when a recovered sig is received

Otherwise we end up with session data in node states lingering around until
a fake "timeout" occurs (can be seen in the logs).

* Better handling of false-positive conflicts in CSigningManager

The old code was emitting a lot of messages in logs as it treated sigs
for exactly the same session as a conflict. This commit fixes this by
looking at the signHash before logging.

Also handle a corner-case where a recovered sig might be deleted between
the HasRecoveredSigForId and GetRecoveredSigById call.

* Don't run into session timeout when sig shares come in slow

Instead of just tracking when the first share was received, we now also
track when the last (non-duplicate) share was received. Sessios will now
timeout 5 minutes after the first share arrives, or 1 minute after the last
one arrived.
2019-02-27 16:10:12 +03:00
Wladimir J. van der Laan
ee6e5654e0 Merge #9505: Prevector Quick Destruct
45a5aaf Only call clear on prevector if it isn't trivially destructible and don't loop in clear (Jeremy Rubin)
aaa02e7 Add prevector destructor benchmark (Jeremy Rubin)

Tree-SHA512: 52bc8163b65b71310252f2d578349d0ddc364a6c23795c5e06e101f5449f04c96cbdca41c0cffb1974b984b8e33006471137d92b8dd4a81a98e922610a94132a
2019-02-26 16:41:13 -06:00
Wladimir J. van der Laan
c4a3cd6a13 Merge #8665: Assert all the things!
4d51e9b Assert ConnectBlock block and pIndex are the same block (NicolasDorier)
972714c pow: GetNextWorkRequired never called with NULL pindexLast (Daniel Cousens)
cc44c8f ContextualCheckBlockHeader should never have pindexPrev to NULL (NicolasDorier)

Tree-SHA512: 7cc568bf9417267c335f21ec3d1505b26e56e5b3d5f4d3dbb555279489800aaa65a3bcd7bc376e274dd102912aec16ddbb18de2e2060b2667b41eb979cd9321e
2019-02-26 16:41:11 -06:00
Wladimir J. van der Laan
ee2048ae44 Merge #9830: Add safe flag to listunspent result
dcf2112 Add safe flag to listunspent result (NicolasDorier)
af61d9f Add COutput::fSafe member for safe handling of unconfirmed outputs (Russell Yanofsky)

Tree-SHA512: 311edb6fa8075b3ede5b24cb8c6e5d133ccd8ac9ecafea07b604ffa812ee4f071337e31695e662d8573590a0460af20aaaeb39d49c9ea87924449ea50bdfb0b3
2019-02-26 16:41:02 -06:00
MarcoFalke
c75d7dc832 Merge #9962: [trivial] Fix typo in rpc/protocol.h
9ea2490 [trival] Fix typo introduced into rpc/protocol.h in commit 338bf06 (practicalswift)

Tree-SHA512: bfa60dc9f40db867b09e60dbe803db79c86ff939048c91e551c0794a91428bde3aa42c4aabf915c640cd15565005608da10dae051942e806fdf5d28e9704d765
2019-02-26 15:26:01 -06:00
Wladimir J. van der Laan
49b743e39a Merge #9538: [util] Remove redundant call to get() on smart pointer (thread_specific_ptr)
53a2ba3 [util] Remove redundant call to get() on smart pointer (thread_specific_ptr) (practicalswift)

Tree-SHA512: ec8ace4218ae0657d1aaf8ba7682b0cdd140fe0844173058d3cbf4575dee8d9ad5f241e5bacf1e9e4ad3f7dd282f56a8cb0f306de2093f2c0f6333daedd58261
2019-02-26 15:25:32 -06:00
Wladimir J. van der Laan
e5c4a67a20 Merge #9916: Fix msvc compiler error C4146 (minus operator applied to unsigned type)
8e0720b Fix msvc compiler error C4146 (unary minus operator applied to unsigned type) (kobake)
292112f Fix msvc compiler error C4146 (minus operator applied to unsigned type) (kobake)

Tree-SHA512: 25f408daf7bf9ffe4b8b4bd62f6f6d326219189a9faf8f8c0a135c5a0cb0511af765aa2b6087a091c8863c701289bda49a2379b00cd9b10854d316a5c3fc3f8e
2019-02-26 15:24:31 -06:00
Nathan Marley
fcd3b4fd49 Disallow new proposals using legacy serialization (#2722)
*  add flag to allow legacy proposal format

* add proposal validator ctor flag for legacy format

* add test for legacy proposal format disabled
2019-02-26 13:44:43 +03:00
UdjinM6
668b84b1e4 Fix stacktraces compilation issues (#2721)
* Drop linux/limits.h, we don't use it anyway

* Do not require backtrace lib when enable_stacktraces=no
2019-02-26 07:01:56 +01:00
Alexander Block
48d92f116e Implement optional pretty printed stacktraces (#2420)
* Add libbacktrace to depends

This is currently only useful to extract symbols. It fails to gather
stacktraces when compiled with MinGW, so we can only use it to get symbol
information from a stack trace which we gathered outside of libbacktrace.

* Add -mbig-obj to CXXFLAGS for MinGW builds

* Implement stacktraces for C++ exceptions

This is a hack and should only be used for debugging. It works by wrapping
the C++ ABI __wrap___cxa_allocate_exception. The wrapper records a backtrace
and stores it in a global map. Later the stacktrace can be retrieved with
GetExceptionStacktraceStr.

This commit also adds handlers to pretty print uncaught exceptions and
signals.

* Use GetPrettyExceptionStr for all unhandled exceptions

* Use --enable-stacktraces in CI for linux32/linux64

* Register exception translators to pretty print exceptions in unit tests

* Catch and print python exceptions when stopping nodes

Otherwise the code at the bottom is never executed when nodes crash,
leading to no output of debug.log files on Travis.

* Remove now unneeded/unused TestCrash methods
2019-02-21 21:37:15 +03:00
UdjinM6
252ee89c34
Implement new algo for quorum connections (#2710)
Instead of trying to manually figure out params for different quorum/ring sizes, connect to nodes at indexes (i+2^k)%n where k: 0..floor(log2(n-1))-1, n: size of the quorum/ring
2019-02-19 13:05:39 +03:00
UdjinM6
a79b928532
Merge pull request #2682 from PastaPastaPasta/backports-0.15-pr6
Backports 0.15 pr6
2019-02-19 13:04:49 +03:00
Alexander Block
104c6e7767 Cleanup successful sessions before doing timeout check (#2712)
Otherwise we get some false-positive timeout messages in logs.
2019-02-18 14:07:57 +03:00
UdjinM6
26db020d17
Separate init/destroy and start/stop steps in LLMQ flow (#2709) 2019-02-17 14:39:43 +03:00
Alexander Block
9f58690322 Avoid using ordered maps in LLMQ signing code (#2708)
* Implement and use SigShareMap instead of ordered map with helper methods

The old implementation was relying on the maps being ordered, which allowed
us to grab all sig shares for the same signHash by doing range queries on
the map. This has the disadvantage of being unnecessarily slow when the
maps get larger. Using an unordered map would be the naive solution, but
then it's not possible to query by range anymore.

The solution now is to have a specialized map "SigShareMap" which is
indexed by "SigShareKey". It's internally just an unordered map, indexed by
the sign hash and another unordered map for the value, indexed by the
quorum member index.

* Only use unordered maps/sets in CSigSharesManager

These are faster when maps/sets get larger.

* Use unorderes sets/maps in CSigningManager
2019-02-17 14:38:56 +03:00
Pasta
bb90eb4bf0 backports-0.15-pr6 code review 2019-02-16 15:09:51 -06:00
Alexander Block
7a192e2e4c Optimize sleeping behavior in CSigSharesManager::WorkThreadMain (#2707)
* Don't sleep in WorkThreadMain when CPU intensive work was done

When the current iteration resulted in CPU intensive work, it's likely that
the next iteration will result in work as well. Do not sleep in that case,
as we're otherwise wasting (unused) CPU resources.

* No matter how fast we process sig shares, always force 100ms between sending

* Apply review suggestions
2019-02-16 19:59:48 +03:00
Alexander Block
feb4e0ac74
Merge pull request #2706 from codablock/pr_llmq_optimizations3
Implement caching in CRecoveredSigsDb
2019-02-16 15:51:24 +01:00
Alexander Block
dae1542a0e
Merge pull request #2705 from codablock/pr_llmq_optimizations2
Optimize LLMQs initialization and (de)serialization of BLS signatures
2019-02-16 15:50:23 +01:00
Alexander Block
d7bd0954f3 Use pipe() together with fcntl instead of pipe2()
pipe2 is not supported on MacOS
2019-02-15 16:30:42 +01:00
Alexander Block
742a258987 Implement caching in CRecoveredSigsDb
To avoid repeated calls into LevelDB
2019-02-15 15:52:51 +01:00
Alexander Block
500b9c89a7 Use CBLSLazySignature in CBatchedSigShares
This removes the burden on the message handler thread when many sig batches
arrive. The expensive part of deserialization is now performed in the sig
shares worker thread.

This also removes the need for the specialized deserialization of the sig
shares which tried to avoid the malleability check, as CBLSLazySignature does
not perform malleability checks at all.
2019-02-15 15:44:19 +01:00
Alexander Block
02b68885a0 Implement CBLSLazySignature for lazy serialization/deserialization
In some cases it takes too much time to perform full deserialization of
BLS signatures in the message handler thread. Better to just read the
buffer and do the actual deserialization when the signature is needed for
the first time (which is can be in another thread).
2019-02-15 15:44:02 +01:00
Alexander Block
6e8f50aa55 Faster default-initialization of BLS primitives by re-using the null-hash 2019-02-15 15:43:51 +01:00
Alexander Block
c03480d20f Disable optimistic sending when pushing sig share related messages
And instead let the network thread do the actual sending.
2019-02-15 15:20:15 +01:00
Alexander Block
acb87895f8 Implement WakeupSelect() to allow preliminary wakeup after message push
This adds the reading side of a pipe to the read-set when calling select().
Writing to the writing side of the pipe then causes select() to wake up
immediately. Otherwise it would wait for the timeout of 50ms, even if there
is data that could possibly be sent.

This is useful when many messages need are pushed with optimistic send being
disabled. After all messages have been pushed, WakeSelect() can then wakeup
the select() thread and force a re-check for pending data to send.

This is currently only implemented for POSIX compliant systems as we assume
that heavy-load daemons (like masternodes) are usually run on Linux.
2019-02-15 15:19:59 +01:00
Alexander Block
cf29320988 Allow to disable optimistic send in PushMessage()
Profiling has shown that optimistic send causes measurable slowdowns when
many messages are pushed, even if the sockets are non-blocking. Better to
allow disabling of optimistic sending in such cases and let the network
thread do the actual socket calls.
2019-02-15 15:19:36 +01:00
UdjinM6
bedfc262e2 Rework handling of CSigSharesManager worker thread (#2703) 2019-02-15 15:11:50 +01:00
UdjinM6
3e4286a584 Less cs_main locks in quorums (#2702)
* Drop cs_main from CQuorumManager::UpdatedBlockTip()

* CLLMQUtils::IsQuorumActive() shouldn't require cs_main to be held

* Revert comment deletion
2019-02-15 15:11:35 +01:00
Alexander Block
3bbc75fc48 Reintroduce spork15 so that it's relayed by 0.14 nodes (#2701) 2019-02-14 21:24:06 +03:00
Alexander Block
b71a3f48da Remove not used and not implemented methods from net.h (#2700) 2019-02-12 22:52:18 +03:00
Alexander Block
c0cb274659 Fix incorrect usage of begin() when genesis block is requested in "protx diff" (#2699)
* Fix incorrect usage of begin() when genesis block is requested in "protx diff"

.begin() on mapBlockIndex does NOT return the genesis block, but just the
block with lowest hash.

The fix is to use chainActive[0] to get the genesis block.

* Update src/evo/simplifiedmns.cpp

Co-Authored-By: codablock <ablock84@gmail.com>
2019-02-12 22:52:06 +03:00
UdjinM6
b239bb24a0
Do not process blocks in CDeterministicMNManager before dip3 activation (#2698)
* Do not process blocks in CDeterministicMNManager before dip3 activation

This should save us some cpu/disk on initial sync/reindex

* Write initial snapshot on dip3 activation
2019-02-12 22:51:50 +03:00
UdjinM6
86fc050495
Drop no longer used code and bump min protos (#2697)
* Drop registry deletion of the old key

* Drop no longer used CGovernanceObjectVoteFile::RemoveOldVotes()

* Drop temporary disconnect code and bump min protos to 70213

* drop comment

* fix
2019-02-12 22:51:21 +03:00
UdjinM6
fef8e5d45f
A small overhaul of the way MN list/stats UI and data are tied together (#2696)
* Do not access wallet directly from masternodelist ui, use wallet model instead

* Don't access deterministicMNManager from UI directly, use client model instead

* Send just a general signal to UI elements when mn list has changed and let them handle it in their specific ways

* Drop mn list update timers and use signals instead

* some cleanup

* Move initial UI update to init.cpp

* Refactor getMasternodeList()

* Rename setMasternodeCount to updateMasternodeCount

* Drop legacy code in comments

* Drop NotifyMasternodeListChanged from uiInterface and use NotifyBlockTip instead
2019-02-12 22:51:03 +03:00
UdjinM6
709ab6d3e0
Minimal fix for litemode vs bad-protx-key-not-same issue (#2694) 2019-02-12 22:50:22 +03:00
UdjinM6
da5a861c0f Change the way invalid ProTxes are handled in addUnchecked and existsProviderTxConflict (#2691)
* Invalid ProTxes should never reach addUnchecked

* Invalid ProTxes should not cause existsProviderTxConflict to crash
2019-02-06 17:58:20 +01:00
Alexander Block
6ada90c11c Call existsProviderTxConflict after CheckSpecialTx (#2690)
Otherwise we might end up passing and invalid proTx into it, causing
assertions to fail and thus crash the process.
2019-02-06 17:58:18 +01:00
UdjinM6
00f904ec77 Change the way invalid ProTxes are handled in addUnchecked and existsProviderTxConflict (#2691)
* Invalid ProTxes should never reach addUnchecked

* Invalid ProTxes should not cause existsProviderTxConflict to crash
2019-02-06 17:57:27 +01:00
Alexander Block
5478183e7e
Call existsProviderTxConflict after CheckSpecialTx (#2690)
Otherwise we might end up passing and invalid proTx into it, causing
assertions to fail and thus crash the process.
2019-02-06 17:54:10 +01:00
UdjinM6
23eb70cb77 Add getspecialtxes rpc (#2668)
* Add getspecialtxes rpc

Returns an array of special transactions found in the specified block

* small help text tweak

* add comments
2019-02-06 11:27:48 +01:00
Alexander Block
34dee23386
Merge pull request #2685 from codablock/pr_v13_backports
[0.13.x] Backport multiple PRs from develop
2019-02-06 06:11:43 +01:00
UdjinM6
bd0de48762 Bump version to 0.13.1 (#2686) 2019-02-06 06:11:16 +01:00
UdjinM6
023f8a01ae Fix bench log for payee and special txes (#2678) 2019-02-05 20:57:35 +01:00
Wladimir J. van der Laan
1be5a72a97
Merge #9853: Fix error codes from various RPCs
adaa281 Update release notes to include RPC error code changes. (John Newbery)
338bf06 Add commenting around JSON error codes (John Newbery)
dab804c Return correct error codes in fundrawtransaction(). (John Newbery)
a012087 Return correct error codes in setban(). (John Newbery)
960bc7f Return correct error codes in removeprunedfunds(). (John Newbery)
c119096 Return correct error codes in blockchain.cpp. (John Newbery)
6d07c62 Return correct error codes in bumpfee(). (John Newbery)

Tree-SHA512: 4bb39ad221cd8c83d98ac5d7ad642f3a8c265522720dc86b2eebc70e74439a85b06d6ddcd6a874e879d986511de3ab0878bb7fe58b50cb0546b78913632ea809
2019-02-05 13:40:40 -06:00
Wladimir J. van der Laan
1bfc069e34
Merge #9575: Remove unused, non-working RPC PostCommand signal
54fae05 Remove unreachable code (g_rpcSignals.PostCommand) (practicalswift)

Tree-SHA512: b416d63ffa1c35fa0434b6bc0a930ae1b04919a12114ef65154ce4621aa43d744eb4fc515f48eac2e96c0f528cedb4cdbe2349952d215c2c74e900a63e155e0a
2019-02-05 13:40:37 -06:00
MarcoFalke
e53da66b2b
Merge #9936: [trivial] Fix three typos introduced into walletdb.h in commit 7184e25
fdab309 [trivial] Fix typos introduced in 7184e25c80aa8b1629a700bb7a7e290ad0bb2792 (practicalswift)

Tree-SHA512: 091666f996267fc5d9f911e6ff25051df5c198851a9c2a6cae73692ffacc64f4275932260487aa48a224ca7f80c58f79933065c72d42aeccae540293c67bcee9
2019-02-05 13:40:35 -06:00
MarcoFalke
2121ba7764
Merge #9945: Improve logging in bctest.py if there is a formatting mismatch
6c1fb73 Improve logging in bctest.py if there is a formatting mismatch (John Newbery)

Tree-SHA512: ef33f4766df92a987cd714d73b98277616ff947ad0e43811013dda668e31464062816480bd654865231d56d37fb4d6e4ccdccbcb2f0e2f01f49572b843a232ae
2019-02-05 13:40:33 -06:00
Wladimir J. van der Laan
b1d64f3a14
Merge #9548: Remove min reasonable fee
ad82cb0 Remove unnecessary min fee argument in CTxMemPool constructor (Alex Morcos)
2a7b56c CBlockPolicyEstimator now uses hard coded minimum bucket feerate (Alex Morcos)
ac9d3d2 Change fee estimation bucket limit variable names (Alex Morcos)

Tree-SHA512: 6e3bc7df3497ed60c7620845d222063e33a0238020f5c3316e61e0eff758078588ea8dd51196ceb59aa561ba106f8cdae62cebe521adb3247108bb49f15252d6
2019-02-05 13:40:31 -06:00
Wladimir J. van der Laan
1c08f9a5f5
Merge #9369: Factor out CWallet::nTimeSmart computation into a method.
630fc54 Clean up braces in CWallet::ComputeTimeSmart (Russell Yanofsky)
6c996c2 Add documentation describing CWallet::nTimeSmart. (Russell Yanofsky)
1f98abe Factor out CWallet::nTimeSmart computation into a method. (Russell Yanofsky)
c6b82d1 Add tests for CWalletTx::nTimeSmart (Russell Yanofsky)

Tree-SHA512: 457a30251e572cf20dac0198af1a94128d269b1e0ce6605a213d56fc14d85c84a0a494e3dcbb18c201c4f39e6f7b000bd9cb6f283930d8452e4bb93ba406f8d4
2019-02-05 13:40:19 -06:00
Pasta
9a3067115f
fix compile error caused by #9605 2019-02-05 13:39:00 -06:00
Alexander Block
8961a6acc0 Stop checking MN protocol version before signalling DIP3 (#2684) 2019-02-05 15:47:28 +01:00
Alexander Block
7e4257254c
Allow to override llmqChainLocks with "-llmqchainlocks" on devnet (#2683) 2019-02-05 15:46:05 +01:00
Alexander Block
bed57cfbf6
Stop checking MN protocol version before signalling DIP3 (#2684) 2019-02-05 15:45:54 +01:00
UdjinM6
e189163865 Add missing help text for operatorPayoutAddress (#2679) 2019-02-05 08:36:40 +01:00
Alexander Block
0d8cc0761c Invoke CheckSpecialTx after all normal TX checks have passed (#2673)
Otherwise duplicate-keys checks for deterministic masternodes triggers
for duplicate/identical transactions.
2019-02-05 07:53:49 +01:00
UdjinM6
592210dafc Bump block stats when adding commitment tx into block (#2654) 2019-02-05 07:53:09 +01:00
UdjinM6
070ad103ff Wait for script checks to finish before messing with txes in Dash-specific way (#2652)
Benchmark Dash part while at it
2019-02-05 07:52:48 +01:00
UdjinM6
3a3586d5a3 Use helper function to produce help text for params of protx rpcs (#2649)
* Adjust help text of `register*` rpc commands

Copy/paste help for various fields of `register`/`register_prepare` instead of referring to `register_fund`
Adjust description of provided functionality and expected results

* Adjust whitespaces to match in different protx commands

* Add missing results descriptions

* Introduce new helper function GetHelpString to concentrate most of param descriptions in rpcevo in one place

* [MOVEONLY] Move GetHelpString out of #ifdef ENABLE_WALLET/#endif

* static const
2019-02-05 07:52:20 +01:00
UdjinM6
332e0361c7 Add checkbox to show only masternodes the wallet has keys for (#2627) 2019-02-05 07:35:54 +01:00
Wladimir J. van der Laan
8d249d4dff Merge #9605: Use CScheduler for wallet flushing, remove ThreadFlushWalletDB
0235be1 Rename FlushWalletDB -> CompactWalletDB, add function description (Matt Corallo)
735d9b5 Use CScheduler for wallet flushing, remove ThreadFlushWalletDB (Matt Corallo)
73296f5 CScheduler boost->std::function, use millisecs for times, not secs (Matt Corallo)

Tree-SHA512: c04f97beab65706c444c126be229d02887df9b0972d8fb15ca1f779ef0e628cf7ecef2bf533c650d9b44645b63e01de22f17266a05907e778938d64cc6e19de6
2019-02-04 19:58:19 -06:00
MarcoFalke
31267f4c8a Merge #9555: [test] Avoid reading a potentially uninitialized variable in tx_invalid-test (transaction_tests.cpp)
8455e36 [test] Avoid reading a potentially uninitialized variable in tx_invalid-test (practicalswift)

Tree-SHA512: 1064cdd5c9e4612a05397a5880535d93dbb18dec4897b4bbda9e6ad78d30f4c72303e4d23159398f1b33545ff5819e739e374d7cde757e402b26c355268a2319
2019-02-04 19:58:13 -06:00
Wladimir J. van der Laan
a31b2de7ac Merge #9906: Disallow copy constructor CReserveKeys
188f89c Disallow copy of CReserveKeys (Gregory Sanders)

Tree-SHA512: e55ce10bf7f2dc91de9797e60ab7767fb51f25255995d62ddf358c52b7aaa23c26fbfb522e1610ff950b86804ddbc38dc0d7708bfab2c4d33ad99a275d8c77db
2019-02-04 19:58:11 -06:00
Wladimir J. van der Laan
29bbfc58fe Merge #8574: [Wallet] refactor CWallet/CWalletDB/CDB
7184e25 [Wallet] refactor CWallet/CWalletDB/CDB (Jonas Schnelli)

Tree-SHA512: a1993dcfc3505459613e8be3f6560ef32466fd7c649bff358f12af118e633aadd648a090f4af60743a827c9cb624e4ec63eb0202326da4779fc18249bb77da1e
2019-02-04 19:57:56 -06:00
Alexander Block
67a86091aa Implement and use secure BLS batch verification (#2681)
* Implement secure verification in bls_batchverifier

* Rename CBLSInsecureBatchVerifier to CBLSBatchVerifier

* Add unit tests for simple BLS verifcation and CBLSBatchVerifier
2019-02-04 21:58:28 +03:00
UdjinM6
d343bfa520
Merge pull request #2647 from PastaPastaPasta/backports-0.15-pr5
Backports 0.15 pr5
2019-02-04 21:58:02 +03:00
Amir Abrams
e2ae2ae638 Update misspelled Synchronizing in GetSyncStatus (#2680) 2019-02-04 12:52:49 +03:00
UdjinM6
721965990a
Add missing help text for operatorPayoutAddress (#2679) 2019-02-04 12:52:24 +03:00
UdjinM6
68c0de4ba1
Do not send excessive messages in governance sync (#2124)
No need to send gobject inv for a single gobject, the other node already knows it, so send votes only.
Also, no need to send "fake" stats like "0 votes" when syncing gobjects and "1 object" when syncing votes.
Rename functions accordingly.
2019-02-04 12:51:37 +03:00
UdjinM6
09e71de808
Fix bench log for payee and special txes (#2678) 2019-02-02 03:09:03 +03:00
Alexander Block
03fa115503 Speed up CQuorumManager::ScanQuorums (#2677)
* Store quorumHash of first mined commitment in evoDb

This allows to skip scanning for quorums below this block.

* Speed up CQuorumManager::ScanQuorums

This does 2 things:
1. Only call HasQuorum for blocks that are potentially a quorumBlockHash
   These are only blocks which are at index 0 of each DKG interval
2. Stop scanning for quorums when we get below the first block that
   contained a commitment. If no commitment was ever mined, we bail out
   immediately.

* Return result instead of {}

* Remove HasQuorum() call as GetQuorum already does this

* Remove unnecessary "if (!qc.IsNull()))"

It's already checked at the top of the loop

* When necessary, remove DB_FIRST_MINED_COMMITMENT from evoDb in UndoBlock
2019-02-02 03:08:51 +03:00
Wladimir J. van der Laan
501227deef
Merge #9333: Document CWalletTx::mapValue entries and remove erase of nonexistent "version" entry.
87ed396 [trivial] Add comment documenting bumpfee mapValues (Russell Yanofsky)
a1fe944 Remove reference to nonexistent "version" wallet transaction mapvalue field (Russell Yanofsky)
654e044 [trivial] Add comment documenting CWalletTx::mapValue (Russell Yanofsky)

Tree-SHA512: 1fd1860e345c59b13634db2007fff4ba30aaf1f177fdd765f47bf9257fac117cdcd5d491424416da304c08e85effbb27f3424f072f7c9587ef39cb98531b932a
2019-02-01 10:51:03 -06:00
Wladimir J. van der Laan
a61b747a29
Merge #9547: bench: Assert that division by zero is unreachable
db07f91 Assert that what might look like a possible division by zero is actually unreachable (practicalswift)

Tree-SHA512: f1652eb37196a5b72f356503a1fbb44fb98aa8a94954ad1765f86d81ebf41a2337d4eb58c4f19937fda3752f5d2d642756e44afdbd438015b87ac20801246bff
2019-02-01 10:51:01 -06:00
Alexander Block
088525bde3 Multiple fixes for LLMQs and BLS batch verification (#2674)
* Check aggPubKey for IsValid() instead of aggSig

aggSig is not reliable here as it might already be initialized by the
previous message.

* Significantly reduce sleep time for each DKG phase

Turns out the DKG is much faster then expected, and waiting multiple
minutes for each phase in a devnet is not much fun.

* Correctly use SIGN_HEIGHT_OFFSET when checking for out of bound height

* Introduce startBlockHeight to make things more explicit
2019-02-01 12:07:21 +03:00
UdjinM6
ae70e8a344
Fix negative "keys left since backup" (#2671) 2019-02-01 12:07:03 +03:00
UdjinM6
2a330f17ac
Fix endless wait in RenameThreadPool (#2675) 2019-02-01 10:49:31 +03:00
Alexander Block
1400df2e58 Invoke CheckSpecialTx after all normal TX checks have passed (#2673)
Otherwise duplicate-keys checks for deterministic masternodes triggers
for duplicate/identical transactions.
2019-02-01 10:49:18 +03:00
Alexander Block
18950f923e Optimize DKG debug message processing for performance and lower bandwidth (#2672)
* Allow sub-batch verification in CBLSInsecureBatchVerifier

* Implement batch verification of CDKGDebugStatus messages

* Use uint8_t for statusBitset in CDKGDebugMemberStatus and CDKGDebugSessionStatus

No need to waste one byte per member and per LLMQ type.

* Reserve 4k of buffer for CSerializedNetMsg buffer

Profiling has shown that a lot of time is spent in resizing the data
vector when large messages are involved.

* Remove nHeight from CDKGDebugStatus

This field changes every block and causes all masternodes to propagate
its status for every block, even if nothing DKG related has changed.

* Leave out session statuses when we're not a member of that session

Otherwise MNs which are not members of DKG sessions will spam the network

* Remove receivedFinalCommitment from CDKGDebugSessionStatus

This is not bound to a session and thus is prone to spam the network when
final commitments are propagated in the finalization phase.

* Add "minableCommitments" to "quorum dkgstatus"

* Hold cs_main while calling GetMinableCommitment

* Abort processing of pending debug messages when spork18 gets disabled

* Don't ask for debug messages when we've already seen them

"statuses" only contains the current messages but none of the old messages,
so nodes kept re-requesting old messages.
2019-02-01 10:49:01 +03:00
Wladimir J. van der Laan
4615da99fb
Merge #9576: [wallet] Remove redundant initialization
343ba8f [wallet] Remove redundant initialization (practicalswift)

Tree-SHA512: 54b94d7703b1735cb1ae0bd7eba61ca9d2f18e20b70e46c94aa3b0653495dce4fdea00cf953ec08215b96b5792eabb8b38c3f9b3cd36e52b82fcb2f1fd8a3540
2019-02-01 00:41:24 -06:00
Wladimir J. van der Laan
8dfddf503c
Merge #9910: Docs: correct and elaborate -rpcbind doc
e5b449c Docs: correct and elaborate -rpcbind doc (Ian Kelling)

Tree-SHA512: e1cdaa32f7248f304d463e3f37d7d5da23ee0e506bd453420b87f4cc9c704cc30214e41c9266294890d65f2ee270f9355f38b542e8c01452637bdbba8273c755
2019-02-01 00:41:18 -06:00
Wladimir J. van der Laan
395b537167
Merge #9774: Enable host lookups for -proxy and -onion parameters
f36bdf0 Enable host lookups for -proxy and -onion parameters (Johnathan Corgan)

Tree-SHA512: 40f5ef3954721333e58d34653874d9f6ac5426c817762d132838f3b6f968ca5ca05aa56d02fd742cb5a8dc040f1a28dad6d54f667342eceba62fb2af18b58fc0
2019-02-01 00:41:16 -06:00
Wladimir J. van der Laan
2c3dde75c2
Merge #9828: Avoid -Wshadow warnings in wallet_tests
09fe346 Avoid -Wshadow warnings in wallet_tests (Russell Yanofsky)

Tree-SHA512: 03a026787438efc9eba94299c2dd7de07a71ec7363b058b4f086d5ff0be844660fff2ef4f40e43d91313ea53de25f3de3c677b080b564d37f0693057498d3233
2019-02-01 00:41:14 -06:00
Wladimir J. van der Laan
3d3443b6a9
Merge #8808: Do not shadow variables (gcc set)
ad1ae7a Check and enable -Wshadow by default. (Pavel Janík)
9de90bb Do not shadow variables (gcc set) (Pavel Janík)

Tree-SHA512: 9517feb423dc8ddd63896016b25324673bfbe0bffa97f22996f59d7a3fcbdc2ebf2e43ac02bc067546f54e293e9b2f2514be145f867321e9031f895c063d9fb8
2019-02-01 00:41:12 -06:00
Wladimir J. van der Laan
053b97c945
Merge #9903: Docs: add details to -rpcclienttimeout doc
90a1d9a Docs: add details to -rpcclienttimeout doc (Ian Kelling)

Tree-SHA512: 7f9524f279a54b4d902674740d92624785abd54865aba82f7261151ceda50b5d51bf4d91c4fc0360168e190f8df890cc141bea5e1a9f4f2e62b8f9effda212cc
2019-02-01 00:41:09 -06:00
UdjinM6
5d1c97da1b
Add getspecialtxes rpc (#2668)
* Add getspecialtxes rpc

Returns an array of special transactions found in the specified block

* small help text tweak

* add comments
2019-01-30 21:53:22 +03:00
Alexander Block
ca6c8f5471 Add missing default value for SPORK_19_CHAINLOCKS_ENABLED (#2670) 2019-01-30 21:53:03 +03:00
Alexander Block
6da341379d Use smaller LLMQs for ChainLocks on testnet and devnet (#2669)
* Move llmqChainLocks initialization closer to other LLMQ related assignments

* Use smaller LLMQs for ChainLocks on testnet and devnet

We very often don't have enough MNs on testnet so we should use a smaller
quorum quorum for ChainLocks.
2019-01-30 21:52:41 +03:00
Alexander Block
54f576ea7c
Fix LLMQ related test failures on Travis (#2666)
* Use fast_dip3_enforcement instead of fast_dip3_activation

DashTestFramework was refactored before ChainLocks got merged, causing tests
to fail now.

* Move updating of DKG debug status into WaitForNextPhase

Otherwise callers of the RPCs might believe that the next phase has already
started and start producing more blocks, which would then cancel the
current session if it happens faster than the phase handler thread can
progress to the next phase.
2019-01-30 14:05:22 +01:00
Alexander Block
6fe479aa12
Don't leak skShare in logs (#2662) 2019-01-30 14:05:04 +01:00
Alexander Block
f6828b19b6
Merge pull request #2643 from codablock/pr_llmq_chainlocks
Implement LLMQ based ChainLocks
2019-01-29 15:59:05 +01:00
UdjinM6
559bdfc6ef ProcessSpecialTxsInBlock should respect fJustCheck (#2653)
* ProcessSpecialTxsInBlock should respect fJustCheck

Also invoke it after subsidy/payee checks

* Drop fJustCheck from CQuorumBlockProcessor
2019-01-29 15:57:30 +01:00
UdjinM6
805aeaa16c Drop cs_main from UpdatedBlockTip in CDKGSessionManager/CDKGSessionHandler (#2655) 2019-01-29 15:55:18 +01:00
UdjinM6
2a4fbb6e48 Bump block stats when adding commitment tx into block (#2654) 2019-01-29 15:54:57 +01:00
UdjinM6
25cb14b615 Fix confusion between dip3 activation and enforcement (#2651)
* Fix confusion between dip3 activation and enforcement

* drop DIP0003ActivationHeight for now
2019-01-29 15:54:38 +01:00
UdjinM6
70a9e905c2 Use helper function to produce help text for params of protx rpcs (#2649)
* Adjust help text of `register*` rpc commands

Copy/paste help for various fields of `register`/`register_prepare` instead of referring to `register_fund`
Adjust description of provided functionality and expected results

* Adjust whitespaces to match in different protx commands

* Add missing results descriptions

* Introduce new helper function GetHelpString to concentrate most of param descriptions in rpcevo in one place

* [MOVEONLY] Move GetHelpString out of #ifdef ENABLE_WALLET/#endif

* static const
2019-01-29 15:54:01 +01:00
PastaPastaPasta
f123248f1c update copyright (#2648)
* update copyright

* Update copyright in configure.ac and COPYING
2019-01-29 15:53:14 +01:00
Alexander Block
15e1c3b080
Merge pull request #2646 from PastaPastaPasta/backports-0.15-pr4
Backports 0.15 pr4
2019-01-29 15:52:03 +01:00
Alexander Block
45391b4f08
Merge pull request #2609 from PastaPastaPasta/backports-0.15-pr3
Backports 0.15 pr3
2019-01-29 15:51:15 +01:00
UdjinM6
d398bf0527
reverse order from jsonRequest, strSubCommand
Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>
2019-01-28 10:47:36 -06:00
Alexander Block
3237668b1d Rename inInvalidate->inEnforceBestChainLock and make it atomic 2019-01-28 12:24:15 +01:00
Alexander Block
5033d5ef4a Don't check for conflicting ChainLocks when phashBlock is not set
Also don't set indexDummy.phashBlock in TestBlockValidity anymore.
2019-01-28 12:24:15 +01:00
Alexander Block
3413ff917b Add info about ChainLocks to block and transaction RPCs 2019-01-28 12:24:15 +01:00
Alexander Block
135829dc49 Add SPORK_19_CHAINLOCKS_ENABLED 2019-01-28 12:24:15 +01:00
Alexander Block
29532ba196 Implement and enforce ChainLocks 2019-01-28 12:24:15 +01:00
Alexander Block
2bf6eb1c7c Track parent->child relations for blocks
Allows to cheaply find all possible children of a block.
2019-01-28 12:24:15 +01:00
Alexander Block
04a51c9ef4 Use a block that is 8 blocks in the past for SelectQuorumForSigning
Otherwise nodes might already fail to verify sigs when just 1 block away
from the tip.
2019-01-28 12:24:15 +01:00
Alexander Block
cf33efc9e1 Move SelectQuorumForSigning into CSigningManager and make it height based 2019-01-28 12:24:15 +01:00
Alexander Block
4026ea203b Implement VerifyRecoveredSig to allow verifcation of sigs found in P2P messages 2019-01-28 12:24:15 +01:00
Alexander Block
9f211ef12d Add listener interface to listen for recovered sigs 2019-01-28 12:24:15 +01:00
Alexander Block
189cee2108 Don't pass poolSize to SelectQuorum and instead use consensus params 2019-01-28 12:24:15 +01:00
Alexander Block
13855674d7 Add missing new-line character in log output 2019-01-28 12:24:15 +01:00
UdjinM6
d31edf66ad Wait for script checks to finish before messing with txes in Dash-specific way (#2652)
Benchmark Dash part while at it
2019-01-28 12:23:59 +01:00
UdjinM6
2c477b0d41 Fix no_wallet for rpcmasternode/rpcevo 2019-01-25 15:50:22 -06:00
Pasta
fc00b7baea
add import to rpcevo fixing backport 8775 2019-01-25 07:11:21 -06:00
UdjinM6
30b03863ee
Apply suggestions from code review #2646
Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>
2019-01-25 07:06:59 -06:00
Pasta
c70aa60792 change #8775 to keep dash codebase improvement, but still backport #9908 2019-01-24 22:28:32 -06:00
Wladimir J. van der Laan
afdb0a2677 Merge #9908: Define 7200 second timestamp window constant
e57a1fd Define 7200 second timestamp window constant (Russell Yanofsky)

Tree-SHA512: 449d20e4fd23905cd96be36f717c55a0a2360aba1002aaf55a3699cce4a41f6e94acc2fbe511a93c5cbe8f8e68386995a76cad67620ebb66ba9283e6080ab567
2019-01-24 22:28:29 -06:00
Pasta
c094d4bbe6 fix #8775 backport 2019-01-24 22:28:27 -06:00
Pasta
f9147466f3 remove other rpc references to pwalletMain 2019-01-24 22:28:18 -06:00
Pasta
d7474fd56f remove all references to pwalletMain in rpc folder 2019-01-24 22:28:16 -06:00
Wladimir J. van der Laan
87af117811 Merge #8775: RPC refactoring: Access wallet using new GetWalletForJSONRPCRequest
d678771 Wallet: Sanitise -wallet parameter (Luke Dashjr)
9756be3 Wallet/RPC: Use filename rather than CWallet pointer, for lockwallet RPCRunLater job name (Luke Dashjr)
86be48a More tightly couple EnsureWalletIsAvailable with GetWalletForJSONRPCRequest where appropriate (Luke Dashjr)
a435632 Move wallet RPC declarations to rpcwallet.h (Luke Dashjr)
ad15734 RPC: Pass on JSONRPCRequest metadata (URI/user/etc) for "help" method (Luke Dashjr)
bf8a04a Reformat touched lines with C++11 (Luke Dashjr)
2e518e3 Move nWalletUnlockTime to CWallet::nRelockTime, and name timed task unique per CWallet (Luke Dashjr)
d77ad6d RPC: Do all wallet access through new GetWalletForJSONRPCRequest (Luke Dashjr)
eca550f RPC/Wallet: Pass CWallet as pointer to helper functions (Luke Dashjr)

Tree-SHA512: bfd592da841693390e16f83b451503eb5cedb71208089aa32b3fc45e973555584a3ed7696dd239f6409324464d565dacf0f3d0e36e8e13ae6a7843848465f960
2019-01-24 22:28:13 -06:00
UdjinM6
1fa7f7e743
stop test failures
Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>
2019-01-23 16:43:32 -06:00
UdjinM6
444f671abb
Update src/miner.cpp
Co-Authored-By: PastaPastaPasta <pasta@dashboost.org>
2019-01-23 16:15:44 -06:00
Pasta
5147699404
fix 9868 2019-01-23 15:40:29 -06:00
Alexander Block
7ee31cbd65 Speed up integration tests with masternodes (#2642)
* Implement copy_datadir to allow easy copying of state from one node to another

* Instead of starting with a fresh datadir for MNs, reuse a copy of the faucet

* Start masternodes in parallel instead of waiting for the previous to finish

* Allow specifying of window and threshold with -bip9params

* Implement -dip3activationheight for regtests

* Implement fast DIP3 activation in DashTestFramework

* Speed up activation of DIP3 in dip3-deterministicmns.py

* Update qa/rpc-tests/test_framework/test_framework.py

Co-Authored-By: codablock <ablock84@gmail.com>

* Always assign fast_dip3_activation
2019-01-23 19:36:51 +03:00
UdjinM6
fda16f1fea
Fix off-by-1 in phase calculations and the rest of llmq-signing.py issues (#2641)
* Fix off-by-1 in phase calculations

* Fix wait_for_quorum_phase, should look for check_received_messages

* Fix wait_for_quorum_phase for complain phase

* Bump default timeout in wait_for_quorum_phase/wait_for_quorum_commitment to 15
2019-01-23 17:02:56 +03:00
Alexander Block
b595f9e6a1 Fix LLMQ signing integration tests (#2640)
* Fix cleanup of old recovered sigs

When iterating the db, we should also include entries that match exactly
the end time.

* Fix key not found error

* Raise AssertionError in case wait_for_quorum_phase/wait_for_quorum_commitment time out
2019-01-23 11:37:02 +03:00
UdjinM6
5977486897
Bring back ResetLocalSessionStatus call (#2639)
It was dropped accidentally on refactoring.
2019-01-23 11:34:31 +03:00
Wladimir J. van der Laan
682a3b993b
Merge #9904: test: Fail if InitBlockIndex fails
6485466 test: Report InitBlockIndex result (Wladimir J. van der Laan)

Tree-SHA512: 8e1408aa8d56ec1873190f886af24aa68b0555ec4996b2b8a5a39a51ded58c8fba5843c07881ed33ab6dcb00e62c2322bcf2a6fb8f1083f77e0d93e7295ab938
2019-01-22 22:57:40 -06:00
MarcoFalke
55a656c24c
Merge #9359: Add test for CWalletTx::GetImmatureCredit() returning stale values.
7ed143c Add test for CWalletTx::GetImmatureCredit() returning stale values. (Russell Yanofsky)

Tree-SHA512: c95088ed6dfc5a0774ddaa2fe14ac0a9ebd830922a4d77100ec3d51fdeb6df40ad97de4f2ea970ed0f4122dcc0022ee1d43ab3c7188becd7f90c1c6af0ed39b7
2019-01-22 22:57:37 -06:00
Pasta
68f6b43d15
fix #9143 backport 2019-01-22 22:57:33 -06:00
Wladimir J. van der Laan
bba55e262f
Merge #9143: Refactor ZapWalletTxes to avoid layer violations
0165a56 Refactor ZapWalletTxes to avoid layer vialotions (Jonas Schnelli)

Tree-SHA512: 51e3abbb866185817d14d685a65cb1070a7a60aa3db692670f3a5fdd328aad59afa765c5a6b13d9e8f6d219e735487f8c87998f2fb38fdd911c1fe19bea373b9
2019-01-22 22:57:30 -06:00
Pasta
02f4661b3c
fix #9894 backport 2019-01-22 22:57:27 -06:00
Wladimir J. van der Laan
07b50aefa2
Merge #9894: remove 'label' filter for rpc command help
6665977 remove 'label' filter for rpc command help (Gregory Sanders)

Tree-SHA512: 0676c55b2893a469cd6785963affbb04126b9a32c130f1bb22dfd233ede6998f695187264e897ced4e0dac48451d9ae0311ebb4f7442096cad632fd22f75080e
2019-01-22 22:57:24 -06:00
Pasta
8035769d47
remove removed argument from #9834 2019-01-22 22:57:21 -06:00
Jonas Schnelli
904e56fb11
Merge #9834: qt: clean up initialize/shutdown signals
5b528d7 qt: clean up initialize/shutdown signals (Marko Bencun)

Tree-SHA512: 4a8326ba05a1cc037203a7abe01d4e77b6ff83e62ec14f09834ada4b35a23ffb1f28b5587aa2e02601f0f6c7d62c5647a7f10320239b4bac132791be29930ddb
2019-01-22 22:57:17 -06:00
Pasta
2df84c6f16
fix merge error from #9821 2019-01-22 22:57:13 -06:00
Wladimir J. van der Laan
21e00e9050
Merge #9821: util: Specific GetOSRandom for Linux/FreeBSD/OpenBSD
7e6dcd9 random: Add fallback if getrandom syscall not available (Wladimir J. van der Laan)
7cad849 sanity: Move OS random to sanity check function (Wladimir J. van der Laan)
aa09ccb squashme: comment that NUM_OS_RANDOM_BYTES should not be changed lightly (Wladimir J. van der Laan)
224e6eb util: Specific GetOSRandom for Linux/FreeBSD/OpenBSD (Wladimir J. van der Laan)

Tree-SHA512: 9fd408b1316c69de86674f342339b2f89192fd317c8c036b5df4320f828fa263c7966146bfc1904c51137ee4a26e4cb0f560b2cd05e18cde4d808b9b92ad15c4
2019-01-22 22:57:09 -06:00
Pasta
f9c585776b
manual fixes on #9868 2019-01-22 22:57:04 -06:00
Wladimir J. van der Laan
3ddf3dc62b
Merge #9868: Abstract out the command line options for block assembly
277b472 Run miner_tests with fixed options (Pieter Wuille)
48faf0b Abstract out BlockAssembler options (Pieter Wuille)

Tree-SHA512: 8e910904864c8653fb0358d820a4181d0496bdcbc3454c17a742af7505bfb59f7078c6d0faa9c753bdaf23b6d93d228a09913cc867fbddccd515483ebe7bfad0
2019-01-22 22:56:54 -06:00
Wladimir J. van der Laan
3977923553
Merge #9861: Trivial: Debug log ambiguity fix for peer addrs
6d37ee8 Trivial: Debug log ambiguity fix for peer addrs (keystrike)

Tree-SHA512: 9605f12bffd067427a206655c29b0b42689e9b28c313d1f6d6b0ef71351277b98b40f2e2a2ec0ac83c095a9f6f54e7a87762da400a56d2a833f8c2d14e5ac8d5
2019-01-22 22:56:05 -06:00
Wladimir J. van der Laan
8264e15cd4
Merge #9822: Remove block file location upgrade code
4b183d3 Remove block file location upgrade code (Marko Bencun)

Tree-SHA512: fac1fce95341e0df645c08c7e794195b22b54df08826aa8728f2f97aede1e42f724f8133781b97f836d4a392d044d08c846bce471a6b478582014f8be501a712
2019-01-22 22:55:58 -06:00
Wladimir J. van der Laan
f51d2e0947
Merge #9732: [Trivial] Remove nonsense #undef foreach
467df39 Remove nonsense #undef foreach (John Newbery)

Tree-SHA512: b8c3c6654eb8a9e5008a1923bee46f7ef9f8216c8f4f1b4662d82c26410ca8d8afe41e24e48a3e2e8b2a25c81c33795a4073dabfe357caf0aa820519d4fffc71
2019-01-22 22:55:54 -06:00
Wladimir J. van der Laan
3e10ff63f8
Merge #9867: Replace remaining sprintf with snprintf
19cafc6 test: Replace remaining sprintf with snprintf (Wladimir J. van der Laan)
0a17714 uint256: replace sprintf with HexStr and reverse-iterator (Wladimir J. van der Laan)

Tree-SHA512: 2ba1dd4d25e1cbfff4d67b2f483448aa7c34ab5c799cddd48ba5826e5fa6df425abe35e244aaf4c52db9fccfb4d2a25a14bb4597bf9d1fce95991f270da6bb26
2019-01-22 22:55:48 -06:00
MarcoFalke
0d38c16e79
Merge #9350: [Trivial] Adding label for amount inside of tx_valid/tx_invalid.json
988ce2d Adding 'amount' label to tx_valid/tx_invalid.json files (Chris Stewart)

Tree-SHA512: 11c216c6565ecaa5ff4eb6122f87d3b28f89db52d1e473c0678f61c240e133698adb05e717bfb9d3db36409dfb230b902dca4029a58633be36c9f85e0db3d973
2019-01-22 22:55:43 -06:00
UdjinM6
d2ddc2a008
A couple of fixes/refactorings for CDKGSessionHandler (#2637)
* Fix confusion: `quorumHash` is both a class member and an argument of a function

Rename `height` too while at it

* Make sure height and hash we pass to InitNewQuorum are related

* Don't update expectedQuorumHash, make it const

This also streamlines logic a bit

* Compact phase calculation

* Decouple invCs and cs_vPendingMasternodes

Not an issue atm but we'd better avoid any potential interlocking if possible

* wrap `%` in `()`

Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>
2019-01-22 16:33:42 +03:00
UdjinM6
b2b97f258f
Fix some strings, docs and cmd-line/rpc help messages (#2632)
* No need to translate "Dash"

* Fix missing dashification

* Update docs

* Fix cmd-line params help

- `bool` should have no `=<smth>`
- non-`bool` should have proper `<smth>`

* Fix `quorum dkgstatus` help

* add llmq/ into files.md
2019-01-22 16:33:20 +03:00
Alexander Block
e7981e468d Remove fLLMQAllowDummyCommitments from consensus params (#2636)
This should have been removed together with removal of the dummy DKG
2019-01-22 14:16:30 +03:00
Alexander Block
b0ad1425e2 Review fixes (mostly if/else related but no change in logic) 2019-01-22 05:32:56 +01:00
Alexander Block
c905f1fe10 Initialize g_connman before initializing the LLMQ system
Background threads of the LLMQ system use g_connman, so it should be
initialized before.
2019-01-21 15:22:38 +01:00
UdjinM6
b8d069bcdd fix/cleanup qt rpcnestedtests 2019-01-21 14:42:08 +01:00
Alexander Block
0cc1cf2798 Add receivedFinalCommitment flag to CDKGDebugSessionStatus 2019-01-21 14:42:08 +01:00
Alexander Block
23d7ed80d5 Implement "quorum sign/hasrecsig/isconflicting" RPCs 2019-01-21 14:42:08 +01:00
Alexander Block
316b6bf0de Faster re-requesting of recovered sigs
These are quite important and waiting for 2 minutes when the first peer
did not send it is not acceptable.
2019-01-21 14:42:08 +01:00
Alexander Block
c38f889e77 Implement processing, verifcation and propagation of signature shares 2019-01-21 14:42:08 +01:00
Alexander Block
43fd1b352f Implement CSigningManager to process and propagage recovered signatures 2019-01-21 14:42:08 +01:00
Alexander Block
56ee83a766 Add ReadDataStream to CDBWrapper to allow manual deserialization 2019-01-18 11:58:58 +01:00
Alexander Block
b6346a2f68 Implement CBLSInsecureBatchVerifier for convenient batch verification 2019-01-18 11:57:40 +01:00
Alexander Block
dd8f245888 Implement IsBanned to allow checking for banned nodes outside of net_processing.cpp 2019-01-17 18:51:48 +01:00
Alexander Block
49de417265 Implement CFixedVarIntsBitSet and CAutoBitSet 2019-01-17 18:51:48 +01:00
Alexander Block
b627528cef Use void as return type for WriteContributions 2019-01-17 15:25:43 +01:00
Alexander Block
edac100f5c Fix "quorum" RPCs help and unify logic in the sub-commands RPC entry point 2019-01-16 11:38:44 +01:00
Alexander Block
217f3941d5 Skip starting of cache populator thread in case we don't have a valid vvec 2019-01-16 10:07:47 +01:00
Alexander Block
679a9895b6 Add comments about why it's ok to ignore some failures 2019-01-16 10:07:47 +01:00
Alexander Block
15c34ccbd8 Implement CQuorum and CQuorumManager 2019-01-15 15:47:24 +01:00
UdjinM6
8e4fe3660e
[PrivateSend] Fallback to less participants if possible, fix too long timeouts on server side (#2616)
* Fallback to less participants on timeouts if possible

* Only bump nTimeLastSuccessfulStep when state is changed

* Consistency: always set state first before relaying smth to clients
2019-01-15 16:05:26 +03:00
UdjinM6
ee808d819a
Add checkbox to show only masternodes the wallet has keys for (#2627) 2019-01-15 15:46:02 +03:00
UdjinM6
000fabfcc6
Merge pull request #2630 from UdjinM6/mergemastertodevelop
Merge `master` into `develop`
2019-01-15 15:45:33 +03:00
UdjinM6
4671c989d3
Merge pull request #2617 from codablock/pr_llmq_dkg
Implement LLMQ DKG
2019-01-15 15:44:34 +03:00
UdjinM6
fff50af3c6 Revert "Set CLIENT_VERSION_IS_RELEASE to true (#2591)"
This reverts commit b5670c4753.
2019-01-14 20:36:57 +03:00
UdjinM6
2c88ba78d1 Merge branch 'master' into develop 2019-01-14 20:31:59 +03:00
Alexander Block
b5670c4753 Set CLIENT_VERSION_IS_RELEASE to true (#2591) 2019-01-14 11:56:13 +03:00
UdjinM6
a05eeb21ea
Update immer to c89819df92191d6969a6a22c88c72943b8e25016 (#2626) 2019-01-14 11:52:19 +03:00
Alexander Block
a22f1bffed
Remove support for "0" as an alternative to "" when the default is requested (#2622) (#2624)
* Remove support for "0" as an alternative to "" when the default is requested

* Update src/rpc/rpcevo.cpp

Co-Authored-By: codablock <ablock84@gmail.com>
2019-01-14 08:45:40 +01:00
Alexander Block
fed4716c0a
Remove support for "0" as an alternative to "" when the default is requested (#2622)
* Remove support for "0" as an alternative to "" when the default is requested

* Update src/rpc/rpcevo.cpp

Co-Authored-By: codablock <ablock84@gmail.com>
2019-01-12 14:17:16 +01:00
UdjinM6
8b7771a311 Add some consts 2019-01-11 13:45:32 +01:00
Alexander Block
0b1347c0d3 Pass self-created message to CDKGPendingMessages instead of processing them 2019-01-11 13:43:19 +01:00
UdjinM6
02c7932f49
Add owner and voting addresses to rpc output, unify it across different methods (#2618)
* Add `owneraddress` and `votingaddress` to json representation of provider txes and rpc output

* Rearrange/unify things a bit

* Add votingAddress to CSimplifiedMNListEntry json

* Use addresses in error messages too

* More unification

* Swap keyIDOwner/keyIDVoting with corresponding addresses in ToString()

* Drop keyIDOwner/keyIDVoting from json and rpc

* More unification: s/operatorRewardAddress/operatorPayoutAddress/

* More unification/cleanup: use specific name instead of just bitcoinAddress

* Fix dip3 test
2019-01-11 13:05:58 +03:00
UdjinM6
10b3736bd8
[0.13.0.x] Translations201901 (#2592)
* fix source files

* make translate: en strings

* ru

* fi

* vi

* pl

* bg, de, it, ko, nl, sk, tr, zh_CN

* es, th

* ar

dash_ar.ts: Mismatch between 'Are you sure you want to start masternode %1?' and 'هل أنت متأكد أنك تريد بدء ماسترنود 1%؟'
dash_ar.ts: Mismatch between 'Output debugging information (default: %u, supplying <category> is optional)' and 'معلومات تصحيح الخرج  <category>ا(ختياري)'

* ar, es, pt, tr

dash_ar.ts: Mismatch between 'Are you sure you want to start masternode %1?' and 'هل أنت متأكد أنك تريد بدء ماسترنود 1%؟'
dash_ar.ts: Mismatch between 'Output debugging information (default: %u, supplying <category> is optional)' and 'معلومات تصحيح الخرج

* fi

* fr, zh_TW

* ja
2019-01-11 12:54:38 +03:00
UdjinM6
18e1edabff
Backport 2618 to v0.13.0.x (#2619)
Add owner and voting addresses to rpc output, unify it across different methods.
Also fix keyid option in `masternode list` rpc.
2019-01-11 12:53:54 +03:00
Alexander Block
a3b01dfbe5 Gracefully shutdown on evodb inconsistency instead of crashing (#2611) (#2620) 2019-01-11 12:53:19 +03:00
Alexander Block
c948c0ff31 Fix help for optional parameters in "quorum dkgstatus" 2019-01-11 09:15:06 +01:00
Alexander Block
957652bf37 Fix help for "quorum dkgstatus" and remove support for "0" proTxHash 2019-01-11 09:12:17 +01:00
Alexander Block
b7b436b7d4 Apply review suggestions to rpcquorums.cpp 2019-01-11 07:35:57 +01:00
Alexander Block
3fe9910633 Drop unused overload of GetMasternodeQuorums 2019-01-11 07:31:54 +01:00
UdjinM6
5daeedabf0 Batched logger should not break log parsing
It's expected to have timestamp to be the first thing in every row if it's not a whitespace
2019-01-11 07:07:54 +01:00
Alexander Block
5958f8b81d Remove dkgRndSleepTime from consensus params and make sleeping it non-random 2019-01-10 07:07:58 +01:00
Alexander Block
0dae46c2fb Move RandBool() into random.h/cpp 2019-01-09 12:16:12 +01:00
Alexander Block
e1901d24aa Handle review suggestions 2019-01-09 12:16:12 +01:00
Alexander Block
352edbd33e Introduce SPORK_18_QUORUM_DEBUG_ENABLED to enable/disable LLMQ debug messages 2019-01-09 12:16:12 +01:00
Alexander Block
324406bfed Implement debugging messages and RPC for LLMQ DKGs 2019-01-09 12:16:12 +01:00
Alexander Block
098b094959 Pass scheduler to InitLLMQSystem 2019-01-09 12:16:12 +01:00
Alexander Block
6836f8c38b Implement LLMQ DKG 2019-01-09 12:16:12 +01:00
Alexander Block
318b598139 Prepare inter-quorum masternode connections 2019-01-09 12:16:11 +01:00
Alexander Block
4bf736f332 Add cxxtimer header only libraries
https://github.com/andremaravilha/cxxtimer
Commit: 7d208ebba79e85da8efae5a4b8996846a68bee0f
2019-01-09 12:16:11 +01:00
Alexander Block
c6be8cfcd6 Allow to skip malleability check when deserializing BLS primitives
Useful when many sigs need to be deserialized and at the same time the hash
of these is never used.
2019-01-09 12:16:11 +01:00
Alexander Block
9d25bb1d8f Add batched logger 2019-01-09 12:16:11 +01:00
Alexander Block
0df3871d14 Remove dummy DKG 2019-01-09 12:16:11 +01:00
UdjinM6
55f205eba1
A couple of fixes for masternode list rpc (#2615)
* fix payee

* add keyidowner/keyidvoting/pubkeyoperator ifields/filter to "json" option

* fix whitespaces
2019-01-08 13:36:35 +03:00
UdjinM6
fa18d3e102
More fixes for PrivateSend after 2612 (#2614)
* Fix CPrivateSendServer::IsSessionReady()

Also move it to cpp

* Make sure nSessionMaxParticipants is initialized properly

* Adjust logging

* adjust log a bit more
2019-01-08 13:36:12 +03:00
UdjinM6
bade332733
Fix 2612 (#2613) 2019-01-07 18:01:14 +03:00
PastaPastaPasta
5c5932eb93 [PrivateSend] Allow more than 3 mixing participants (#2612) 2019-01-07 13:21:10 +03:00
UdjinM6
0acfbf640d
Gracefully shutdown on evodb inconsistency instead of crashing (#2611) 2019-01-07 12:58:09 +03:00
PastaPastaPasta
07dcddb4ca Backports 0.15 pr2 (#2597)
* Merge #9815: Trivial: use EXIT_ codes instead of magic numbers

a87d02a use EXIT_ codes instead of magic numbers (Marko Bencun)

* Merge #9801: Removed redundant parameter from mempool.PrioritiseTransaction

eaea2bb Removed redundant parameter from mempool.PrioritiseTransaction (gubatron)

* remove extra parameter (see 3a3745bb) in dash specific code

* Merge #9819: Remove harmless read of unusued priority estimates

bc8fd12 Remove harmless read of unusued priority estimates (Alex Morcos)

* Merge #9766: Add --exclude option to rpc-tests.py

c578408 Add exclude option to rpc-tests.py (John Newbery)

* Merge #9577: Fix docstrings in qa tests

3f95a80 Fix docstrings in qa tests (John Newbery)

* Merge #9823: qa: Set correct path for binaries in rpc tests

3333ad0 qa: Set correct path for binaries in rpc tests (MarcoFalke)

* Merge #9833: Trivial: fix comments referencing AppInit2

ef9f495 Trivial: fix comments referencing AppInit2 (Marko Bencun)

* Merge #9612: [trivial] Rephrase the definition of difficulty.

dc222f8 Trivial: Rephrase the definition of difficulty in the code. (Karl-Johan Alm)

* Merge #9847: Extra test vector for BIP32

30aedcb BIP32 extra test vector (Pieter Wuille)

* Merge #9839: [qa] Make import-rescan.py watchonly check reliable

864890a [qa] Make import-rescan.py watchonly check reliable (Russell Yanofsky)

Tree-SHA512: ea0e2b1d4fc8f35174c3d575fb751b428daf6ad3aa944fad4e3ddcc9195e4f17051473acabc54203b1d27cca64cf911b737ab92e986c40ef384410652e2dbea1

* Change back file params
2019-01-07 12:55:35 +03:00
Alexander Block
7d58d87f43 Remove a few sporks which are not used anymore (#2607)
* Remove SPORK_8_MASTERNODE_PAYMENT_ENFORCEMENT

And always enforce payments.

* Remove SPORK_10_MASTERNODE_PAY_UPDATED_NODES and SPORK_10_MASTERNODE_PAY_UPDATED_NODES
2019-01-03 23:08:51 +03:00
Alexander Block
d1910eaff4 Refactor remains of CMasternode/-Man into CMasternodeMeta/-Man (#2606)
* Split up remaining logic from CMasternodeMan into CMasternodeMetaMan and CMasternodeUtils

Also get rid of CMastermode and store remaining meta info
in CMasternodeMetaInfo

* Also allow non-const T in Serialize/Unserialize for shared_ptr

* Rename CActiveDeterministicMasternodeManager to CActiveMasternodeManager

* Fix nowallet compile in masternode-utils.cpp
2019-01-03 23:08:34 +03:00
Alexander Block
cdc8ae9436 Don't hold CDeterministicMNManager::cs while calling signals (#2608)
This is causing potential deadlocks due to governance calling back into
CDeterministicMNManager but with a differnent lock order.
2019-01-03 15:24:28 +03:00
Alexander Block
968eb3fc5d Add real timestamp to log output when mock time is enabled (#2604)
* Implement IsMockTime to test for mock time

* Add real timestamp to log output when mock time is enabled

This makes debugging on Travis easier as it gives a hint about timing
behavior.
2019-01-03 12:21:19 +03:00
PastaPastaPasta
a49f4123e5 Backports 0.15 pr1 (#2590)
* Merge #9744: Remove unused module from rpc-tests

a432aa0 Remove unused module from rpc-tests (Takashi Mitsuta)

* Merge #9696: [trivial] Fix recently introduced typos in comments

0c9b9b7 [trivial] Fix recently introduced typos in comments (practicalswift)

* Merge #9657: Improve rpc-tests.py

a6a3e58 Various review markups for rpc-tests.py improvements (John Newbery)
3de3ccd Refactor rpc-tests.py (John Newbery)
afd38e7 Improve rpc-tests.py arguments (John Newbery)
91bffff Use argparse in rpc_tests.py (John Newbery)
1581ecb Use configparser in rpc-tests.py (John Newbery)

* Merge #9724: Qt/Intro: Add explanation of IBD process

f6d18f5 Qt/Intro: Explain a bit more what will happen first time (Luke Dashjr)
50c5657 Qt/Intro: Storage shouldn't grow significantly with pruning enabled (Luke Dashjr)
9adb694 Qt/Intro: Move sizeWarningLabel text into C++ code (Luke Dashjr)

* Merge #9794: Minor update to qrencode package builder

1bfe6b4 Use package name variable inside $(package)_file_name variable (Mitchell Cash)

* Merge #9726: netbase: Do not print an error on connection timeouts through proxy

3ddfe29 netbase: Do not print an error on connection timeouts through proxy (Wladimir J. van der Laan)
13f6085 netbase: Make InterruptibleRecv return an error code instead of bool (Wladimir J. van der Laan)

* Merge #9727: Remove fallbacks for boost_filesystem < v3

056aba2 Remove fallbacks for boost_filesystem < v3 (Wladimir J. van der Laan)

* Merge #9485: ZMQ example using python3 and asyncio

b471daf Adddress nits, use asyncio signal handling, create_task (Bob McElrath)
4bb7d1b Add python version checks and 3.4 example (Bob McElrath)
5406d51 Rewrite to not use Polling wrapper for asyncio, link to python2.7 example (Bob McElrath)
5ea5368 ZMQ example using python3 and asyncio (Bob McElrath)

* Merge #9807: RPC doc fix-ups.

851f6a3 [qa][doc] Correct rpc test options in readme (fanquake)
41e7219 [trivial] Add tests_config.ini to .gitignore (fanquake)

* Dashify

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

* Change file permissions

* update travis.yml -parallel -> --jobs
2019-01-03 12:18:47 +03:00
Alexander Block
f95aae2b30 Remove all legacy/compatibility MN code (#2600)
* Remove CActiveLegacyMasternodeManager

* Remove sentinelping RPC

* Remove unused P2P messages and inv types

There are still places where these are used in the code. The next commits
will clean these up.

* Remove MNB/MNP/MNVERIFY related code from masternode(man).h/cpp

* Remove all legacy code regarding block MN payee voting

* Remove MASTERNODE_SYNC_LIST and MASTERNODE_SYNC_MNW states

Also replace all uses of IsMasternodeListSynced and IsWinnersListSynced
with IsBlockchainSynced.

* Remove unsupported masternode RPCs

* Remove UpdateLastPaid methods

* Remove duplicate deterministicmns.h include

* Remove masternode.conf support

* Remove legacy MN lists support from masternode list GUI

* Remove unnecessary AskForMN call

* Remove compatibility code in CPrivateSendQueue::GetSignatureHash

* Don't add locally calculated MN payee in case GetBlockTxOuts failed

This is not valid in DIP3 mode

* Remove check for IsDeterministicMNsSporkActive in "masternode status"

* Move CMasternode::IsValidNetAddr to CActiveDeterministicMasternodeManager

* Remove use of CMasternode::CheckCollateral in governance code

* Remove uses of MASTERNODE_SENTINEL_PING_MAX_SECONDS/MASTERNODE_SENTINEL_PING_MAX_SECONDS

* Remove support for "-masternodeprivkey"

* Remove pre-DIP3 vote cleanup

* Remove compatibility code for quorumModifierHash/masternodeProTxHash

* Remove check for invalid nBlockHeight in CMasternodePayments::GetBlockTxOuts

...and let it crash instead. We expect this method to be called with the
correct height now (after DIP3 was fully deployed).

* Remove ECDSA based Sign/CheckSignature from CGovernanceObject

Only masternodes sign governance objects, so there is no need for ECDSA
support here anymore.

* Always add superblock and MN reward payments into new block

* Always check block payees (except if fLiteMode==true)

* Always allow superblock and MN payees in same block

* Remove/Fix a few references to masternode.conf and related stuff

Also delete guide-startmany.md and masternode_conf.md

* Implement NotifyMasternodeListChanged signal and call governance maintenance

* Remove non-DIP3 code path from CMasternodeMan::Find

* Remove remaining unused code from CMasternode/CMasternodeMan

* Always load governance.dat on startup

* Mine an empty block instead of incrementing nHeight from chain tip in miner tests

This test is crashing otherwise in GetBlockTxOuts as it tries to access a
previous block that is not existing.

* Skip MN payments verification on historical blocks (pre-DIP3 blocks)

Even though DIP3 was active on BIP9 level, the spork was not active yet at
that point meaning that payments were not enforced at that time.

* Remove unused state and CollateralStatus enums

* Unconditionally return false from IsBlockPayeeValid when IsTransactionValid returns false

IsTransactionValid already handles the case where IsDIP3Active() returns
false, making it return true.

* Add override keyword to CDSNotificationInterface::NotifyMasternodeListChanged

* Fix help for masternodelist status (POSE_BANNED and no OUTPOINT_SPENT)
2019-01-03 12:17:43 +03:00
Alexander Block
78c22ad0fb Multiple fixes for "masternode list"
1. Make strMode lower case before comparing it (keyIDXXX would otherwise
   be case sensitive, leading to confusion for users)
2. Remove "rank" and "keyid" mode from help
3. Add keyIDOwner/keyIDVoting/pubKeyOperator to help and strMode check
4. Remove "pubkey" from strMode check
5. Call ToString() on address instead of whole DMN state
6. Add missing std::setw(10) to "full" mode
2018-12-31 14:05:23 +01:00
Alexander Block
e54f6b274a Use ban score of 10 for invalid DSQ sigs 2018-12-31 14:01:04 +01:00
UdjinM6
536229d170
Apply suggestions from code review
Co-Authored-By: codablock <ablock84@gmail.com>
2018-12-31 13:57:58 +01:00
Alexander Block
1efd773580 Remove non-DIP3 code path in CMasternodePayments::IsScheduled
This relies on mnInfo which is not present anymore as we directly use
deterministicMNManager now.
2018-12-31 08:15:45 +01:00
Alexander Block
4c749b7e94 Directly use deterministicMNManager in "masternode list"
Also remove GetFullMasternodeMap
2018-12-31 08:15:45 +01:00
Alexander Block
0fe97a0459 Remove support for "masternode list rank" 2018-12-31 08:15:45 +01:00
Alexander Block
adc2ec2253 Remove unsupported types/fields from "masternode list" 2018-12-31 08:15:45 +01:00
Alexander Block
4b150e72f1 Directly use deterministicMNManager instead of mnodeman.CountXXX 2018-12-31 08:15:45 +01:00
Alexander Block
4c3bb73045 Remove call to mnodeman.PoSeBan 2018-12-31 08:15:45 +01:00
Alexander Block
0594cd7197 Remove code that is incompatible now due to GetMasternodeRanks returning DMNs now
It's ok to remove this code as we're later going to completely remove it.
Until then, this code is dead nevertheless.
2018-12-31 08:15:45 +01:00
Alexander Block
37541ee00e Change GetMasternodeScores and GetMasternodeRank/s to use CDeterministicMNCPtr
This leaves us with nMinProtocol unused, but this is ok as we will later
remove that argument completely.
2018-12-31 08:15:45 +01:00
Alexander Block
17c792cd3b Remove MN upgrade check in ComputeBlockVersion
Has to be replaced with something new in the future.
2018-12-31 08:15:45 +01:00
Alexander Block
71a6951008 Move logic from FindRandomNotInVec into GetRandomNotUsedMasternode
And adapt it to directly use deterministicMNManager
2018-12-31 08:15:45 +01:00
Alexander Block
2f66d6ada1 Replace uses of mnodeman in PS code when deterministicMNManager can be used directly
Additionally, implement GetLastDsq in CMasternodeMan as a replacement
for direct access to the masternode_info_t object. Will move this variable
to another (PS specific) place later.
2018-12-31 08:15:45 +01:00
Alexander Block
eedb158459 Remove use of mnodeman.GetMasternodeInfo from IX code 2018-12-31 08:15:45 +01:00
Alexander Block
fb13b000b5 Remove support for legacy operator keys in CPrivateSendBroadcastTx 2018-12-31 08:15:45 +01:00
Alexander Block
5f5fcc49cd Remove legacy signatures support in CPrivateSendQueue 2018-12-31 08:15:45 +01:00
Alexander Block
da924519a4 Remove support for legacy signatures in CTxLockVote 2018-12-31 08:15:45 +01:00
Alexander Block
2b2e4f45da Remove a few uses of mnodeman from governance code
And remove them with direct use of deterministicMNManager
2018-12-31 08:15:44 +01:00
Alexander Block
14d8ce03c0 Don't use GetMasternodeInfo in CTxLockVote::IsValid 2018-12-31 08:15:44 +01:00
Alexander Block
1ff241881f Directly use deterministicMNManager in some places 2018-12-31 08:15:44 +01:00
Alexander Block
45f34e130f Implement HasValidMN, HasValidMNByCollateral and GetValidMNByCollateral 2018-12-31 08:15:44 +01:00
Alexander Block
bc29fe160e Remove compatibility code from governance RPCs and directly use deterministicMNManager 2018-12-31 08:15:44 +01:00
Alexander Block
b49ef5d712 Directly use deterministicMNManager when processing DSTX 2018-12-31 08:15:44 +01:00
Alexander Block
ae229e2833 Directly use deterministicMNManager in CGovernanceManager::GetCurrentVotes 2018-12-31 08:15:44 +01:00
Alexander Block
96e0385db8 Let "masternode winner/current" directly use deterministicMNManager 2018-12-31 08:15:44 +01:00
Alexander Block
0c9fb69687 Harden spork15 on testnet (#2586)
* Replace IsDeterministicMNsSporkActive with IsDIP3Active

IsDIP3Active will now use a fixed parameter from consensus params.
Values for DIP0003Height/DIP0003Hash need to be updated when spork15
activates on mainnet.

Also enforce correct block hash on testnet/mainnet for DIP3 activation
block.

* Remove SPORK_15_DETERMINISTIC_MNS_ENABLED

* Replace all uses of IsDeterministicMNsSporkActive with IsDIP3Active

* Remove DIP3 upgrade-path tests and directly start with DIP3 enabled tests

* Make -masternodeprivkey non-mandatory

This code will vanish later.
2018-12-28 19:13:44 +03:00
UdjinM6
361900e461
Bump version to 0.14 (#2589) 2018-12-28 19:12:52 +03:00
Alexander Block
3861c6a82e Add BIP9 deployment for DIP3 on mainnet (#2585) 2018-12-28 16:03:17 +03:00
UdjinM6
0dce846d5a
Add an option to use specific address as a source of funds in protx rpc commands (otherwise use payoutAddress/operatorPayoutAddress) (#2581)
* Add an option to use specific address as a source of funds in protx rpc commands

* fix typo "must"

* Always use payoutAddress (or operatorPayoutAddress) as a default if no fundAddress was specified

* make sure we actually selected some inputs

* fundAddress -> feeSourceAddress

* Align help text with new logic

* fix protx_update_service

* fix protx_revoke

* Add fRequireAllInputs to CCoinControl and use it in FundSpecialTx

This avoids adding all inputs even though they are not needed.

* Allow to specify empty operator payout address and simplify fee code in update_service

DIP3 tests were failing to call "protx update_service" as it did not accept
an empty "operatorPayoutAddress".

This also simplifies handling of the feeSourceAddr.

* Specify source for funds and fees in DIP3 tests
2018-12-28 12:24:48 +03:00
UdjinM6
33f78d70e8
Do not accept sporks with nTimeSigned way too far into the future (#2578) 2018-12-22 13:33:49 +03:00
UdjinM6
587911b36f
Fix IsBlockPayeeValid (#2577)
- should skip while not synced regardless of spork15 state
- add missing logprintf
2018-12-21 18:21:28 +03:00
Alexander Block
03a6865d94 Enforce correct port on mainnet for DIP3 MNs (#2576) 2018-12-21 18:21:12 +03:00
UdjinM6
3f26ed78c7
Backport network checks missing in CActiveDeterministicMasternodeManager::Init() (#2572)
* Backport network checks missing in CActiveDeterministicMasternodeManager::Init()

* Drop mainnnet/non-mainnet port verification part

moved to 2576
2018-12-21 18:20:43 +03:00
UdjinM6
6c4b3ed8d2 Load sporks before checking blockchain (#2573) 2018-12-20 14:31:23 +01:00
Alexander Block
e71ea29e68
Add ownerAddr and votingAddr to CDeterministicMNState::ToJson (#2571) 2018-12-20 14:28:03 +01:00
Alexander Block
222e5b4f7f
Remove proposal/funding votes from MNs that changed the voting key (#2570)
* Rename onlyOwnerAllowed boolean variables to onlyVotingKeyAllowed

This was misleading.

* Remove invalid proposal votes when MN voting keys change
2018-12-20 14:27:48 +01:00
Alexander Block
999a519074 Fix optional revocation reason parameter for "protx revoke" and a few help strings (#2568)
* Fix optional revocation reason parameter for "protx revoke"

* Fix "protx revoke" help message

* Remove obsolete help text about masternode operator keys and wallets
2018-12-19 11:11:38 +03:00
UdjinM6
6dfceaba5a Force FlushStateToDisk on ConnectTip/DisconnectTip while not in IBD (#2560) 2018-12-19 08:37:47 +01:00
Alexander Block
858bb52ad5
Show correct operator payee address in DIP3 MN list GUI (#2563)
* Show correct operator payee address in DIP3 MN list GUI

* Rename dest to operatorDest
2018-12-19 08:37:37 +01:00
Alexander Block
1908637228
Remove legacy MN list tabs on spork15 activation (#2567)
* Remove legacy masternode tabs on DIP3 activation

* Move setInvisible call for dip3NoteLabel up

Otherwise it takes a minute until it's actually made invisible.

* Bail out early from updateMyNodeList when spork15 is active

Otherwise we risk accessing destroyed Qt objects.
2018-12-19 08:37:25 +01:00
UdjinM6
3c30a6aff3 Add missing masternodeblsprivkey help text (#2569) 2018-12-19 08:36:06 +01:00
UdjinM6
c089261465 Unify "protx list" options (#2559) 2018-12-17 07:06:45 +01:00
Alexander Block
552d9089e7
Update testnet seeds to point to MNs that are on the new chain (#2558) 2018-12-14 16:34:11 +01:00
Alexander Block
e9f7142ed0
Bump PROTOCOL_VERSION and DMN_PROTO_VERSION to 70213 (#2557)
* Bump PROTOCOL_VERSION and DMN_PROTO_VERSION to 70213

This will disconnect all nodes from the old testnet chain when DIP3 gets
activated through BIP9.

Also update comments where 70212/70213 was referenced.

* Also bump MIN_PEER_PROTO_VERSION_DIP3 and MIN_PRIVATESEND_PEER_PROTO_VERSION
2018-12-14 16:33:58 +01:00
Alexander Block
793e74cc9f Remove temporary fork handling for emergency difficulty reduction on testnet
As we reset testnet, we can also remove the special handling for old blocks.
2018-12-13 21:51:52 +01:00
Alexander Block
79d543e896 Don't check for nSuperblockStartHash on testnet 2018-12-13 20:30:41 +01:00
Alexander Block
24ebcbd12c Remove checkpoints above block 4000 2018-12-13 15:07:40 +01:00
Alexander Block
ab3fe4fa86 Update nMinimumChainWork and defaultAssumeValid for block 4000 2018-12-13 15:07:38 +01:00
Alexander Block
b2d3e220b5 Change DIP0003 deployment to start today 2018-12-13 14:31:09 +01:00
Alexander Block
d6fa7026c9 Change CSV, DIP0001 and BIP147 deployments to start today 2018-12-13 14:31:05 +01:00
Alexander Block
431ef26280 Bump nPowKGWHeight for testnet and cause a fork at height 4001
This will reset testnet so that we can start with a clean state.
2018-12-13 13:57:08 +01:00
Alexander Block
9d33d216b7 Remove temporary code which forked testnet at block 274000 2018-12-13 13:55:46 +01:00
UdjinM6
07309f0ec3 Allow up to MASTERNODE_MAX_MIXING_TXES (5) DSTXes per MN in a row (#2552) 2018-12-13 09:13:02 +01:00
UdjinM6
3e97b0cbdb Make sure that we can get inputType and fUseInstantSend regardless of the way recipients are sorted (#2550)
* Make sure that we can get inputType and fUseInstantSend regardless of the way recipients are sorted

* Move "for" loops outside of "if"s
2018-12-13 09:12:45 +01:00
UdjinM6
1a7c29b97c Revert "Sort recipients in SendCoins dialog via BIP69 rule (#2546)" (#2549)
This reverts commit 18cd5965cc.
2018-12-13 09:12:22 +01:00
UdjinM6
ca0aec2a32 Match recipients with txouts by scriptPubKey in reassignAmounts() (#2548)
* Match recipients with txouts by scriptPubKey in reassignAmounts()

* Drop no longer used nChangePosRet from reassignAmounts() params
2018-12-13 09:12:07 +01:00
UdjinM6
378dadd0f7 Ensure EvoDB consistency for quorum commitments by storing the best block hash (#2537)
* Ensure EvoDB consistency by storing the best block hash

This approach is similar to the one used for chainstate currently.
Ensures that:
- nodes that upgraded after DIP3 has all the data processed correctly (they will crash and require reindex);
- evodb/ is removed when blocks/ is removed (otherwise sync will fail due to duplicate records).

* Implement CEvoDB::VerifyBestBlock/WriteBestBlock and call them from ConnectBlock/DisconnectBlock

* Fix walletbackup.py
2018-12-13 09:11:50 +01:00
UdjinM6
2127a426b8 Further refactoring of CQuorumBlockProcessor (#2545)
* Switch GetQuorumBlockHash from CBlockIndex* to nHeight

* `pindexPrev -> pindex` for ProcessCommitment

* Switch IsCommitmentRequired from CBlockIndex* to block height

* Switch GetMinableCommitment/Tx from CBlockIndex* to block height

* Add `AssertLockHeld(cs_main);`

Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>
2018-12-13 09:04:08 +01:00
Alexander Block
09730e1c59
Bail out from update methods in MasternodeList when shutdown is requested (#2551) 2018-12-13 07:55:42 +01:00
Alexander Block
1522656d6f
Correctly handle spent collaterals for MNs that were registered in the same block (#2553)
* Move spent collateral handling to the bottom of BuildNewListFromBlock

* Handle conflicts with spent collaterals in mempool
2018-12-13 07:49:50 +01:00
UdjinM6
18cd5965cc Sort recipients in SendCoins dialog via BIP69 rule (#2546) 2018-12-10 14:57:22 +01:00
Alexander Block
5830353373
Track operator key changes in mempool and handle conflicts (#2540)
* Track ProTx operator key changes in mempool

* Remove ProTx conflicts from mempool when ProUpRegTx or ProUpRevTx changed keys

* Only allow one operator key change per MN in in mempool
2018-12-10 09:14:19 +01:00
Alexander Block
88f7bf0d82
Don't delete/add values to the unique property map when it's null (#2538)
* Don't delete/add values to the unique property map when it's null

This happens when revoking operator keys, as the revoked MN will then have
the address and operator keys set to the null representation. We shouldn't
add the null value to the unique property map as otherwise future revokes
crash in an assert.

* Assert that no null values are passed to Add/DeleteUniqueProperty

* Check for null values before calling Add/DeleteUniqueProperty

* Apply suggestions from code review

Co-Authored-By: codablock <ablock84@gmail.com>

* Add user generated default constructors to BLS primitives

Fixes build issues on Mac:

In file included from evo/deterministicmns.cpp:5:
./evo/deterministicmns.h:375:24: error: default initialization of an object of const type 'const CBLSPublicKey' without a user-provided default constructor
        static const T nullValue;
                       ^
2018-12-10 08:31:09 +01:00
UdjinM6
15414dac29 Refactor CQuorumBlockProcessor and CDeterministicMNManager (#2536)
* Refactor CDeterministicMNManager::ProcessBlock: pintexPrev -> pindex->pprev and/or adjust logic accordingly

* Refactor CQuorumBlockProcessor::ProcessBlock: pintexPrev -> pindex->pprev and/or adjust logic accordingly

* Drop unused
2018-12-10 06:05:29 +01:00
Alexander Block
63b58b1e92
Reintroduce BLSInit to correctly set secure alloctor callbacks (#2543)
https://github.com/dashpay/dash/pull/2409 removed the need to call the
Init method of the Chia BLS library, but we also accidently removed the
initialization of the secure allocator.
2018-12-10 06:04:48 +01:00
Alexander Block
d9b28fe1ad
Introduce dummy (ping-like) contributions for the dummy DKG (#2542)
* Implement creation and propagation of dummy contributions

These act as a ping which is broadcast a few blocks before the dummy
commitments are created. They are meant to determine online/offline members.

* Use information about received dummy contributions to determine validMembers

* Fix PoSe tests

* Fix dummy DKG phase progress in PoSe tests and give tests more time

Mine one block at a time until we reach the mining phase.
2018-12-10 06:04:33 +01:00
Alexander Block
df0d0cce77
Watch for changes in operator key and disable local MN (#2541) 2018-12-10 06:04:13 +01:00
Alexander Block
511dc3714c
Remove ProTxs from mempool that refer to a ProRegTx for which the collateral was spent (#2539)
* Track TXs in mempool which refer to an existing ProTx

* When a block is added, remove TXs that refer to ProTxs with spent collaterals

* Initalize evoDb and deterministicMNManager in BasicTestingSetup

instead of TestingSetup. Now that the mempool uses deterministicMNManager,
we need to initialize it for all tests that might use the mempool.
2018-12-10 06:03:57 +01:00
Solar Designer
cbd0303529 Serialize the block header in CBlockHeader::GetHash() (#2531)
* Serialize the block header in CBlockHeader::GetHash()

* Switch from CDataStream to CVectorWriter

Co-Authored-By: solardiz <solar@openwall.com>
2018-12-10 05:40:08 +01:00
Alexander Block
5185dd5b73
Use correct time field when removing pre-DIP3 votes (#2535)
nTime is not the timestamp from the vote object. nCreationTime is the
correct field to use.

This fixes continues deletion of votes.
2018-12-06 14:44:14 +01:00