Commit Graph

116 Commits

Author SHA1 Message Date
UdjinM6
3b606b0c63 Merge #951: More block validation for governance (#951)
b6b6d6c Added nSuperblockStartBlock, adjusted testnet/regtest params

15a3c64 More for governance block checks, p1 (non-compilable):
    - add GetPaymentsLimit() and GetPaymentsTotalAmount()
    - IsValidBlockHeight() should check nSuperblockStartBlock
    - CSuperblock::IsValid should check payment limit and miner payout
    - no cs_main
    - slightly refactored related things

e8f9e5d More for governance checks, p2 (compilable):
    - IsBlockValueValid(), IsBlockPayeeValid() and FillBlockPayee() rewritten, no cs_main for them
    - CreateNewBlock adjusted, need more work on CBlockTemplate (see TODO)
    - moved (and simplified) IsBlockPayeeValid() call from CheckBlock() to ConnectBlock()

51434cf Add ability to calculate only superblock part of subsidy in GetBlockSubsidy()

aa74200 Fix GetPaymentsLimit()

f7b6234 braces and comment

ade8f64 more checks for IsValidBlockHeight()
2016-08-21 19:41:40 -06:00
Tim Flynn
123aa04d5b Merge #950: V0.12.1.x governance pr 2
13316a4 Return true from IsBlockValueValid when masternode data is not synced
  - This restores behavior very close to that in 12.0
  - Needed to prevent the forking problem currently being seen on
    testnet between online and offline nodes
  - This is expected to be a temporary fix while we develop a
    long-term solution for this problem

427086e Restore miner payments for superblocks

794b90d Added IsSynced field to JSON output of mnsync status RPC command
  - This is needed to allow fixing RPC tests so that they wait until
    the nodes are fully synced before performing tests

a9ddf6f Wait for nodes to sync masternode data during p2p-fullblocktest
2016-08-19 05:53:49 -06:00
UdjinM6
67def9ef2e Merge #948 Refactor CDarkSendSigner
f0ed400 darkSendSigner.SignMessage() should not return error message

154f1b6 darkSendSigner.VerifyMessage() should return non-localized message, its callers should populate error to debug.log

b130c32 darkSendSigner.GetKeysFromSecret() should not return error message, its callers should handle it
2016-08-19 05:50:04 -06:00
Tim Flynn
de7b2b6c51 Merge #944: V0.12.1.x governance pr - part 1 - base functionality
068c178 Added DBG macro in util.h to facilitate debugging

    - This macro allows debugging statements (typically printf's or cout's) to
      be activated or deactivated with a single comment.  Uncomment the line:
      //#define ENABLE_DASH_DEBUG
      in util.h to enable debugging statements.

    - When commented any code wrapped with the DBG() macro will simply be removed
      by the preprocessor.  When not commented all such wrapped statements will
      be present.

    - For maximum effectiveness it is best that util.h be the first effective include
      in all source files.  It is also possible to enable the macro for a single file
      by temporarily adding #define ENABLE_DASH_DEBUG to the top of the file.

    - Code committed to non-development branches should always have the define
      commented.

d125d9b V0.12.1.x -- merging trigger/generic object/superblock changes for testnet phase II

    - This commit contains the core governance system changes for 0.12.1.  Any unrelated
      changes have either been removed or moved to separate commits.

120724c File mode fixes

    - Changed mode 0755->0644 on several source files.

c7f9e11 Updated todo reminders

    - Added reminder to revert temporary reduction of number of votes
      required to trigger superblock to 1 for testing

92adc98 Made CSuperblockManager::IsValidSuperblockHeight an inline function

    - This is for efficiency since this function is called often and is
      only 1 line of code.

c050ed7 Added comment explaining rationale for no LOCK(cs) in CSuperblock::IsValid

dc933fe Removed unused CSuperblockManager::IsBlockValid function

decec88 Moved calls to SuperblockManager::IsValidSuperblockHeight into IsSuperblockTriggered.

    - Since calls to the later function are always protected by the former there's
      no reason to keep these separate and this simplifies the code in
      masternode-payments.cpp.

