* 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
* 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
* 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
* 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
* 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
* 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
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.
* 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
* Drop BOOST_FOREACH in Dash-specific code (only), no changes in behavior
* Use references in loops (use const references where applicable) in Dash-specific code (only)
And adjust related code to make it compilable.
* Loop through nodes via connman.ForEachNode in dsq Relay instead of creating a copy
* Do not send dash-specific requests to masternodes before we are fully connected
Open all masternode connections via CConnman::ThreadOpenMasternodeConnections only. Queue requests and process them after some timeout.
* drop excessive `mnodeman.`
* switch from queues to maps of pending requests
* adjust few strings, add TODO for POOL_STATE_CONNECTING
* fix
* there can be only one pending dsa request per ps client
0729102 Net: pass interruptMsgProc as const where possible (Jorge Timón)
fc7f2ff Net: Make CNetMsgMaker more const (Jorge Timón)
d45955f Net: CConnman: Make some methods const (Jorge Timón)
And use this where needed. This avoids warnings about unset version fields
and is also generally a good thing (we really should only communicate with
nodes we know are good)
81e3228 Make CTransaction actually immutable (Pieter Wuille)
42fd8de Make DecodeHexTx return a CMutableTransaction (Pieter Wuille)
c3f5673 Make CWalletTx store a CTransactionRef instead of inheriting (Pieter Wuille)
a188353 Switch GetTransaction to returning a CTransactionRef (Pieter Wuille)
c7be56d net: push only raw data into CConnman (Cory Fields)
2ec935d net: add CVectorWriter and CNetMsgMaker (Cory Fields)
b7695c2 net: No need to check individually for disconnection anymore (Cory Fields)
fedea8a net: don't send any messages before handshake or after requested disconnect (Cory Fields)
d74e352 net: Set feelers to disconnect at the end of the version message (Cory Fields)
ConnectNode is meant to be private and should not be leaked outside of
CConnman. This leaking resulted in multiple problems with AddRef/Release
behaviour. We use OpenNetworkConnectio/OpenMasternodeConnection from now on
and use appropriate ForNode calls to access the CNode* instance.
This commit also changes the behaviour for already connected nodes which
are afterwards requested for a masternode connection. We don't set
fMasternode=true anymore on such nodes, which means it won't be auto
disconnected anymore from ProcessMasternodeConnections.
6182d10 Do not increment nAttempts by more than one for every Good connection. (Gregory Maxwell)
c769c4a Avoid counting failed connect attempts when probably offline. (Gregory Maxwell)