diff --git a/COPYING b/COPYING index cd6a5de2dc11e..56853df72a97d 100644 --- a/COPYING +++ b/COPYING @@ -3,7 +3,7 @@ Copyright (c) 2014-2015 Dash Developers Copyright (c) 2011-2013 The PPCoin developers Copyright (c) 2013-2014 The NovaCoin Developers Copyright (c) 2014-2018 The BlackCoin Developers -Copyright (c) 2015-2019 PIVX Developers +Copyright (c) 2015-2020 PIVX Developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/configure.ac b/configure.ac index 2146256aabd5f..68b4ed8bb917b 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 4) define(_CLIENT_VERSION_MINOR, 0) -define(_CLIENT_VERSION_REVISION, 1) +define(_CLIENT_VERSION_REVISION, 2) define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_RC, 0) define(_CLIENT_VERSION_IS_RELEASE, true) diff --git a/doc/man/pivx-cli.1 b/doc/man/pivx-cli.1 index 750246c24d88a..600ae16492b90 100644 --- a/doc/man/pivx-cli.1 +++ b/doc/man/pivx-cli.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH PIVX-CLI "1" "January 2020" "pivx-cli v4.0.1.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.11. +.TH PIVX-CLI "1" "January 2020" "pivx-cli v4.0.2.0" "User Commands" .SH NAME -pivx-cli \- manual page for pivx-cli v4.0.1.0 +pivx-cli \- manual page for pivx-cli v4.0.2.0 .SH DESCRIPTION -PIVX Core RPC client version v4.0.1.0 +PIVX Core RPC client version v4.0.2.0 .SS "Usage:" .TP pivx\-cli [options] [params] diff --git a/doc/man/pivx-qt.1 b/doc/man/pivx-qt.1 index 9e8a27f13930d..ed4643b730c0e 100644 --- a/doc/man/pivx-qt.1 +++ b/doc/man/pivx-qt.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH PIVX-QT "1" "January 2020" "pivx-qt v4.0.1.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.11. +.TH PIVX-QT "1" "January 2020" "pivx-qt v4.0.2.0" "User Commands" .SH NAME -pivx-qt \- manual page for pivx-qt v4.0.1.0 +pivx-qt \- manual page for pivx-qt v4.0.2.0 .SH DESCRIPTION -PIVX Core version v4.0.1.0 (64\-bit) +PIVX Core version v4.0.2.0 (64\-bit) Usage: .IP pivx\-qt [command\-line options] diff --git a/doc/man/pivx-tx.1 b/doc/man/pivx-tx.1 index 7e42508d887a0..1e13ea55023b5 100644 --- a/doc/man/pivx-tx.1 +++ b/doc/man/pivx-tx.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH PIVX-TX "1" "January 2020" "pivx-tx v4.0.1.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.11. +.TH PIVX-TX "1" "January 2020" "pivx-tx v4.0.2.0" "User Commands" .SH NAME -pivx-tx \- manual page for pivx-tx v4.0.1.0 +pivx-tx \- manual page for pivx-tx v4.0.2.0 .SH DESCRIPTION -Pivx Core pivx\-tx utility version v4.0.1.0 +Pivx Core pivx\-tx utility version v4.0.2.0 .SS "Usage:" .TP pivx\-tx [options] [commands] diff --git a/doc/man/pivxd.1 b/doc/man/pivxd.1 index 6cda9dd6be724..4e889c4142523 100644 --- a/doc/man/pivxd.1 +++ b/doc/man/pivxd.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH PIVXD "1" "January 2020" "pivxd v4.0.1.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.11. +.TH PIVXD "1" "January 2020" "pivxd v4.0.2.0" "User Commands" .SH NAME -pivxd \- manual page for pivxd v4.0.1.0 +pivxd \- manual page for pivxd v4.0.2.0 .SH DESCRIPTION -Pivx Core Daemon version v4.0.1.0 +Pivx Core Daemon version v4.0.2.0 .SS "Usage:" .TP pivxd [options] diff --git a/doc/release-notes.md b/doc/release-notes.md index d5357990e4f2c..0332879890762 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,4 +1,4 @@ -PIVX Core version *v4.0.1* is now available from: +PIVX Core version *v4.0.2* is now available from: This is a new revision version release, including various bug fixes and performance improvements, as well as updated translations. @@ -8,7 +8,7 @@ Please report bugs using the issue tracker at github: + +This is a new revision version release, including various bug fixes and performance improvements, as well as updated translations. + +Please report bugs using the issue tracker at github: + + +Recommended Update +============== + +PIVX Core v4.0.1 is NOT a mandatory update, and user can choose to stay with v4.0.0 if they wish. However, v4.0.1 does contain minor bug fixes and performance improvements to address feedback from the v4.0.0 version. + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/PIVX-Qt (on Mac) or pivxd/pivx-qt (on Linux). + + +Compatibility +============== + +PIVX Core is extensively tested on multiple operating systems using the Linux kernel, macOS 10.10+, and Windows 7 and later. + +Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), No attempt is made to prevent installing or running the software on Windows XP, you can still do so at your own risk but be aware that there are known instabilities and issues. Please do not report issues about Windows XP to the issue tracker. + +Apple released it's last Mountain Lion update August 13, 2015, and officially ended support on [December 14, 2015](http://news.fnal.gov/2015/10/mac-os-x-mountain-lion-10-8-end-of-life-december-14/). PIVX Core software starting with v3.2.0 will no longer run on MacOS versions prior to Yosemite (10.10). Please do not report issues about MacOS versions prior to Yosemite to the issue tracker. + +PIVX Core should also work on most other Unix-like systems but is not frequently tested on them. + + +Notable Changes +============== + +Startup Fixes + Performance Improvements +-------------------------- + +There was a regression in the wallet startup flow causing an excessively growing time based on the amount of stored transactions. In the extreme situation of a wallet with 400k transactions, for example, it was taking over an hour. + +4.0.1 fixes it and includes several performance improvements in the wallet's startup flow. + +Test: + +Environment: + +Wallet with 450,000 transactions. + +Time: + +3.4.0 ---> ~14 minutes. +4.0.0 ---> +60 minutes. +4.0.1 ---> ~8 minutes 🚀 . + +NOTE: Currently the GUI interface only loads the **latest 20k** transaction records. A "load-on-demand" feature for such big wallets will be provided in a future release. + +GUI Enable Smaller Window Resize +-------------------------- + +There was a request from many users about our GUI window not fitting in their less than 13 inches screens. + +4.0.1 implemented a scrolled navigation bar and permit to decrease the screen height up to 620 px (4.0.0 minimum was 740px). Solving, in this way, the small devices fitting issue. + +GUI Masternodes Locked Balance Bug Fix. +-------------------------- + +There was a bug in 4.0.0 not showing the locked balance (Masternodes collateral utxo) in the topbar's available balance. 4.0.1 fixed it. + +GUI Masternodes Start all and Start Missing flows. +-------------------------- + +The new Masternodes GUI is now implementing the Start all and Start missing flows. + +RPC/GUI Rework staking status +-------------------------- + +Fixed bug with staking icon off while the wallet is actually staking. +Improved staking status detection and expanded `getstakingstatus` output. + +Account System Deprecation +-------------------------- + +The internal accounting system is planned for removal in a future version. As such, this release contains notations in RPC help texts that state it's deprecation. + +Some instances of the term "account" are rather loose, and possibly technically incorrect (confusing "label" with "account"). These instances will be corrected in a subsequent pull request. + +Functional Test Suite Overhaul +------------------------------ + +Our Regression/Functional testing suite has undergone a substantial overhaul, particularly in regards to the cached chain that can be used to speed up testing. Full details can be found in the description of [#1218](https://github.com/PIVX-Project/PIVX/pull/1218). + +Further Zerocoin Code Cleanup +------------------------------ + +Initial cleanup work towards a clean zerocoin code sources. 4.1.0 will continue and finish this work. +The house needs to be organized for 5.0.0 new privacy protocol. + +RPC Changes +----------- + +### `getstakingstatus` + +The `staking_status` is now the first attribute. +`validtime` has been removed and replaced with `tiptime` (displaying the time of the current block at the tip of the chain). Fixed `enoughcoins` attribute and added the following: + - `staking_enabled` (whether staking is enabled via conf file / startup flag) + - `hashLastStakeAttempt` (hash of the block on top of which the last stake attempt was made) + - `heightLastStakeAttempt` (height of the block on top of which the last stake attempt was made) + - `timeLastStakeAttempt` (time of the last stake attempt) + +### `delegatoradd` + +This command now takes an additional optional argument (string: `label`) that allows associating a label with the added owner address in the address book. + +### `listdelegators` + +This command now takes an optional argument (boolean: `fBlacklist`) that allows the command to show only owner addresses that have been removed from the whitelist (done by using the `delegatorremove` command). + +The default behavior of this command if the new argument isn't provided remains the same as before. + +### `importprivkey` and `importaddress` + +Added support for cold-staking addresses. + +*v4.0.1* Change log +============== + +Detailed release notes follow. For convenience in locating the code changes and accompanying discussion, both the pull request and git merge commit are mentioned. + +### Core +- #1203 `f72660f89` [Backport][Performance] Cache + guard best block hash. (furszy) +- #1205 `4f19cd0df` [Cleanup] Remove unnecessary QtCreator files (Fuzzbawls) +- #1233 `2e4d9142f` [Trivial] Remove spammy log in in StakeV1 (random-zebra) +- #1234 `2d6d48c74` [Cleanup] Remove precomputing (Fuzzbawls) +- #1237 `51e7ea2a0` [Cleanup] Remove precomputing II (random-zebra) +- #1243 `fcb21d851` [Core][Trivial] Don't log missing MNs during CleanAndRemove (random-zebra) +- #1245 `9cf807d80` [Core] Rework staking status (random-zebra) +- #1252 `e7e1dd4d1` [Trivial] Log log2_work value with 16 decimals (random-zebra) + +### GUI +- #1184 `23313ac4f` [GUI][Trivial] Minor edits to written content (random-zebra) +- #1211 `a2912a9d6` [GUI] MN creation wizard (furszy) +- #1217 `d49e4a6d6` [Startup][GUI][Performance] Optimizations for huge wallets. (furszy) +- #1221 `e62da0bda` [GUI] Masternodes start all and start missing flows implemented. (furszy) +- #1223 `f2d429114` [GUI][Bug] Show locked balance in the available total amount. (furszy) +- #1224 `a3f09c422` [Trivial][GUI] Minor changes within 4.0 wallet FAQ (NoobieDev12) +- #1228 `ec3c7d67b` [GUI] Adding capability to decrease the screen size for small screens. (furszy) +- #1250 `276e1e08b` [GUI] Every MN action checking tier two synced. (furszy) +- #1253 `f65d0d828` [Qt] Initialize isLoading to false for CS view (Fuzzbawls) + +### Wallet Code +- #1222 `69f897be3` [Wallet] Remove un-necessary CheckTransaction call when loading wallet. (Fuzzbawls) +- #1229 `87c369bcc` [Wallet] Graceful shutdown in the unlock corrupted wallet. (furszy) +- #1231 `ccb2402d4` [Wallet] IsEquivalentTo commented (furszy) +- #1240 `310deb9b0` [Model][Wallet][Performance] Several changes in txRecord updateStatus. (furszy) + +### Build Systems +- #1199 `d40686f43` Clean up 4.0 compiler warnings (Cave Spectre) + +### Documentation +- #1207 `1968f6107` [Doc] Update build-unix.md file (Fuzzbawls) + +### RPC Interface +- #1206 `80414f979` [BUG][RPC] fix signature check (against old format) in mnbudgetrawvote (random-zebra) +- #1238 `fd43ba5f2` [RPC] Add optional arguments to delegatoradd and listdelegators (random-zebra) +- #1242 `2bfde4e7b` [RPC] Add coldstaking address support in importprivkey and importaddress (random-zebra) +- #1251 `441d790d8` [RPC] Notate all account stuff as deprecated (Fuzzbawls) + +### Testing Systems +- #1218 `a70e82a86` [Tests] Functional Tests Suite Overhaul (random-zebra) + +## Credits + +Thanks to everyone who directly contributed to this release: +- Cave Spectre +- Fuzzbawls +- NoobieDev12 +- furszy +- random-zebra + +As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/pivx-project-translations/), the QA team during Testing and the Node hosts supporting our Testnet. diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 3932ad9c54e83..c5897098968f1 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -71,11 +71,12 @@ static Checkpoints::MapCheckpoints mapCheckpoints = (1679090, uint256("f747ce055ba1b12e1f2e842bd480bc647210799359cb2e553ab292065e3419d6")) //!< First block with a "wrapped" serial spend (1686229, uint256("bb42bf1e886a7c23474634c90893dd3d68a6ccbfea4ac92a98da5cad0c6a6cb7")) //!< Last block in the "wrapped" serial attack range (1778954, uint256("0d3241268264a2908d6babf00d9cd1ffb83d93d7bb4e428820127fe227c2029c")) //!< Network split here - (1788528, uint256("ea9243ff8fc079fdd7a04f11fac415de4d98e1bb0dc38db6f79f8f8bbfdbe496")); //!< Network split here + (1788528, uint256("ea9243ff8fc079fdd7a04f11fac415de4d98e1bb0dc38db6f79f8f8bbfdbe496")) //!< Network split here + (2153200, uint256("14e477e597d24549cac5e59d97d32155e6ec2861c1003b42d0566f9bf39b65d5")); //!< First v7 block static const Checkpoints::CCheckpointData data = { &mapCheckpoints, - 1556924938, // * UNIX timestamp of last checkpoint block - 4271692, // * total number of transactions between genesis and last checkpoint + 1578332625, // * UNIX timestamp of last checkpoint block + 5116987, // * total number of transactions between genesis and last checkpoint // (the tx=... number in the SetBestChain debug.log lines) 2000 // * estimated number of transactions per day after checkpoint }; @@ -85,11 +86,12 @@ static Checkpoints::MapCheckpoints mapCheckpointsTestnet = (0, uint256("0x001")) (1016800, uint256("6ae7d52092fd918c8ac8d9b1334400387d3057997e6e927a88e57186dc395231")) (1106100, uint256("c54b3e7e8b710e4075da1806adf2d508ae722627d5bcc43f594cf64d5eef8b30")) //!< zc public spend activation height - (1112700, uint256("2ad8d507dbe3d3841b9f8a29c3878d570228e9361c3e057362d7915777bbc849")); + (1112700, uint256("2ad8d507dbe3d3841b9f8a29c3878d570228e9361c3e057362d7915777bbc849")) + (1347000, uint256("30c173ffc09a13f288bf6e828216107037ce5b79536b1cebd750a014f4939882")); //!< First v7 block static const Checkpoints::CCheckpointData dataTestnet = { &mapCheckpointsTestnet, - 1560843157, - 2501682, + 1575145155, + 2971390, 250}; static Checkpoints::MapCheckpoints mapCheckpointsRegtest = diff --git a/src/init.cpp b/src/init.cpp index 72f107bb1daf5..fe80637b961b2 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -4,7 +4,7 @@ // Copyright (c) 2011-2013 The PPCoin developers // Copyright (c) 2013-2014 The NovaCoin Developers // Copyright (c) 2014-2018 The BlackCoin Developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/kernel.cpp b/src/kernel.cpp index 205c1f52a8345..6f71219b9d4b5 100644 --- a/src/kernel.cpp +++ b/src/kernel.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2011-2013 The PPCoin developers // Copyright (c) 2013-2014 The NovaCoin Developers // Copyright (c) 2014-2018 The BlackCoin Developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/main.cpp b/src/main.cpp index ae81c7962bca7..4beb037af7fbe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,7 +4,7 @@ // Copyright (c) 2011-2013 The PPCoin developers // Copyright (c) 2013-2014 The NovaCoin Developers // Copyright (c) 2014-2018 The BlackCoin Developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/main.h b/src/main.h index 8417e7823ff81..47b9ebe79d497 100644 --- a/src/main.h +++ b/src/main.h @@ -4,7 +4,7 @@ // Copyright (c) 2011-2013 The PPCoin developers // Copyright (c) 2013-2014 The NovaCoin Developers // Copyright (c) 2014-2018 The BlackCoin Developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/masternode-budget.cpp b/src/masternode-budget.cpp index ee8555e2bed82..d592efe8dc68d 100644 --- a/src/masternode-budget.cpp +++ b/src/masternode-budget.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/masternode-budget.h b/src/masternode-budget.h index 8e2ce5f89dd97..a2ea144b92f53 100644 --- a/src/masternode-budget.h +++ b/src/masternode-budget.h @@ -1,5 +1,5 @@ // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/messagesigner.cpp b/src/messagesigner.cpp index 6940b3e30626b..99f9e8c132ca5 100644 --- a/src/messagesigner.cpp +++ b/src/messagesigner.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2014-2018 The Dash Core developers -// Copyright (c) 2018-2019 The PIVX developers +// Copyright (c) 2018-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/messagesigner.h b/src/messagesigner.h index b1eec64a30c69..5c03612dea9e1 100644 --- a/src/messagesigner.h +++ b/src/messagesigner.h @@ -1,5 +1,5 @@ // Copyright (c) 2014-2018 The Dash Core developers -// Copyright (c) 2018-2019 The PIVX developers +// Copyright (c) 2018-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/miner.cpp b/src/miner.cpp index 8dea0134516ab..66dd098dc657a 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -4,7 +4,7 @@ // Copyright (c) 2011-2013 The PPCoin developers // Copyright (c) 2013-2014 The NovaCoin Developers // Copyright (c) 2014-2018 The BlackCoin Developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/miner.h b/src/miner.h index 9099b528e9318..cb54307a143f4 100644 --- a/src/miner.h +++ b/src/miner.h @@ -1,6 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers -// Copyright (c) 2016-2019 The PIVX developers +// Copyright (c) 2016-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp index 6e0313cbe7f66..f0fe5ea5ff8ab 100644 --- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2011-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/coincontroldialog.cpp b/src/qt/coincontroldialog.cpp index 6a4509d2fead7..a82c0b3db6613 100644 --- a/src/qt/coincontroldialog.cpp +++ b/src/qt/coincontroldialog.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2011-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -19,6 +19,8 @@ #include "obfuscation.h" #include "wallet/wallet.h" +#include "qt/pivx/qtutils.h" + #include // for 'map_list_of()' #include @@ -76,7 +78,6 @@ CoinControlDialog::CoinControlDialog(QWidget* parent, bool fMultisigEnabled) : Q ui->labelCoinControlLowOutputText->setProperty("cssClass", "text-main-purple"); ui->labelCoinControlFeeText->setProperty("cssClass", "text-main-purple"); ui->labelCoinControlQuantityText->setProperty("cssClass", "text-main-purple"); - ui->labelCoinControlAfterFeeText->setProperty("cssClass", "text-main-purple"); ui->labelCoinControlAfterFee->setProperty("cssClass", "text-main-purple"); ui->labelCoinControlAmount->setProperty("cssClass", "text-main-purple"); @@ -85,7 +86,6 @@ CoinControlDialog::CoinControlDialog(QWidget* parent, bool fMultisigEnabled) : Q ui->labelCoinControlLowOutput->setProperty("cssClass", "text-main-purple"); ui->labelCoinControlFee->setProperty("cssClass", "text-main-purple"); ui->labelCoinControlQuantity->setProperty("cssClass", "text-main-purple"); - ui->labelCoinControlAfterFee->setProperty("cssClass", "text-main-purple"); ui->groupBox_2->setProperty("cssClass", "group-box"); ui->treeWidget->setProperty("cssClass", "table-tree"); @@ -131,31 +131,25 @@ CoinControlDialog::CoinControlDialog(QWidget* parent, bool fMultisigEnabled) : Q connect(unlockAction, SIGNAL(triggered()), this, SLOT(unlockCoin())); // clipboard actions - QAction* clipboardQuantityAction = new QAction(tr("Copy quantity"), this); - QAction* clipboardAmountAction = new QAction(tr("Copy amount"), this); - QAction* clipboardFeeAction = new QAction(tr("Copy fee"), this); - QAction* clipboardAfterFeeAction = new QAction(tr("Copy after fee"), this); - QAction* clipboardBytesAction = new QAction(tr("Copy bytes"), this); - QAction* clipboardPriorityAction = new QAction(tr("Copy priority"), this); - QAction* clipboardLowOutputAction = new QAction(tr("Copy dust"), this); - QAction* clipboardChangeAction = new QAction(tr("Copy change"), this); - - connect(clipboardQuantityAction, SIGNAL(triggered()), this, SLOT(clipboardQuantity())); - connect(clipboardAmountAction, SIGNAL(triggered()), this, SLOT(clipboardAmount())); - connect(clipboardFeeAction, SIGNAL(triggered()), this, SLOT(clipboardFee())); - connect(clipboardAfterFeeAction, SIGNAL(triggered()), this, SLOT(clipboardAfterFee())); - connect(clipboardBytesAction, SIGNAL(triggered()), this, SLOT(clipboardBytes())); - connect(clipboardPriorityAction, SIGNAL(triggered()), this, SLOT(clipboardPriority())); - connect(clipboardLowOutputAction, SIGNAL(triggered()), this, SLOT(clipboardLowOutput())); - connect(clipboardChangeAction, SIGNAL(triggered()), this, SLOT(clipboardChange())); - - ui->labelCoinControlQuantity->addAction(clipboardQuantityAction); - ui->labelCoinControlAmount->addAction(clipboardAmountAction); - ui->labelCoinControlFee->addAction(clipboardFeeAction); - ui->labelCoinControlAfterFee->addAction(clipboardAfterFeeAction); - ui->labelCoinControlBytes->addAction(clipboardBytesAction); - ui->labelCoinControlLowOutput->addAction(clipboardLowOutputAction); - ui->labelCoinControlChange->addAction(clipboardChangeAction); + setCssProperty({ + ui->pushButtonAmount, + ui->pushButtonQuantity, + ui->pushButtonFee, + ui->pushButtonAlterFee, + ui->pushButtonBytes, + ui->pushButtonChange, + ui->pushButtonDust + }, + "ic-copy-big" + ); + + connect(ui->pushButtonQuantity, &QPushButton::clicked, this, &CoinControlDialog::clipboardQuantity); + connect(ui->pushButtonAmount, &QPushButton::clicked, this, &CoinControlDialog::clipboardAmount); + connect(ui->pushButtonFee, &QPushButton::clicked, this, &CoinControlDialog::clipboardFee); + connect(ui->pushButtonAlterFee, &QPushButton::clicked, this, &CoinControlDialog::clipboardAfterFee); + connect(ui->pushButtonBytes, &QPushButton::clicked, this, &CoinControlDialog::clipboardBytes); + connect(ui->pushButtonDust, &QPushButton::clicked, this, &CoinControlDialog::clipboardLowOutput); + connect(ui->pushButtonChange, &QPushButton::clicked, this, &CoinControlDialog::clipboardChange); if (ui->pushButtonSelectAll->isChecked()){ ui->pushButtonSelectAll->setText(tr("Unselect all")); @@ -382,42 +376,49 @@ void CoinControlDialog::unlockCoin() void CoinControlDialog::clipboardQuantity() { GUIUtil::setClipboard(ui->labelCoinControlQuantity->text()); + inform(tr("Quantity Copied")); } // copy label "Amount" to clipboard void CoinControlDialog::clipboardAmount() { - GUIUtil::setClipboard(ui->labelCoinControlAmount->text().left(ui->labelCoinControlAmount->text().indexOf(" "))); + GUIUtil::setClipboard(BitcoinUnits::removeSpaces(ui->labelCoinControlAmount->text().left(ui->labelCoinControlAmount->text().indexOf(" ")))); + inform(tr("Amount Copied")); } // copy label "Fee" to clipboard void CoinControlDialog::clipboardFee() { - GUIUtil::setClipboard(ui->labelCoinControlFee->text().left(ui->labelCoinControlFee->text().indexOf(" ")).replace("~", "")); + GUIUtil::setClipboard(BitcoinUnits::removeSpaces(ui->labelCoinControlFee->text().left(ui->labelCoinControlFee->text().indexOf(" ")).replace("~", ""))); + inform(tr("Fee Copied")); } // copy label "After fee" to clipboard void CoinControlDialog::clipboardAfterFee() { - GUIUtil::setClipboard(ui->labelCoinControlAfterFee->text().left(ui->labelCoinControlAfterFee->text().indexOf(" ")).replace("~", "")); + GUIUtil::setClipboard(BitcoinUnits::removeSpaces(ui->labelCoinControlAfterFee->text().left(ui->labelCoinControlAfterFee->text().indexOf(" ")).replace("~", ""))); + inform(tr("After Fee Copied")); } // copy label "Bytes" to clipboard void CoinControlDialog::clipboardBytes() { GUIUtil::setClipboard(ui->labelCoinControlBytes->text().replace("~", "")); + inform(tr("Bytes Copied")); } // copy label "Dust" to clipboard void CoinControlDialog::clipboardLowOutput() { GUIUtil::setClipboard(ui->labelCoinControlLowOutput->text()); + inform(tr("Dust Copied")); } // copy label "Change" to clipboard void CoinControlDialog::clipboardChange() { - GUIUtil::setClipboard(ui->labelCoinControlChange->text().left(ui->labelCoinControlChange->text().indexOf(" ")).replace("~", "")); + GUIUtil::setClipboard(BitcoinUnits::removeSpaces(ui->labelCoinControlChange->text().left(ui->labelCoinControlChange->text().indexOf(" ")).replace("~", ""))); + inform(tr("Change Copied")); } // treeview: sort @@ -936,3 +937,11 @@ void CoinControlDialog::refreshDialog() CoinControlDialog::updateLabels(model, this); updateDialogLabels(); } + +void CoinControlDialog::inform(const QString& text) +{ + if (!snackBar) snackBar = new SnackBar(nullptr, this); + snackBar->setText(text); + snackBar->resize(this->width(), snackBar->height()); + openDialog(snackBar, this); +} diff --git a/src/qt/coincontroldialog.h b/src/qt/coincontroldialog.h index e581d7d589b94..4aa3bcb9793d6 100644 --- a/src/qt/coincontroldialog.h +++ b/src/qt/coincontroldialog.h @@ -1,5 +1,5 @@ // Copyright (c) 2011-2013 The Bitcoin developers -// Copyright (c) 2017-2019 The PIVX developers +// Copyright (c) 2017-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -7,6 +7,7 @@ #define BITCOIN_QT_COINCONTROLDIALOG_H #include "amount.h" +#include "qt/pivx/snackbar.h" #include #include @@ -61,6 +62,7 @@ class CoinControlDialog : public QDialog private: Ui::CoinControlDialog* ui; + SnackBar *snackBar = nullptr; WalletModel* model; int sortColumn; Qt::SortOrder sortOrder; @@ -73,6 +75,7 @@ class CoinControlDialog : public QDialog QAction* unlockAction; void sortView(int, Qt::SortOrder); + void inform(const QString& text); enum { COLUMN_CHECKBOX, diff --git a/src/qt/forms/coincontroldialog.ui b/src/qt/forms/coincontroldialog.ui index 416e55ddffaee..42e2e00d51e18 100644 --- a/src/qt/forms/coincontroldialog.ui +++ b/src/qt/forms/coincontroldialog.ui @@ -155,7 +155,7 @@ - + @@ -170,6 +170,32 @@ + + + + + 0 + 24 + + + + + 24 + 26 + + + + Qt::NoFocus + + + padding-bottom:2px; +padding-right:4px; + + + + + + @@ -191,7 +217,7 @@ - + @@ -206,6 +232,32 @@ + + + + + 0 + 24 + + + + + 24 + 26 + + + + Qt::NoFocus + + + padding-bottom:2px; + padding-right:4px; + + + + + + @@ -227,7 +279,7 @@ - + @@ -242,6 +294,32 @@ + + + + + 0 + 24 + + + + + 24 + 26 + + + + Qt::NoFocus + + + padding-bottom:2px; + padding-right:4px; + + + + + + @@ -524,7 +602,7 @@ - + @@ -539,12 +617,38 @@ + + + + + 0 + 24 + + + + + 24 + 26 + + + + Qt::NoFocus + + + padding-bottom:2px; + padding-right:4px; + + + + + + - + @@ -559,12 +663,38 @@ + + + + + 0 + 24 + + + + + 24 + 26 + + + + Qt::NoFocus + + + padding-bottom:2px; + padding-right:4px; + + + + + + - + @@ -579,12 +709,38 @@ + + + + + 0 + 24 + + + + + 24 + 26 + + + + Qt::NoFocus + + + padding-bottom:2px; + padding-right:4px; + + + + + + - + @@ -599,6 +755,32 @@ + + + + + 0 + 24 + + + + + 24 + 26 + + + + Qt::NoFocus + + + padding-bottom:2px; + padding-right:4px; + + + + + + diff --git a/src/qt/pivx/addresseswidget.cpp b/src/qt/pivx/addresseswidget.cpp index f4ebd7be80e1d..131d66e0ee912 100644 --- a/src/qt/pivx/addresseswidget.cpp +++ b/src/qt/pivx/addresseswidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/coldstakingwidget.cpp b/src/qt/pivx/coldstakingwidget.cpp index 7967ef9aea4ea..47db313fec08a 100644 --- a/src/qt/pivx/coldstakingwidget.cpp +++ b/src/qt/pivx/coldstakingwidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/dashboardwidget.cpp b/src/qt/pivx/dashboardwidget.cpp index de573c2dca353..834aec9e121fa 100644 --- a/src/qt/pivx/dashboardwidget.cpp +++ b/src/qt/pivx/dashboardwidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -112,7 +112,7 @@ DashboardWidget::DashboardWidget(PIVXGUI* parent) : ui->comboBoxSortType->addItem(tr("To yourself"), TransactionFilterProxy::TYPE(TransactionRecord::SendToSelf)); ui->comboBoxSortType->addItem(tr("Cold stakes"), TransactionFilterProxy::TYPE(TransactionRecord::StakeDelegated)); ui->comboBoxSortType->addItem(tr("Hot stakes"), TransactionFilterProxy::TYPE(TransactionRecord::StakeHot)); - ui->comboBoxSortType->addItem(tr("Delegated"), TransactionFilterProxy::TYPE(TransactionRecord::P2CSDelegationSent)); + ui->comboBoxSortType->addItem(tr("Delegated"), TransactionFilterProxy::TYPE(TransactionRecord::P2CSDelegationSent) | TransactionFilterProxy::TYPE(TransactionRecord::P2CSDelegationSentOwner)); ui->comboBoxSortType->addItem(tr("Delegations"), TransactionFilterProxy::TYPE(TransactionRecord::P2CSDelegation)); ui->comboBoxSortType->setCurrentIndex(0); connect(ui->comboBoxSortType, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(onSortTypeChanged(const QString&))); diff --git a/src/qt/pivx/masternodeswidget.cpp b/src/qt/pivx/masternodeswidget.cpp index 3e11ce48d79ac..bc3327249d64d 100644 --- a/src/qt/pivx/masternodeswidget.cpp +++ b/src/qt/pivx/masternodeswidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/masternodeswidget.h b/src/qt/pivx/masternodeswidget.h index 3db4f6873ee30..22bf2c7d4bcee 100644 --- a/src/qt/pivx/masternodeswidget.h +++ b/src/qt/pivx/masternodeswidget.h @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/mnmodel.cpp b/src/qt/pivx/mnmodel.cpp index 07bc56a9c08fe..708c91b96aaa8 100644 --- a/src/qt/pivx/mnmodel.cpp +++ b/src/qt/pivx/mnmodel.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/mnmodel.h b/src/qt/pivx/mnmodel.h index 22a426fcffccc..fed2383b3011a 100644 --- a/src/qt/pivx/mnmodel.h +++ b/src/qt/pivx/mnmodel.h @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/navmenuwidget.cpp b/src/qt/pivx/navmenuwidget.cpp index 23ea2df3d8c0f..6909ee58aaec9 100644 --- a/src/qt/pivx/navmenuwidget.cpp +++ b/src/qt/pivx/navmenuwidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -164,6 +164,13 @@ void NavMenuWidget::onShowHideColdStakingChanged(bool show) { ui->scrollAreaNav->verticalScrollBar()->setValue(ui->btnColdStaking->y()); } +void NavMenuWidget::showEvent(QShowEvent *event) { + if (!init) { + init = true; + ui->scrollAreaNav->verticalScrollBar()->setValue(ui->btnDashboard->y()); + } +} + void NavMenuWidget::updateButtonStyles(){ forceUpdateStyle({ ui->btnDashboard, diff --git a/src/qt/pivx/navmenuwidget.h b/src/qt/pivx/navmenuwidget.h index 783d6e934debc..cbb34f8fb6753 100644 --- a/src/qt/pivx/navmenuwidget.h +++ b/src/qt/pivx/navmenuwidget.h @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -23,6 +23,7 @@ class NavMenuWidget : public PWidget ~NavMenuWidget(); void loadWalletModel() override; + virtual void showEvent(QShowEvent *event) override; public slots: void selectSettings(); @@ -44,6 +45,8 @@ private slots: void connectActions(); void onNavSelected(QWidget* active, bool startup = false); + + bool init = false; }; #endif // NAVMENUWIDGET_H diff --git a/src/qt/pivx/pivxgui.cpp b/src/qt/pivx/pivxgui.cpp index a10ebf57f96ed..1b6fa5277897d 100644 --- a/src/qt/pivx/pivxgui.cpp +++ b/src/qt/pivx/pivxgui.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -18,6 +18,7 @@ #include "qt/pivx/defaultdialog.h" #include "qt/pivx/settings/settingsfaqwidget.h" +#include #include #include #include @@ -31,6 +32,7 @@ #define BASE_WINDOW_WIDTH 1200 #define BASE_WINDOW_HEIGHT 740 #define BASE_WINDOW_MIN_HEIGHT 620 +#define BASE_WINDOW_MIN_WIDTH 1100 const QString PIVXGUI::DEFAULT_WALLET = "~Default"; @@ -41,8 +43,18 @@ PIVXGUI::PIVXGUI(const NetworkStyle* networkStyle, QWidget* parent) : /* Open CSS when configured */ this->setStyleSheet(GUIUtil::loadStyleSheet()); - this->setMinimumSize(BASE_WINDOW_WIDTH, BASE_WINDOW_MIN_HEIGHT); - GUIUtil::restoreWindowGeometry("nWindow", QSize(BASE_WINDOW_WIDTH, BASE_WINDOW_HEIGHT), this); + this->setMinimumSize(BASE_WINDOW_MIN_WIDTH, BASE_WINDOW_MIN_HEIGHT); + + + // Adapt screen size + QRect rec = QApplication::desktop()->screenGeometry(); + int adaptedHeight = (rec.height() < BASE_WINDOW_HEIGHT) ? BASE_WINDOW_MIN_HEIGHT : BASE_WINDOW_HEIGHT; + int adaptedWidth = (rec.width() < BASE_WINDOW_WIDTH) ? BASE_WINDOW_MIN_WIDTH : BASE_WINDOW_WIDTH; + GUIUtil::restoreWindowGeometry( + "nWindow", + QSize(adaptedWidth, adaptedHeight), + this + ); #ifdef ENABLE_WALLET /* if compiled with wallet support, -disablewallet can still disable the wallet */ @@ -71,7 +83,7 @@ PIVXGUI::PIVXGUI(const NetworkStyle* networkStyle, QWidget* parent) : if(enableWallet){ QFrame* centralWidget = new QFrame(this); - this->setMinimumWidth(BASE_WINDOW_WIDTH); + this->setMinimumWidth(BASE_WINDOW_MIN_WIDTH); this->setMinimumHeight(BASE_WINDOW_MIN_HEIGHT); QHBoxLayout* centralWidgetLayouot = new QHBoxLayout(); centralWidget->setLayout(centralWidgetLayouot); diff --git a/src/qt/pivx/privacywidget.cpp b/src/qt/pivx/privacywidget.cpp index 00d1d316e00e8..8793babacb6e2 100644 --- a/src/qt/pivx/privacywidget.cpp +++ b/src/qt/pivx/privacywidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/receivewidget.cpp b/src/qt/pivx/receivewidget.cpp index 708bb72803962..c9c5e239ca9c4 100644 --- a/src/qt/pivx/receivewidget.cpp +++ b/src/qt/pivx/receivewidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/send.cpp b/src/qt/pivx/send.cpp index b50aa2e3827bc..ec3249983f4c7 100644 --- a/src/qt/pivx/send.cpp +++ b/src/qt/pivx/send.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/settings/settingsbittoolwidget.cpp b/src/qt/pivx/settings/settingsbittoolwidget.cpp index 455a7c4c6e9cd..cf048053395df 100644 --- a/src/qt/pivx/settings/settingsbittoolwidget.cpp +++ b/src/qt/pivx/settings/settingsbittoolwidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/settings/settingsmultisendwidget.cpp b/src/qt/pivx/settings/settingsmultisendwidget.cpp index 18ae523a2651a..3d1e5d52b4926 100644 --- a/src/qt/pivx/settings/settingsmultisendwidget.cpp +++ b/src/qt/pivx/settings/settingsmultisendwidget.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/topbar.cpp b/src/qt/pivx/topbar.cpp index f4969a0747093..a9c6787ce466b 100644 --- a/src/qt/pivx/topbar.cpp +++ b/src/qt/pivx/topbar.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -418,12 +418,11 @@ void TopBar::setNumBlocks(int count) { emit walletSynced(true); if (masternodeSync.IsSynced()) { // Node synced - // TODO: Set synced icon to pushButtonSync here.. - ui->pushButtonSync->setButtonText(tr("Synchronized")); + ui->pushButtonSync->setButtonText(tr("Synchronized - Block: %1").arg(QString::number(count))); progressBar->setRange(0,100); progressBar->setValue(100); return; - }else{ + } else { // TODO: Show out of sync warning int nAttempt = masternodeSync.RequestedMasternodeAttempt < MASTERNODE_SYNC_THRESHOLD ? @@ -432,7 +431,7 @@ void TopBar::setNumBlocks(int count) { int progress = nAttempt + (masternodeSync.RequestedMasternodeAssets - 1) * MASTERNODE_SYNC_THRESHOLD; if(progress >= 0){ // todo: MN progress.. - text = std::string("Synchronizing additional data..");//: %p%", progress); + text = strprintf("Synchronizing masternodes data... - Block: %d", count); //progressBar->setMaximum(4 * MASTERNODE_SYNC_THRESHOLD); //progressBar->setValue(progress); needState = false; @@ -548,7 +547,7 @@ void TopBar::updateBalances(const CAmount& balance, const CAmount& unconfirmedBa ui->labelTitle1->setText(nLockedBalance > 0 ? tr("Available (Locked included)") : tr("Available")); // PIV Total - CAmount pivAvailableBalance = balance + delegatedBalance; + CAmount pivAvailableBalance = balance; // zPIV Balance CAmount matureZerocoinBalance = zerocoinBalance - unconfirmedZerocoinBalance - immatureZerocoinBalance; diff --git a/src/qt/pivx/topbar.h b/src/qt/pivx/topbar.h index f48e4a4274737..ac9e7a67ab66b 100644 --- a/src/qt/pivx/topbar.h +++ b/src/qt/pivx/topbar.h @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/pivx/txrow.cpp b/src/qt/pivx/txrow.cpp index 514514f5473e4..45d7ad7c25f0d 100644 --- a/src/qt/pivx/txrow.cpp +++ b/src/qt/pivx/txrow.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The PIVX developers +// Copyright (c) 2019-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -93,10 +93,19 @@ void TxRow::setType(bool isLightTheme, int type, bool isConfirmed){ css = "text-list-amount-unconfirmed"; break; case TransactionRecord::P2CSDelegationSent: + case TransactionRecord::P2CSDelegationSentOwner: + path = "://ic-transaction-cs-contract"; + css = "text-list-amount-send"; + break; case TransactionRecord::P2CSDelegation: path = "://ic-transaction-cs-contract"; css = "text-list-amount-unconfirmed"; break; + case TransactionRecord::P2CSUnlockOwner: + case TransactionRecord::P2CSUnlockStaker: + path = "://ic-transaction-cs-contract"; + css = "text-list-amount-send"; + break; default: path = "://ic-pending"; sameIcon = true; diff --git a/src/qt/transactionfilterproxy.cpp b/src/qt/transactionfilterproxy.cpp index 319ce28b7a58b..8b6de2526d50b 100644 --- a/src/qt/transactionfilterproxy.cpp +++ b/src/qt/transactionfilterproxy.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2011-2013 The Bitcoin developers -// Copyright (c) 2017-2019 The PIVX developers +// Copyright (c) 2017-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -166,7 +166,7 @@ bool TransactionFilterProxy::isStakeTx(int type) const { } bool TransactionFilterProxy::isColdStake(int type) const { - return (type == TransactionRecord::P2CSDelegation || type == TransactionRecord::P2CSDelegationSent || type == TransactionRecord::StakeDelegated || type == TransactionRecord::StakeHot); + return (type == TransactionRecord::P2CSDelegation || type == TransactionRecord::P2CSDelegationSent || type == TransactionRecord::P2CSDelegationSentOwner || type == TransactionRecord::StakeDelegated || type == TransactionRecord::StakeHot); } /*QVariant TransactionFilterProxy::dataFromSourcePos(int sourceRow, int role) const { diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp index 8b0eaebc000c9..532a1ec2473c4 100644 --- a/src/qt/transactionrecord.cpp +++ b/src/qt/transactionrecord.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2011-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -377,11 +377,16 @@ void TransactionRecord::loadHotOrColdStakeOrContract( break; } } - bool isSpendable = wallet->IsMine(p2csUtxo) & ISMINE_SPENDABLE_DELEGATED; + + bool isSpendable = (wallet->IsMine(p2csUtxo) & ISMINE_SPENDABLE_DELEGATED); + bool isFromMe = wallet->IsFromMe(wtx); if (isContract) { - if (isSpendable) { + if (isSpendable && isFromMe) { // Wallet delegating balance + record.type = TransactionRecord::P2CSDelegationSentOwner; + } else if (isFromMe){ + // Wallet delegating balance and transfering ownership record.type = TransactionRecord::P2CSDelegationSent; } else { // Wallet receiving a delegation @@ -392,7 +397,8 @@ void TransactionRecord::loadHotOrColdStakeOrContract( if (isSpendable) { // Offline wallet receiving an stake due a delegation record.type = TransactionRecord::StakeDelegated; - + record.credit = wtx.GetCredit(ISMINE_SPENDABLE_DELEGATED); + record.debit = -(wtx.GetDebit(ISMINE_SPENDABLE_DELEGATED)); } else { // Online wallet receiving an stake due a received utxo delegation that won a block. record.type = TransactionRecord::StakeHot; @@ -474,7 +480,13 @@ void TransactionRecord::updateStatus(const CWalletTx& wtx) } } // For generated transactions, determine maturity - else if (type == TransactionRecord::Generated || type == TransactionRecord::StakeMint || type == TransactionRecord::StakeZPIV || type == TransactionRecord::MNReward) { + else if (type == TransactionRecord::Generated || + type == TransactionRecord::StakeMint || + type == TransactionRecord::StakeZPIV || + type == TransactionRecord::MNReward || + type == TransactionRecord::StakeDelegated || + type == TransactionRecord::StakeHot) { + if (nBlocksToMaturity > 0) { status.status = TransactionStatus::Immature; status.matures_in = nBlocksToMaturity; @@ -529,8 +541,9 @@ bool TransactionRecord::isCoinStake() const bool TransactionRecord::isAnyColdStakingType() const { return (type == TransactionRecord::P2CSDelegation || type == TransactionRecord::P2CSDelegationSent - || type == TransactionRecord::StakeDelegated || type == TransactionRecord::StakeHot - || type == TransactionRecord::P2CSUnlockOwner || type == TransactionRecord::P2CSUnlockStaker); + || type == TransactionRecord::P2CSDelegationSentOwner + || type == TransactionRecord::StakeDelegated || type == TransactionRecord::StakeHot + || type == TransactionRecord::P2CSUnlockOwner || type == TransactionRecord::P2CSUnlockStaker); } bool TransactionRecord::isNull() const diff --git a/src/qt/transactionrecord.h b/src/qt/transactionrecord.h index 69941f2cab93f..72e92cb56094d 100644 --- a/src/qt/transactionrecord.h +++ b/src/qt/transactionrecord.h @@ -1,6 +1,6 @@ // Copyright (c) 2011-2014 The Bitcoin developers // Copyright (c) 2014-2016 The Dash developers -// Copyright (c) 2016-2019 The PIVX developers +// Copyright (c) 2016-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -98,7 +98,8 @@ class TransactionRecord StakeDelegated, // Received cold stake (owner) StakeHot, // Staked via a delegated P2CS. P2CSDelegation, // Non-spendable P2CS, staker side. - P2CSDelegationSent, // Spendable P2CS delegated utxo. (coin-owner) + P2CSDelegationSent, // Non-spendable P2CS delegated utxo. (coin-owner transferred ownership to external wallet) + P2CSDelegationSentOwner, // Spendable P2CS delegated utxo. (coin-owner) P2CSUnlockOwner, // Coin-owner spent the delegated utxo P2CSUnlockStaker // Staker watching the owner spent the delegated utxo }; diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index f4c1c6cef217e..0e25b1be9a79e 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2011-2014 The Bitcoin developers // Copyright (c) 2014-2016 The Dash developers -// Copyright (c) 2016-2019 The PIVX developers +// Copyright (c) 2016-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -100,7 +100,7 @@ class TransactionTablePriv // txs are stored in order in the db, which is what should be happening) sort(walletTxes.begin(), walletTxes.end(), [](const CWalletTx & a, const CWalletTx & b) -> bool { - return a.GetComputedTxTime() < b.GetComputedTxTime(); + return a.GetComputedTxTime() > b.GetComputedTxTime(); }); // Only latest ones. @@ -461,8 +461,12 @@ QString TransactionTableModel::formatTxType(const TransactionRecord* wtx) const case TransactionRecord::StakeHot: return tr("PIV Stake on behalf of"); case TransactionRecord::P2CSDelegationSent: + case TransactionRecord::P2CSDelegationSentOwner: case TransactionRecord::P2CSDelegation: return tr("Stake delegation"); + case TransactionRecord::P2CSUnlockOwner: + case TransactionRecord::P2CSUnlockStaker: + return tr("Stake delegation spent by"); case TransactionRecord::Generated: return tr("Mined"); case TransactionRecord::ObfuscationDenominate: @@ -543,6 +547,9 @@ QString TransactionTableModel::formatTxToAddress(const TransactionRecord* wtx, b return tr("Anonymous"); case TransactionRecord::P2CSDelegation: case TransactionRecord::P2CSDelegationSent: + case TransactionRecord::P2CSDelegationSentOwner: + case TransactionRecord::P2CSUnlockOwner: + case TransactionRecord::P2CSUnlockStaker: case TransactionRecord::StakeDelegated: case TransactionRecord::StakeHot: case TransactionRecord::SendToSelf: { diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 28eea27f9cff8..6243b98f8f1d3 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2011-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index 28f15b58071b7..b922ff24e5e9d 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -1,6 +1,6 @@ // Copyright (c) 2011-2014 The Bitcoin developers // Copyright (c) 2014-2016 The Dash developers -// Copyright (c) 2017-2019 The PIVX developers +// Copyright (c) 2017-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/zpivcontroldialog.cpp b/src/qt/zpivcontroldialog.cpp index 91f2df5e16252..25712b6da6440 100644 --- a/src/qt/zpivcontroldialog.cpp +++ b/src/qt/zpivcontroldialog.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2019 The PIVX developers +// Copyright (c) 2017-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/qt/zpivcontroldialog.h b/src/qt/zpivcontroldialog.h index c613135eb1661..a5ae274b62fcb 100644 --- a/src/qt/zpivcontroldialog.h +++ b/src/qt/zpivcontroldialog.h @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2019 The PIVX developers +// Copyright (c) 2017-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/rpc/budget.cpp b/src/rpc/budget.cpp index b8708928b713d..e1fcdde25b28c 100644 --- a/src/rpc/budget.cpp +++ b/src/rpc/budget.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/rpc/client.cpp b/src/rpc/client.cpp index 26a7dd7666f57..2159b905d8b78 100644 --- a/src/rpc/client.cpp +++ b/src/rpc/client.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 39541f6f4edc0..bee906e5a4c49 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -136,24 +136,24 @@ UniValue generate(const UniValue& params, bool fHelp) if (!Params().MineBlocksOnDemand()) throw JSONRPCError(RPC_METHOD_NOT_FOUND, "This method can only be used on regtest"); - int nHeightStart = 0; + const int nGenerate = params[0].get_int(); int nHeightEnd = 0; int nHeight = 0; - int nGenerate = params[0].get_int(); CReserveKey reservekey(pwalletMain); { // Don't keep cs_main locked LOCK(cs_main); - nHeightStart = chainActive.Height(); - nHeight = nHeightStart; - nHeightEnd = nHeightStart+nGenerate; + nHeight = chainActive.Height(); + nHeightEnd = nHeight + nGenerate; } unsigned int nExtraNonce = 0; UniValue blockHashes(UniValue::VARR); - bool fPoS = nHeight >= Params().LAST_POW_BLOCK(); - while (nHeight < nHeightEnd) - { + bool fPoS = false; + const int last_pow_block = Params().LAST_POW_BLOCK(); + while (nHeight < nHeightEnd && !ShutdownRequested()) + { + if (!fPoS) fPoS = (nHeight >= last_pow_block); std::unique_ptr pblocktemplate( fPoS ? CreateNewBlock(CScript(), pwalletMain, fPoS) : CreateNewBlockWithKey(reservekey, pwalletMain) ); @@ -161,22 +161,24 @@ UniValue generate(const UniValue& params, bool fHelp) throw JSONRPCError(RPC_INTERNAL_ERROR, "Couldn't create new block"); CBlock *pblock = &pblocktemplate->block; - if(!fPoS){ + if(!fPoS) { { LOCK(cs_main); IncrementExtraNonce(pblock, chainActive.Tip(), nExtraNonce); } + while (pblock->nNonce < std::numeric_limits::max() && + !CheckProofOfWork(pblock->GetHash(), pblock->nBits)) { + ++pblock->nNonce; + } + if (ShutdownRequested()) break; + if (pblock->nNonce == std::numeric_limits::max()) continue; } - while (!CheckProofOfWork(pblock->GetHash(), pblock->nBits)) { - // Yes, there is a chance every nonce could fail to satisfy the -regtest - // target -- 1 in 2^(2^32). That ain't gonna happen. - ++pblock->nNonce; - } + CValidationState state; - if (!ProcessNewBlock(state, NULL, pblock)) + if (!ProcessNewBlock(state, nullptr, pblock)) throw JSONRPCError(RPC_INTERNAL_ERROR, "ProcessNewBlock, block not accepted"); + ++nHeight; - fPoS = nHeight >= Params().LAST_POW_BLOCK(); blockHashes.push_back(pblock->GetHash().GetHex()); } return blockHashes; diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 8e720bb23ba68..5309505658cee 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index 85e4d0c9a0bda..796d50588f18e 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/rpc/server.cpp b/src/rpc/server.cpp index 0108c1e86c47e..e58fb1c714594 100644 --- a/src/rpc/server.cpp +++ b/src/rpc/server.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/rpc/server.h b/src/rpc/server.h index 6e8b5abdf0932..d8aefc662b928 100644 --- a/src/rpc/server.h +++ b/src/rpc/server.h @@ -1,6 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/test/rpc_wallet_tests.cpp b/src/test/rpc_wallet_tests.cpp index aa795ddfdcfd4..ec484c2dfc9a0 100644 --- a/src/test/rpc_wallet_tests.cpp +++ b/src/test/rpc_wallet_tests.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2013-2014 The Bitcoin Core developers -// Copyright (c) 2017-2019 The PIVX developers +// Copyright (c) 2017-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/util.cpp b/src/util.cpp index aaee3b75fa60a..0c9c1990bd4b3 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index 41faffa296181..1e657f770b1b7 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index d83b68b3c4d68..c81312c1a73fb 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index e3b42ced42903..026eddf0ae574 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -1336,15 +1336,12 @@ CAmount CWalletTx::GetLockedCredit() const // Skip spent coins if (pwallet->IsSpent(hashTx, i)) continue; - // Add delegated coins - nCredit += pwallet->GetCredit(txout, ISMINE_SPENDABLE_DELEGATED); - // Add locked coins if (pwallet->IsLockedCoin(hashTx, i)) { - nCredit += pwallet->GetCredit(txout, ISMINE_SPENDABLE); + nCredit += pwallet->GetCredit(txout, ISMINE_SPENDABLE_ALL); } - // Add masternode collaterals which are handled likc locked coins + // Add masternode collaterals which are handled like locked coins else if (fMasterNode && vout[i].nValue == 10000 * COIN) { nCredit += pwallet->GetCredit(txout, ISMINE_SPENDABLE); } diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index f3cab4b6e4933..6728848673f20 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/wallet/walletdb.cpp b/src/wallet/walletdb.cpp index f90dabf334553..0a840d289daee 100644 --- a/src/wallet/walletdb.cpp +++ b/src/wallet/walletdb.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin developers // Copyright (c) 2014-2015 The Dash developers -// Copyright (c) 2015-2019 The PIVX developers +// Copyright (c) 2015-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/wallet/walletdb.h b/src/wallet/walletdb.h index 54bcf2b3ca180..003c87abb95be 100644 --- a/src/wallet/walletdb.h +++ b/src/wallet/walletdb.h @@ -1,6 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2013 The Bitcoin developers -// Copyright (c) 2016-2019 The PIVX developers +// Copyright (c) 2016-2020 The PIVX developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/zpiv/witness.cpp b/src/zpiv/witness.cpp index 71776522aec93..fe51fda671315 100644 --- a/src/zpiv/witness.cpp +++ b/src/zpiv/witness.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2018-2019 The PIVX developers +// Copyright (c) 2018-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/zpiv/witness.h b/src/zpiv/witness.h index 06b8356771f57..e4c0740e1dff1 100644 --- a/src/zpiv/witness.h +++ b/src/zpiv/witness.h @@ -1,4 +1,4 @@ -// Copyright (c) 2018-2019 The PIVX developers +// Copyright (c) 2018-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/zpiv/zpivtracker.cpp b/src/zpiv/zpivtracker.cpp index b28dc26e675d7..f4bcd336ddf23 100644 --- a/src/zpiv/zpivtracker.cpp +++ b/src/zpiv/zpivtracker.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2018-2019 The PIVX developers +// Copyright (c) 2018-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/src/zpiv/zpivtracker.h b/src/zpiv/zpivtracker.h index 313d5e9bf7b0e..e5a6b648efeb4 100644 --- a/src/zpiv/zpivtracker.h +++ b/src/zpiv/zpivtracker.h @@ -1,4 +1,4 @@ -// Copyright (c) 2018-2019 The PIVX developers +// Copyright (c) 2018-2020 The PIVX developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. diff --git a/test/functional/rpc_bip38.py b/test/functional/rpc_bip38.py index 38edfa3647fd1..9bcd4c0bf4585 100755 --- a/test/functional/rpc_bip38.py +++ b/test/functional/rpc_bip38.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Copyright (c) 2018 The PIVX developers +# Copyright (c) 2018-2019 The PIVX developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. """Test RPC commands for BIP38 encrypting and decrypting addresses."""