8672885 Reestablished expected value check for non-superblocks in IsBlockValueValid

b01cbe0 Changes to IsBlockValueValid to fix rpc test failure

a937c76 Changed include order to allow per file activation of the DBG macro

d116aa5 Fixed IsValidSuperblockHeight logic

    - Note this has an effect on testing because we can now only create
      1 superblock per day.  Devs may need to temporarily change testnet params
      for easier testing.

2d0c2de Convert superblock payments to CAmount

    - We assume that payment values in JSON are in units of DASH
      for consistency with other RPC functions, such as
      createrawtransaction.

376b833 Revert temporary testing value for nAbsVoteReq

    - Also ensure that number of votes required is never smaller than 1

8c89f4b Cleaned up CSuperblock error handling

    - Exceptions are now thrown consistently rather than using a mix of
      exceptions and return code checking.  Exceptions are now caught only
      in AddNewTrigger when the CSuperblock constructor is called.  Unnecessary object
      status members have been removed.

d7c8a6b Removed utilstrencodings header

    - This appears to help with travis tests, for unknown reasons.

c4dfc7a Fixed some minor code review issues

63c3580 Reverted locking change in miner.

    - This should have been done in the original PR but was overlooked.

4ab72de Fixed variable name to match common practice and bracket formatting

886a678 Improvements to vote conversion code

    - Replaced redundantly defined function with inclusion of governance-vote.h

    - Replaced magic numbers with their corresponding constant symbols

0a37966 Reordered governance message handling
2016-08-17 09:08:25 +02:00
UdjinM6
a73c31f3f0 Fix GetBlockHash - Currently it's doing the job already done by chainActive and it's off by 1 block 2016-08-07 01:04:15 +03:00
UdjinM6
5a8c0c9b9d Merge #928: Refactor All The Things - part1
86d8505 Refactor CActiveMasternode
+ move strMasterNodeAddr to CActiveMasternode

a005c79 Refactor InstantSend
+ new lock cs_instantsend to protect maps on CleanTransactionLocksList()
+ new DEFAULT_INSTANTSEND_DEPTH constant
+ rename MIN_INSTANTX_PROTO_VERSION to MIN_INSTANTSEND_PROTO_VERSION and bump it

