Commit Graph

207 Commits

Author SHA1 Message Date
UdjinM6
976bd7853f Refactor DS:
- always clear entries, do not try to reuse them
- unlock coins only when needed (do not unlock them every 10 blocks)
- make logic a bit more strightforward in few places
- clear all expired on timeout (not just the first found)
- add 2 additional statuses on doauto
- run DS checks when mn list sync started, do not wait for full sync
- move most class members to private
2015-07-30 06:27:28 -07:00
Evan Duffield
cddbda994f Fixed DarkSend dstx propagation issues 2015-07-27 12:34:02 -07:00
UdjinM6
6123770bf8 active masternode fixes 2015-07-23 05:19:37 +03:00
UdjinM6
dba572ac96 use specific protocols 2015-07-20 04:54:02 +03:00
Evan Duffield
9c34930680 Disable nDos on early ping / sync regtest changes 2015-07-19 08:49:46 -07:00
UdjinM6
91eda7e21c Few sync improvements:
- do not call Added....() inside CMasternodeSync::Process() - that was "faking" sync process
- unify "RequestedMasternodeAttempt <= ..." logic and define MASTERNODE_SYNC_TIMEOUT
- add missing masternodeSync.AddedMasternodeList() to CMasternodeMan::ProcessMessage()
- fix "include"s
- don't check vecMasternodesUsed while not synced
2015-07-17 13:08:15 +03:00
Evan Duffield
6e0a468701 Highly improved syncing process 2015-07-14 19:48:02 -07:00
Evan Duffield
d228b4bf47 Merge branch 'v0.12.0.x' of https://github.com/dashpay/dash into v0.12.0.x 2015-07-14 07:55:07 -07:00
evan82
eb9aa2cb87 Merge pull request #427 from UdjinM6/v0.12.0.x_change_sync_activemn_start
V0.12.0.x Start all DS, mnodeman, IX related checks and activate mn only after sync is over
2015-07-14 07:41:57 -07:00
UdjinM6
6651abe343 lower mn reuse rate 2015-07-14 10:38:04 +03:00
UdjinM6
f2c5653379 Start all ds, mnodeman, ix related checks and activate mn only after sync is over 2015-07-14 09:16:19 +03:00
UdjinM6
26fed43603 Major masternode broadcast/ping changes (incompatible with prev version, proto bump required):
- Do not rely on local lastTimeSeen and requested fRequested anymore. Use last know (signed) ping instead and base all logic on that. Should reduce mn list difference between
 nodes.
- Rework CActiveMasternode accordingly along with states, errorMessages, rpc etc.
- Clean some related code, move parts from public to private
- drop c_str in LogPrintf that were related to this functionality (todo: drop it for LogPrintf everywhere else)
2015-07-14 08:50:30 +03:00
Evan Duffield
bee6941195 Fixed Propagation Of Budgets / Proto Bump 2015-07-13 20:03:08 -07:00
Evan Duffield
0b3ef3c9fe Various fixes
- Proposal submitting now works properly
- Syncing proposals now works properly
- Finalized budgets are now created correctly
2015-07-12 10:34:21 -07:00
Evan Duffield
c701839a43 Proposal Security Overhaul
Submissions to the network now require a fee to be paid to the network (mining fee) using a special transaction with a OP_RETURN && ProposalHash in one of the outputs. This allows the network to filter spam quickly, while also allowing anyone to submit a proposal to the network.

To implement these changes we've introduced a few new commands:

mnbudget prepare PROPOSAL-NAME URL PAYMENT_COUNT BLOCK_START DASH_ADDRESS DASH_AMOUNT YES|NO|ABSTAIN [USE_IX(TRUE|FALSE)]
- To create the special transaction

mnbudget submit PROPOSAL-NAME URL PAYMENT_COUNT BLOCK_START DASH_ADDRESS DASH_AMOUNT YES|NO|ABSTAIN FEE_TX
- After the transaction is accepted by the network and has 3 confirmations, you can submit the transaction to the network here

