Commit Graph

12893 Commits

Author SHA1 Message Date
UdjinM6
2339409ac0 Streamline GetBlockSubsidy() 2016-08-22 18:07:17 +03:00
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
9a8f2e4507 V0.12.1.x governance bugfix 1 (#952)
* Fix governance message handling bug

* Added a 2 second delay to the addressindex blockchain reorganization test
2016-08-20 20:51:01 +04: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
Tim Flynn
c05231c2a7 Merge #949: Added EXTRACT_STATIC = YES to Doxyfile
86e861c Added EXTRACT_STATIC = YES to Doxyfile so we can get call graphs for the static functions in main.cpp
2016-08-19 05:52:04 -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
UdjinM6
66de5b082a Merge #946: Fix extra warning about low keys on wallet encryption
5d62e4f Fix extra warning about low keys on wallet encryption
2016-08-19 05:47:37 -06:00
UdjinM6
7d55e623a8 Merge #945: More dash->dashcore
a5328a1 Change Dash -> Dash Core where appropriate (in strings)

b8696d9 Change user/group dash->dashcore

69dc9f1 Change dash->dashcore for /etc/ and /var/lib/ folders
2016-08-19 05:46:30 -06:00
crowning-
1ecabea8a6 CDB: fix debug output (#947)
* CDB: fix debug output
2016-08-18 18:23:39 +04: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
Tim Flynn
9a8a1ace9e Merge #943: Fixed non-deterministic CSporkMessage hash function
5bb8dca Fixed non-deterministic CSporkMessage hash function

CSporkMessage::GetHash() was including random data
in the hash due to 4 bytes of structure padding between the 32 bit
nSporkID and the following 64 bit nValue members.

This has been fixed by using CHashWriter which serializes the structure
data properly before hashing rather than relying on compiler defined behavior
such as structure alignment.  The underlying hash function is CHash256 which is
bitcoin's double SHA-256 hash.  HashX11 is not necessary here
because the hash is only used to identify distinct spork messages.
2016-08-15 16:46:46 +02:00
UdjinM6
a31e7600e9 Merge #942: Leave some space for free transactions by defaut (10000)
857eaee Leave some space for free transactions by defaut (10000)
2016-08-12 08:01:14 +02:00
UdjinM6
27cba53e64 Merge #941: Simplify CountByIP()
10c249f Simplify CountByIP()
2016-08-12 07:58:55 +02:00
UdjinM6
df854a5e19 Merge #940: Adjust block download timeouts to match Dash avg block time (bitcoin/4)
9320e5b Adjust block download timeouts to match Dash avg block time (bitcoin/4)
2016-08-12 07:57:20 +02:00
UdjinM6
e20e1dc5da Merge #939: More IS refactoring
149f27a More IS refactoring
2016-08-12 07:55:41 +02:00
UdjinM6
ee266f2d01 Merge #938: Fix bug in #895
68ff166 Fix bug in #895
2016-08-12 07:45:06 +02:00
UdjinM6
8d28ed0dd1 Merge #937: Fix/improve upon previous DS refactoring
11598a6 Fix/improve DS refactoring
2016-08-12 07:43:18 +02:00
UdjinM6
625b5ebb09 Merge #936: Bump NO_BLOOM_VERSION and SENDHEADERS_VERSION to match PROTOCOL_VERSION
411ad29 Bump NO_BLOOM_VERSION and SENDHEADERS_VERSION to match PROTOCOL_VERSION
2016-08-12 07:41:23 +02:00
UdjinM6
2967aa61a1 Merge #935: Slightly refactor keepass module / replace magic number
0245859 Slightly refactor keepass and use DEFAULT_KEEPASS_HTTP_PORT instead of magic number in init.cpp
2016-08-12 07:39:43 +02:00
UdjinM6
1f6d5fffe6 Merge #934: Fix Inv Bugs
96fad76 Revert part of b669280 and instead fix unknown inv handling in ProcessMessage
2016-08-11 19:32:52 +02:00
Evan Duffield
338b0ce934 Merge pull request #914 from UdjinM6/dashBitcore1
Merge Bitpay's version of Bitcoin Core (additional indexes)
2016-08-08 12:53:34 -07:00
Evan Duffield
dd539c3d69 Merge pull request #905 from UdjinM6/dashcoreDatadir
Change default datadir
2016-08-08 12:42:35 -07:00
Evan Duffield
453c6628cd Merge pull request #895 from UdjinM6/ISKeepLock
Refactor InstantSend to use block count instead of local time
2016-08-08 12:40:01 -07:00
Evan Duffield
5793bee9d6 Merge pull request #931 from UdjinM6/fixGetBlockHashAtHeight
Fix GetBlockHash
2016-08-08 12:32:23 -07:00
UdjinM6
7f89bba83e Refactor InstantSend to use block count instead of local time to set expiration limit - nInstantSendKeepLock. Also make it (and number of blocks to reprocess in case of a conflict) a part of Consensus params and set it to lower numbers for testnet/regtest to be able to break things easier there.
Bump MIN_INSTANTX_PROTO_VERSION
2016-08-08 16:43:15 +03: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
crowning-
072fd72ca3 Merge #930: [UI] IPv4, IPv6 and TOR stats added to Information tab
d07ca0c [UI] IPV4, IPv6 and TOR stats added to Information tab

aaa320e [UI] IPv4, IPv6 and TOR stats added to Information tab
2016-08-06 22:52:01 +02: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
08703cebe6 Merge #927: Fix GUI MN list
2b1c567 To prevent high cpu usage we should update list only once in MASTERNODELIST_UPDATE_SECONDS seconds or MASTERNODELIST_FILTER_COOLDOWN_SECONDS seconds after filter was last changed. Also changing date/time format - QDateTime ToString() is way to slow for a list of thousands items, using DateTimeStrFormat instead. UI should work much smoother on mainnet now.
2016-08-05 18:47:59 +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
Andy Freer
d2c6b2a74e Merge #926: Change extended key version bytes to BIP32
77613d9 Revert changing BIP32 version bytes to maintain existing Dash versions
6ce0d3e Change to BIP32 values
fe6174b Comments and add regnet EXT_COIN_TYPE
c874a0f Update testnet/regtest EXT_COIN_TYPE
2016-08-02 00:00:24 +02:00
UdjinM6
36c28fad1b Merge #925: fix a bug in #920
e7a2670 fix a bug in #920
2016-07-30 13:34:48 +02:00
UdjinM6
17dfbdea1b Merge #924: Fix AddRef() usage
513506f Fixing AddRef() usage
Using AddRef() in ConnectNode() for existing connections doesn't feel right considering how refs are released in ThreadSocketHandler(). I guess this could be the reason that sometimes refs stay >0 no matter what and nodes stuck in vNodesDisconnected forever which means that node never get deleted and FinalizeNode signal is never fired which in its turn means that for example mapBlocksInFlight can't be cleaned properly and then blocks stuck.

This commit should solve the issue by:
- removing AddRef() for existing connections
- adding AddRef() in CNode's constructor using the same conditions as in ThreadSocketHandler()
- addding AddRef() in ConnectNode() and Release() in ThreadSocketHandler() for mixing nodes
- removing explicit calls to Release() (back to `pnode->fDisconnect = true` in `CMasternodeMan::ProcessMasternodeConnections`)

9da4a83 fix names/comments
2016-07-30 13:05:41 +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
Holger Schinzel
7551d2da26 Merge #923: Backport prevector fixes
Backport prevector fixes
2016-07-30 13:03:20 +02:00
Kaz Wesley
0baa033c28 test prevector::swap
- add a swap operation to prevector tests (fails due to broken prevector::swap)
- fix 2 prevector test operation conditions that were impossible
2016-07-30 05:18:30 +03:00
Kaz Wesley
ba7def0ef6 prevector::swap: fix (unreached) data corruption
swap was using an incorrect condition to determine when to apply an optimization
(not swapping the full direct[] when swapping two indirect prevectors).

Rather than correct the optimization I'm removing it for simplicity. Removing
this optimization minutely improves performance in the typical (currently only)
usage of member swap(), which is swapping with a freshly value-initialized
object.
2016-07-30 05:18:17 +03:00
Kaz Wesley
7547ef23ee prevector: destroy elements only via erase()
Fixes a bug in which pop_back did not call the deleted item's destructor.

Using the most general erase() implementation to implement all the others
prevents similar bugs because the coupling between deallocation and destructor
invocation only needs to be maintained in one place.
Also reduces duplication of complex memmove logic.
2016-07-30 05:17:57 +03:00
UdjinM6
66fb11c964 Merge #919: Add option to hide warning about low keys
b4647b5 Add option to hide warning about low keys before creating autobackup (but still warn if backup fails)
2016-07-29 10:36:49 +02:00
UdjinM6
8f9544c46e Merge #917: Move broadcast creation to CMasternodeBroadcast
8ee7b8a Move broadcast creation to CMasternodeBroadcast
2016-07-29 07:32:08 +02:00
UdjinM6
3e0eee4c84 Merge #921: Fix project name Dash -> Dash Core
ef1612a Fix project name Dash -> Dash Core
2016-07-29 07:30:19 +02:00
UdjinM6
a4d012069a Merge #920: Slightly refactor FindRandomNotInVec
61e16a3 Slightly refactor FindRandomNotInVec
2016-07-29 07:29:41 +02:00
UdjinM6
0c65a9c892 Merge #918: Change anonymizedashamount -> privatesendamount for consistency
74f2725 Change anonymizedashamount -> privatesendamount for consistency
2016-07-29 07:28:57 +02:00
UdjinM6
ee17056ddc Merge #915: Store block hash in CDiskBlockIndex
de36227 Store block hash in CDiskBlockIndex
2016-07-29 07:27:47 +02:00
UdjinM6
57a72a0ca2 Merge #913: Further SelectCoinsGrouppedByAddresses / mixing process improvements/fixes
98ccf6b Replace GetAnonymizableCredit by additional conditions in SelectCoinsGrouppedByAddresses
cd9830a Fix a bug in GetDenominatedCredit
2016-07-29 07:27:05 +02:00
UdjinM6
1e1a02be36 fix tests 2016-07-19 11:15:54 +03:00
UdjinM6
48d0edcbdf Merge remote-tracking branch 'bitpay/0.12.1-bitcore' into dashBitcore1
Resolved Conflicts:
	.travis.yml (ignoring changes, leaving dash version)
	src/Makefile.am
	src/main.cpp
	src/main.h
	src/rpcclient.cpp
	src/rpcserver.cpp
	src/script/script.cpp
	src/script/script.h
2016-07-19 08:49:28 +03:00
UdjinM6
113e56dd8a Merge #906: Improve CreateDenominated and MakeCollateralAmounts
ca207f6 Improve CreateDenominated and MakeCollateralAmounts:
- should use funds only from the same receiving address
- should denominate while has funds but has not enough denoms
- slightly refactored

20d3a23 Add few more improvements to CreateDenominated and MakeCollateralAmounts:
- return change to the origin address to use it in future splits
- fix a bug with incorrect overshoot
- more debug (optional/errors only) and fixed var names
2016-07-15 12:21:20 +02:00
UdjinM6
90adb89233 Merge #903: Implement transaction lock zmq notifications
15a6a16 Implement transaction lock zmq notifications
3bc86a6 always push zmqpubhashtxlock even if tx is not from/to our wallet
568315b fix typo
b6d41d2 fix data size for notification name
339be11 implement zmqpubrawtxlock
70f44f9 update zmq_sub.py with hashtxlock and rawtxlock
2016-07-15 08:38:33 +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