Commit Graph

12138 Commits

Author SHA1 Message Date
UdjinM6
c82e433913
Streamline, refactor and unify PS checks for mixing entries and final txes (#3246)
* Move PS mixing entry verification on masternodes into `AddEntry()`

Also streamline logic a bit and drop unused/excessive parts.

* Unify PS checks among masternodes and clients

* No need to re-check outputs over and over again

* No need to count, fail early if any output is missing

* No need to look any further once we found the input we expected

A tx with duplicate inputs would be considered invalid anyway and we also know there are no duplicates because we just verified the final tx above.

Also drop an unused variable.

* Unify LogPrint-s

* Drop human-readable strings for unused PoolMessage-s

* Apply suggestions from code review

Co-Authored-By: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>

* Re-introduce zero-fee checks

* fix log

* Move all txin/txout verification logic shared by CPrivateSendClientSession::SignFinalTransaction() and CPrivateSendServer::AddEntry() into CPrivateSendBaseSession::IsValidInOuts()

* fix nit

* Add missing return

* Use CCoinsViewMemPool instead of doing it manually

Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
Co-authored-by: Alexander Block <ablock84@gmail.com>
2020-01-01 17:12:25 +03:00
Alexander Block
5ce1ee9035 Fix params.size() check in "protx list wallet" RPC (#3259)
This should have been "> 4" as otherwise it bails out when the height is
specified.
2020-01-01 17:02:56 +03:00
PastaPastaPasta
2d080d4060 move privatesend rpc methods from rpc/masternode.cpp to new rpc/privatesend.cpp (#3253)
* move privatesend rpc methods from masternode.cpp to new privatesend.cpp

Signed-off-by: Pasta <pasta@dashboost.org>

* add ifdef ENABLE_WALLET check for wallet.h import

Signed-off-by: Pasta <pasta@dashboost.org>

* actually register privatesend rpc

Signed-off-by: Pasta <pasta@dashboost.org>

* add dropped help text and change some weird spacing below

Signed-off-by: Pasta <pasta@dashboost.org>
2019-12-31 17:22:17 +03:00
UdjinM6
d2c85b9ea1
Skip mnsync restrictions for whitelisted and manually added nodes (#3249) 2019-12-31 13:01:48 +03:00
UdjinM6
8b0bb9c0e3
Try to avoid being marked as a bad quorum member when we sleep for too long in SleepBeforePhase (#3245)
* Do not sleep at the last block of the phase, it's not safe

* Refactor it a bit to make it clearer what's going on here

* Stop sleeping if blocks came faster than we expected
2019-12-31 13:01:01 +03:00
UdjinM6
630f792b5c
Fix log output in CDKGPendingMessages::PushPendingMessage (#3244) 2019-12-24 22:35:21 +03:00
UdjinM6
65206833e4 Fix menu bar text color in Dark theme (#3236) 2019-12-12 11:46:54 +01:00
UdjinM6
dad102669b Update static and dns seeds for mainnet and testnet (#3234)
* Drop (test.)dnsseed.masternode.io

* makeseeds.py

mainnet 1185193, testnet 225964

* generate-seeds.py

* Update tor.md with live onion nodes

All old nodes are down
2019-12-11 12:30:38 +01:00
UdjinM6
91a996e325
Make sure mempool txes are properly processed by CChainLocksHandler despite node restarts (#3226)
* Pass nAcceptTime via TransactionAddedToMempool and use it for ChainLocks

Otherwise the "first seen" time is way off after node restart

* Don't skip TransactionAddedToMempool for chainlocks while blockchain is not synced yet

Otherwise txes from mempool.dat won't be processed there
2019-12-07 13:56:17 +03:00
Alexander Block
697d289ebc
Merge #12392: Fix ignoring tx data requests when fPauseSend is set on a peer (#3225)
c4af738 Fix ignoring tx data requests when fPauseSend is set on a peer (Matt Corallo)

Pull request description:

  This resolves a bug introduced in
  66aa1d58a1 where, if when responding
  to a series of transaction requests in a getdata we hit the send
  buffer limit and set fPauseSend, we will skip one transaction per
  call to ProcessGetData.

  Bug found by Cory Fields (@theuni).

  Probably worth slipping into 0.16 :/.

Tree-SHA512: a9313cef8ac6da31eb099c9925c8401a638220cf7bc9b7b7b83151ecae4b02630f2db45ef6668302b9bb0f38571afbd764993427f1ec9e4d74d9a3be6647d299
2019-12-06 12:30:17 +01:00
UdjinM6
2b587f0ebc
Slightly refactor CDKGSessionHandler::SleepBeforePhase (#3224)
This should make code a little bit cleaner, should be no changes in the actual behaviour: non-members do not sleep already due to `sleepTime` being negative for them and `phaseTime = 0` does the same on regtest but for everyone.
2019-12-06 12:10:01 +03:00
Alexander Block
fdb05860e2 Don't join thread in CQuorum::~CQuorum when called from within the thread (#3223) 2019-12-06 12:06:13 +03:00
Alexander Block
4c00d98ea6 Allow re-signing of IS locks when performing retroactive signing (#3219)
* Implement re-signing of InstantSend inputs when TXs come in via blocks

* Use GetAdjustedTime instead of GetTimeMillis in CSigSharesManager

This allows use of mocktime in tests.

* Expose verifiedProRegTxHash in getpeerinfo and implement wait_for_mnauth

* Allow to wait for IS and CL to NOT happen

* Bump timeout for wait_for_instantlock

* Implement tests for retroactive signing of IS and CLs

* Add wait_for_tx function to DashTestFramework

* Add -whitelist=127.0.0.1 to node0

* Use node3 for isolated block generation

* Don't test for non-receival of TXs on node4/node5
2019-12-06 12:05:58 +03:00
UdjinM6
dfe99c9507 Decouple cs_mnauth/cs_main (#3220) 2019-12-05 19:28:53 +01:00
UdjinM6
9dad60386c
Tweak "Send" popup and refactor related code a bit (#3218)
Few key points:

- highlight when not all recipients are displayed, move this info closer to the actual list
- clarify fee rounding text for PrivateSend, wasn't accurate
- show transactions size and actual fee rate explicitly
- show number of inputs PrivateSend tx is going to consume and warn if this number is 10 or higher
2019-11-27 13:53:42 +03:00
UdjinM6
ef55e48c1e
Merge pull request #3217 from codablock/pr_backport_hidpi_fix
Backport bitcoin#16254 and remove hires theme
2019-11-22 21:14:22 +03:00
UdjinM6
bb7a32d2e2
Add Dark theme (#3216)
* Copy light(-hires).css -> dark(-hires).css (with no changes yet)

* Add dark(-hires).css to makefile/qrc and show them in theme selector

* Dark theme (css part)

* Do not style unit selector in status bar via platform styles, use css instead

* No coloring via forms (*.ui)

* Implement and use helpers to style parts of rich text differently for light and dark themes

* Remove dark-hires due to #3217

* Revert changes to light-hires.css to avoid merge conflicts with #3217
2019-11-22 21:13:47 +03:00
UdjinM6
05ac4dbb45
Dashify few strings (#3214) 2019-11-22 21:13:19 +03:00
UdjinM6
482a549a2b
Add collateral, owner and voting addresses to masternode list table (#3207)
* Add collateral, owner and voting addresses to masternode list table

* Adjust column names in masternode list table

* Slightly refactor updateDIP3List()

* Lock cs_main in updateDIP3List early to avoid GUI frezes

* Update MN list in GUI 10 times less often while blockchain is still syncing

* Move GetUTXO calls outside of main update loop

* Fill coin cache for masternode UTXOs on start
2019-11-22 21:12:57 +03:00
Alexander Block
8c17c81631 Remove light-hires theme as it's not required anymore 2019-11-22 12:28:08 +01:00
MarcoFalke
d9741fc632 Merge #16254: qt: Set AA_EnableHighDpiScaling attribute early
099e4b9ad3 Set AA_EnableHighDpiScaling attribute early (Hennadii Stepanov)

Pull request description:

  Running `bitcoin-qt` compiled against Qt 5.12.4 causes a warning:
  ```
  hebasto@bionic-qt:~/bitcoin$ src/qt/bitcoin-qt
  Attribute Qt::AA_EnableHighDpiScaling must be set before QCoreApplication is created.
  ```

  This PR fixes this issue.

  From Qt docs:
  - [Qt::AA_EnableHighDpiScaling](https://doc.qt.io/qt-5/qt.html#ApplicationAttribute-enum):
  > Enables high-DPI scaling in Qt on supported platforms (see also High DPI Displays). _Supported platforms are X11, Windows and Android._ Enabling makes Qt scale the main (device independent) coordinate system according to display scale factors provided by the operating system. This corresponds to setting the `QT_AUTO_SCREEN​_SCALE_FACTOR` environment variable to 1. This attribute must be set before `QGuiApplication` is constructed. This value was added in Qt 5.6.

  - [QCoreApplication::setAttribute()](https://doc.qt.io/qt-5/qcoreapplication.html#setAttribute)

ACKs for commit 099e4b:
  MarcoFalke:
    ACK 099e4b9ad3d9967051d5c3d45c6315d1b30fea05
  jonasschnelli:
    utACK 099e4b9ad3d9967051d5c3d45c6315d1b30fea05
  fanquake:
    ACK 099e4b9ad3d9967051d5c3d45c6315d1b30fea05. Did some testing on `Bionic` and `Windows 10` (using VirtualBox). I couldn't see any obvious visual difference, but given Marco's screens above, this change is obviously better. I also checked that there wasn't any sort of regression on macOS.

Tree-SHA512: 1965a427ee14ffb3871bac317685032406cf02d1fa2b2dc11c8b643bfe4ba09195674d149d1e41752f14c0d000446b35e142f3ce60d987ba97082fd7ee39a094
2019-11-22 12:22:21 +01:00
UdjinM6
37f96f5a3a
Bump version to 0.15 and update few const-s/chainparams (#3204)
* Bump const-s

* Bump version to 0.15

* Run gen-manpages.sh
2019-11-21 23:52:35 +03:00
strophy
9de994988b Compliance changes to terminology (#3211)
Replace inaccurate user-facing descriptions of PS as anonymous to mixed or private, since Dash is a transparent blockchain.
2019-11-21 23:49:35 +03:00
UdjinM6
d475f17bc2
Fix styles for progress dialogs, shutdown window and text selection (#3212)
* Override text selection background color for all text widgets

Otherwie it might become unusable with some system themes

* Fix progress dialogs styling

* Fix shutdown window styling
2019-11-21 18:02:43 +03:00
UdjinM6
df372ec5f9
Fix off-by-one error for coinbase txes confirmation icons (#3206) 2019-11-21 12:55:56 +03:00
UdjinM6
1e94e3333c
Fix styling for disabled buttons (#3205) 2019-11-21 12:55:41 +03:00
UdjinM6
7677b55781
Actually apply CSS styling to RPC console (#3201) 2019-11-19 01:25:59 +03:00
UdjinM6
63cc22d5ea
More Qt tweaks (#3200)
* Fix combobox popup style

* Unify margins/paddings/height for lineedits/comboboxes/spinboxes

* Drop walletframe_background

* Add transparency to unchecked.png

* Alternative solution for comboboxes (no border for popups, add paddings in QListView)
2019-11-18 19:28:41 +03:00
UdjinM6
7aa9c43f89
Few Qt tweaks (#3199)
* Fix "out of sync" label

* Fix fallback fee warning label

It's too long in some languages (e.g. ru) and this breaks ui

* Drop sub-tabs on the Masternode tab
2019-11-15 13:46:45 +03:00
UdjinM6
fd50c1c715
Hold cs_main/cs_wallet in main MakeCollateralAmounts (#3197)
* Hold cs_main/cs_wallet in main MakeCollateralAmounts

Otherwise smth else can alter wallet state and we might end up creating conflicting txes.

* AssertLockHeld
2019-11-13 23:04:12 +03:00
UdjinM6
460e0f475a
Fix locking of funds for mixing (#3194)
* Fix locking of funds for mixing

Lock funds earlier and actually lock mixing collaterals

* Streamline the locking logic in PrepareDenominate
2019-11-13 23:03:52 +03:00
UdjinM6
415b81e41e
Refactor some pow functions (#3198)
* Refactor GetNextWorkRequired

* Move special diff rule out of DGW
2019-11-13 21:17:36 +03:00
UdjinM6
b2fed3862b
A few trivial fixes for RPCs (#3196)
* Move "bip147" softfork up in getblockchaininfo to match the actual order of activation

* Fix typo

* Use CURRENCY_UNIT instead of BTC

* Add simple descriptions in `quorum` rpcs

* Unify the look of `quorum` cmd options (drop `.`)

* Clarify the order softforks are sorted in getblockchaininfo
2019-11-13 21:17:00 +03:00
UdjinM6
f8296364aa
Two trivial fixes for logs (#3195)
* Unify zmq publish notifier logs

* Add missing line break
2019-11-13 21:16:41 +03:00
UdjinM6
d5cc88f00a
Should mark tx as a PS one regardless of change calculations in CreateTransaction (#3193) 2019-11-13 21:16:02 +03:00
Nathan Marley
e9235b9bbb trivial: Rename txid paramater for gobject voteraw (#3191)
The "masternode-tx" name is kinda confusing since ProTxes exist now. This is a
small rename to clarify that it is referring to the MN collateral txid and
index.
2019-11-11 12:22:20 +03:00
Nathan Marley
70b320bab0 Detect masternode mode from masternodeblsprivkey arg (#3188)
* Detect masternode mode from privkey arg

The `masternode` argument seems redundant. This change enables masternode mode
based on the presence (and validity) of the `masternodeblsprivkey` argument.

* Deprecate -masternode option

* Remove -masternode switch from functional tests

* Move -masternode deprecate warning to better place
2019-11-11 12:21:45 +03:00
UdjinM6
1091ab3c66
Translations201909 (#3107)
* en

* ru

* fi

* ko, vi

* it, pl, sk

* fix fi

* es, fr, zh_TW

* de, nl

* Add ro

* pt, tr, zh_CN

* th

* ja
2019-11-11 11:24:45 +03:00
UdjinM6
251fb5e69c
Slightly optimize ApproximateBestSubset and its usage for PS txes (#3184)
* From 2 best sets with the same `nTotal` in ApproximateBestSubset prefer the one with less inputs

* There is no reason to run ApproximateBestSubset again if nMinChange is 0

* Apply review suggestions
2019-11-04 20:35:58 +03:00
UdjinM6
a55624b25f
Fix 3182: Append scrollbar styles (#3186) 2019-11-04 20:35:32 +03:00
UdjinM6
372389d231
Disable styling for scrollbars on macos (#3182)
* Do not add spacing to tx list header on macos

* Only style scrollbars when not on macos
2019-10-31 20:30:57 +03:00
UdjinM6
e0781095f0
A couple of fixes for additional indexes (#3181)
* It should not be possible to change settings for additional indexes without reindex

* Should write db flags for additional indexes on reindex

* Add tests to make sure index settings can't be changed without reindex
2019-10-31 20:30:42 +03:00
Nathan Marley
d3ce0964b2 Add Qt GUI refresh w/branding updates (#3000)
* Update Dash app and toolbar icons

* Update icons and images

* Remove menubar icons

* Add Dash logo to top-right of menubar

* Remove the small PrivateSend buttons

* Remove image entirely from About modal

* Update CSS for new theme changes

* Restore splash testnet image

* Make entire toolbar button clickable

* Fix address book and shrink transaction icons

* Revert "Restore splash testnet image"

This reverts commit 2df07ff7d3.

* Restore original direction for tx in/out arrows

* Add transparency to icons

* Remove unused icons

* Resize way too small icons

* `mogrify src/qt/res/*/*.png`

* Drop `light` from `optimize-pngs.py`

* `python3 contrib/devtools/optimize-pngs.py`

"Total reduction: 42507 bytes"

* Restore old remove icon as console_remove
2019-10-31 20:30:21 +03:00
Nathan Marley
9bc699ff25 Update activemn if protx info changed (#3176)
* Update activemn if protx info changed

* Add `==` and `!=` operators to CDeterministicMNState

* Only re-init active MN if its IP changed, changes to payout, voting etc. can be done without it

* Test `masternode status` updates

* Don't track mnListEntry anymore and instead get the DMN on demand

* Revert "Add `==` and `!=` operators to CDeterministicMNState"

This reverts commit fba4687581.
2019-10-30 22:31:13 +03:00
UdjinM6
bbd9b10d47
Refactor nonLockedTxsByInputs (#3178) 2019-10-29 21:37:54 +03:00
UdjinM6
64a913d6f9
Allow empty strings in protx update_registrar as an option to re-use current values (#3177)
* Allow empty strings in `protx update_registrar` as an option to re-use current values

* Update src/rpc/rpcevo.cpp

Co-Authored-By: Alexander Block <ablock84@gmail.com>
2019-10-29 21:37:39 +03:00
UdjinM6
a7492c1d3a Handle coin type via CCoinControl (#3172) 2019-10-23 09:56:44 +02:00
Alexander Block
5107582f25
Merge #11252: [P2P] When clearing addrman clear mapInfo and mapAddr. (#3171)
b86a42077 when clearing addrman clear mapInfo and mapAddr (Gregory Sanders)

Pull request description:

  Power failure on my machine resulted in a corrupted addrman that would hit bad assertions when trying to serialize the "cleared" addrman to disk: 6866b4912b/src/addrman.h (L320)

Tree-SHA512: 07ca8b6cbd88407e5f3f0dccb346ae31bd1392f4210b2d5c5647c853986bfec95cf70240b92bafdc61b90e452a5d8315962738d10c10c2b53fdabff10503d05a
2019-10-23 09:56:30 +02:00
Alexander Block
0d1a049059
Don't show individual messages for each TX when too many come in at once (#3170)
This avoids locking up the whole Desktop on some systems where messages
are sent through DBUS.

Instead of showing each message, we'll now consolidate all TXs into a single
message when more then 9 arrive at once (in 100ms).
2019-10-23 09:56:15 +02:00
Alexander Block
589c892506
Fix 2 more bottlenecks causing GUI lockups (#3169)
* Remove dataChanged call for ToAddress

This call is redundant since a long time already. It comes from a time
where there was no ToAddress column, but only a Description column which
also contained status information for coinbases. This is gone for a long
time already, so the ToAddress column has nothing included which might
change when confirmations change.

For the history:
34fa178243 splitted the Description column
into Type and ToAddress
e599246803 removed last traces of status from
the ToAddress column

* Avoid call to labelForAddress in formatTxToAddress

This speeds up sorting by address
2019-10-23 09:56:00 +02:00