mnbudget show
- Get the proposal hash from here

mnbudget vote PROPOSAL-HASH YES|NO|ABSTAIN
- You can now simply vote by hash using this command
2015-07-11 13:20:12 -07:00
UdjinM6
7eee9f15ec Fix GetInputDarksendRounds:
- show user and use in external calculations rounds that are calculated respecting current settings while use "real" rounds in internal calulation to store correct results in cache and easily provide user with updated info on settings change
- fix max real rounds limit (16)
2015-07-07 10:16:22 +03:00
Evan Duffield
1af0fa5098 Only sync masternode assets after new block 2015-07-06 11:12:56 -07:00
Evan Duffield
4596e7f336 Vastly improved proposal management implementation
-Syncing now happens in stages. Masternodes and Sporks, then Masternode winners, then proposals. Some of these require the masternode signatures, otherwise there are race conditions within the syncing process itself.
-Resigning - When a proposal is sent to the network initially it's signed by a masternode, if that masternode goes inactive the proposal becomes invalid. Resigning allows other masternodes to update proposal keep it valid with the coming and going of masternodes.
-Resigning compatibility - non masternodes will scan and flag proposals as invalid to accept updated owners.
-Invalid votes are now actively removed from the proposals when they go inactive
- Remove budgets with negative votes of more than 10% of network
- Only allow proposals into budget that have more than 10% of network support
- Faster removal of inactive masternodes
2015-07-06 10:46:58 -07:00
Evan Duffield
28052240a5 Improvements for syncing budget votes
- New orphan object and reprocessing logic
- Added some logic for asking peers for missing proposals and finalized budgets
2015-07-02 09:41:33 -07:00
Evan Duffield
a89b0e705f Fixed syncing code for stuck clients 2015-07-01 16:46:03 -07:00
Evan Duffield
94493bee63 fixed compile issues 2015-06-24 12:42:01 -07:00
evan82
e323df71c6 Merge pull request #383 from UdjinM6/v0.12.0.x_small_ds_code_cleanups
V0.12.0.x small ds code cleanups
2015-06-24 11:16:41 -07:00
UdjinM6
b30f8b5fcb remove unused variable 2015-06-24 19:33:53 +03:00
UdjinM6
a4bb283367 slight optimizations/readability improvements for ds 2015-06-24 19:30:05 +03:00
UdjinM6
451a98732e remove unneeded "darkSendPool." in DS pool class functions 2015-06-24 19:25:43 +03:00
UdjinM6
60622b887d add missing MSG_ENTRIES_ADDED for proper ds status display 2015-06-24 19:23:22 +03:00
UdjinM6
0bfaefde92 move ds pool status out of overview page 2015-06-24 19:08:14 +03:00
UdjinM6
08a6803165 fixing all kind of typos etc 2015-06-23 23:44:20 +03:00
UdjinM6
3e95f3b98c accept(verify) DS mixing txes ignoring fees 2015-06-23 07:12:24 +03:00
UdjinM6
02230c4263 deal with reservekeys in CreateDenominated and MakeCollaterals more accurate (+todo) 2015-06-22 20:59:27 +03:00
UdjinM6
58c0f150a4 fix dsc 2015-06-19 04:42:25 +03:00
evan82
34e808bfbd Merge pull request #348 from UdjinM6/v0.12.0.x_fix_unlock_null_collateral
V0.12.0.x fix unlock/setnull/collateraltx
2015-06-04 07:10:49 -07:00
UdjinM6
543256c3e8 - fix issues with locking coins and not unlocking them properly (mostly on failures)
- more SetNull calls on failures
- move collateral tx reset out of SetNull and redo verification/renewal on doAuto in one single place (should prevent fast keypool exhausting on failures)
- move lastNewBlock from SetNull to Reset
2015-05-30 07:44:56 +03:00
UdjinM6
4292d4d87d - Randomize denoms calculated ot of vecAmounts. Should help to find partners faster/more often and maybe slightly improve anonymity also.
- sessionTotal doesn't makes sense anymore, get rid of it.
- GetDenominationsByAmount cleaned but it is not used anywhere else so maybe it should be removed too (placed a comment there but didn't remove it yet).
2015-05-30 05:59:31 +03:00
Evan Duffield
40149c4e41 Budgeting Software / Reference Node Removal
- Added commands for using budgets "mnbudget" and "mnfinalbudget"
- Supports 100% decentralized budget control and view-only site with json meta data object
2015-05-14 18:01:15 -07:00
Evan Duffield
160eec6e30 merged 2015-05-04 02:36:23 -07:00
UdjinM6
6e229e16ff DS fixes:
- detect denominated but not yet anonymized balance properly or both (GetAnonymizableBalance)
 - fix progress calculation by using GetAnonymizableBalance
 - do not count MN-like inputs as anonymizable
 - denominate faster: if there is enough new inputs after DS started (their sum is greater then "already denominated but not yet anonymized balance")
 - allow small amounts to be used in CreateDenominated (modified SelectCoinsDark) but only if they are larger then 1 CENT
 - do not use collateral inputs in CreateDenominated (modified SelectCoinsDark)
 - convert some int64_t -> CAmount for money related variables/params
2015-05-02 19:18:20 +03:00
Evan Duffield
969826c249 Reference Node / Stubbed Out Budget System
- Removed of reference node and replaced with decentralized quorums that pick the masternodes who get paid each block.
- Made a budgeting system, where masternodes can vote on individual budgets and the data is stored perminently on each clients computer
2015-04-30 07:55:37 -07:00
UdjinM6
8e05e9eb10 Fix translations:
- mn replies
  - MN should use codes for replies, translations are done on client side (client protocol / min pool peer protocol bump)
  - use QString for translation instead of ostream, construct better human readable strings for translators
- progress
  - use QString here too
2015-04-16 05:35:12 +03:00
UdjinM6
62bbc1176e fix merge 2015-04-10 20:08:01 +03:00
UdjinM6
3cfd9538d5 Merge branch 'master' into merge_btc010 2015-04-10 19:32:57 +03:00
Evan Duffield
0b225546f7 check collateral before submitting 2015-04-07 09:41:31 -07:00
UdjinM6
41f592aec7 Explicitly convert mutable txes to immutable before calling AcceptableInputs 2015-04-07 05:59:56 +03:00
UdjinM6
649434dd2e Fix SelectCoinsByDenominations relative things:
- AvailableCoins inside SelectCoinsByDenominations should select denoms only now (also removing corresponding "if"s)
- use temporary vectors in doauto when call SelectCoinsByDenominations to prevent vCoins modification
- variables naming (set...->v...)
2015-04-07 05:52:49 +03:00
Evan Duffield
7e72c2bccf added nDenom check for dsa 2015-04-06 16:07:25 -07:00
Evan Duffield
d928a53234 DS Working pretty well 2015-04-06 13:00:46 -07:00
Evan Duffield
f0192b1bb3 Reverting some DS changes
- Some changes caused instability of DS, this should fix that.
2015-04-06 08:14:26 -07:00
UdjinM6
64eebc3316 0.12 dirty merge'n'fix (bitcoin 0.10) 2015-04-04 19:24:37 +03:00
Evan Duffield
4152eea1c1 fixed ranking issues for PoSe 2015-03-23 05:59:22 -07:00
Evan Duffield
9bafb70a2f changed some locks 2015-03-21 20:27:13 -07:00
UdjinM6
bff51d4fcc disable relay 2015-03-21 20:27:13 -07:00
Evan Duffield
c5da226a09 changed some locks 2015-03-21 20:10:34 -07:00
Evan Duffield
e4b6f85e69 remove locks 2015-03-21 06:31:34 -07:00
Evan Duffield
79e50f81e3 Disabled masternode blinding / increased rounds defaults 2015-03-20 08:47:19 -07:00
Evan Duffield
76aaea1ae8 Translation updates
Darkcoins -> Dash
dashcurrency.com -> dashpay.io
Updated seeds
2015-03-20 07:45:30 -07:00
Evan Duffield
5cb26c5928 Changed darkcoin references to dash
- Changed out logos (just a placeholder)
- DRK -> DASH
- ./darkcoin -> ./dash
2015-03-19 12:03:14 -07:00
Evan Duffield
8f39610ee4 Merge branch 'v0.11.2.x' of https://github.com/darkcoinproject/darkcoin into v11.2-dash 2015-03-18 12:50:02 -07:00
Evan Duffield
a1ac7ca8d3 Fixed blinding submission process 2015-03-18 09:47:01 -07:00
Evan Duffield
35bb210c6b Dash rebranding 2015-03-17 16:06:58 -07:00
Evan Duffield
819724ad1d merged proof-of-service 2015-03-16 09:40:39 -07:00
Evan Duffield
e5267319ef Complete implementation of Proof-of-Service
- Ensures ports remain open and client are responsive to IX requests.
- Completely 100% decentralized. This farms out the work of checking the masternode network to the masternode network. 1% of the network is determistically selected to check another 1% of the network each block. It takes six separate checks to deactivate a node, thus making it tamper proof.
- Nodes are kept in the masternode list if they fail enough PoSe checks to deactivate. They will continue to be checked until the operator fixes them. However they will not be paid while they're failing checks.
2015-03-16 09:32:18 -07:00
evan82
feabff60a8 Merge pull request #242 from UdjinM6/v0.11.2.x_verify_dsq_vin
V0.11.2.x verify dsq vin
2015-03-16 07:25:04 -07:00
UdjinM6
43712ff4de Verify that dsq.vin is actually in our masternode list (otherwise we might hit NULL and think that we use queue at the same time while we are not) 2015-03-13 19:00:44 +03:00
UdjinM6
53c3a5e24c Cleanup few debug msgs, reduce log spam / few readability fixes 2015-03-13 18:53:12 +03:00
Evan Duffield
441103ea71 update relay rules - protocol/version bump 2015-03-08 07:49:04 -07:00
Evan Duffield
c169e49fce Added input/output/sig trickle
- Send a few inputs/output each cycle
- Mix other users inputs/outputs into relay each cycle
- Send signatures as a tickle, also mixed with other users signatures
- Fixed a bug with validating the final transaction
2015-03-07 07:50:14 -07:00
UdjinM6
b5414e1c3c save nDsqCount in mncache.dat 2015-03-06 20:59:19 +03:00
evan82
9f124d56b6 Merge pull request #231 from mkinney/v11.2-comments
V0.11.2.x comments
2015-03-06 07:04:44 -07:00
Mike Kinney
757128bfe0 v0.11.2.x Updating comments 2015-03-05 23:24:34 -08:00
UdjinM6
2e0d7ab0b6 fix even more console spam 2015-03-05 19:40:17 +03:00
Evan Duffield
f63e1ddfd0 Merge branch 'v-1.11.2.x' of https://github.com/darkcoinproject/darkcoin into v0.11.2.x 2015-03-05 08:23:43 -07:00
Evan Duffield
9aca26d220 merged mkinney-v0.11.2 2015-03-05 08:18:45 -07:00
evan82
2773bb1f78 Merge pull request #223 from UdjinM6/v0.11.2.x_fix_console_spam
v0.11.2.x fix console spam
2015-03-05 08:14:45 -07:00
Evan Duffield
c6f0259d9b fixed shared key usage 2015-03-05 08:08:03 -07:00
Mike Kinney
98fe439af4 V0.11.2.x update comments 2015-03-05 00:10:15 -08:00
Mike Kinney
b0079d37ad V0.11.2.x update comments 2015-03-04 23:49:50 -08:00
UdjinM6
0595ef80c3 fix console spam 2015-03-04 22:59:51 +03:00
Evan Duffield
119007dd48 fix compiling for windows 2015-03-04 11:17:30 -07:00
Evan Duffield
a6b58ab1e8 Merged masternode blinding 2015-03-04 08:58:36 -07:00
UdjinM6
0747da6b36 Fix versions:
- bump PROTOCOL_VERSION (new collaterals are incompatible with 70066)
 - define MIN_POOL_PEER_PROTO_VERSION instead of confusing darkSendPool.MIN_PEER_PROTO_VERSION / bump it too
2015-02-26 20:29:57 +03:00
evan82
ff297c25e3 Merge pull request #203 from UdjinM6/v0.11.2.x_fix_processmessages
V0.11.2.x Few fixes for processing extra messages:
2015-02-26 08:31:45 -07:00
UdjinM6
1ded1b9ec2 Few fixes for processing extra messages:
- call ProcessMessageMasternodePayments on ProcessBlock (lost after moving mnodeman functionality)
- do not process extra functionality messages (DS, IX, spork) on initial download / reindex
2015-02-26 17:40:43 +03:00
UdjinM6
56471f8330 fix DoAutomaticDenominating:
- check for NULL (result of FindRandom, could happen if masternode list is empty)
 - assign submittedToMasternode only when all checks are passed
 - naming consistency (mn --> pmn)
2015-02-26 04:55:27 +03:00
UdjinM6
2e05bf212e Change the way changes are handled:
- do not keep track of a single time variable for whole structure change
- save to masternode.dat and clear on checks:
  - who's asked for the masternode list and the last time
  - who we asked for the masternode list and the last time (will help to prevent dseg ban when restart wallet several times in short period of time)
  - which masternodes we've asked for
- do not use timeout for CheckAndRemove (played with that - doesn't make sense actually)
2015-02-26 02:21:28 +03:00
UdjinM6
0d51e1c90d better naming/readability (Find) 2015-02-25 14:54:03 +03:00
UdjinM6
003a1b7d72 track lastTimeChanged for mnodeman and ask for update only if UpdateNeeded 2015-02-24 13:39:29 +03:00
UdjinM6
9b13c63c45 trivial fix 2015-02-24 02:45:37 +03:00
UdjinM6
14e122cbfa CMasternodeMan - masternode manager class - part2 - fix ProcessMasternodeConnections/ThreadCheckDarkSendPool (still broken) 2015-02-23 23:07:37 +03:00
UdjinM6
adddff85a2 CMasternodeMan - masternode manager class - part1(broken) 2015-02-23 23:01:21 +03:00
evan82
3bb9ef96f4 Revert "Revert "Rebrand to darkcoin"" 2015-02-19 11:58:38 -07:00
evan82
516f590c65 Revert "Rebrand to darkcoin" 2015-02-19 11:28:40 -07:00
evan82
de3c18cde8 Merge pull request #189 from UdjinM6/v0.11.2.x_clear_out_ds_fee
clear out DS fee / collateral clean up
2015-02-18 12:14:05 -07:00
evan82
52f7828785 Merge pull request #188 from UdjinM6/v0.11.2.x_typo
(v0.11.2.x) typo: succesful->successful
2015-02-18 12:10:55 -07:00
evan82
5c38c69f0c Merge pull request #187 from vertoe/devel-0.9-strings
Rebrand to darkcoin
2015-02-18 12:10:45 -07:00
UdjinM6
55faae269c clear out DS fee 2015-02-18 15:31:40 +03:00
Evan Duffield
ecd37e134e Change darksend fee to 0.01DRK and charge in 1 in 10 sessions 2015-02-17 07:04:42 -07:00
UdjinM6
f87ccb1588 typo: succesful->successful 2015-02-17 13:27:47 +03:00
vertoe
a179777a0a Rename darkcoin config header. 2015-02-16 23:19:42 +01:00
UdjinM6
9823b9ebad Solve performance problems by caching and fix probable security issue
- add number of rounds to outputs
- cache rounds calculation results of GetInputDarksendRounds
- select shortest rounds chain instead of the first found
2015-02-12 17:41:02 +03:00
Evan Duffield
f510cc309b use block hash caching 2015-02-09 13:21:12 -07:00