Commit Graph

10780 Commits

Author SHA1 Message Date
Nathan Marley
25eb6d7b33 clean up governance vote code (#2042)
* clean up governance vote code

* remove old comment on votemanager design

* use map::find for signal string lookup

* make mapStrVoteSignals const and static

* this should be read-only for lookups (const)
* this should be allocated only once (static)
2018-04-23 13:23:58 +03:00
Alexander Block
7719b7ec25 Update BIP147 deployment times, nMinimumChainWork and defaultAssumeValid (#2030)
* Update BIP147 deployment times

* Update nMinimumChainWork and defaultAssumeValid of mainnet
2018-04-20 13:54:49 +03:00
UdjinM6
b07503f013
Some cleanup (mostly trivial) (#2038)
* 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
2018-04-20 13:53:23 +03:00
UdjinM6
a648d6efff
Drop delayed headers logic and fix duplicate initial headers sync by handling block inv correctly (#2032)
* Drop custom logic for delaying GETHEADERS

Reverts "Fix duplicate headers download in initial sync (#1589)" and all following fixes

This reverts commit 169afafd50.

* Fix duplicate initial headers sync
2018-04-20 13:53:05 +03:00
Nathan Marley
99085c5b68 swap devnet magic bytes around (#2028)
Prevents testnet and devnet messages from being confused and helps
differentiate which network messages should refer to.
2018-04-20 13:52:31 +03:00
UdjinM6
138441eb82
Add forkpoint to getchaintips (#2039) 2018-04-18 14:50:52 +03:00
Nathan Marley
f8e5c5d56e Simplify spork defaults by using a map (#2037) 2018-04-18 14:50:26 +03:00
Spencer Lievens
6dd8304a5c Remove duplication of "class CBlockIndex;" (#2036) 2018-04-18 14:50:08 +03:00
UdjinM6
4ea7903777
Dashify lib names (#2035) 2018-04-18 14:49:57 +03:00
UdjinM6
a37dbd6d2b
Fix netfulfilledman usage (#2033)
* drop CMasternodeSync::ClearFulfilledRequests()

* Cleanup netfulfilledman periodically

* Do not expose RemoveFulfilledRequest()
2018-04-18 14:49:25 +03:00
Alexander Block
f7b9aae273 Correctly update pindexBestHeader and pindexBestInvalid in InvalidateBlock (#2029)
Stale pindexBestHeader values cause invalid high-work chains to stay as
pindexBestHeader forever and causes initial syncing to fail.

Observed on testnet.
2018-04-15 08:10:25 +02:00
UdjinM6
880cbf43b7
Backport fPowAllowMinDifficultyBlocks rule to DarkGravityWave (#2027) 2018-04-11 18:17:29 +03:00
Alexander Block
8b4c419ed6 Revert "Merge #7542: Implement "feefilter" P2P message" (#2025)
This reverts commit 11ac70af9e.
2018-04-11 18:16:43 +03:00
UdjinM6
8b09e779b6
Bump testnet checkpoint and nMinimumChainWork/defaultAssumeValid params (#2026)
* bump testnet minchainwork/assumevalid

* add testnet checkpoint at block 100000

blockhash: 0000000003aa53e24b6e60ef97642e4193611f2bcb75ea1fa8105f0b5ffd5242
2018-04-11 14:07:37 +03:00
Nathan Marley
27dfed424b Bump default max block size from 750k to 2MB (#2023) 2018-04-11 14:06:44 +03:00
Nathan Marley
79183f6307 Add tests for GetBlockSubsidy algorithm (#2022)
* remove commented subsidy tests from main_tests

* add tests for GetBlockSubsidy

* fix copyright header in subsidy tests
2018-04-11 14:06:27 +03:00
gladcow
bc45a2f87a Backport compact blocks functionality from bitcoin (#1966)
* Merge #8068: Compact Blocks

48efec8 Fix some minor compact block issues that came up in review (Matt Corallo)
ccd06b9 Elaborate bucket size math (Pieter Wuille)
0d4cb48 Use vTxHashes to optimize InitData significantly (Matt Corallo)
8119026 Provide a flat list of txid/terators to txn in CTxMemPool (Matt Corallo)
678ee97 Add BIP 152 to implemented BIPs list (Matt Corallo)
56ba516 Add reconstruction debug logging (Matt Corallo)
2f34a2e Get our "best three" peers to announce blocks using cmpctblocks (Matt Corallo)
927f8ee Add ability to fetch CNode by NodeId (Matt Corallo)
d25cd3e Add receiver-side protocol implementation for CMPCTBLOCK stuff (Matt Corallo)
9c837d5 Add sender-side protocol implementation for CMPCTBLOCK stuff (Matt Corallo)
00c4078 Add protocol messages for short-ids blocks (Matt Corallo)
e3b2222 Add some blockencodings tests (Matt Corallo)
f4f8f14 Add TestMemPoolEntryHelper::FromTx version for CTransaction (Matt Corallo)
85ad31e Add partial-block block encodings API (Matt Corallo)
5249dac Add COMPACTSIZE wrapper similar to VARINT for serialization (Matt Corallo)
cbda71c Move context-required checks from CheckBlockHeader to Contextual... (Matt Corallo)
7c29ec9 If AcceptBlockHeader returns true, pindex will be set. (Matt Corallo)
96806c3 Stop trimming when mapTx is empty (Pieter Wuille)

* Merge #8408: Prevent fingerprinting, disk-DoS with compact blocks

1d06e49 Ignore CMPCTBLOCK messages for pruned blocks (Suhas Daftuar)
1de2a46 Ignore GETBLOCKTXN requests for unknown blocks (Suhas Daftuar)

* Merge #8418: Add tests for compact blocks

45c7ddd Add p2p test for BIP 152 (compact blocks) (Suhas Daftuar)
9a22a6c Add support for compactblocks to mininode (Suhas Daftuar)
a8689fd Tests: refactor compact size serialization in mininode (Suhas Daftuar)
9c8593d Implement SipHash in Python (Pieter Wuille)
56c87e9 Allow changing BIP9 parameters on regtest (Suhas Daftuar)

* Merge #8505: Trivial: Fix typos in various files

1aacfc2 various typos (leijurv)

* Merge #8449: [Trivial] Do not shadow local variable, cleanup

a159f25 Remove redundand (and shadowing) declaration (Pavel Janík)
cce3024 Do not shadow local variable, cleanup (Pavel Janík)

* Merge #8739: [qa] Fix broken sendcmpct test in p2p-compactblocks.py

157254a Fix broken sendcmpct test in p2p-compactblocks.py (Suhas Daftuar)

* Merge #8854: [qa] Fix race condition in p2p-compactblocks test

b5fd666 [qa] Fix race condition in p2p-compactblocks test (Suhas Daftuar)

* Merge #8393: Support for compact blocks together with segwit

27acfc1 [qa] Update p2p-compactblocks.py for compactblocks v2 (Suhas Daftuar)
422fac6 [qa] Add support for compactblocks v2 to mininode (Suhas Daftuar)
f5b9b8f [qa] Fix bug in mininode witness deserialization (Suhas Daftuar)
6aa28ab Use cmpctblock type 2 for segwit-enabled transfer (Pieter Wuille)
be7555f Fix overly-prescriptive p2p-segwit test for new fetch logic (Matt Corallo)
06128da Make GetFetchFlags always request witness objects from witness peers (Matt Corallo)

* Merge #8882: [qa] Fix race conditions in p2p-compactblocks.py and sendheaders.py

b55d941 [qa] Fix race condition in sendheaders.py (Suhas Daftuar)
6976db2 [qa] Another attempt to fix race condition in p2p-compactblocks.py (Suhas Daftuar)

* Merge #8904: [qa] Fix compact block shortids for a test case

4cdece4 [qa] Fix compact block shortids for a test case (Dagur Valberg Johannsson)

* Merge #8637: Compact Block Tweaks (rebase of #8235)

3ac6de0 Align constant names for maximum compact block / blocktxn depth (Pieter Wuille)
b2e93a3 Add cmpctblock to debug help list (instagibbs)
fe998e9 More agressively filter compact block requests (Matt Corallo)
02a337d Dont remove a "preferred" cmpctblock peer if they provide a block (Matt Corallo)

* Merge #8975: Chainparams: Trivial: In AppInit2(), s/Params()/chainparams/

6f2f639 Chainparams: Trivial: In AppInit2(), s/Params()/chainparams/ (Jorge Timón)

* Merge #8968: Don't hold cs_main when calling ProcessNewBlock from a cmpctblock

72ca7d9 Don't hold cs_main when calling ProcessNewBlock from a cmpctblock (Matt Corallo)

* Merge #8995: Add missing cs_main lock to ::GETBLOCKTXN processing

dfe7906 Add missing cs_main lock to ::GETBLOCKTXN processing (Matt Corallo)

* Merge #8515: A few mempool removal optimizations

0334430 Add some missing includes (Pieter Wuille)
4100499 Return shared_ptr<CTransaction> from mempool removes (Pieter Wuille)
51f2783 Make removed and conflicted arguments optional to remove (Pieter Wuille)
f48211b Bypass removeRecursive in removeForReorg (Pieter Wuille)

* Merge #9026: Fix handling of invalid compact blocks

d4833ff Bump the protocol version to distinguish new banning behavior. (Suhas Daftuar)
88c3549 Fix compact block handling to not ban if block is invalid (Suhas Daftuar)
c93beac [qa] Test that invalid compactblocks don't result in ban (Suhas Daftuar)

* Merge #9039: Various serialization simplifcations and optimizations

d59a518 Use fixed preallocation instead of costly GetSerializeSize (Pieter Wuille)
25a211a Add optimized CSizeComputer serializers (Pieter Wuille)
a2929a2 Make CSerAction's ForRead() constexpr (Pieter Wuille)
a603925 Avoid -Wshadow errors (Pieter Wuille)
5284721 Get rid of nType and nVersion (Pieter Wuille)
657e05a Make GetSerializeSize a wrapper on top of CSizeComputer (Pieter Wuille)
fad9b66 Make nType and nVersion private and sometimes const (Pieter Wuille)
c2c5d42 Make streams' read and write return void (Pieter Wuille)
50e8a9c Remove unused ReadVersion and WriteVersion (Pieter Wuille)

* Merge #9058: Fixes for p2p-compactblocks.py test timeouts on travis (#8842)

dac53b5 Modify getblocktxn handler not to drop requests for old blocks (Russell Yanofsky)
55bfddc [qa] Fix stale data bug in test_compactblocks_not_at_tip (Russell Yanofsky)
47e9659 [qa] Fix bug in compactblocks v2 merge (Russell Yanofsky)

* Merge #9160: [trivial] Fix hungarian variable name

ec34648 [trivial] Fix hungarian variable name (Russell Yanofsky)

* Merge #9159: [qa] Wait for specific block announcement in p2p-compactblocks

dfa44d1 [qa] Wait for specific block announcement in p2p-compactblocks (Russell Yanofsky)

* Merge #9125: Make CBlock a vector of shared_ptr of CTransactions

b4e4ba4 Introduce convenience type CTransactionRef (Pieter Wuille)
1662b43 Make CBlock::vtx a vector of shared_ptr<CTransaction> (Pieter Wuille)
da60506 Add deserializing constructors to CTransaction and CMutableTransaction (Pieter Wuille)
0e85204 Add serialization for unique_ptr and shared_ptr (Pieter Wuille)

* Merge #8872: Remove block-request logic from INV message processing

037159c Remove block-request logic from INV message processing (Matt Corallo)
3451203 [qa] Respond to getheaders and do not assume a getdata on inv (Matt Corallo)
d768f15 [qa] Make comptool push blocks instead of relying on inv-fetch (mrbandrews)

* Merge #9199: Always drop the least preferred HB peer when adding a new one.

ca8549d Always drop the least preferred HB peer when adding a new one. (Gregory Maxwell)

* Merge #9233: Fix some typos

15fa95d Fix some typos (fsb4000)

* Merge #9260: Mrs Peacock in The Library with The Candlestick (killed main.{h,cpp})

76faa3c Rename the remaining main.{h,cpp} to validation.{h,cpp} (Matt Corallo)
e736772 Move network-msg-processing code out of main to its own file (Matt Corallo)
87c35f5 Remove orphan state wipe from UnloadBlockIndex. (Matt Corallo)

* Merge #9014: Fix block-connection performance regression

dd0df81 Document ConnectBlock connectTrace postconditions (Matt Corallo)
2d6e561 Switch pblock in ProcessNewBlock to a shared_ptr (Matt Corallo)
2736c44 Make the optional pblock in ActivateBestChain a shared_ptr (Matt Corallo)
ae4db44 Create a shared_ptr for the block we're connecting in ActivateBCS (Matt Corallo)
fd9d890 Keep blocks as shared_ptrs, instead of copying txn in ConnectTip (Matt Corallo)
6fdd43b Add struct to track block-connect-time-generated info for callbacks (Matt Corallo)

* Merge #9240: Remove txConflicted

a874ab5 remove internal tracking of mempool conflicts for reporting to wallet (Alex Morcos)
bf663f8 remove external usage of mempool conflict tracking (Alex Morcos)

* Merge #9344: Do not run functions with necessary side-effects in assert()

da9cdd2 Do not run functions with necessary side-effects in assert() (Gregory Maxwell)

* Merge #9273: Remove unused CDiskBlockPos* argument from ProcessNewBlock

a13fa4c Remove unused CDiskBlockPos* argument from ProcessNewBlock (Matt Corallo)

* Merge #9352: Attempt reconstruction from all compact block announcements

813ede9 [qa] Update compactblocks test for multi-peer reconstruction (Suhas Daftuar)
7017298 Allow compactblock reconstruction when block is in flight (Suhas Daftuar)

* Merge #9252: Release cs_main before calling ProcessNewBlock, or processing headers (cmpctblock handling)

bd02bdd Release cs_main before processing cmpctblock as header (Suhas Daftuar)
680b0c0 Release cs_main before calling ProcessNewBlock (cmpctblock handling) (Suhas Daftuar)

* Merge #9283: A few more CTransactionRef optimizations

91335ba Remove unused MakeTransactionRef overloads (Pieter Wuille)
6713f0f Make FillBlock consume txn_available to avoid shared_ptr copies (Pieter Wuille)
62607d7 Convert COrphanTx to keep a CTransactionRef (Pieter Wuille)
c44e4c4 Make AcceptToMemoryPool take CTransactionRef (Pieter Wuille)

* Merge #9375: Relay compact block messages prior to full block connection

02ee4eb Make most_recent_compact_block a pointer to a const (Matt Corallo)
73666ad Add comment to describe callers to ActivateBestChain (Matt Corallo)
962f7f0 Call ActivateBestChain without cs_main/with most_recent_block (Matt Corallo)
0df777d Use a temp pindex to avoid a const_cast in ProcessNewBlockHeaders (Matt Corallo)
c1ae4fc Avoid holding cs_most_recent_block while calling ReadBlockFromDisk (Matt Corallo)
9eb67f5 Ensure we meet the BIP 152 old-relay-types response requirements (Matt Corallo)
5749a85 Cache most-recently-connected compact block (Matt Corallo)
9eaec08 Cache most-recently-announced block's shared_ptr (Matt Corallo)
c802092 Relay compact block messages prior to full block connection (Matt Corallo)
6987219 Add a CValidationInterface::NewPoWValidBlock callback (Matt Corallo)
180586f Call AcceptBlock with the block's shared_ptr instead of CBlock& (Matt Corallo)
8baaba6 [qa] Avoid race in preciousblock test. (Matt Corallo)
9a0b2f4 [qa] Make compact blocks test construction using fetch methods (Matt Corallo)
8017547 Make CBlockIndex*es in net_processing const (Matt Corallo)

* Merge #9486: Make peer=%d log prints consistent

e6111b2 Make peer id logging consistent ("peer=%d" instead of "peer %d") (Matt Corallo)

* Merge #9400: Set peers as HB peers upon full block validation

d4781ac Set peers as HB peers upon full block validation (Gregory Sanders)

* Merge #9499: Use recent-rejects, orphans, and recently-replaced txn for compact-block-reconstruction

c594580 Add braces around AddToCompactExtraTransactions (Matt Corallo)
1ccfe9b Clarify comment about mempool/extra conflicts (Matt Corallo)
fac4c78 Make PartiallyDownloadedBlock::InitData's second param const (Matt Corallo)
b55b416 Add extra_count lower bound to compact reconstruction debug print (Matt Corallo)
863edb4 Consider all (<100k memusage) txn for compact-block-extra-txn cache (Matt Corallo)
7f8c8ca Consider all orphan txn for compact-block-extra-txn cache (Matt Corallo)
93380c5 Use replaced transactions in compact block reconstruction (Matt Corallo)
1531652 Keep shared_ptrs to recently-replaced txn for compact blocks (Matt Corallo)
edded80 Make ATMP optionally return the CTransactionRefs it replaced (Matt Corallo)
c735540 Move ORPHAN constants from validation.h to net_processing.h (Matt Corallo)

* Merge #9587: Do not shadow local variable named `tx`.

44f2baa Do not shadow local variable named `tx`. (Pavel Janík)

* Merge #9510: [trivial] Fix typos in comments

cc16d99 [trivial] Fix typos in comments (practicalswift)

* Merge #9604: [Trivial] add comment about setting peer as HB peer.

dd5b011 [Trivial] add comment about setting peer as HB peer. (John Newbery)

* Fix using of AcceptToMemoryPool in PrivateSend code

* add `override`

* fSupportsDesiredCmpctVersion

* bring back tx ressurection in DisconnectTip

* Fix delayed headers

* Remove unused CConnman::FindNode overload

* Fix typos and comments

* Fix minor code differences

* Don't use rejection cache for corrupted transactions

Partly based on https://github.com/bitcoin/bitcoin/pull/8525

* Backport missed cs_main locking changes

Missed from 58a215ce8c

* Backport missed comments and mapBlockSource.emplace call

Missed from two commits:
88c35491ab
7c98ce584e

* Add CheckPeerHeaders() helper and check in (nCount == 0) too
2018-04-11 14:06:01 +03:00
UdjinM6
eecc692236
Fix a very ancient bug from mid 2015 (#2021)
Introduced in c701839a43 (diff-2e2ff25b7bc057a741bf93c35ae3b624R42) (committed on 10 Jul 2015). Survived all the refactoring for almost 3 years and was revealed by 525c049316 (diff-49ff8fea774f647034a130c40d4f3c65R519) (as a part of https://github.com/dashpay/dash/pull/1856) by causing silent crashes on multiple nodes (testnet). v0.12.2.x and earlier branches/versions aren't affected, they simply print meaningless log entry.
2018-04-05 15:34:40 +03:00
UdjinM6
a0874b72a9
Validate data size for proposals only (#2004)
There are no watchdogs and it makes no sense to limit triggers by size (invalid triggers are going to be voted down anyway).
512 bytes should be more than enough for any proposal - the only value we do not check size of is URL and with 512 bytes total limit URL has space for almost 300 bytes.
2018-04-05 15:34:26 +03:00
Alexander Block
c0a1099986 Fix instantsend in testnet and regtest (#2016)
#1962 changes the minimum required confirmations for InstantSend to 2 when
running in testnet. This resulted in the quorum rank calculation to pick
blocks which are higher then the current chain tip. This commit fixes this
by calculating the added height based on nInstantSendConfirmationsRequired.

This results in the value 4 for mainnet, so no incompatibility is
introduced. On testnet and regtest, this results in 0.
2018-03-29 18:08:24 +03:00
UdjinM6
72a225b9bf
Few fixes for lite mode (#2014)
* Allow disabling txindex in lite mode

* Do not load/store Dash-specific cache in lite mode

* Do not create/show masternode tab in lite mode

* Do not connect PS actions in lite mode

* Fix sync/ignore block updates in Dash submodules in lite mode
2018-03-29 18:08:00 +03:00
UdjinM6
2f1661678c
Locked txes should not expire until mined and have sufficient confirmations (#2011) 2018-03-29 18:07:40 +03:00
UdjinM6
d1bf615f33
No POOL_STATE_ERROR or POOL_STATE_SUCCESS on masternodes (#2009)
The reason for this removal is that this block was a copy/paste when we spit one huge privatesend file into multiple classes/files trying to make as little changes as possible to not to break anything. If you look at CPrivateSendServer::SetState() you'll notice that these states (POOL_STATE_ERROR and POOL_STATE_SUCCESS) are illegal for masternodes anyway, so no reason to have conditions relying on that or trying to set illigal state.
2018-03-21 14:10:19 +03:00
UdjinM6
d03adb7c39
Check if in masternode mode first and only then do the job (or not) (#2008)
* Check if in masternode mode first and only then do the job (or not)

* address review comment
2018-03-21 14:10:01 +03:00
UdjinM6
846f1d217a
Avoid processing tx lock request twice in the wallet it was sent from (#2007) 2018-03-21 14:09:47 +03:00
UdjinM6
c0c998da35
Fix CInstantSend::GetTxLockRequest() (#2006)
Should fail for empty lock request
2018-03-21 14:09:28 +03:00
UdjinM6
15fac7c7e7
Validate proposals for expiration (#2003)
Postpone this on mainnet until old proposals are done
2018-03-21 14:09:13 +03:00
UdjinM6
b7bd96e2bb
Clarify the warning displayed when encrypting HD wallet (#2002)
* Clarify the warning displayed when encrypting HD wallet

* `dashs` -> `funds`
2018-03-21 14:08:55 +03:00
UdjinM6
c7e9ea9fba
Avoid repeating the full scan in CMasternodeMan::UpdateLastPaid() on non-MNs (#1985)
Instead, remember the block height previous scan was performed at and scan back to that height only (but at least LAST_PAID_SCAN_BLOCKS).
2018-03-21 14:08:35 +03:00
UdjinM6
4930bb9f5f
Don't hold cs_storage in CKeyHolderStorage while calling functions which might lock cs_wallet (#2000)
Co-authored-by: Alexander Block <ablock84@gmail.com>
2018-03-20 14:06:07 +03:00
UdjinM6
4d442376e9
Limit the scope of cs_wallet lock in CPrivateSendClient::PrepareDenominate() (#1997) 2018-03-20 14:05:39 +03:00
UdjinM6
a3bcc4307d
Refactor governance (#1993)
* Refactor CGovernanceObject::IsValidLocally()

* Refactor CGovernanceObject::ProcessVote()

* Refactor CGovernanceObject::CountMatchingVotes()

* Refactor CGovernanceObjectVoteFile::HasVote()

* Refactor CGovernance* (more consts and refs)

* Refactor CGovernanceManager::HaveVoteForHash()

* Refactor CGovernanceManager::SerializeVoteForHash()

* Refactor CGovernanceManager::SyncSingleObjAndItsVotes()
2018-03-20 14:04:59 +03:00
UdjinM6
f28a58e0a9
Refactor and fix restart (#1999)
* Refactor restart

* Correctly interrupt all threads on restart

Fixes the issue with restart when running with `-server`
2018-03-19 16:09:47 +03:00
UdjinM6
7248700b33
Add missing cs_main locks (#1998)
`Misbehaving()` and `State()` require `cs_main` to be locked, this PR adds missing ones (in Dash specific code only).
2018-03-19 16:09:29 +03:00
UdjinM6
ddff32b96a
Fix TransactionRecord::PrivateSendMakeCollaterals tx type (#1996)
CPrivateSendClient::MakeCollateralAmounts() creates inputs of exactly CPrivateSend::GetMaxCollateralAmount()
2018-03-19 16:09:13 +03:00
UdjinM6
4f978a2634
Drop Nx requirements for PS collaterals (#1995) 2018-03-19 16:08:57 +03:00
UdjinM6
9e98c856f2
A pack of small fixes (#1992)
* Make sure gobject collateral was mined

`CGovernanceObject::IsCollateralValid()` would still fail for non-mined collateral later trying to check confirmations

* Fix powLimit for mainnet/testnet

That's a legacy thing, slightly rising it to match the actual bit-shifted value has no effect because real values are already lower.
Also clarify values for all networks in comments.

* Check for script addresses in CSuperblock::ParsePaymentSchedule()

Sentinel should already be downvoting such triggers if they would exist, no need to store/relay them.

* Do not process already known valid vote twice in CGovernanceObject::ProcessVote()

This should be handled by `CGovernanceManager::ProcessVote()` but imo it's better to have this at the `CGovernanceObject::ProcessVote()` level as well.

* Make sure CGovernanceObjectVoteFile::AddVote() never adds/updates already known votes

The way `CGovernanceObjectVoteFile::AddVote()` is used (i.e. wrapped in `CGovernanceObjectVoteFile::HasVote()` condition) it's already the case. Hoever nothing would guarantee consistency if it would be used elsewhere without such wrapper, so it's better to have similar check inside.

* Do not even try mnb recovery when -connect is set

`CConnman::ThreadOpenMasternodeConnections()` thread won't even start when `-connect` is set, so no need to ask for recovery, there is nothing that is going to be able to process such request.

* No need for SIGHASH_ANYONECANPAY in PS collateral signature

Collateral is just a normal tx created and signed by each participant individually, there is no need for special sig types.

* Release semMasternodeOutbound in CConnman::Interrupt()

Re-align Dash code with Bitcoin.
2018-03-19 16:08:32 +03:00
UdjinM6
9b17f2b9c8
Convert gobject count output to json (by default) (#1994)
Old mode is available via `gobject count all`
2018-03-15 22:09:06 +03:00
UdjinM6
1d32d1c327
Add missing includes required for compilation with --disable-wallet flag (#1991) 2018-03-15 22:08:11 +03:00
UdjinM6
a44f48743b
Allow data outputs in PS collaterals (#1984)
* Allow data outputs in PS collaterals

This should allow to
- reduce utxo spam caused by 1x collaterals a bit
- use otherwise non-usable small inputs (in the range of 1-2x) as PS collaterals, which should reduce utxo set even further

Requires protobump

* patch to avoid protobump requirement

* address review comments
2018-03-15 12:22:22 +03:00
UdjinM6
08033ffe4f
Reject Dash-specific messages from obsolete peers (#1983)
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.
2018-03-15 12:21:43 +03:00
UdjinM6
e9f63073dc
Warn when more than 50% of masternodes are using newer version (#1963)
* Warn when more than 50% of masternodes are using newer version than our local one (i.e. CLIENT_VERSION)

Closes trac#64

* fix
2018-03-15 12:21:12 +03:00
UdjinM6
04a23bf0c8
Fix the bug in CGovernanceObject::ProcessVote() (#1989)
Introduced in #1977
2018-03-14 20:50:07 +03:00
UdjinM6
4b128b1b94
Fix listaddressbalances (#1987) 2018-03-14 19:14:37 +03:00
Alexander Block
19ea1a7918 Use operator[] instead of emplace in CMasternodePayments::AddPaymentVote (#1980)
Found this when running dip3 integration tests. Votes stopped being
propagated.

When NetMsgType::MASTERNODEPAYMENTVOTE is handled, the payment vote is
already added to mapMasternodePaymentVotes and then marked as not verified.

When AddPaymentVote is then called shortly after that, the emplace does not
update the already added vote.

The real problem here is actually something different. AddPaymentVote is
named badly (should be more like AddOrUpdatePaymentVote) which resulted in
the non-obvious error while refactoring this code (who could have known
that we rely on that side effect?). So I renamed that method as well now.
2018-03-10 15:35:27 +03:00
UdjinM6
7d5223b5e4
Network-specific thresholds for required confirmations (IS) (#1962) 2018-03-10 15:35:09 +03:00
UdjinM6
6536003528
Draw text on top of everything else in TrafficGraphWidget (#1944) 2018-03-10 15:34:50 +03:00
UdjinM6
ca3655f494
Fix some (potential dead)locks (#1977)
* Avoid locking cs_main in CMasternode/Ping/Broadcast

Deligate this to CMasternodeMan and use AssertLockHeld instead

* Ensure consistent locking order (cs_main, cs_wallet, mempool.cs, cs_instantsend) in CInstantSend while avoiding potential deadlocks at the same time

* Add missing locks in wallet

* Add missing locks in governance

* Fix cs_vPendingMasternodes vs cs_main potential deadlock

SendVerifyRequest no longer opens connection directly, so no cs_main is needed here
2018-03-09 17:15:48 +03:00
Alexander Block
2a7e6861d2 Include "clientversion.h" in rpc/masternode.cpp (#1979)
Otherwise it fails to compile when the wallet is disabled at compile time
2018-03-09 15:41:51 +03:00
UdjinM6
d115efacb8
[RPC] Few additions to masternodelist (#1971)
* RPC: Add `masternodelist daemon`

* RPC: Add `masternodelist json` and make it default

* RPC: Add `masternodelist sentinel`
2018-03-08 15:22:13 +03:00
crowning-
a9d8e2c5dd [Init] Avoid segfault when called with -enableinstantsend=0 (#1976) 2018-03-08 15:19:25 +03:00
Alexander Block
3200eae9b1 Don't use short version of 'tinyformat/fmt' namespace in util.h (#1975)
* Don't use short version of 'tinyformat/fmt' namespace in util.h

Clion is not able to parse this correctly and messes up all the syntax
checks, marking large parts of C++ files as syntactically invalid, making
it hard to find real syntax errors without trying compilation.

* Also use full namespace name for strprintf in tinyformat.h
2018-03-08 15:18:51 +03:00
UdjinM6
97a07cbc4c
Refactor CMasternodePayment* (#1974)
* Refactor CMasternodePayment*: avoid using `count` and `[]`

Use iterators instead

* Refactor CMasternodePayment*: mark functions as const, pass references, adjust arg name

* Refactor/rename CMasternodePayments::CanVote()

* Refactor CMasternodePayment*: minor trivial changes

* Refactor CMasternodePayment*: reduce number of calls to GetHash()
2018-03-08 15:18:38 +03:00
UdjinM6
4ffa7bac02
Introduce DIP0001Height (#1973)
Block height at which DIP0001 becomes active

Also drop fDIP0001WasLockedIn
2018-03-08 15:18:24 +03:00
UdjinM6
9451782a04
RPC: Add listaddressbalances (#1972) 2018-03-08 15:18:06 +03:00
crowning-
118eeded6d [GUI] Create QR-code for Masternode private key (#1970) 2018-03-08 15:17:34 +03:00
UdjinM6
9ef38c6d73
Switch CNetFulfilledRequestManager and CMasternodeMan maps/funcs to CService (#1967)
* Switch CNetFulfilledRequestManager and CMasternodeMan maps/funcs to CService

This is to make them work correctly on regtest.
We make sure that behaviour on other networks is not affected though.

* Add fAllowMultiplePorts to chainparams

Tweak either we should allow nodes with the same address and multiple ports or not for this specific chain
2018-03-08 15:16:52 +03:00
UdjinM6
929c1584ac
Rename CheckPreviousBlockVotes to CheckBlockVotes and adjust its log output a bit (#1965) 2018-03-05 15:27:05 +03:00
Alexander Block
611879aa6d Use spork addresses instead of raw keys and allow changing them on startup (#1969)
* Support passing CKeyID to CMessageSigner/CHashSigner

* Use Dash addresses instead of raw public keys for sporks

The spork addresses are identical to the previously used public keys.

Also use CKeyID/CKey directly inside CSporkManager instead of parsing the
addresses/keys over and over. The default spork key (from chainparams) is
initialized with InitDefaultSporkAddress(). SetPrivKey parses the private
key now and stores it in sporkPrivKey instead of parsing it in
CSporkMessage::Sign().

* Allow setting of spork address via command line

* Remove unused strMasternodePaymentsPubKey chainparam

Traces from the past...

* Review fixes

1. Remove the need for InitDefaultSporkAddress
2. Remove bogus checks for hex private keys
3. Alphabetical order for new include
4. Add . to help string

* Add regtest spork key

As this key is not meant to be private, the private key is also added in
the form of a comment (for later use in regtests)

* Review fixes
2018-03-02 16:15:04 +03:00
UdjinM6
bf0854e58e
Swap expired and sentinel_expired states in order (#1961)
State switching should correlate with spork14 and CMasternode::IsValidForPayment() a bit better now
2018-03-02 16:13:31 +03:00
Alexander Block
9876207ce2 Multiple devnet fixes (#1960)
* Add missing help string for -devnet

* Remove testnet seeds from devnet

* Activate BIP34/65/66 at height 2 instead of 1

Height 1 is the genesis block and not the devnet genesis block. The genesis
block is still at version 1, resulting in re-indexing to fail.
2018-03-02 16:12:31 +03:00
UdjinM6
bab543f3e6
Various RPC fixes (#1958)
* RPC: fix listunspent include_unsafe param usage

* RPC: Add two fields to indicate if some mempool entry is an InstantSend tx and if it was locked or not

* RPC: Add privatesend_balance to getwalletinfo rpc

* RPC: "BTC" -> CURRENCY_UNIT

* RPC: more EnsureWalletIsAvailable in Dash-specific code

* RPC: EnsureWalletIsUnlocked in `gobject prepare`

Also fixes missing cs_wallet lock

* RPC: disable `privatesend` rpc on masternodes completely

* RPC: refactor `spork` rpc

* RPC: Show correct port in HelpExampleRpc

* RPC: few trivial fixes

* fix
2018-03-01 16:18:46 +03:00
Nathan Marley
b0868093b0 simplify gobject JSON format, remove unused fields (#1902)
* simplify gobject JSON format, remove unused fields

This allows gobject format to change from (for example):

```
[
    [
        "proposal",
        {"object": "data-here"}
    ]
]
```

... to simply:

```
{"object": "data-here"}
```

The outer array isn't needed, and the first value in the 2-item tuple is
likewise discarded by DashCore. This change should allow either data
format to exist (we can deprecate/remove the older format later) and
remove the array of different type elements (string, object).

* validator test for legacy and new proposal formats
2018-02-28 02:20:16 +03:00
UdjinM6
1dda9fe6f2
CProposalValidator refactoring and follow up fixes (#1956)
* Refactor CProposalValidator

- fix names
- MAX_NAME_SIZE instead of magic value
- move most functions to private, test actual usage (constructor and Validate), not every single function
- do not store hex string (there is no reason to do so anymore)
- remove (now) unused functions

* Make sure payment_address has no whitespaces

* Fix governance_validators_tests

* Don't allow whitespaces, drop StripWhitespaces and add corresponding tests

* Show validator internal errors on check failure
2018-02-27 16:39:48 +03:00
Alexander Block
e37b6c7dab Fix BIP147 deployment threshold parameter (#1955)
It should be 50 and not 59
2018-02-27 16:39:34 +03:00
UdjinM6
106276a3e2
Adjust/fix log output (#1954)
* fix typo in debug message

* log: specify MN

* log: fix class::func

* log: format log2_work

* log: other minor adjustments
2018-02-26 14:10:20 +03:00
UdjinM6
2c04504f1c
Refactor IS votes processing (#1951)
Also make sure orphans are actually processed
2018-02-25 08:33:40 +03:00
UdjinM6
89380b4c92
Drop watchdogs, replace them with sentinel pings (#1949)
* Drop watchdogs, replace them with sentinel pings

* Address review comments

* revert `()`
2018-02-25 08:33:27 +03:00
UdjinM6
ef9a9f2d67
Fix unlocking error on "Start Mixing" (#1941)
* Fix unlocking error on "Start Mixing"

Instead warn that wallet is fully unlocked etc.

* Revert "Fix unlocking error on "Start Mixing""

This reverts commit 4951e58f66.

* Drop mixingOnlyCheckBox and determine the correct unlock path automatically via provided mode
2018-02-22 12:00:50 +03:00
UdjinM6
0153c4c5e8
Merge pull request #1948 from UdjinM6/removeusingnamespacestd
Remove `using namespace std`
2018-02-22 10:41:52 +03:00
thephez
151152b98b rpc - Update getaddednodeinfo help to remove dummy argument (#1947) 2018-02-22 10:41:08 +03:00
UdjinM6
a4b313fd3d Fix std in DBG macro 2018-02-21 23:24:28 +03:00
UdjinM6
6a6e4cdc1b Remove remaining using namespace std 2018-02-21 22:32:13 +03:00
Wladimir J. van der Laan
08b5c69eff Merge #9643: [refactor] Remove using namespace <xxx> from wallet/ & util*
a57845c Refactor: Remove using namespace <xxx> from util* (Karl-Johan Alm)
8a52281 Refactor: Remove using namespace <xxx> from wallet/ (Karl-Johan Alm)

Tree-SHA512: cd06b569fee0ce25db753ade5ee694b582733a8883bfd62a27613020266d2a902af079ef23b58a5412f7af4afd7681e689af3c7780e5ea00c77b16d144d72db5
2018-02-21 22:32:13 +03:00
Wladimir J. van der Laan
ccca7af09e Merge #9476: [refactor] Remove using namespace <xxx> from rpc/ & script/ sources
8cbfc4e Refactor: Remove using namespace <xxx> from script/ (Karl-Johan Alm)
f3c264e Refactor: Remove using namespace <xxx> from rpc/ (Karl-Johan Alm)

Tree-SHA512: 407e80eeda0b8e1df22c5fcba33572e117542fde83c67357f6c2d98fa60bcc7b21bb88ad9a1ee59062fbec17fadaa4836b69e8e6d18188b4027b794357634467
2018-02-21 22:32:13 +03:00
UdjinM6
e71cb3861d
Store CGovernanceVote hash in memory instead of recalculating it via GetHash() every time (#1946)
* Store CGovernanceVote hash in memory instead of recalculating it via GetHash() every time

* Rename GetVoteDataStream to SerializeVoteToStream
2018-02-21 19:35:37 +03:00
Alexander Block
0abd1894ee Call CheckMnbAndUpdateMasternodeList when starting MN (#1945)
* Call CheckMnbAndUpdateMasternodeList when when starting MN

Otherwise the invoking node won't have nCollateralMinConfBlockHash
updated correctly, resulting in the MN showing up in the wrong position
when masternode ranks are calculated.

* Remove UpdateMasternodeList and remaining uses of it
2018-02-21 19:32:51 +03:00
UdjinM6
e23f61822d
Make TrafficGraphDataTests more general (#1943) 2018-02-21 19:32:35 +03:00
UdjinM6
43671a39df
Deprecate nMnCount in mnget (#1942) 2018-02-21 19:32:21 +03:00
UdjinM6
5b1c4d8a11
Few (mostly trivial) cleanups and fixes (#1940)
* 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
2018-02-21 19:32:08 +03:00
UdjinM6
99273f63aa
Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (#1937)
* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (gobject)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (gobjvote)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (mnw)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (txlvote)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (dsq)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (dstx)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (spork)

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (mnb)

* Actually care about old signature format in mnp, otherwise we can start banning peers rather quickly

* Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (mnv)

* Unify sign/verify code a bit by using GetSignatureHash() (even when it matches GetHash())

* fix docs

* address review comments

* fix log output (copy/paste error)

* Replace custom GetSignatureHash/GetHash with serialization (where applicable)

* Convert from/to old format in SerializationOp only for p2p

* fix
2018-02-16 17:54:53 +03:00
UdjinM6
451f7f0710
Fix issues with mnp, mnw and dsq signatures via new spork (SPORK_6_NEW_SIGS) (#1936)
* Use new spork SPORK_6_NEW_SIGS to fix masternode payment vote signature format

* Use SPORK_6_NEW_SIGS to also fix masternode ping signature format

* Use SPORK_6_NEW_SIGS to also fix privatesend queue signature format

* adjust spork6 description in docs

* mnp hashing/signing changed - hash everything and use SignHash/VerifyHash directly instead of constructing a string to sign (both activate via SPORK_6_NEW_SIGS)

* fix

* cleanup
2018-02-15 17:44:22 +03:00
UdjinM6
0480626410
Force masternodes to have listen=1 and maxconnections to be at least DEFAULT_MAX_PEER_CONNECTIONS (#1935) 2018-02-15 17:43:32 +03:00
UdjinM6
aadec37354
Change format of gobject, store/transmit vchData instead of hex-encoded string of a string (#1934)
* Change format of gobject, store/transmit vchData instead of hex-encoded string

* fix (limited string for old format)
2018-02-15 17:43:17 +03:00
UdjinM6
c656133502
Switch masternode id in Dash data structures from CTxIn to COutPoint (#1933)
* Switch masternode id in Dash data structures from CTxIn to COutPoint (including p2p level)

* outpoint -> masternodeOutpoint in DSEG
2018-02-15 10:29:44 +03:00
UdjinM6
0bd8c8e43a
Refactor: vecTxIn -> vecOutPoints for CompactTallyItem (#1932) 2018-02-15 10:29:31 +03:00
gladcow
2ea6f7d82e Use override keyword for overriden class member functions (#1644)
* Use `override` keyword for all overriden functions

* more override
2018-02-15 10:29:15 +03:00
UdjinM6
580c4884c1
Fix trigger execution and expiration (#1920)
* Move trigger expiration logic into CSuperblock and handle executed/non-executed triggers differently

* Actually execute triggers
2018-02-12 21:35:10 +03:00
UdjinM6
ed712eb819
Fix nDelayGetHeadersTime (int64_t max == never delay) (#1916)
* Fix nDelayGetHeadersTime (int64_t max == never delay)

* Rewrite conditions in a more natural way i.e. (now - last_best > threshold)
2018-02-12 21:34:53 +03:00
UdjinM6
f35b5979a7
Refactor CGovernanceManager::Sync (split in two) (#1930) 2018-02-12 15:49:28 +03:00
UdjinM6
b5046d59c5
Dseg fixes (#1929)
* Do not filter non-upgraded mns in DSEG

Reverts #1373, we need non-upgraded MNs to verify their old govvotes

* Split mn list/single vin logic for DSEG

This should prevent looping till the end of the list if we were asked for a single mn and a) we have it but some following `if` has failed or b) we don't have it. It also should be a bit easier to follow the logic this way.
2018-02-12 15:49:15 +03:00
UdjinM6
d5ef77ba99
Refactor: use constant refs and Ret suffix (#1928)
* Refactor function params from `std::string` to `const std::string&`

* Refactor more function params to use const references
2018-02-12 15:49:00 +03:00
UdjinM6
3f0c8723e9
Slightly refactor AutoBackupWallet (#1927)
- make incoming strWalletFile a const reference, do not modify it directly inside the function
- follow `false false ... false true` principle
2018-02-12 15:48:48 +03:00
UdjinM6
2e04864b26
Replace boost::lexical_cast<int> with atoi (#1926)
Also cleanup existing atoi-s in Dash code
2018-02-12 15:48:35 +03:00
UdjinM6
0f4d963baf
Add DSHA256 and X11 benchmarks, refactor names of other algo benchmarks to group them together (#1925)
DSHA256 and X11 also have additional tests for data from 32 to 2048 bytes (for comparison, in steps)
2018-02-12 15:48:20 +03:00
UdjinM6
4528c735f4
Replace some instantsend/privatesend magic numbers with constants (#1924) 2018-02-12 15:48:09 +03:00
UdjinM6
d7f55d5083
Switch nTimeLastSuccessfulStep from GetTimeMillis() to GetTime() (#1923)
This makes PS mockable. And we don't need that much of a precision here anyway.
2018-02-12 15:47:53 +03:00
UdjinM6
204b1fe997
Drop unnecessary AcceptToMemoryPool in PS (and corresponding cs-main locks), just relay what we have (#1922) 2018-02-12 15:47:35 +03:00
UdjinM6
271c249e15
Skip next mn payments winners when selecting a MN to mix on (#1921) 2018-02-12 15:47:20 +03:00
UdjinM6
0670695fea
Move prev/next sb height logic from rpc to CSuperblock::GetNearestSuperblocksHeights (#1919) 2018-02-12 15:46:55 +03:00
UdjinM6
312088b560
Fix connectivity check in CActiveMasternode::ManageStateInitial (#1918) 2018-02-12 15:46:38 +03:00
UdjinM6
741fcbc902
Remove excessive custom validation in CProposalValidator::ValidatePaymentAddress (#1917) 2018-02-12 15:46:27 +03:00
Nathan Marley
354aac8d1c rename nEpochStart variable and adjust comments (#1915)
* rename nEpochStart variable and adjust comments

* rename GetBlockStart() -> GetBlockHeight()

* change var name to nBlockHeight
2018-02-12 15:46:01 +03:00
Nathan Marley
8ea1bd0f55 remove unused method GetObjectSubtype (#1914)
I believe this was stubbed to eventually read the string in the 1st
field of the inner array in the gobject JSON. Currently only Sentinel
uses this and I would like to move to just a single JSON object, so
don't think this is necessary any longer.
2018-02-12 15:45:38 +03:00
UdjinM6
6825b347f2
Merge pull request #1911 from codablock/pr_backports_from_cmptblk
Backports from compact block related Bitcoin PRs
2018-02-09 13:08:03 +03:00
Wladimir J. van der Laan
4ac4e96e8f Merge #9765: Harden against mistakes handling invalid blocks
ba803ef Harden against mistakes handling invalid blocks (Suhas Daftuar)
2018-02-08 11:18:48 +01:00
Alexander Block
662ec024ab Make peer id logging consistent ("peer=%d" instead of "peer %d") 2018-02-08 11:18:48 +01:00
Matt Corallo
592d8f0734 Use a temp pindex to avoid a const_cast in ProcessNewBlockHeaders 2018-02-08 11:06:22 +01:00
Matt Corallo
15a8fcf993 Add a CValidationInterface::NewPoWValidBlock callback 2018-02-08 11:06:22 +01:00
Matt Corallo
d28172f57e Call AcceptBlock with the block's shared_ptr instead of CBlock& 2018-02-08 11:06:22 +01:00
Matt Corallo
807ae74c21 Make CBlockIndex*es in net_processing const 2018-02-08 11:06:22 +01:00
Alexander Block
1d1c31052a Fix cmd args handling for -bip9params 2018-02-08 10:40:51 +01:00
Wladimir J. van der Laan
026f2e2a8c Merge #8446: [Trivial] BIP9 parameters on regtest cleanup
0fc00be Do not shadow previous local variable (Pavel Janík)
115265b Trivial: bip -> BIP in help text and comment (Pavel Janík)
2018-02-08 10:40:51 +01:00
Suhas Daftuar
2c810d2c3f Allow changing BIP9 parameters on regtest 2018-02-08 10:40:51 +01:00
Matt Corallo
45151bd131 Move context-required checks from CheckBlockHeader to Contextual... 2018-02-08 10:40:51 +01:00
Alexander Block
120893c63d Update timeLastMempoolReq when responding to MEMPOOL request (#1904)
This should have been part of the Bitcoin #8080 backporting but was missed
due to manual conflict resolution.
2018-02-08 08:47:27 +03:00
thephez
ca89c7b870 [Trivial] Update PrivateSend denominations in comments / typo fixes (#1910) 2018-02-08 08:46:44 +03:00
Alexander Block
8f2c1998de Rename vBlockHashesFromINV to vDelayedGetHeaders (#1909)
Use a name that better says what it is for.
2018-02-08 08:45:20 +03:00
UdjinM6
79e6d272ed
Merge pull request #1908 from codablock/pr_backport_bitcoin_0.14-12
Collection of PRs and single commits missed in previous backports
2018-02-08 08:45:02 +03:00
Alexander Block
6e022c57b1 Remove src/drafted folder (#1907)
This contained old PoC code and is unused
2018-02-08 08:44:34 +03:00
Alexander Block
4719ec477c Remove some locking in net.h/net.cpp (#1905)
* Remove unnecessary LOCK in ConnectNode

FindNode already does the necessary lock

* Remove unnecessary semicolon

* Remove critical section and assert for ref counts in CNode

nRefCount is an atomic now and thus doesn't need locking anymore.
2018-02-08 08:44:07 +03:00
Alexander Block
bb20b4e7b5 Few cleanups after backporting (#1903)
* Remove remains of workaround that was needed while backporting

* Add missing closing round bracket to help string

* Remove now unnecessary .encode() calls in wallet.py

Now that we only support python3, we can fix this TODO.
2018-02-08 08:43:50 +03:00
Nathan Marley
3c44dde2e7 Return JSON object for masternode count (by default but still support old modes for now) (#1900)
Get information about number of masternodes (DEPRECATED options: 'total', 'ps', 'enabled', 'qualify', 'all')
2018-02-08 08:43:19 +03:00
Wladimir J. van der Laan
1086851938 Merge pull request #7166
6aadc75 Disconnect on mempool requests from peers when over the upload limit. (Gregory Maxwell)
2018-02-07 13:11:09 +01:00
Wladimir J. van der Laan
cef919f182 Merge #9486: Make peer=%d log prints consistent
e6111b2 Make peer id logging consistent ("peer=%d" instead of "peer %d") (Matt Corallo)
2018-02-07 13:11:09 +01:00
Russell Yanofsky
55ef4d0a9b [wallet] Add include_unsafe argument to listunspent RPC 2018-02-07 13:11:09 +01:00
Suhas Daftuar
e1e03f42c4 [wallet] Add IsAllFromMe: true if all inputs are from wallet 2018-02-07 13:11:08 +01:00
Wladimir J. van der Laan
611b31ecea Merge #9650: Better handle invalid parameters to signrawtransaction
6dbfe08 [qa] test signrawtransaction merge with missing inputs (Matt Corallo)
ec4f7e4 [qa] Add second input to signrawtransaction test case (Matt Corallo)
691710a [qa] Test that decoderawtransaction throws with extra data appended (Matt Corallo)
922bea9 Better handle invalid parameters to signrawtransaction (Matt Corallo)
7ea0ad5 Fail in DecodeHexTx if there is extra data at the end (Matt Corallo)
2018-02-07 13:11:08 +01:00
UdjinM6
9f2467af8a
Hide autocompleter on Enter/Return key (#1898) 2018-02-06 20:24:37 +03:00
UdjinM6
a7fa07a30e
Drop BOOST_FOREACH and use references in loops (const ref where applicable, Dash code only) (#1899)
* 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
2018-02-06 14:09:33 +03:00
UdjinM6
4bc4a7dac7
Fix debug rpc (#1897) 2018-02-06 14:08:58 +03:00
UdjinM6
e0b6988a45
Various fixes and refactoring for Cache*Map classes (#1896)
* CacheMap::Insert should not update existing item, should return `false`

* Use `emplace` operator instead of `[]` to add new items in Cache*Map implementation

* Use prefix cm/cmm for CacheMap/CacheMultiMap maps respectively to distinguish them from each other and from std::map-s

* Avoid excessive processing of already known valid votes

Also prettify debug log output a bit

* Drop nCurrentSize from Cache*Map classes

Use `size()` and `empty()` of std classes instead, they have constant complexity since c++11

* Do not create an explicit iterator if it's never used later (in Cache*Map)

* Do not prune last item in CacheMultiMapInsert when trying to insert a duplicate one
2018-02-06 14:08:43 +03:00
Alexander Block
61af31531a Merge #8976: libconsensus: Add input validation of flags (#1891)
5ca8ef2 libconsensus: Add input validation of flags (Wladimir J. van der Laan)
2018-02-05 18:42:05 +03:00
UdjinM6
063bc55424
Fix masternode list (#1893) 2018-02-05 18:39:52 +03:00
Alexander Block
a6ba82ac9a Use masternode list to generate hardcoded seeds (#1892)
* Change makeseeds.py to use masternode list as input instead of DNS seed dump

* Allow 4 nodes per ASN

Lift the limitation a bit so we get more entries

* Update nodes_main.txt and nodes_test.txt

Generated with makeseeds.py based on current masternode lists

* Fix comment about the source of the seed nodes and use masternodelist rpc

* Use fixed OpenDNS servers for ASN filtering
2018-02-05 18:39:26 +03:00
Alexander Block
99b2789a73 Fix DeserializeAndCheckBlockTest benchmark and store hashDevnetGenesisBlock in consensus (#1888)
* Use Dash block for DeserializeAndCheckBlockTest

Replaced Bitcoin block with the largest Dash block I could find on mainnet.

* Store hashDevnetGenesisBlock in Consensus::Params

Remove the need for chainparams to be available when the devnetGenesis hash
is needed. Fixes a crash in CheckBlockHeader() when called from benchmarking
code, which does not initialize the Params() function.
2018-02-01 20:05:35 +03:00
UdjinM6
8a387ee09c
Drop SPORK_13_OLD_SUPERBLOCK_FLAG and check superblock start hash (#1872) 2018-02-01 15:42:21 +03:00
Alexander Block
d56ac5a747 Fix import-rescan.py and add workaround for pruning mode
Added a workaround to the masternode+pruning mode check to allow pruning
in regtest. The actual bug behind the masternode+pruning check is not
touched this way. Please read the linked GitHub issues for details.
2018-02-01 11:13:01 +01:00
Wladimir J. van der Laan
1ba1256217 Merge #9761: Use 2 hour grace period for key timestamps in importmulti rescans
e662af3 Use 2 hour grace period for key timestamps in importmulti rescans (Russell Yanofsky)
38d3e9e [qa] Extend import-rescan.py to test imports on pruned nodes. (Russell Yanofsky)
c28583d [qa] Extend import-rescan.py to test specific key timestamps (Russell Yanofsky)
8be0866 [qa] Simplify import-rescan.py (Russell Yanofsky)
2018-02-01 11:13:01 +01:00
Wladimir J. van der Laan
75421c37b6 Merge #9764: wallet: Prevent "overrides a member function but is not marked 'override'" warnings
6c5427d wallet: Prevent "overrides a member function but is not marked 'override'" warnings (Wladimir J. van der Laan)
2018-02-01 11:13:01 +01:00
Wladimir J. van der Laan
43f697866e Merge #9108: Use importmulti timestamp when importing watch only keys (on top of #9682)
a80f98b Use importmulti timestamp when importing watch only keys (Russell Yanofsky)
a58370e Dedup nTimeFirstKey update logic (Russell Yanofsky)
2018-02-01 11:13:01 +01:00
Wladimir J. van der Laan
6f86725d00 Merge #9682: Require timestamps for importmulti keys
266a811 Use MTP for importmulti "now" timestamps (Russell Yanofsky)
3cf9917 Add test to check new importmulti "now" value (Russell Yanofsky)
442887f Require timestamps for importmulti keys (Russell Yanofsky)
2018-02-01 11:13:01 +01:00
UdjinM6
1b1a440f4f
Do not send dash-specific requests to masternodes before we are fully connected (#1882)
* 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
2018-02-01 04:10:52 +03:00
Nathan Marley
5a5f618726 Shorten MN outpoint output from getvotes (#1871) 2018-01-31 13:56:30 +03:00
Wladimir J. van der Laan
12102e4e98 Merge #8848: Add NULLDUMMY verify flag in bitcoinconsensus.h
2fa0063 Add NULLDUMMY verify flag in bitcoinconsensus.h (Johnson Lau)
2018-01-30 20:28:51 +01:00
Alexander Block
c017353a99 Add softfork deployment for BIP147 2018-01-30 20:18:51 +01:00
Alexander Block
c8e5c40ec3 Replace more example Dash addresses with invalid addresses 2018-01-29 11:16:05 +01:00
Alexander Block
7e4e4ea270 Give 1000 bytes instead of 4000 bytes before the block is full 2018-01-26 17:31:20 +01:00
Alexander Block
873bd6c80f Fix new dash-tx tests
Also use S flag instead of W flag for the outpubkey test. Not really needed
to fix the test, but we don't have the W flag in Dash so lets not confuse
people.
2018-01-26 17:29:53 +01:00
Alexander Block
4959ff2014 Fix formatting of help in sendfrom 2018-01-26 12:59:29 +01:00
Alexander Block
a4430b624f Fix rpc tests 2018-01-26 12:59:29 +01:00
Alexander Block
5901531bc2 Use constant 7200 instead of TIMESTAMP_WINDOW for now
Until Bitcoin #9908 gets backported
2018-01-26 12:59:29 +01:00
Alexander Block
4d3856b5a7 Include test_dash.h instead of test_bitcoin.h 2018-01-26 12:59:29 +01:00
Alexander Block
d500d77c4a Use nBlockSize/nBlockMaxSize instead of nBlockWeight/nBlockMaxWeight 2018-01-26 12:59:29 +01:00
MarcoFalke
12770beb6b Merge #10310: [doc] Add hint about getmempoolentry to getrawmempool help.
3a0a5bc [doc] Add hint about getmempoolentry to getrawmempool help. (Karl-Johan Alm)

Tree-SHA512: 8327d7d7ad93296525fbf95b7a824e3525bde84653999f125afd845823eb39e3a03cd39725962ed949aa2b9ad207ecad6d287294fa321ff1a4d7fbd5a4b8560b
2018-01-26 12:59:29 +01:00
Pieter Wuille
631d9f92ea Merge #10309: Trivial: remove extra character from comment
3503716 Trivial: remove extra character from comment (CryptAxe)

Tree-SHA512: 66ee474945b4f9fd098cee0d031c1860c0777d4b05c609c0eaba32234209356b630766de30235b49d22cc5ea7cf2bb93410dea4466396369a0cdc0b631512a33
2018-01-26 12:59:29 +01:00
MarcoFalke
ed898f1793 Merge #10258: Fixed typo in documentation for merkleblock.h
dd07068 Fixed typo in documentation for merkleblock.h (Mikerah)

Tree-SHA512: 92655c8022eb33852c116da517b12bd17b3b668713cd85fe185a15245ea9810605626b1d0955fa117f7b56863e0a52b3a86dab42409332452b5eb72a7d34f30d
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
f7174fb655 Merge #10308: [wallet] Securely erase potentially sensitive keys/values
6c914ac [wallet] Securely erase potentially sensitive keys/values (Thomas Snider)

Tree-SHA512: 071d88c4093108d4e4eced35a6ffcebe3f499798194f5b1be661ffa5b78b5f55311667f6d2a72758d85290f61f958381ee95d380b9045ca18e9e1875f0e686c8
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
e2225f37c2 Merge #10265: [wallet] [moveonly] Check non-null pindex before potentially referencing
c36ea69 [wallet] Make sure pindex is non-null before possibly referencing in LogPrintf call. (Karl-Johan Alm)

Tree-SHA512: a14c9f3e1228bca91977bea821c56a377d80889b41d250050c9be67aa93e460319a7cf1d4b63ee40f23b5a34159590f0e3fe15dc88698dc694c0c8098bd2db4d
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
7b7924d472 Merge #9497: CCheckQueue Unit Tests
96c7f2c Add CheckQueue Tests (Jeremy Rubin)
e207342 Fix CCheckQueue IsIdle (potential) race condition and remove dangerous constructors. (Jeremy Rubin)

Tree-SHA512: 5989743ad0f8b08998335e7ca9256e168fa319053f91b9dece9dbb134885bef7753b567b591acc7135785f23d19799ed7e6375917f59fe0178d389e961633d62
2018-01-26 12:59:29 +01:00
Jonas Schnelli
f1ec8c9fa1 Merge #10008: [trivial] Fix a typo (introduced two days ago) in the default fee warning
a3ca43b [trivial] Fix a typo (introduced two days ago) in the default fee warning (practicalswift)

Tree-SHA512: b88bb45cb0cbe7f0b0c1dd5d573dad36f3915b1ddde58c9b29806544c832c4a2c0a7994080a57682684f1dea0a02d5367aed8ccbee331dbc40c45948392e0f3d
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
539cf5c178 Merge #9481: [Qt] Show more significant warning if we fall back to the default fee
7abe7bb Qt/Send: Give fallback fee a reasonable indent (Luke Dashjr)
3e4d7bf Qt/Send: Figure a decent warning colour from theme (Luke Dashjr)
c5adf8f [Qt] Show more significant warning if we fall back to the default fee (Jonas Schnelli)

Tree-SHA512: 9e85b5b398d7a49aaf6c42578d63750b1b7aa9cc9e84d008fe21d6c53f1ffe2fb69286a1a764e634ebca3286564615578eea0a1bc883e4b332be8306d9883d14
2018-01-26 12:59:29 +01:00
Pieter Wuille
bcef7260d0 Merge #10196: Bugfix: PrioritiseTransaction updates the mempool tx counter
6c2e25c [qa] Test prioritise_transaction / getblocktemplate interaction (Suhas Daftuar)
acc2e4b Bugfix: PrioritiseTransaction updates the mempool tx counter (Suhas Daftuar)

Tree-SHA512: dcf834df52d84d5eb86acb847c3f28d3cffd1f78f3092b8ff8913c2c400675a071c48a19cd852fdbaac1582aa1dba23433e0e16055831ef2a5e76dde91199941
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
c716ee03f1 Merge #10441: net: only enforce expected services for half of outgoing connections
b6fbfc2 net: only enforce the services required to connect (Cory Fields)

Tree-SHA512: 88943bff63213a734f3c96c45760cadaeb9ba18287c8a20c279851ebaf058a334c969028fb2180f155508e3eea4b838147382e4f2b655e7a9aa098eadc81d53e
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
785d4d0ee5 Merge #8949: Be more agressive in getting connections to peers with relevant services.
4630479 Make dnsseed's definition of acute need include relevant services. (Gregory Maxwell)
9583477 Be more aggressive in connecting to peers with relevant services. (Gregory Maxwell)
2018-01-26 12:59:29 +01:00
Alexander Block
67196dc812 Only consider nodes missing relevant services after 40 failed attemps
Missed this change in previous backports as it was burried in SegWit commits.
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
c45c767f8e Merge #10294: [Wallet] unset change position when there is no change
7c58863 [Wallet] unset change position when there is no change on exact match (Gregory Sanders)

Tree-SHA512: ce8b9337e4132e32d80f954258d50938052c833a48e39431649d6adb16e3d18626a0ae5d300827e7fa397927fba72a1f066cb31af9b0a3ef7f1feb6024461626
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
5623326010 Merge #10228: build: regenerate bitcoin-config.h as necessary
91ab8f5 build: fix bitcoin-config.h regeneration after touching build files (Cory Fields)
3577603 build: remove wonky auto top-level convenience targets (Cory Fields)

Tree-SHA512: 2e68634439eeb7eca43cd2858135a583bfe0cf146e021a8384a24f7267aacc6f99bdc7a6d497a04d32e6a03e9446f0f599afb5bd53346dadf19f47d5fb2ea9f9
2018-01-26 12:59:29 +01:00
Pieter Wuille
ee3ff3552d Merge #10215: Check interruptNet during dnsseed lookups
b2c9254 Check interruptNet during dnsseed lookups (Matt Corallo)

Tree-SHA512: a76b5749b085d5571ac65a6925bb1c50fa1d02c02854d9126224dc2ec419eb9103f7c92bf9a0bbd39c7dee93a2266dc3973fb16b48e8daea057f45d452e2513c
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
a601206d3c Merge #10410: Fix importwallet edge case rescan bug
2a8e35a Fix importwallet edge case rescan bug (Russell Yanofsky)

Tree-SHA512: 59522c962290f9ef64436349d11183dd1fd829e515d1f5ec802b63dd813d04303e28d4f3ba38df77a6c151ee4c14f3ca5d3d82204c57456ac94054de62ae4bc7
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
955939f775 Merge #10424: Populate services in GetLocalAddress
3070134 Populate services in GetLocalAddress (Alex Morcos)

Tree-SHA512: b822d7e898ccb5b959ccb1b1d0f159f27190c2105fbf8f5b67ae54debab6fa6a0723d65a66e7341f55cd0d80398c3fbb39a41e067b9f4e0bfa2c1cd366032404
2018-01-26 12:59:29 +01:00
MarcoFalke
b67fdbee96 Merge #10207: Clarify importprivkey help text ... example of blank label without rescan
c9e31c3 Clarify importprivkey help text with example of blank label without rescan Occasionally I waste a lot of time not remembering that the second parameter to importprivkey must be blank if you intend to stop rescan with "false" as the third parameter. (Warren Togami)

Tree-SHA512: 23781e1d6fd59a9d06d6e12ad10e8ed6641947b3e4a1f66c8fdb5d44cbd8f291e8f2a5e686aa9f9ba5e4bab8ca688caa17244e837f651546055ddf7cc8e7df8f
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
fb6992de5d Merge #10176: net: gracefully handle NodeId wrapping
c851be4 net: define NodeId as an int64_t (Cory Fields)

Tree-SHA512: 2ccc931cfcdc555313b9434d8de2f6cea759b31891212ca62f962208f60157d4fc593010e3ca61265d1a20d6f78c6ca79103600b85df77983d5509d192875b96
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
720325f23c Merge #10204: [rpc] rename disconnectnode argument
883154c [rpc] rename disconnectnode argument (John Newbery)

Tree-SHA512: 14245befd0a7315edd9e03c8bb283ff6b546cf4ef93c3ce02c01de687fea3bb96c510a638a42d2d6799e5e3e5b4f800021c2530b504baeaa4a4dc99323165986
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
96b457d47e Merge #10144: Prioritisetransaction wasn't always updating ancestor fee
9bef02e Bugfix: ancestor modifed fees were incorrect for descendants (Suhas Daftuar)
ba7dd8b Test prioritisetransaction and ancestor fee state (Suhas Daftuar)

Tree-SHA512: 01977d88e1afb093a003f22a6f29ea60df3d70a179fe7e55910b9c8c340c4af9fb20cdc804c40235b62c43c453f0194eda0d0d4dbd365d2d98347f5dbe5de01c
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
ec563a0f17 Merge #10146: Better error handling for submitblock
30f30c0 Add braces to submitblock per current style. (Gregory Maxwell)
4f15ea1 Check transaction count early in submitblock. (Gregory Maxwell)
ada0caa Make GetWitnessCommitmentIndex callable on blocks without a coinbase txn. (Gregory Maxwell)

Tree-SHA512: 02dcd337ad9cdd8e4fa6a42c009d016026d1229c193676ed6fcc9ce55e924fedec57f516ac1e95c3db0985243ba908307338ce783a70416cb292bed881002bfc
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
0fc9b2bd8e Merge #10139: [rpc] Remove auth cookie on shutdown
4b87973 [rpc] Remove auth cookie on shutdown (practicalswift)

Tree-SHA512: 5d7d04413d3eb6a8d167443a3fdfe4c289bdc5cbc4c9b257a557c2a7fab5d4b32a81a1357e27b77ce2623e76e495b2e8b21eab0ab032bb261fdcdf171bac1dac
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
06c8714572 Merge #9959: Mining: Prevent slowdown in CreateNewBlock on large mempools
011124a Update benchmarking with package statistics (Suhas Daftuar)
42cd8c8 Add benchmarking for CreateNewBlock (Suhas Daftuar)
eed816a Mining: return early when block is almost full (Suhas Daftuar)

Tree-SHA512: c0d8f71e4e0441acf3f4ca12f8705e413b59b323659346a447145653def71710537fb4c6d80cad8e36d68b0aabf19c92e9eab7135a8897b053ed58720856cdda
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
42d3060568 Merge #10120: util: Work around (virtual) memory exhaustion on 32-bit w/ glibc
625488a util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (Wladimir J. van der Laan)

Tree-SHA512: 99b610a8cf9561998af90e16fc19320fddd30c987e8f33325d63df0f56d70235b94d9482e80f28154d4b33a3ecf4961686380c444ec18d1da5e8804a8b6f4de1
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
a149129656 Merge #10130: bitcoin-tx input verification (awemany, jnewbery)
19ecd1e Add tests for bitcoin-tx input checking (John Newbery)
21704f6 Check stderr when testing bitcoin-tx (John Newbery)
eb66bf9 bitcoin-tx: Fix missing range check (Awemany)

Tree-SHA512: 08c6153cf7dd5e0ecd23e24d81af4c0f17534d484179dd91dcd78d42df14c91284341d31cc695469a64c507bce72c34231748b7cabb7df8f1051d228fb0a62c5
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
8aa00505ff Merge #10084: rpc: Rename first named arg of createrawtransaction
fa55853 rpc: Rename first named arg of createrawtransaction (MarcoFalke)

Tree-SHA512: f2e07183f2503344e676e08fe0fd73e995d7c6fda3fc11c64116208dec8e445f0627583dfba85014129b6f2dc7e253b9d760e57e66811272db89e9ba25ce6dbc
2018-01-26 12:59:29 +01:00
Jonas Schnelli
b018751852 Merge #10060: [Qt] Ensure an item exists on the rpcconsole stack before adding
4df76e2 Ensure an item exists on the rpcconsole stack before adding (Andrew Chow)

Tree-SHA512: f3fd5e70da186949aff794f6e2ba122da2145331212dcc5e0595285bee9dc3aa6b400b15e8eeec4476099965b74f46c4ef80f8ed1e05d490580167b002b9a5e7
2018-01-26 12:59:29 +01:00
MarcoFalke
edd514c438 Merge #10037: Trivial: Fix typo in help getrawtransaction RPC
05a9f22 Trivial: Fix typo in help getrawtransaction RPC (James Evans)

Tree-SHA512: 22c68fb49771f96b94c482b28d7efc4d51737cbb973ed3954641f3ea1832c14e7b909030c132afebe17854da134f717acbf14ee26294c61a303bc33dc43aac4c
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
4321788cc9 Merge #9953: Fix shutdown hang with >= 8 -addnodes set
819b513 Add missing braces in semaphore posts in net (Matt Corallo)
e007b24 Fix shutdown hang with >= 8 -addnodes set (Matt Corallo)

Tree-SHA512: f2d7562bd5d333cd0e80562eb3b1fe329fc10ee713996e053d2ed669db6d9eb39550e0a6c6ab768cd070bfe92a5ea85e0f752470206706de196bd4a689b9bc07
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
a16d3b0057 Merge #9829: Fix importmulti returning rescan errors for wrong keys
306bd72 Fix importmulti returning rescan errors for wrong keys (Russell Yanofsky)

Tree-SHA512: ae9998236cbd3ff749d6b5c716bd76c9cec386b0708583e4912e4e05bf4584545258e1d0543aa5445024d2b5decf859a64f40c6503029773366a0f9a9ddf9b88
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
16b2a1d1b9 Merge #9791: Avoid VLA in hash.h
5c8fd50 Avoid VLA in hash.h (Pieter Wuille)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
39f08b6e66 Merge #9865: Change bitcoin address in RPC help message
83ac719 Change bitcoin address in RPC helpaddress to an invalid address, so people don't accidentally send coins there (like I did). (Marijn Stollenga)

Tree-SHA512: ca1163466a149d567b97efbfcfa8fdfe2d474245b4dd5a1a92555b4e87f8e99df5fee4cd79ef1ce6a98db2337846af78f37c2e6b31d02008b11fa0e151ce6590
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
7c3b8ec4bc Merge #9840: Update sendfrom RPC help to correct coin selection misconception
f81f0d0 Update sendfrom RPC help to correct coin selection misconception (Russell Yanofsky)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
5c7c3b3a00 Merge #9856: Terminate immediately when allocation fails
d4ee7ba prevector: assert successful allocation (Cory Fields)
c5f008a don't throw std::bad_alloc when out of memory. Instead, terminate immediately (Cory Fields)

Tree-SHA512: 699ce8df5b1775a99c71d3cfc952b45da1c0091e1a4b6adfac52d5be6144c3d98f88ac3af90e5c73fff2f74666a499feb4a34434683ce5979814e869c0aeddc3
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
397c27ff9d Merge #9875: tests: Fix dangling pwalletMain pointer in wallet tests
75a1093 tests: Fix dangling pwalletMain pointer in wallet tests (Wladimir J. van der Laan)

Tree-SHA512: 7fb6e8385fe7d542f9ecb113a08d675ca9e84907a1939b3a6ad41318fda55bc999b9bc8ffc3f56cd8610ca49d0db982d3c793df7bbcb7eb9638f4483030db6a8
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
af006a36ef Merge #9789: build: add --enable-werror and warn on vla's
205830a build: add --enable-werror option (Cory Fields)
b602fe0 build: warn about variable length arrays (Cory Fields)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
0e8be439c2 Merge #9711: [Trivial] Remove incorrect help message from gettxoutproof()
9949ebf [Trivial] Remove incorrect help message from gettxoutproof() (John Newbery)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
ac981ec3cc Merge #9773: Return errors from importmulti if complete rescans are not successful
e2e2f4c Return errors from importmulti if complete rescans are not successful (Russell Yanofsky)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
0a6f63bb24 Merge #9817: Fix segfault crash when shutdown the GUI in disablewallet mode
312c4f1 Fix segfault crash when shutdown the GUI in disablewallet mode (Jonas Schnelli)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
15a035b9c0 Merge #9798: Fix Issue #9775 (Check returned value of fopen)
40f11f8 Fix for issue #9775. Added check for open() returning a NULL pointer. (kirit93)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
8d2edc4698 Merge #9813: Read/write mempool.dat as a binary.
171fc91 Read/write mempool.dat as a binary. (Pavel Janík)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
199b07a892 Merge #9760: [wallet] Remove importmulti always-true check
ec1267f [wallet] Remove importmulti always-true check (Russell Yanofsky)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
3ab5fab7fb Merge #9786: boost: remove iostreams includes
3301587 boost: remove iostreams includes (Cory Fields)
2018-01-26 12:59:29 +01:00
Wladimir J. van der Laan
5e596423a4 Merge #9785: Avoid variable length arrays
c801c82 Move BIP70_MAX_PAYMENTREQUEST_SIZE to header (Pieter Wuille)
914fad1 Make KEY_SIZE a compile-time constant (Pieter Wuille)
2018-01-26 12:59:29 +01:00
UdjinM6
054abdbfa4
Merge pull request #1867 from codablock/pr_backport_bitcoin_0.14-10
Backport missing PRs from Bitcoin 0.14 - Part 10
2018-01-26 14:55:56 +03:00
UdjinM6
1ca270ed89
No need for msgMakerInitProto for sporks because we loop by fully connected nodes only now (#1877) 2018-01-26 04:11:30 +03:00
UdjinM6
b1817dd936
Introduce CDarksendAccept class (for DSACCEPT messages) (#1875) 2018-01-26 04:11:15 +03:00
UdjinM6
88646bd0d0
Rename fMasterNode to fMasternodeMode to clarify its meaning and to avoid confusion with CNode::fMasternode (#1874) 2018-01-26 04:11:01 +03:00
UdjinM6
f6d98422ca
Silence ratecheck_test (#1873) 2018-01-26 04:10:45 +03:00
UdjinM6
9cee4193b8 Separate .h generation from .json/.raw for different modules (#1870) 2018-01-24 16:29:24 +01:00
UdjinM6
83957f2d3b
Fix alertTests.raw.h (again) (#1869) 2018-01-24 14:27:08 +03:00
UdjinM6
c13afaad8b
Fix alertTests.raw.h generation (#1868) 2018-01-24 11:11:22 +03:00
Alexander Block
6c2fe3d055 Remove onlyMaybeDeadlock condition around printing of deadlock info 2018-01-23 12:27:28 +01:00
Wladimir J. van der Laan
0080fde36a Merge #9778: Add two hour buffer to manual pruning
91fb506 Add two hour buffer to manual pruning (Alex Morcos)
2018-01-23 09:24:29 +01:00
Wladimir J. van der Laan
86fd57b8cd Merge #9777: Handle unusual maxsigcachesize gracefully
55c403b Ensure `-maxsigcachesize` is in valid range (John Newbery)
2018-01-23 09:24:29 +01:00
Wladimir J. van der Laan
52819ca9b9 Merge #9763: [Trivial] Update comments referencing main.cpp
00e623d [Trivial] Update comments referencing main.cpp (CryptAxe)
2018-01-23 09:24:29 +01:00
Wladimir J. van der Laan
bb2c1624c9 Merge #9771: Add missing cs_wallet lock that triggers new lock held assertion
07afcd6 Add missing cs_wallet lock that triggers new lock held assertion (Russell Yanofsky)
2018-01-23 09:24:29 +01:00
Wladimir J. van der Laan
da8808fba0 Merge #9756: Return error when importmulti called with invalid address.
9acf25c Return error when importmulti called with invalid address. (Russell Yanofsky)
2018-01-23 09:24:29 +01:00
Wladimir J. van der Laan
136d8606c8 Merge #9758: Selectively suppress deprecation warnings
4b6cccc Selectively suppress deprecation warnings (Jonas Schnelli)
2018-01-23 09:24:29 +01:00
Wladimir J. van der Laan
f2b5560083 Merge #9553: Use z = std::max(x - y, 0) instead of z = x - y; if (z < 0) z = 0;
a47da4b Use z = std::max(x - y, 0); instead of z = x - y; if (z < 0) z = 0; (practicalswift)
2018-01-23 09:24:29 +01:00
Jonas Schnelli
132edbda8c Merge #9755: Bugfix: Qt/Options: Restore persistent "restart required" notice
0b4f273 Bugfix: Qt/Options: Restore persistent "restart required" notice (Luke Dashjr)
2018-01-23 09:24:28 +01:00
Wladimir J. van der Laan
fe0ef87cd3 Merge #9720: net: fix banning and disallow sending messages before receiving verack
d943491 qa: add a test to detect leaky p2p messages (Cory Fields)
8650bbb qa: Expose on-connection to mininode listeners (Matt Corallo)
5b5e4f8 qa: mininode learns when a socket connects, not its first action (Matt Corallo)
cbfc5a6 net: require a verack before responding to anything else (Cory Fields)
8502e7a net: parse reject earlier (Cory Fields)
c45b9fb net: correctly ban before the handshake is complete (Cory Fields)
2018-01-23 09:24:28 +01:00
Wladimir J. van der Laan
588b8e5caf Merge #9715: Disconnect peers which we do not receive VERACKs from within 60 sec
66f861a Add a test for P2P inactivity timeouts (Matt Corallo)
b436f92 qa: Expose on-connection to mininode listeners (Matt Corallo)
8aaba7a qa: mininode learns when a socket connects, not its first action (Matt Corallo)
2cbd119 Disconnect peers which we do not receive VERACKs from within 60 sec (Matt Corallo)
2018-01-23 09:24:28 +01:00
Pieter Wuille
b50b8196fa Merge #9708: Clean up all known races/platform-specific UB at the time PR was opened
db2dc7a Move CNode::addrLocal access behind locked accessors (Matt Corallo)
036073b Move CNode::addrName accesses behind locked accessors (Matt Corallo)
d8f2b8a Make nTimeBestReceived atomic (Matt Corallo)
22b4966 Move [clean|str]SubVer writes/copyStats into a lock (Matt Corallo)
0f31872 Make nServices atomic (Matt Corallo)
96f42d8 Make nStartingHeight atomic (Matt Corallo)
512731b Access fRelayTxes with cs_filter lock in copyStats (Matt Corallo)
ae683c1 Avoid copying CNodeStats to make helgrind OK with buggy std::string (Matt Corallo)
644f123 Make nTimeConnected const in CNode (Matt Corallo)
321d0fc net: fix a few races. Credit @TheBlueMatt (Cory Fields)
2018-01-23 09:24:28 +01:00
Wladimir J. van der Laan
3b543952d4 Merge #9698: net: fix socket close race
9a0b784 net: add a lock around hSocket (Cory Fields)
45e2e08 net: rearrange so that socket accesses can be grouped together (Cory Fields)
2018-01-23 09:24:28 +01:00
Wladimir J. van der Laan
f1f4e25d60 Merge #9718: Qt/Intro: Various fixes
a9baa6d Bugfix: Qt/Intro: Pruned nodes never require *more* space (Luke Dashjr)
93ffba7 Bugfix: Qt/Intro: Chain state needs to be stored even with the full blockchain (Luke Dashjr)
c8cee26 Qt/Intro: Update block chain size (Luke Dashjr)
2018-01-23 09:24:28 +01:00
Wladimir J. van der Laan
7d4e34029c Merge #9674: Always enforce strict lock ordering (try or not)
618ee92 Further-enforce lockordering by enforcing directly after TRY_LOCKs (Matt Corallo)
2a962d4 Fixup style a bit by moving { to the same line as if statements (Matt Corallo)
8465631 Always enforce lock strict lock ordering (try or not) (Matt Corallo)
fd13eca Lock cs_vSend and cs_inventory in a consistent order even in TRY (Matt Corallo)
2018-01-23 09:24:28 +01:00
MarcoFalke
f1cbc40b3e Merge #9712: bench: Fix initialization order in registration
29c5328 bench: Fix initialization order in registration (Wladimir J. van der Laan)
2018-01-23 09:24:27 +01:00
Wladimir J. van der Laan
767f5e436b Merge #9532: Remove unused variables
90fd29b Remove unused int64_t nSinceLastSeen (practicalswift)
ac4a095 Remove unused Python variables (practicalswift)
2018-01-23 09:24:27 +01:00
Wladimir J. van der Laan
eb4c5bac6d Merge #9227: Make nWalletDBUpdated atomic to avoid a potential race.
d63ff62 Make nWalletDBUpdated atomic to avoid a potential race. (Patrick Strateman)
2018-01-23 09:24:27 +01:00
Wladimir J. van der Laan
72a0d05d6b Merge #9378: [trivial] Add documentation for CWalletTx::fFromMe member.
39c77b0 Add documentation for CWalletTx::fFromMe member. (Russell Yanofsky)
2018-01-23 09:24:27 +01:00
Wladimir J. van der Laan
3f1929fb0d Merge #9659: Net: Turn some methods and params/variables const
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)
2018-01-23 09:24:27 +01:00
Wladimir J. van der Laan
81eeb0dee7 Merge #9651: Fix typos
5f62e3e Fix typos (practicalswift)
2018-01-23 09:24:27 +01:00
Pieter Wuille
ea414f3077 Merge #9578: Add missing mempool lock for CalculateMemPoolAncestors
003cd60 Add missing mempool lock for CalculateMemPoolAncestors (Matt Corallo)
2018-01-23 09:24:27 +01:00
Wladimir J. van der Laan
e86c52f690 Merge #9556: Remove redundant semicolons
8fc6989 Remove redundant semicolons (practicalswift)
2018-01-23 09:24:27 +01:00
Wladimir J. van der Laan
dcc251e2b7 Merge #9663: [RPC] clarify listunspent amount description
3eba88d clarify listunspent amount description (Gregory Sanders)
2018-01-23 09:24:27 +01:00
Wladimir J. van der Laan
d45a7ae731 Merge #9647: Skip RAII event tests if libevent is built without event_set_mem_functions
95f97f4 Skip RAII event tests if libevent is built without event_set_mem_functions (Luke Dashjr)
2018-01-23 09:24:26 +01:00
MarcoFalke
e24b8ae50e Merge #9649: [doc] Remove unused clang format dev script
fa5137c [doc] Remove unused clang format dev script (MarcoFalke)
2018-01-23 09:24:26 +01:00
Alexander Block
8ad57c31fd Remove "using namespace std" from wallet.cpp 2018-01-23 09:24:25 +01:00
MarcoFalke
25074aeb43 Merge #9644: [refactor] Remove using namespace <xxx> from src/
b7b48c8 Refactor: Remove using namespace <xxx> from src/*.cpp. (Karl-Johan Alm)
2018-01-23 09:24:03 +01:00
Wladimir J. van der Laan
daa8582b18 Merge #9615: Wallet incremental fee
4b189c1 Change bumpfee result value from 'oldfee' to 'origfee'. (Alex Morcos)
0c0c63f Introduce WALLET_INCREMENTAL_RELAY_FEE (Alex Morcos)
e8021ec Use CWallet::GetMinimumFee in bumpfee (Alex Morcos)
ae9719a Refactor GetMinimumFee to give option of providing targetFee (Alex Morcos)
fe8e8ef [rpc] Add incremental relay fee to getnetworkinfo (Alex Morcos)
6b331e6 Fix to have miner test aware of new separate block min tx fee (Alex Morcos)
de6400d Fix missing use of dustRelayFee (Alex Morcos)
5b15870 Use incrementalRelayFee for BIP 125 replacement (Alex Morcos)
2018-01-23 09:24:03 +01:00
Alexander Block
b84afb2512 Allow to filter for fully connected nodes when calling CopyNodeVector (#1864)
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)
2018-01-22 16:17:11 +03:00
Alexander Block
b97eecc058 Fix review nits 2018-01-22 08:05:44 +01:00
Alexander Block
ec81769605 Remove segwit related dash-tx tests 2018-01-21 22:50:55 +01:00
Alexander Block
4d651621ef Update mainnet chainparams to use correct heights for BIP34/BIP65/BIP66 2018-01-21 14:29:06 +01:00
Alexander Block
3824192e42 Update testnet chainparams to use correct heights for BIP34/BIP65/BIP66 2018-01-21 14:29:06 +01:00
Alexander Block
9bc404a8cc Add "setbip69enabled" RPC usable by tests only
Needed by fundrawtransaction tests which rely on the ordering not being
changed.
2018-01-21 14:14:34 +01:00
Russell Yanofsky
6bee150e8e Require timestamps for importmulti keys
Additionally, accept a "now" timestamp, to allow avoiding rescans for keys
which are known never to have been used.

Note that the behavior when "now" is specified is slightly different than the
previous behavior when no timestamp was specified at all. Previously, when no
timestamp was specified, it would avoid rescanning during the importmulti call,
but set the key's nCreateTime value to 1, which would not prevent future block
reads in later ScanForWalletTransactions calls. With this change, passing a
"now" timestamp will set the key's nCreateTime to the current block time
instead of 1.

Fixes #9491
2018-01-21 14:14:34 +01:00
Alexander Block
611cb6f275 Fix new dash-tx tests 2018-01-21 14:14:34 +01:00
Alexander Block
86753a890d Add spaces around + in updateGlobalFeeVariables 2018-01-21 14:14:34 +01:00
Alexander Block
771c56a79b Fix new bitcoin-util-tests 2018-01-21 14:14:33 +01:00
Alexander Block
9e13bb393d Fix transaction_tests.cpp 2018-01-21 14:14:33 +01:00
Alexander Block
cd0c910a88 Use new data structures for devnet checkpointData/chainTxData 2018-01-21 14:14:33 +01:00
Wladimir J. van der Laan
2cdafa0ca2 Merge #9671: Fix super-unlikely race introduced in 236618061a
885cfdd Fix super-unlikely race introduced in 236618061a (Matt Corallo)
2018-01-21 14:14:33 +01:00
MarcoFalke
4f6de16976 Merge #9525: test: Include tx data in EXTRA_DIST
fa29736 test: Include tx data in EXTRA_DIST (MarcoFalke)
2018-01-21 14:14:33 +01:00