d24182c Refactor Privatesend
+ decouple from util.h and version.h
+ more functions for CDarksendBroadcastTx: constructors, signing, serialization
+ move from rand() to insecure_rand() in general but to GetRand() for session id
+ fix defaults
2016-08-05 21:49:45 +02:00
UdjinM6
b4cb1e2610 Merge #911: Fix sync process: (#911)
- mn hash compatibility with 70103
- ignore some requests while syncing
- fix locking/initializing in sync
- do not ban for old mnw
- split budget/governance messages/invs
2016-08-05 18:25:03 +02:00
UdjinM6
d514ee7f9a Merge #922: Refactor/fix spork
42bdf42 Refactor/fix spork:
- move ProcessSpork, GetSporkValue, IsSporkActive, ExecuteSpork and mapSporksActive to CSporkManager
- move Sign, CheckSignature, Relay to CSporkMessage
- move ReprocessBlocks out of sporks to main.cpp / rename DisconnectBlocksAndReprocess to DisconnectBlocks
- rename SporkKey to SporkPubKey
- bugfix: only set strMasterPrivKey if spork signature produced by that key was verified successfully
- few log format changes, cleaned up includes
2016-07-30 13:04:27 +02:00
UdjinM6
175508d6b7 Merge #908: Remove global strMasterNodePrivKey
00743b8 Remove global strMasterNodePrivKey - no need to extract keys all the time, store them in CActiveMasternode and reuse when needed
2016-07-15 08:36:00 +02:00
UdjinM6
9764e22ed8 Merge #893: Cleanup
3249a63 Fix logging - CTransaction::ToString() always has `\n` at the end of a string, avoid adding empty line
ec03753 make mnw errors and ThreadCheckDarkSendPool less spammy
5b678af fix errorMessage - it should not have `\n`, let output code handle line endings instead
a81cdf7 rename `dash-darksend` thread to `dash-privatesend`
5e4f468 fix/remove outdated code
f1c9678 Break tooltip about third party urls in 2 lines
2016-06-27 17:25:22 +02:00
UdjinM6
fb1ffded70 There is a bug in mnw fix, so... fix the fix (should be && not ||) (#837)
Also make `nMinBlocksToStore` and `nStorageCoeff` const
2016-05-30 14:11:09 +02:00
UdjinM6
4d55bc9666 Cleanup/maintenance (#830)
* remove instance references inside own class

* better logging

* remove unused

* fix tabs/spaces

* bitcoin->dash

* fix README.md
2016-05-30 08:22:30 +02:00
UdjinM6
989317c036 fix mnw sync issues (#825) 2016-05-29 20:35:09 +02:00
UdjinM6
6698d2ce89 Re-enable FillBlockPayee for mnpayments, fix CreateNewBlock calculations (#811)
* Reenable FillBlockPayee for mnpayments, fix CreateNewBlock calculations

* revert blockchain.py fix #772
2016-05-27 00:04:15 +02:00
Evan Duffield
ff06e58186 Added back logic to only allow X votes per masternode winner 2016-05-25 10:06:48 -07:00
Evan Duffield
7240f96e29 - removed hybrid mode (masternode winners reference node). This feature was added to 12.0 incase we had network troubles and required a "safe-mode" to run in. We've experiences no issues like so it should be safe to remove
- fixed masternode winners calculation and listing
2016-05-24 14:16:42 -07:00
Evan Duffield
6a68aea461 cleanup 2016-04-14 19:54:11 -07:00
UdjinM6
30dc6f4c97 fix flat database compiling 2016-04-13 10:53:13 -07:00
UdjinM6
38f386ae1c Few small changes: - Better log output (a bit more granular for mnb, fixing "\n"s and few other small issues) - Unify variable/class members naming a bit
Closes #733
2016-03-16 07:48:37 +01:00
UdjinM6
9d151c25dd Use chainActive.Tip() in FillBlockPayee functions Turned out that pCurrentBlockIndex is an overkill here, we should just make sure that cs_main lock is already held for us.
Closes #723
2016-03-07 12:19:53 +01:00
UdjinM6
8e560080a1 Fix comments, remove ._str() from LogPrintfs, few trivial changes 2016-03-06 18:21:06 +01:00
UdjinM6
c40fccce9a Only allow block to pass as a budget superblock if it came at or after Params().GetConsensus().nBudgetPaymentsStartBlock
Closes #715
2016-03-06 18:13:48 +01:00
UdjinM6
a611fc3b1b Introduce CDSNotificationInterface - validation interface to listen to tip updates and trigger updates in DS, payments and budgets. Should significantly reduce number of references to chainActive.Tip() i.e.we should have less cs_main in dash-darksend thread and potential deadlocks. 2016-03-04 12:10:37 +03:00
UdjinM6
67cd10c87d Add some locks to protect chainActive.Tip() and mapBlockIndex
(fixing only few of them here, see next commit for further changes)
2016-03-04 12:10:37 +03:00
UdjinM6
95dab0b541 Remove unnecessary locks and chainActive.Tip() references 2016-03-04 12:10:37 +03:00
UdjinM6
29b1af2bb1 quick fix for testnet - we reeeeally should restart it one day.. 2016-02-19 21:11:44 +03:00
UdjinM6
c676748beb Replace all hardcoded network message strings with NetMsgType:: constants, log unknown commands (net debug category only) 2016-02-19 07:59:00 +03:00
UdjinM6
e8d9aabb62 Move many hardcoded mainnet/testnet magic numbers to consensus part of chainparams,
get rid of most `if(Params().NetworkIDString() == CBaseChainParams::MAIN)` and alike to unify formulas.
Further improvements will require testnet restart (see TODO notes in changed code) so I'm keeping few things as they are till then.
2016-02-17 21:54:24 +03:00
UdjinM6
a4aef837bd Merge remote-tracking branch 'origin/v0.12.1.x' into mergebtc0.12 + fix 2016-02-16 03:17:25 +03:00
UdjinM6
a5ac60b868 Merge remote-tracking branch 'bitcoin/0.12' into HEAD
+ merge fixes
+ keepass on evhttp
2016-02-06 16:48:04 +03:00
Evan Duffield
83f87b0f2d merged 2016-02-04 12:39:53 -07:00
Evan Duffield
eeb53b9682 Vastly faster syncing process / small budget system changes
- Syncing process is now event based, rather than timeout based. This means the system can tell when it's done with each step and moves on between phases much faster. In initial testing it seems to be about 10-15x faster and has synced everytime successfully.
- Please remove print debugging when the syncing system is proven to be debugged.
2016-02-04 12:29:09 -07:00
UdjinM6
e2aaf09700 Cleanup
- lower unobvious dependency through header files, move few includes to the right places
- some trivial code cleanup

Closes #680
2016-01-31 12:08:45 +01:00
CryptoVote
3f4d5c4c7d Updates monetary variable int64_t types to CAmount.
Closes #677
2016-01-31 11:34:57 +01:00
TheLazieR Yip
b901fdb60d Fix Misbehaving counting during Masternode Sync. 2015-10-02 14:32:24 +07:00
UdjinM6
7cede481a8 fix mnw limits 2015-09-04 15:22:17 +03:00
Evan Duffield
386a39d00e fixed compile err 2015-09-02 09:53:53 -07:00
Evan Duffield
25894972c1 reduce memory usage 2015-09-02 05:13:32 -07:00
UdjinM6
2b4ec27206 inv messages vectors should not be pushed directly 2015-08-31 10:06:59 -07:00
Evan Duffield
47fc1e750e revert c5d6b reduced mnw bandwidth 2015-08-29 16:48:19 -07:00
Evan Duffield
2ee9abd060 Drastically reduce bandwidth/cpu usage for syncing
- Only send 1 winner per block for the previous 4500 blocks (was 10 items per block for 6000 blocks)
- Send full sync for last 5 blocks and next 20 blocks
- Turn off mnb cleaning, there aren't that many broadcasts on the network and this could cause problems in some cases
- Fix budget submission collateral check
2015-08-28 14:41:58 -07:00
Evan Duffield
22745a81eb Reduce mnw logs / add mnw misbehave for specific conditions 2015-08-28 13:28:43 -07:00
UdjinM6
1724fe579b more mem fixes:
- clean mapMasternodeBlocks and mapSeenSyncMNB too
- clean mapSeenMasternodeBroadcast by lastPing sigTime nad fix clean threshold
2015-08-25 23:26:47 +03:00
Evan Duffield
402d821529 Fix memory leak / reduce mnw memory
- mapSeenMasternodePing & mapSeenMasternodeBroadcast were not getting cleaned, so the pinging of 3000 masternode was accumulating over time. This patch has the clean clean the lists every few minutes and removes anything older than 20 minutes for pings and 2.5 hours for broadcasts.
- v48
2015-08-24 19:27:10 -07:00
Evan Duffield
099e412dba Disable mnw messages for litemode 2015-08-24 15:01:02 -07:00
Evan Duffield
6b31970f13 Fix payment cycle when network is in the process of updating 2015-08-20 08:37:05 -07:00
Evan Duffield
a7ec2deed9 Fix Masternode Payments rank calculation 2015-08-17 15:42:51 -07:00
Evan Duffield
0d5ca11c9a check mnw peer version 2015-08-14 16:22:16 -07:00
Evan Duffield
c86e68c785 Move superblock check 2015-08-11 14:54:42 -07:00
evan82
dac2b0fae5 Merge pull request #490 from UdjinM6/v0.12.0.x_process_on_IsBlockchainSynced
V0.12.0.x process DS,IX,MN,DGBB on IsBlockchainSynced, not on IBD
2015-08-07 06:18:50 -07:00