vecMasternodes.size() == 0 is a nearly impossible condition due to the behavior
of dseep. Each time a node receives a ping where it's unaware of the masternode
it will ask for the dsee from it's peer.
- if(c % 5 == 0 && (RequestedMasterNodeList <= 2 || vecMasternodes.size()
+ if(c % 5 == 0 && RequestedMasterNodeList < 3){
Darksend defaults to a new mode which enables inputs/outputs
of each session to be different. For example 10DRK can be input
and 1DRKx10 can be output. This strengthens the anonymity of
Darksend greatly, which also increasing the usability (Users who
run out of .1DRK denominations can simply turn on Darksend to
split up larger inputs).
- When attempting to connect to a masternode for submission into the pool a recursive call to DoAutoDenominate was used. This could possibly take more than 1 minute to complete if it found a string of bad masternodes, in which case the correct masternode was overwritten and replaced with an invalid one. Upon submission, the DS TX was given to the incorrect node causing collateral to be charged.
- To fix this I've removed the recursion and added a critical section to DoAutoDenominate.
- Exact input denominations are matched in PrepareDarksendDenominate to remove the possibility of having change in the pool
- Removed disabled denominations, not needed anymore
Exact amounts are now allocated directly to denominated
funds then submitted to the pool. This improves anonymity
by never having non-denomination inputs enter or exit the pool.
Randomness has also been added to the amount of each session to
improve anonymity.
LiteMode disables Darksend/Masternodes/InstantX for clients
who want speed and don't need access to these features. UI
for Darksend is also hidden while in this mode.
- Fixed a few issues when calculating progress including some variables that should be limited to 1 (a and b). GetDenominatedBalance also seemed to be giving bad results so I rewrote it to be cleaner, not sure if that was a part of the problem.
- Progress bar is only recalculated when all inputs in wallet have been confirmed (will stop the progress from jumping around)
- Made masternodes/darksend compatible with regression testing mode (a local-only blockchain that doesn't require mining). Developers can now test multiple rounds in a few minutes without waiting on mining (much faster).
- Added dsee security verification to v11
- darkSendMasternodes -> vecMasternodes (must clearer)
Darksend is now capable of taking queue objects (which show who wants to mix what)
and looking at it's own inputs to see if it's at all possible to join their mixing
session. This plus other improvements should make Darksend much faster for mixing
coins.
DoAutoDenomination just wrote to the debug.log and because of that users commonly would have a hard time seeing what was happening. This fixes that by setting a status and displaying that status in the overview.
- Progress bar is far more accurate now. It only takes into account the inputs that could possibly go into Darksend and ignores the rest.
- Darksend can support down to 1.5DRK now.
- New "masternode outputs" command for start-many