Commit Graph

9630 Commits

Author SHA1 Message Date
Oleg Girko
b47984f303 Remove non-determinism which is breaking net_tests #8069 (#1517) 2017-07-11 02:03:14 +03:00
UdjinM6
397ea95dbb Implement BIP69 outside of CTxIn/CTxOut (#1514)
Apply BIP69 on transaction creation only, fix inputs order to match the BIP
2017-07-10 17:42:59 +03:00
UdjinM6
7abac068b6 fix MakeCollateralAmounts (#1500)
apply same logic as in CreateDenominated to avoid joining inputs from different addresses
2017-07-10 17:42:32 +03:00
UdjinM6
739ef9a681 Expire confirmed DSTXes after ~1h since confirmation (#1499)
* Expire confirmed DSTXes after ~1h since confirmation

* add missing cs_main lock
2017-07-10 17:42:09 +03:00
gladcow
70eb83a5ce New rpc call "masternodelist info" (#1513)
* add masternodelist info call

* safe version conversion function

* change default sentinel version value

* fix issues
2017-07-10 17:41:42 +03:00
Oleg Girko
9268a336dd Backport Bitcoin PR#7917: Optimize reindex (#1515)
* Make ProcessNewBlock dbp const and update comment

* Switch reindexing to AcceptBlock in-loop and ActivateBestChain afterwards

* Optimize ActivateBestChain for long chains

* Add -reindex-chainstate that does not rebuild block index

* Report reindexing progress in GUI
2017-07-10 17:41:14 +03:00
Oleg Girko
b39c518d5a Backport Bitcoin PR#7749: Enforce expected outbound services (#1508)
* Only store and connect to NODE_NETWORK nodes

* Keep addrman's nService bits consistent with outbound observations

* Verify that outbound connections have expected services

* Don't require services in -addnode

* Introduce enum ServiceFlags for service flags

* Introduce REQUIRED_SERVICES constant
2017-07-05 06:45:23 +03:00
Oleg Girko
6af9955faa Backport Bitcoin PR#7696: Fix de-serialization bug where AddrMan is corrupted after exception (#1507)
* CAddrDB modified so that when de-serialization code throws an exception Addrman is reset to a clean state
* CAddrDB modified to make unit tests possible
* Regression test created to ensure bug is fixed
* StartNode modifed to clear adrman if CAddrDB::Read returns an error code.
2017-07-05 03:40:22 +03:00
Ilya Savinov
109c5fd1d8 Fixed issues with propagation of governance objects (#1489)
* process governance objects in CheckMasternodeOrphanObjects as usual

* code refactoring: SetRateChecksHelper class added

* fixed race condition issues with propagation of governance objects

* change GetCollateralConfirmations signature

* code refactoring

* reduced minimum number of collateral confirmations required for relaying proposals

* bug fixes and improvements
2017-07-05 03:31:50 +03:00
Oleg Girko
d787fe4ab6 Backport Bitcoin PR#7458 : [Net] peers.dat, banlist.dat recreated when missing (#1506) 2017-07-05 02:26:13 +03:00
Oleg Girko
ac6c3c9008 Backport Bitcoin PR#7350: Banlist updates (#1505)
* banlist: update set dirty to be more fine grained

- move the SetBannedSetDirty(false) call from DumpData() into DumpBanlist()
- ensure we only set false, if the write succeeded

* banlist: better handling of banlist in StartNode()

- only start working on/with banlist data, if reading in the banlist from
  disk didn't fail
- as CNode::setBannedIsDirty is false (default) when reading fails, we
  don't need to explicitly set it to false to prevent writing
  banlist.dat in that case either

* banlist: add more banlist infos to log / add GUI signal

- to match the peers.dat handling also supply a debug.log entry for how
  many entries were loaded from banlist.dat and how long it took
- add a GUI init message for loading the banlist (same as with peers.dat)

- move the same message for peers.dat upwards in the code, to be able to
  reuse the timing variable nStart and also just log, if our read from
  peers.dat didn't fail

* banlist (bugfix): allow CNode::SweepBanned() to run on interval

- allows CNode::SweepBanned() to run, even if !CNode::BannedSetIsDirty(),
  because if nBanUntil is over we want the ban to be disabled for these
  nodes
2017-07-05 00:39:05 +03:00
gladcow
a439e98408 Replace watchdogs with ping (#1491)
* Add hassentinelping to governanceinfo

* sentinelping rpc call

* additional fields in mnp

* sentinel ping implementation

* change sentinel state to byte in mnp

* use adjusted time in sentinel ping

* update nTimeLastWatchdogVote if sentinel ping is actual

* remove unused fields

* bump protocol to 70207

* Fix small issues

 - fix the error message text in CActivbeMasternodeUpdateSentinelPing;
 - add empty string before public: in CActiveMasternode class declaration;
 - rename field sentinelPing in CMasternodePing to sentinelIsActual and change $
 - decrease sentinelVersion field size to uint16_t;

* revert proto bump for MIN_... consts

* revert changes in getgovernanceinfo

* Update mn vote time for remote masternodes

 - call UpdateWatchdogVoteTime in CMasternodeMan::ProcessMessage
 - deserialize masternodeping from the previous version archive without exception
 - add ability to set time in UpdateWatchdogVoteTime
 - set nTimeLastWatchdogVote to masternode ping sigTime if sentinel is actual
 - bump CMasternodeMan::SERIALIZATION_VERSION_STRING

* remove mn state checks and add correct rpc param convertion

* fix var names

* Helper class for version in string and integer form

* String version in sentinel ping

Version format is "x.x.x"

* test for bacward compatibility in serialization

* Change VersionInfo class to convert functions
2017-07-04 20:31:57 +03:00
Oleg Girko
f65017cfeb Backport Bitcoin PR#7349: Build against system UniValue when available (#1503)
* Build against system UniValue when available

* doc: Add UniValue to build instructions

* Bugfix: The var is LIBUNIVALUE,not LIBBITCOIN_UNIVALUE

* Change default configure option --with-system-univalue to "no"

* Bugfix: Always include univalue in DIST_SUBDIRS

* LDADD dependency order shuffling

* build-unix: Update UniValue build conditions
2017-07-04 06:20:19 +03:00
UdjinM6
96f0d6ec2b various trivial cleanup fixes (#1501) 2017-07-03 16:14:07 +03:00
Oleg Girko
b0843c397c Backport Bincoin PR#7348: MOVE ONLY: move rpc* to rpc/ + same for Dash-specific rpc (#1502) 2017-07-03 16:13:34 +03:00
UdjinM6
549b659e8c Force self-recheck on CActiveMasternode::ManageStateRemote() (#1441)
(otherwise code below could fail if we received new mnb right after latest check and thus our MN will not start)
2017-07-01 22:00:40 +03:00
Oleg Girko
a12491448d Eliminate unnecessary call to CheckBlock (#1498)
ProcessNewBlock would return failure early if CheckBlock failed, before
calling AcceptBlock.  AcceptBlock also calls CheckBlock, and upon failure
would update mapBlockIndex to indicate that a block was failed.  By returning
early in ProcessNewBlock, we were not marking blocks that fail a check in
CheckBlock as permanently failed, and thus would continue to re-request and
reprocess them.
2017-07-01 21:57:28 +03:00
UdjinM6
029ee64948 split CPrivateSend (#1492)
* split CPrivateSend:
- common client/server base data structures/functions: CPrivateSendBase
- singleton-like helper: CPrivateSend

* GetCollateralAmount(), more of GetSmallestDenomination()

* refactor GetDSTX

* remove excessive static_cast<bool>

* bring back LOCK(cs_mapdstx) :)

* address review comments

* fix bool operator
2017-06-30 21:30:16 +03:00
Oleg Girko
f9730cb2ec Increase test coverage for addrman and addrinfo (#1497)
Adds several unittests for CAddrMan and CAddrInfo.
Increases the accuracy of addrman tests.
Removes non-determinism in tests by overriding the random number generator.
Extracts testing code from addrman class to test class.
2017-06-30 21:29:29 +03:00
Oleg Girko
a443d4e2d0 Backport Bitcoin PRs #6589, #7180 and remaining part of #7181: enable per-command byte counters in CNode (#1496)
* log bytes recv/sent per command

* net: Account for `sendheaders` `verack` messages

Looks like these were forgotten in #6589.

* Backport remaining part of Bitcoin PR bitcoin/bitcoin#7181.

Most of this PR is already merged, but a small part remaining
that makes per-command byte counts in CNode working.

Signed-off-by: Oleg Girko <ol@infoserver.lv>
2017-06-29 04:51:10 +03:00
Alexander Block
1d67d52122 Don't try to create empty datadir before the real path is known (#1494)
Fixes: #1345

The actual problem is that GetDataDir has the side effect of creating the
datadir, even if it is not known yet where it really is. This is only
known after reading the config file or when explicitly specified in the
cmd line.

Thus, if GetDataDir gets called before the datadir value from the config
is read, it tries to create it at the default location.
2017-06-26 16:57:16 +03:00
Tim Flynn
a109a611f3 Validate proposals on prepare and submit (#1488)
* Implement proposal validation

Includes commits:
  Implemented CProposalValidator

  Use CProposalValidator to check proposals at prepare and submit stages

  Modify proposal validator to support numerical data in string format

  Multiple bug fixes in governance-validators.cpp

  Fixed bug in CheckURL

  Fixed stream state check

  Increase strictness of payment address validation for compatibility with sentinel

  Improved error reporting

  Implemented "check" rpc command to validate proposals

  Fixes to RPC check command

  Fix error message

  Unit test and data files for proposal validator

  Added test cases

  Removed debugging code

* Fix name validation

* Changes to address code review comments
2017-06-26 16:56:29 +03:00
Spencer Lievens
72fbfe93d8 Icon Cutoff Fix (#1485)
This will prevent the cutoff of the connections icon when using this theme.
2017-06-06 02:47:36 +03:00
UdjinM6
bea548c612 adjust/fix some log and error messages (#1484)
* adjust/fix some log and error messages

* revert penalty

* more newline/c_str fixes

* lld -> llu
2017-06-06 02:47:23 +03:00
UdjinM6
2daea77a5b fix calculation of (unconfirmed) anonymizable balance (#1477)
* fix calculation of (unconfirmed) anonymizable balance

* store cache with the same param combination as in use
2017-06-06 02:47:12 +03:00
UdjinM6
a28fa724c2 fix BIP34 starting blocks for mainnet/testnet (#1476) 2017-06-06 02:46:58 +03:00
Spencer Lievens
b6804678f2 Minor Warning Fixed (#1482)
Follow up to #1405
2017-05-31 06:50:16 +03:00
UdjinM6
5988e1e7f5 Increase minimum debug.log size to 10MB after shrink. (#1480) 2017-05-31 06:49:22 +03:00
UdjinM6
fc406f2d82 track asset sync time (#1479) 2017-05-31 06:49:09 +03:00
UdjinM6
62963e9111 fix sync reset which is triggered erroneously during reindex (#1478) 2017-05-31 06:48:47 +03:00
UdjinM6
27f3218de9 HD wallet (#1405)
* HD wallet

Minimal set of changes (no refactoring) backported from Bitcoin upstream to make HD wallets work in Dash 0.12.1.x+

* minimal bip44 (hardcoded account and change)

* minimal bip39

Additional cmd-line options for new wallet:
-mnemonic
-mnemonicpassphrase

* Do not recreate HD wallet on encryption

Adjusted keypool.py test

* Do not store any private keys for hd wallet besides the master one

Derive all keys on the fly.
Original idea/implementation - btc PR9298, backported and improved

* actually use bip39

* pbkdf2 test

* backport wallet-hd.py test

* Allow specifying hd seed, add dumphdseed rpc, fix bugs

- -hdseed cmd-line param to specify HD seed on wallet creation
- dumphdseed rpc to dump HD seed
- allow seed of any size
- fix dumpwallet rpc bug (wasn't decrypting HD seed)
- print HD seed and extended public masterkey on dumpwallet

* top up keypool on HD wallet encryption

* split HD chain: external/internal

* add missing cs_wallet lock in init.cpp

* fix `const char *` issues (use strings)

* default mnemonic passphrase is an empty string in all cases

* store mnemonic/mnemonicpassphrase

replace dumphdseed with dumphdinfo

* Add fCrypted flag to CHDChain

* prepare internal structures for multiple HD accounts

(plus some code cleanup)

* use secure allocator for storing sensitive HD data

* use secure strings for mnemonic(passphrase)

* small fix in GenerateNewHDChain

* use 24 words for mnemonic by default

* make sure mnemonic passphrase provided by user does not exceed 256 symbols

* more usage of secure allocators and memory_cleanse

* code cleanup

* rename: CSecureVector -> SecureVector

* add missing include

* fix warning in rpcdump.cpp

* refactor mnemonic_check (also fix a bug)

* move bip39 functions to CMnemonic

* Few fixes for CMnemonic:
- use `SecureVector` for data, bits, seed
- `Check` should return bool

* init vectors with desired size where possible
2017-05-29 14:51:40 +03:00
krychlicki
68e858f8dd PrivateSend: dont waste keys from keypool on failure in CreateDenominated (#1473)
* dont waste keys from keypool on failure in CreateDenominated

* bug fix - log actual number of total outputs, comment error

* log number of total outputs as separate value

* add lock so no one can spend outputs used for denominations
2017-05-28 16:50:07 +03:00
krychlicki
18c83f58e3 Qt: bug fixes and enhancement to traffic graph widget (#1429)
* clear trafficgraph on clear button click

* set default sample height

set default sample height so after clearing traffic graph have some
scale

* reduce available traffic graph ranges, add optimized graph data storage

reduce available traffic graph ranges to 10
(5m,10m,15m,30m,1h,2h,3h,6h,12h,24h),
store graph data so range change is possible,
data storage contains only necessary data to create graphs for all
supported ranges
eg. for 10m range storage only half of 10m samples - the second half is
calculated from 5m range samples,
encapsulate all traffic graph related data into one class

* code formatting corrections
2017-05-28 16:49:34 +03:00
Oleg Girko
28a1d0ecc1 Fix the same header included twice. (#1474)
The rpcserver.h header file is included twice as a result of
changes merged from Bitcoin 2 years ago
(commit 64eebc3316).
Include this file just once.

Signed-off-by: Oleg Girko <ol@infoserver.lv>
2017-05-26 05:27:07 +03:00
Jeremy Rubin
11afc8f4ba Minimal fix to slow prevector tests as stopgap measure 2017-05-12 00:58:36 +03:00
Wladimir J. van der Laan
258ed119ab auto_ptr → unique_ptr
Change the few occurrences of the deprecated `auto_ptr` to c++11 `unique_ptr`.
Silences the deprecation warnings.

Also add a missing `std::` for consistency.
2017-05-12 00:58:36 +03:00
Spencer Lievens
c0450f609c Improve EncodeBase58/DecodeBase58 performance (#1456)
* Improve DecodeBase58 performance

* Improve EncodeBase58
2017-05-09 20:06:51 +03:00
Spencer Lievens
72176e5018 Remove duplicate bantablemodel.h include (#1446) 2017-05-05 14:35:34 +03:00
Spencer Lievens
b7822464f6 Remove unnecessary LOCK(cs_main) in getrawpmempool (#1452) 2017-05-05 14:35:05 +03:00
Spencer Lievens
3efcb755e3 Do not shadow LOCK's criticalblock variable for LOCK inside LOCK (#1453) 2017-05-05 14:34:54 +03:00
Spencer Lievens
f24efd4839 Generate auth cookie in hex instead of base64 (#1454) 2017-05-05 14:34:34 +03:00
Spencer Lievens
e99dbe6208 Don't return the address of a P2SH of a P2SH (#1455) 2017-05-05 14:34:22 +03:00
Spencer Lievens
b272ae56a6 Avoid ugly exception in log on unknown inv type (#1457) 2017-05-05 14:33:58 +03:00
Spencer Lievens
8572d54a98 trivial: fix bloom filter init to isEmpty = true (#1458) 2017-05-05 14:33:44 +03:00
Spencer Lievens
c4fe229008 Access WorkQueue::running only within the cs lock. (#1460)
This removes a race between Interrupt() and Run()
2017-05-05 14:33:26 +03:00
Spencer Lievens
e30faab6fd Make strWalletFile const (#1459)
* Make strWalletFile const

* Insert Line Space for Legibility
2017-05-05 14:31:25 +03:00
Allan Doensen
9901cf4338 Fix for dash-qt issue with startup and multiple monitors. (#1461)
* Fix for issues with startup and multiple monitors on windows.

* Improvements to centering code after a suggestion from zander.
2017-05-05 14:28:40 +03:00
Oleg Girko
39750439bf Force to use C++11 mode for compilation (#1463)
* build: Enable C++11 build, require C++11 compiler

Implements #6211.

* depends: use c++11

* build: update ax_cxx_compile_stdcxx to serial 4

* build: force a c++ standard to be specified

Newer compilers may switch to newer standards by default. For example, gcc6
uses std=gnu++14 by default.

* c++11: fix libbdb build against libc++ in c++11 mode

atomic_init clashes with

* c++11: CAccountingEntry must be defined before use in a list

c++11ism. This fixes builds against libc++.
2017-05-05 14:27:27 +03:00
UdjinM6
7242e29228 Refactor PS (#1437)
* split CDarksendPool

* split DoAutomaticDenominating

* CMasternode* -> masternode_info_t

* move some globals into CPrivateSendClient

* addressed PR comments
2017-05-05 14:26:27 +03:00
chaeplin
411332f94b sentinel uses status of funding votes (#1440) 2017-04-23 11:00:11 +03:00
UdjinM6
559f8421b1 Few fixes for PrivateSend (#1408)
* PS should limit entry size, not mixing amount

* There should be no fee in mixing tx

* make sure pwalletMain is not null in PrepareDenominate

*  no need for "double" in GetAverageAnonymizedRounds, "float" should be enough

* add strErrorRet
2017-04-20 23:34:47 +03:00
UdjinM6
6067896aec mix inputs with highest number of rounds first (#1248) 2017-04-20 23:34:35 +03:00
Oleg Girko
b40f8f333c Rename bitcoinconsensus library to dashconsensus. (#1432)
All names containing bitcoinconsensus remaned to contain dashconsensus.
This is needed to avoid conflicts with real bitcoinconsensus library
shipped with Bitcoin Core.

Signed-off-by: Oleg Girko <ol@infoserver.lv>
2017-04-15 09:29:09 +02:00
UdjinM6
98990b683a Refactor: CDarkSendSigner (#1410)
* Refactor: CDarkSendSigner -> CMessageSigner + CMasternodeBroadcast::IsVinAssociatedWithPubkey

* move IsVinAssociatedWithPubkey to CMasternode

* static IsVinAssociatedWithPubkey -> no params IsInputAssociatedWithPubkey
2017-04-12 10:04:06 +03:00
Oleg Girko
f3b92a95d9 c++11: don't throw from the reverselock destructor (#1421)
noexcept is default for destructors as of c++11. By throwing in reverselock's
destructor if it's lock has been tampered with, the likely result is
std::terminate being called. Indeed that happened before this change.

Once reverselock has taken another lock (its ctor didn't throw), it makes no
sense to try to grab or lock the parent lock. That is be broken/undefined
behavior depending on the parent lock's implementation, but it shouldn't cause
the reverselock to fail to re-lock when destroyed.

To avoid those problems, simply swap the parent lock's contents with a dummy
for the duration of the lock. That will ensure that any undefined behavior is
caught at the call-site rather than the reverse lock's destruction.

Barring a failed mutex unlock which would be indicative of a larger problem,
the destructor should now never throw.
2017-04-11 13:55:41 +03:00
UdjinM6
8bbcf62000 Fixed pow (test and algo) (#1415)
* Extend pow test to actually check DGW3 diff adjustment

* Refactor pow
2017-04-11 13:55:07 +03:00
UdjinM6
68e1a8c790 Safety check in CInstantSend::SyncTransaction (#1412) 2017-04-11 13:54:34 +03:00
UdjinM6
5758ae1bfc Full path in "failed to load cache" warnings (#1411) 2017-04-11 13:54:17 +03:00
UdjinM6
ff30aed68f Align with btc 0.12 (#1409)
* Implement BIP 9 GBT changes

- BIP9DeploymentInfo struct for static deployment info
- VersionBitsDeploymentInfo: Avoid C++11ism by commenting parameter names
- getblocktemplate: Make sure to set deployments in the version if it is LOCKED_IN
- In this commit, all rules are considered required for clients to support

* qa/rpc-tests: bip9-softforks: Add tests for getblocktemplate versionbits updates

* getblocktemplate: Explicitly handle the distinction between GBT-affecting softforks vs not

* getblocktemplate: Use version/force mutation to support pre-BIP9 clients

* Don't use floating point

Github-Pull: #8317
Rebased-From: 477777f2503e3a56a267556f0fc5091042d93340

* Send tip change notification from invalidateblock

This change is needed to prevent sync_blocks timeouts in the mempool_reorg
test after the sync_blocks update in the upcoming commit
"[qa] Change sync_blocks to pick smarter maxheight".

This change was initially suggested by Suhas Daftuar <sdaftuar@chaincode.com>
in https://github.com/bitcoin/bitcoin/pull/8680#r78209060

Github-Pull: #9196
Rebased-From: 67c6326abd1788e6f411feb4f44b69774e76aae2

* torcontrol: Explicitly request RSA1024 private key

When generating a new service key, explicitly request a RSA1024 one.

The bitcoin P2P protocol has no support for the longer hidden service names
that will come with ed25519 keys, until it does, we depend on the old
hidden service type so make this explicit.

See #9214.

Github-Pull: #9234
Rebased-From: 7d3b627395582ae7c9d54ebdbc68096d7042162b

* Bugfix: FRT: don't terminate when keypool is empty

Github-Pull: #9295
Rebased-From: c24a4f5981d47d55aa9e4eb40294832a4d38fb80

* add fundrawtransaction test on a locked wallet with empty keypool

Github-Pull: #9295
Rebased-From: 1a6eacbf3b7e3d5941fec1154079bbc4678ce861
2017-04-11 13:53:54 +03:00
UdjinM6
4595db0ce3 Few changes for governance rpc: (#1351)
- allow filtering by all signals in `list`
- do not count/print funding votes for watchdogs
2017-04-11 13:53:13 +03:00
Holger Schinzel
b815a7b6a3 Merge remote-tracking branch 'remotes/origin/master' into v0.12.2.x
# Conflicts:
#	configure.ac
#	src/clientversion.h
2017-04-11 11:19:18 +02:00
Tim Flynn
86525601d5 V0.12.1.x multiple wd rate check (#1426)
* Modify MasternodeRateCheck to support updating buffers only on failure

* Update rate check buffer only when fAddToSeen is true
2017-04-05 19:30:08 +03:00
Tim Flynn
d7fbaf907f V0.12.1.x multiple vote fix (#1425)
* Avoid adding the same vote multiple times to the vote file

* Cleanup multiple votes in vote file
2017-04-03 23:06:33 +03:00
Tim Flynn
17a36de02d Fix potential race condition in vote processing (#1424) 2017-04-02 22:58:54 +03:00
UdjinM6
7f4ff495c9 Fix ProcessVerifyBroadcast (#1423)
- check if mn rank can be calculated
- fix "is in top" condition
2017-04-01 20:40:28 +03:00
UdjinM6
d8fd73fcd5 Reject payment vote if masternode rank can't be calculated (#1422) 2017-04-01 20:40:13 +03:00
Holger Schinzel
3069e0c81a bump to 0.12.1.5 (#1418) 2017-03-24 11:47:10 +01:00
Tim Flynn
e6543b9c7c Don't add non-current wd's to seen map (#1417) 2017-03-24 13:34:10 +03:00
Holger Schinzel
1a528d9458 bump to 0.12.2.0 (#1407) 2017-03-22 21:57:10 +01:00
UdjinM6
8b6a06c09f fix unsafe vNodes access (#1403) 2017-03-20 04:20:52 +03:00
UdjinM6
828b639e36 Fix mn list sync (#1401)
* Fix mn list sync

Bump sync timeout if masternode is "initially valid" and last ping was quite a long time ago

* compare to current time
2017-03-20 04:20:43 +03:00
UdjinM6
903483c5ab Translations201703 (#1384)
* translations201703 - en part

* 80%+ translations

* ru to 100%
2017-03-20 04:20:23 +03:00
UdjinM6
8b03216353 Fix alerts (#1326)
* Add missing alert functionality

* add alert test generation

* re-enable alerts by default
2017-03-15 12:54:34 +01:00
UdjinM6
61d56ee22e Disable salvagewallet in GUI (#1390)
* Disable salvagewallet in GUI

salvagewallet is known to cause problems and
it's way to powerful to let it be accessible in GUI
https://github.com/bitcoin/bitcoin/issues/7463

I have few reports from different users as well,
would be a disaster for them, glad we have autobackup...

* typo
2017-03-15 00:56:09 +01:00
Holger Schinzel
eaf90b7717 replace legacy dnsseed (#1395) 2017-03-15 00:55:52 +01:00
UdjinM6
9ed9474a9e Drop support for pre-12.1 nodes (#1394) 2017-03-14 09:22:00 +03:00
UdjinM6
d63080100a Overhaul of coin selection for mixing (#1364)
* Overhaul of coin selection for mixing

DoAutomaticDenominating logic should be:
- check pre-conditions,
- check denominations and collaterals,
- try using existing queue,
- try creating new queue.

Currently coins are selected too early and conditions are not quite right.

This is partially due to the fact that we no longer merge old inputs
and thus we are no longer able to calculate thresholds correctly using
SelectCoinsDark. To do this in a proper way we should use balances i.e.
GetAnonymizableBalance etc. Another issue is that we should take fee into
account when we calculate such balancies and when we select coins we should
ask for a correct denom, not just the smallest one as a minimum value.

And finally there are two bugs.
SelectCoinsGrouppedByAddresses: shouldn't push items smaller than
the smallest denom into resulting vector.
SelectCoinsDark: should allow small inputs in where "small" is defined
by nValueMin, not by some arbitrary amount.

* apply fee assumption for non-denoms only

* fix

* remove const
2017-03-14 09:21:37 +03:00
Tim Flynn
d2871209f9 Node eviction fix (#1392)
* Add keyed netgroup field to CNode

* Improved node eviction implementation

* Remove need for CNodeRef
2017-03-13 07:29:16 +01:00
UdjinM6
6aaec3ae2a Fail to proceed in listsinceblock if provided blockhash can't be found (#1393)
If daemon crashes, it can't save latest block sometimes, so querying daemon
for presumably best/last hash would result in a list of all txes recognized by
this wallet as its own since genesis block which could be confusing,
to say at least. Same applies for typos etc. This should fix it.

Not sure why but such weird behaviour was the case since listsinceblock rpc was
initially introduced in Bitcoin 0.5 (Oct 5, 2011)
3a6e468d9a
2017-03-13 07:29:01 +01:00
UdjinM6
c523205386 implement importelectrumwallet (#1377)
Imports keys from an Electrum wallet export file (.csv or .json)
2017-03-12 15:42:00 +01:00
crowning-
fb3db0a57e [UI] Typo fixed (#1391) 2017-03-12 15:41:36 +01:00
Tim Flynn
fc7eca597d Locking fix for UpdatePreferredDownload (#1389) 2017-03-09 02:36:50 +04:00
Tim Flynn
eb4e6a32dd Fix deadlocks on cs_vSend in RequestGovernanceObject (#1387) 2017-03-09 02:36:40 +04:00
Tim Flynn
c8b6199979 Periodicially request orphan objects (#1383)
* Implement RequestOrphanObjects

* Ensure governance objects are only requested from peers once per call

* Add gobject log messages

* Implemented CleanOrphanObjects

* Move governance maintenance functions from NewBlock to a time-based function

* Remove unused delcaration for mapAskedForGovernanceObject
2017-03-06 08:46:59 +01:00
Holger Schinzel
85d152bac0 bump to 0.12.1.4 (#1376) 2017-03-05 23:16:30 +04:00
Tim Flynn
9537062aff Implemented utility functions for copying/releasing vNodes vector (#1382)
* Implemented utility functions for copying/releasing vNodes vector

* Refactor code to use new utility functions CopyNodeVector/ReleaseNodeVector
2017-03-05 23:16:12 +04:00
UdjinM6
119fe83bb4 Do not send outdated MNs on sync (#1373) 2017-03-02 00:31:53 +04:00
UdjinM6
5598d640e6 Do not force disconnect for stalled nodes on sync (#1374)
They might be simply busy serving us another data
2017-03-02 00:31:41 +04:00
UdjinM6
1c63052c3e fix recently observed crash on IsValid (#1375)
* fix recently observed crash on IsValid

+some small cleanup

* txin.prevout.n should not exceed txOutpointCreated.vout.size()

* fix log output
2017-03-01 21:30:43 +01:00
Holger Schinzel
295e94d66a bump to 0.12.1.3 (#1371) 2017-03-02 00:30:21 +04:00
QuantumExplorer
8c64c0a7cf fixed protobuf 3.0 (byteswap) issue on macOS (#1370) 2017-02-28 13:00:02 +04:00
chaeplin
d26916ad5b make sendrawtransaction to accept 2nd optional (#1369) 2017-02-28 12:59:49 +04:00
Spencer Lievens
01eeb59af6 Splashscreen now displays correctly (Fully) (#1367)
* Splashscreen now displays correctly on retina devices

* Remove devicePixelRatio instances
2017-02-28 12:59:27 +04:00
UdjinM6
a1ef547918 only consider higher hashes if they don't exceed nExpirationDelay (#1361) 2017-02-23 21:23:30 +04:00
Tim Flynn
0bc6d92334 Define current votes by creation time instead of arrival time (#1360) 2017-02-23 16:29:00 +04:00
UdjinM6
636fb33e71 implement sentinel-like wd selection logic (#1359)
* Only accept wd's that are more recent or have a higher hash than the current best

* Fix whitespace typo

* Relay current watchdog when lower priority ones are received

* Fix nHashWatchdogCurrent reset conditions

* expire previous current wd when a new one is found in UpdateCurrentWatchdog

* fail to process votes for expired or deleted object
2017-02-22 22:29:30 +04:00
Holger Schinzel
17cf8dc6d1 bump to 0.12.1.2 (#1355) 2017-02-21 00:26:11 +04:00
UdjinM6
e9e5a24910 fixing strings and docs + instantsend.md (#1354) 2017-02-19 22:02:33 +01:00
crowning-
e3288a7e14 [RFC] add ObjectType to first-level JSON result (#1352) 2017-02-19 17:55:52 +01:00
UdjinM6
f59bd434ad fix gov list filtering bug (#1353) 2017-02-19 17:55:37 +01:00
UdjinM6
6d2cc99e35 Add "enough data" stop conditions for gov sync (#1350)
* Add "enough data" stop conditions for gov sync

* fix:
- make sure condition is checked only once per tick
- let condition be fully used on resync (reset nTimeNoObjectsLeft)
2017-02-18 00:08:41 +04:00
UdjinM6
91f7e57402 fix verification network behaviour: (#1348)
* fix verification network behaviour:
- use up to 10 connections only
- save state (do not ask same nodes after restart)
- initiate on time based intervals (every 5 minutes), based not on new blocks (should keep connections alive longer)

* revert mWeAskedForVerification serialization

* send verify requests using MAX_POSE_CONNECTIONS as a step
2017-02-18 00:08:29 +04:00
UdjinM6
31d8e03a2b Update sendcoinsentry.ui (#1343) (#1349)
Replacing 'bitcoins' in tooltip
2017-02-17 13:37:34 +04:00
UdjinM6
57fd9e9e2a fix watchdogs (#1346)
* fix watchdogs:
- do not accept if CreationTime is out of bounds (using CreationTime, not local time now)
- do not sync expired
- fix disk serialization

* drop watchdogs early, avoid adding//removing

* clean mapWatchdogObjects when object is deleted via votes
2017-02-17 04:48:42 +04:00
UdjinM6
f774daf47f a bit more granular sync checks for mnpayment (#1344) 2017-02-17 04:48:29 +04:00
TheLazieR Yip
e89b12d0c5 Gracefully not accept incoming connection (#1342) 2017-02-16 19:40:40 +04:00
UdjinM6
80b71d9746 Few networking fixes (#1341)
* Few networking fixes:
- skip "masternode"/inbound connections for sync related processes
- do not sync gov data to other nodes until fully synced ourselves
- do not accept incoming connections until fully synced

* inbound connections could be harmful only if our node is a masternode

* same for CGovernanceManager::Sync
2017-02-16 19:14:42 +04:00
crowning-
23fa1f5f13 [Trivial] maxconnections parameter help text modified (#1340) 2017-02-16 19:14:29 +04:00
Bob Feldbauer
af1177dd54 Update for OpenSSL 1.1 API. (#1336)
* Update for OpenSSL 1.1 API.

* Update qt/paymentrequestplus.cpp for OpenSSL 1.1 API.

* Fix missing # in if for qt/paymentrequestplus.cpp fix for OpenSSL 1.1 API change.

* Fix indentation in src/qt/paymentrequestplus.cpp.
2017-02-15 19:18:24 +04:00
UdjinM6
6483e6d06f send confirmation dialog box should display correct smallest denom (#1329) 2017-02-12 01:04:08 +04:00
UdjinM6
f08ae49904 Fix crash on initial mixing step: (#1331)
* Fix crash on initial mixing step:
- skip nodes marked to be disconnected
- add/release ref to make sure pnode is not deleted in the middle of the process

* - fix copy/paste mistake (nTries)
- let ConnectNode manage ref for non-mn pnodeFound
2017-02-11 03:57:09 +01:00
UdjinM6
817fd9c860 bump build to 0.12.1.1 (#1330) 2017-02-11 03:56:55 +01:00
Tim Flynn
0b54ab85c8 Fix locking issues in dash-qt masternodelist (#1328)
* Add last ping time to masternode_info_t

* Use thread safe functions to access mnodeman in masternodelist.cpp

* Fix masternodelist widget locking

* Protect access to widget data from StartAlias button
2017-02-10 04:56:52 +04:00
taw00
4fcc766a29 The denominations changed with 12.1 - Fixed how messaged in the help text. (#1327) 2017-02-10 04:52:01 +04:00
UdjinM6
b6be968c2f Fix rpc (#1325)
* no wallet passphrase in masternode(broadcast) and darksend rpc

* spork values are int64
2017-02-10 04:51:47 +04:00
Tim Flynn
fecb3e4fe6 Fix some uninitialized variables in dash-qt (#1324)
* Fix uninitialized variables in WalletModel

* Fix uninitialized variable on overviewpage startup
2017-02-09 09:29:00 +04:00
UdjinM6
56971f8da1 Fix CMasternodeConfig::read (#1322)
CService fails to initialize correctly on Windows for whatever reason,
replacing this functionality with SplitHostPort call.
2017-02-06 01:29:23 +04:00
Tim Flynn
8de792291a Add a mutex lock to protect CNode::nRefCount (#1321)
* Add a mutex lock to protect CNode::nRefCount

* Added logging statement for CNode removal
2017-02-05 20:45:36 +04:00
Tim Flynn
5520bf6895 Masternode index rebuild bug fix (#1318)
* Clear old masternode index after vote map rebuild

* Add masternode index size to CMasternodeMan::ToString
2017-02-05 13:24:34 +04:00
UdjinM6
1d45023f3e assert on Release (#1317) 2017-02-04 22:47:38 +04:00
UdjinM6
bd3978fd4b Fix IS vote expiration/cleanup: (#1316)
- vote should be removed when corresponding orphan vote expires
- fix CInstantSend::SyncTransaction: mapTxLockVotes is indexed by vote hash, not by tx hash (use votes from candidates and from orhpan vote map to avoid looping through the whole vote map)
2017-02-04 22:17:45 +04:00
UdjinM6
8c6f756362 put some reasonable limits on SPORK_12_RECONSIDER_BLOCKS (#1312)
* put some reasonable limits on SPORK_12_RECONSIDER_BLOCKS

* 6h -> 24h
2017-02-04 04:42:04 +04:00
UdjinM6
636e48b2a8 fix off-by-1 bug in DisconnectBlocks (#1313) 2017-02-04 04:41:32 +04:00
UdjinM6
cedd269cb0 shift CSV deployment window on mainnet to "Feb 5th, 2017 - Feb 5th, 2018" (#1314) 2017-02-04 04:41:18 +04:00
Tim Flynn
0ecc7c61eb Adjust start of 12.1 superblocks (#1311) 2017-02-03 21:41:22 +04:00
Tim Flynn
3840d97027 Fix division by zero (#1310)
* Fix division by zero

* Fixes based on code review comments

* Fix nProjectedVotes value

* Set nProjectedVotes to 2000
2017-02-03 13:17:47 +04:00
UdjinM6
1486acfb99 remove IS number of inputs limit, add warning instead (#1308) 2017-02-03 02:38:33 +04:00
UdjinM6
f729d8227b bump gov cache version to start from scratch (#1306) 2017-02-02 17:43:40 +04:00
UdjinM6
c5210a3e5b Adjust gov sync (#1305)
* Adjust gov sync:
- simulate mainnet gov obj sync conditions on testnet
- add redundancy: ask up to 3 peers for the same obj

* stop loop if max number of peers per obj was asked
2017-02-02 17:04:45 +04:00
Tim Flynn
1f7b46c2c0 Restore 5 Dash fee for proposal creation (#1302) 2017-02-02 12:51:02 +04:00
Tim Flynn
399330d42d Improve governance syncing efficiency with bloom filter (#1299)
* Use bloom filter for governance vote syncing

Modify masternode-sync to send bloom filters

Correctly initialize bloom filter

Set fUseFilter argument

Increase bloom filter size to account for multiple signals

Set bloom filter parameters

Use constants for bloom filter parameters

Added filter size check

Added filter size check in masternode-sync

Update bloom filter

Changed bloom parameters

* Bump protocol version

* Update sync time for inv's

* Changes based on code review comments

* Make bloom filter size network dependent

* Fix network dependent filter parameters

* Remove unneeded constant definition

* Move constant definition

* Add blank line
2017-02-02 12:50:44 +04:00
UdjinM6
cfc8954b42 Shift PS denoms (#1292)
* Shift PS denoms

* fix ui PS restrictions
2017-02-02 12:50:21 +04:00
Tim Flynn
a73185d939 Increment node refcount before adding to vector (#1304) 2017-02-02 12:22:47 +04:00
Tim Flynn
944420deb0 Fix deadlock in governance on cs_main (#1303) 2017-02-02 03:07:24 +04:00
UdjinM6
3bfa5392fa fix flag/ref order + cs_vNodes in ConnectNode (#1300)
* fix flag/ref order

* hold cs_vNodes in ConnectNode a little bit longer

* fix
2017-02-01 21:24:00 +04:00
UdjinM6
c8466cfb04 fix lock order in ThreadMnbRequestConnections (#1298) 2017-01-31 21:11:21 +04:00
UdjinM6
572c554681 Multiple mnb recovery (#1297)
* ask for multiple mnb hashes for recovery

* address comments, lock cs_vNodes and add/relese ref

* add parentheses
2017-01-31 19:29:27 +04:00
UdjinM6
e2eaf1d0d7 Fix few block processing bugs (#1291)
* protect mapRejectedBlocks by cs_main

* few block reprocessing fixes:
- DisconnectBlock should fail on DisconnectTip failure
- ResolveConflicts should fail on DisconnectBlock failure
- ReprocessBlocks cleanup

* don't ban on IsBlockValueValid/IsBlockPayeeValid failure
2017-01-30 10:01:08 +04:00
Tim Flynn
04ed5db62c Fix Vote iteration bug (#1290)
* Fix Vote iteration bug

* Fix order of statements
2017-01-29 23:09:21 +04:00
UdjinM6
60409df822 InstantSend overhaul (#1288)
* Multi-quorum InstantSend, complete refactoring
+ cleanup for IS and partial protobump

* more changes:
- allow InstantSend tx to have 10 inputs max
- store many unique tx hashes in mapVotedOutpoints
- more checks in AcceptToMemoryPoolWorker (moved from ProcessMessage + CTxLockRequest(tx).IsValid() )

* More changes:
- let multiple lock candidates compete for votes
- fail to vote on the same outpoint twice early

* More changes:
- notify CInstantSend on UpdatedBlockTip -> remove cs_main from CheckAndRemove()
- notify CInstantSend on SyncTransaction -> count expiration block starting from the block corresponding tx was confirmed instead of the block lock candidate/vote was created
- fixed few locks

* add comments about nConfirmedHeight

* Fix "Block vs Lock" edge case

* Fix "Block vs Lock" edge case, p2

* Fix issues:
- fix logic for locking inputs and notifying - see UpdateLockedTransaction, TryToFinalizeLockCandidate
- add missing hash inserting in ProcessTxLockVote
- add nMaxBlocks param to ResolveConflicts to limit max depth allowed to disconnect blocks recursively
- fix false positive mempool conflict
- add missing mutex locks
- fix fRequireUnspent logic in CTxLockRequest::IsValid
2017-01-29 12:22:14 +04:00
Tim Flynn
9c5db04953 Fix datadir initialization in dash-qt (#1287) 2017-01-27 18:07:13 +04:00
TheLazieR Yip
534effaf85 Set width=18 to support NEW_START_REQUIRED status in masternodelist full (#1281) 2017-01-25 15:37:45 +04:00
UdjinM6
d8797023c8 move mnb verification requests to their own thread (#1274)
* move mnb verification requests to their own thread, should remove related ui/rpc freezes

* vector -> list
2017-01-21 23:03:55 +04:00
Tim Flynn
348c001445 Fix governance-votedb index bug (#1278) 2017-01-21 09:26:35 +04:00
TheLazieR Yip
2a43d23f95 Enable sendrawtransaction to send IS (#1271)
* Enable sendrawtransaction to send IS

* InstantSend as optional for sendrawtransaction
2017-01-20 03:00:47 +04:00
UdjinM6
a7d172fafd update list of mn states in masternodelist rpc help (#1272)
fix #1266
2017-01-19 23:06:56 +04:00
Tim Flynn
70b2f3e083 Limit number of warning messages logged by CNode's (#1273) 2017-01-19 23:06:32 +04:00
Tim Flynn
0233d87739 Do not call CloseSocketDisconnect from non-socket handler threads (#1276) 2017-01-19 23:02:57 +04:00
Tim Flynn
4b7bd6be8f Governance masternode notification bug fixes (#1270)
* Flag governance items when MN's are removed

* Remove old broken update mechanism

* Do not flag MN state changes which are irrelevant to validity

* Call AddGovernanceVote
2017-01-18 19:24:19 +04:00
Tim Flynn
5254255a0a Voting related syncing changes (#1269)
* Remove vote count check from IsValidLocally

* Do not check voted validity flag when syncing

* Do not send objects marked for deletion during syncing

* Remove node penalty for unrequested objects.
2017-01-18 19:24:04 +04:00