Skip to content

@Fuzzbawls Fuzzbawls released this Jul 27, 2020 · 303 commits to master since this release

PIVX Core version 4.2.0 is now available from: https://github.com/pivx-project/pivx/releases

This is a new major version release, including various bug fixes and performance improvements, as well as updated translations.

Please report bugs using the issue tracker at github: https://github.com/pivx-project/pivx/issues

Recommended Update

This version is an optional, but recommended, update for all users and services.

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, 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. 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

Removed zerocoin GUI

Spending zPIV and getting zPIV balance information is no longer available in the graphical interface (#1549). The feature remains accessible through the RPC interface: getzerocoinbalance, listmintedzerocoins, listzerocoinamounts, spendzerocoin, spendzerocoinmints.

Memory pool limiting

Previous versions of PIVX Core had their mempool limited by checking a transaction's fees against the node's minimum relay fee. There was no upper bound on the size of the mempool and attackers could send a large number of transactions paying just slighly more than the default minimum relay fee to crash nodes with relatively low RAM.

PIVX Core 4.2.0 will have a strict maximum size on the mempool. The default value is 300 MB and can be configured with the -maxmempool parameter. Whenever a transaction would cause the mempool to exceed its maximum size, the transaction that (along with in-mempool descendants) has the lowest total feerate (as a package) will be evicted and the node's effective minimum relay feerate will be increased to match this feerate plus the initial minimum relay feerate. The initial minimum relay feerate is set to 1000 satoshis per kB.

PIVX Core 4.2.0 also introduces new default policy limits on the length and size of unconfirmed transaction chains that are allowed in the mempool (generally limiting the length of unconfirmed chains to 25 transactions, with a total size of 101 KB). These limits can be overridden using command line arguments (#1645, #1647).

Benchmarking Framework

PIVX Core 4.2.0 backports the internal benchmarking framework from Bitcoin Core, which can be used to benchmark cryptographic algorithms (e.g. SHA1, SHA256, SHA512, RIPEMD160, Poly1305, ChaCha20), Base58 encoding and decoding and thread queue. More tests are needed for script validation, coin selection and coins database, cuckoo cache, p2p throughtput (#1650).

The binary file is compiled with pivx-core, unless configured with --disable-bench.

After compiling pivx-core, the benchmarks can be run with:

src/bench/bench_pivx

The output will be similar to:

#Benchmark,count,min(ns),max(ns),average(ns),min_cycles,max_cycles,average_cycles
Base58CheckEncode,131072,7697,8065,7785,20015,20971,20242

'label' and 'account' APIs for wallet

A new 'label' API has been introduced for the wallet. This is intended as a
replacement for the deprecated 'account' API. The 'account' can continue to
be used in v4.2 by starting pivxd with the '-deprecatedrpc=accounts'
argument, and will be fully removed in v5.0.

The label RPC methods mirror the account functionality, with the following functional differences:

  • Labels can be set on any address, not just receiving addresses. This functionality was previously only available through the GUI.
  • Labels can be deleted by reassigning all addresses using the setlabel RPC method.
  • There isn't support for sending transactions from a label, or for determining which label a transaction was sent from.
  • Labels do not have a balance.

Here are the changes to RPC methods:

Deprecated Method New Method Notes
getaccount getaddressinfo getaddressinfo returns a json object with address information instead of just the name of the account as a string.
getaccountaddress n/a There is no replacement for getaccountaddress since labels do not have an associated receive address.
getaddressesbyaccount getaddressesbylabel getaddressesbylabel returns a json object with the addresses as keys, instead of a list of strings.
getreceivedbyaccount getreceivedbylabel no change in behavior
listaccounts listlabels listlabels does not return a balance or accept minconf and watchonly arguments.
listreceivedbyaccount listreceivedbylabel Both methods return new label fields, along with account fields for backward compatibility.
move n/a no replacement
sendfrom n/a no replacement
setaccount setlabel Both methods now:
  • allow assigning labels to any address, instead of raising an error if the address is not receiving address.
  • delete the previous label associated with an address when the final address using that label is reassigned to a different label, instead of making an implicit getaccountaddress call to ensure the previous label still has a receiving address.
Changed Method Notes
listunspent Returns new label fields, along with account fields for backward compatibility if running with the -deprecatedrpc=accounts argument
sendmany The first parameter has been renamed to dummy, and must be set to an empty string, unless running with the -deprecatedrpc=accounts argument (in which case functionality is unchanged).
listtransactions The first parameter has been renamed to dummy, and must be set to the string *, unless running with the -deprecatedrpc=accounts argument (in which case functionality is unchanged).
getbalance account, minconf and include_watchonly parameters are deprecated, and can only be used if running with the -deprecatedrpc=accounts argument
getcoldstakingbalance The account parameter is deprecated, and can only be used if running with the -deprecatedrpc=accounts argument (in which case functionality is unchanged)
getdelegatedbalance The account parameter is deprecated, and can only be used if running with the -deprecatedrpc=accounts argument (in which case functionality is unchanged)

GUI Changes

Topbar navigation

  • The "sync" button in the GUI topbar can be clicked to go directly to the Settings --> Information panel (where the current block number and hash is shown).

  • The "connections" button in the GUI topbar can be clicked to open the network monitor dialog (#1688).

Functional Changes

Stake-Split threshold

If the stake split is active (threshold > 0), then stake split threshold value must be greater than a minimum, set by default at 100 PIV. The minimum value can be changed using the -minstakesplit startup flag (#1586). A value 0 is still allowed, regardless of the minimum set, and, as before, can be used to disable the stake splitting functionality.

Changed command-line options

  • new command -minstakesplit to modify the minimum allowed for the stake split threshold (#1586).

  • new commands -maxmempool, to customize the memory pool size limit, and -checkmempool=N, to customize the frequency of the mempool check (#1647).

  • new commands -limitancestorcount=N and limitancestorsize=N, to limit the number and total size of all in-mempool ancestors for a transaction (#1647).

  • new commands -limitdescendantcount=N and limitdescendantsize=N, to limit the number and total size of all in-mempool descendants for a transaction (#1647).

RPC Changes

In addition to the afore mentioned 'label' and 'account' API changes, other RPC changes are as follows:

Low-level API changes

  • The asm property of each scriptSig now contains the decoded signature hash type for each signature that provides a valid defined hash type (#1633).

    The following items contain assembly representations of scriptSig signatures
    and are affected by this change: RPC getrawtransaction, RPC decoderawtransaction, REST /rest/tx/ (JSON format), REST /rest/block/ (JSON format when including extended tx details), pivx-tx -json

Modified input/output for existing commands

  • new "usage" field in the output of getmempoolinfo, displaying the total memory usage for the mempool (#1645).

  • new "upgrades" field in the output of getblockchaininfo, showing upcoming and active network upgrades (#1665, #1687).

  • listreceivedbyaddress has a new optional "addressFilter" argument that will filter the results to only the specified address

Removed commands

  • masternodedebug. Use getmasternodestatus instead. (#1698).

4.2.0 Change log

Detailed release notes follow. This overview includes changes that affect behavior, not code moves, refactors and string updates. For convenience in locating the code changes and accompanying discussion, both the pull request and git merge commit are mentioned.

Core Features

  • #1414 e3ceda31c5 uint256 to arith_uint256 migration (Second step). (furszy)
  • #1486 e146131780 Replace OpenSSL AES with ctaes-based version (furszy)
  • #1488 cc84157e52 CCrypter using secure allocator vector. (furszy)
  • #1531 1f9e7e45ba [Backport] Implement accurate UTXO cache size accounting (furszy)
  • #1533 898bcd24ad [Backport] Make connect=0 disable automatic outbound connections. (furszy)
  • #1534 d45c58e89d [Backport] Preemptively catch a few potential bugs (furszy)
  • #1554 0dedec8157 [Core] Big endian support (random-zebra)
  • #1557 8dfc4806f7 [Core] Prevector (random-zebra)
  • #1564 2c11e37c91 Abstract out CTransaction-specific signing into SignatureCreator (furszy)
  • #1587 c9741c53b1 [Backport] Shut down if trying to connect a corrupted block (furszy)
  • #1593 f59c8fb625 Prepare for non-Base58 addresses [Step 1] (furszy)
  • #1629 73d26f20e9 [DB] Bitcoin 0.12-0.14 dbwrapper improvements (random-zebra)
  • #1630 a9ac1cc51f [Refactoring] Lightweight abstraction of boost::filesystem (random-zebra)
  • #1631 56b414761c [Miner] Remove 2017 invalid outputs check (furszy)
  • #1633 8cd9c592a9 [Core] Bitcoin 0.12-0.14 serialization improvements (random-zebra)
  • #1634 e0239f801d [Core] prevector: named union and defaults vars initialization (random-zebra)
  • #1641 7c102142c7 [Core] New fee estimation code (random-zebra)
  • #1645 49867086da [Core] Implement accurate memory accounting for mempool (random-zebra)
  • #1647 eb00d0f62f [Core] MemPool package tracking and limits (Alex Morcos)
  • #1650 4ed15cc69d [Tests] Benchmarking Framework (random-zebra)
  • #1665 602ad3d7f8 New upgrade structure. (furszy)
  • #1668 7e65a82e7d [Backport] Make sigcache faster (furszy)
  • #1669 c072659135 Better sigcache implementation (CuckooCache) (furszy)
  • #1670 8d7e7808d0 [Refactoring] CValidationState logging (random-zebra)
  • #1673 a5ba7200c6 [Core] Separate Consensus CheckTxInputs and GetSpendHeight in CheckInputs (furszy)
  • #1676 961e2d2a70 [Backport] Base58 performance improvements (Kaz Wesley)
  • #1677 95fefe9c0d Prepare for non-Base58 addresses [Step 2] (furszy)
  • #1679 c157deb76b Prepare for non-Base58 addresses [Step 3] (furszy)
  • #1687 f054e3e627 [Refactor] Network upgrades management cleanup (random-zebra)
  • #1697 13576cfe14 [BUG] Fix mempool entry priority (furszy)
  • #1707 6bc917e859 RPC & Mempool back ports. (furszy)
  • #1728 1c472ebae8 IsInitialBlockDownload: usually avoid locking (furszy)
  • #1729 76ea490ac1 [Core] Add checkpoints for PIVX v4.1.1 enforcement (random-zebra)
  • #1733 e4ae10db31 Move zerocoin validation to its own legacy file. (furszy)
  • #1747 6f90e8be13 NU custom activation height startup arg. (furszy)

Build System

  • #1681 131ec069fd [Build] Set complete cpp/cxx flags for bench_pivx binary (Fuzzbawls)
  • #1684 69fa8dce5e [Travis] Bump macOS CMake target image (Fuzzbawls)
  • #1710 ed63a331a3 [Depends] Update dependency fallback URL (Fuzzbawls)

P2P Protocol and Network Code

  • #1542 87feface84 [Net] Add and document network messages in protocol.h (Fuzzbawls)
  • #1579 e941230894 [Net] Use SeedSpec6's rather than CAddress's for fixed seeds (Cory Fields)
  • #1616 f295ee4e4e [P2P] Enforce expected outbound services (Pieter Wuille)
  • #1618 077ab3db70 [P2P] Do not set extra flags for unfiltered DNS seed results (Pieter Wuille)
  • #1638 cadf9e6daa [Net] Fix masking of irrelevant bits in address groups (Alex Morcos)
  • #1646 4c829bb274 [Net] Turn net structures into dumb storage classes (furszy)
  • #1672 745a05804f [Bug] removed "dseg" message support re-introduced. (furszy)
  • #1704 8bbc0650e6 [Net] Pre-requirements for network encapsulation (random-zebra)

GUI

  • #1059 39a0fa6e04 [UI] Improve staking chart workflow (Akshay)
  • #1287 e7dd0947c0 [GUI] Load persisted transaction filter during start (Mrs-X)
  • #1516 93df7ce6ec [GUI] MacOS fix open files with no default app. (furszy)
  • #1548 176d3ae558 [Cleanup][GUI] Remove zPIV faqs (random-zebra)
  • #1549 47bf23aa14 [Cleanup][GUI] Nuke zPIV from the GUI (random-zebra)
  • #1598 f66f72656d [GUI] Split "Delegators" address type in the table model (furszy)
  • #1601 78a2923184 [GUI] Tor state missing translation (furszy)
  • #1604 8ec6bbe737 [Refactor][GUI] Set static texts in .ui files + add missing tr() (random-zebra)
  • #1607 749d42a812 [QT] Add password mismatch warnings (JSKitty)
  • #1610 9ac68cffd5 [GUI][UX] Add accept/close keyboard controls to all dialogs (random-zebra)
  • #1611 3d9222edf0 [GUI][Bug] CoinControl payAmounts and nBytes calculation (random-zebra)
  • #1612 eea3f42ab6 [GUI] CoinControlDialog fix SelectAll / UnselectAll (random-zebra)
  • #1623 b7e2d97a42 [GUI][Trivial] Change Custom fee amount when Recommended fee is selected (Ambassador)
  • #1626 5b064a6145 [GUI][Bug] Notify transaction creation failure reason (random-zebra)
  • #1644 34bf1c0583 [GUI] Fix invalid Destination toString encoding. (Fuzzbawls)
  • #1652 a2850ce0fe [GUI] cs widget: minor usability improvements (random-zebra)
  • #1653 6ad9bfcc48 [GUI] Reuse collateral UTXOs in MnWizard (random-zebra)
  • #1657 169fc34192 [GUI][Model] Remove unneeded lock in checkBalanceChanged (furszy)
  • #1667 730566d510 [GUI] removing unused bitcoinamountfield file (furszy)
  • #1678 fb14a8fb46 [GUI][Model] Remove zerocoin methods. (furszy)
  • #1683 68e1ee69e5 [GUI] Add missing QPainterPath include (Fuzzbawls)
  • #1688 129563c273 [GUI] TopBar navigation (sync/peers) (random-zebra)
  • #1690 12a8f8a5c4 [BUG][GUI] check for available "unlocked" balance in prepareTransaction (random-zebra)
  • #1696 f84445af1e [BUG][GUI] Restore message() connection for ColdStakingWidget (random-zebra)
  • #1699 9bba19c62e [GUI] Fix dashboard txs list blinking issue (furszy)
  • #1708 f3b54df58d [BUG][GUI] Non-static coinControl object in CoinControlDialogs (random-zebra)
  • #1715 37c01cf359 [GUI][Trivial] Update settingsfaqwidget.ui (Jeffrey)
  • #1724 c178aab2fe [GUI] Return early in pollBalanceChanged (Fuzzbawls)
  • #1732 be99df3342 [GUI] Better start single MN error description. (furszy)
  • #1737 78ed084999 [GUI] Replace more deprecated Qt methods (Fuzzbawls)
  • #1740 141141c9cf [GUI] Periodic make translate (Fuzzbawls)
  • #1741 ffae965fad [GUI] Settings console message moved to read only. (furszy)
  • #1742 a94f8f9a90 [GUI] Fix settings language combobox initialization. (furszy)
  • #1744 fda84ee710 [GUI] Recognize key event for clearing console (Fuzzbawls)
  • #1749 e182e112bc [GUI] Solving old, not loaded at startup, transactions notification issue. (furszy)

RPC/REST

  • #1640 0b84a5025d [P2P][RPC] Rework addnode behaviour (Pieter Wuille)
  • #1660 10876c6c80 [RPC] Change btc to PIV in help text (PeterL73)
  • #1663 0724bbbad2 [Wallet][RPC] FundTransaction - fundrawtransaction (random-zebra)
  • #1702 7a849ca06a [RPC] Table registration update and wallet table decoupled. (furszy)
  • #1731 fe845a83d2 [RPC][Wallet] Deprecate internal account system (Fuzzbawls)

Wallet

  • #1586 73c3ecc388 [Wallet] Minimum value for stake split threshold (random-zebra)
  • #1695 98cf582557 [Wallet] Abandon tx in CommitTransaction if ATMP fails (random-zebra)
  • #1698 ccecffd144 [Wallet] Masternodes start performance boost (furszy)
  • #1713 f31b51f08e [Refactor] zerocoin code moved from wallet.cpp to wallet_zerocoin.cpp (furszy)
  • #1717 f928674bf7 [Wallet] AddToWallet split in AddToWallet and LoadToWallet (furszy)
  • #1734 78a4f68ab2 [Wallet][BUG] fix detection of wallet conflicts in CWallet::AddToWallet (random-zebra)

Scripts and Tools

  • #1693 a5265a4db4 Upstream scripts back ports [Step 1] (furszy)
  • #1701 f8f0fe0bf1 [Tools] logprint-scanner for error() and strprintf() (random-zebra)

Miscellaneous

  • #1547 1824def118 [Refactor] Define constant string variable for currency unit (random-zebra)
  • #1568 8c06746f18 [Trivial] Unused Image Removal & Readme Revisions (Yuurin Bee)
  • #1643 80c5499b39 Fix Destination wrapper segfault on copy constructor (furszy)
  • #1659 494c841f7e Few compiler warnings fixed. (furszy)
  • #1662 5d3266c25c [Cleanup] Remove obsolete multisig code (random-zebra)
  • #1674 360ee1dfc5 Remove unused MultiSigScriptSet typedef and member (furszy)
  • #1689 9205aa6277 [Cleanup] Small main.cpp cleanup (furszy)
  • #1692 1221efd5d6 [Cleanup] Don't sign MESS_VER_STRMESS network msgs anymore (random-zebra)
  • #1705 2d6835e734 [Doc] Add/Update some release notes for 4.2 (random-zebra)
  • #1718 5e75d4c344 [Trivial] Spelling Error (Yuurin Bee)
  • #1719 b72ec2ff52 [Cleanup] remove masternode broadcast from CActiveMasternode class (random-zebra)
  • #1722 f68acbe01e Unused methods cleanup (furszy)
  • #1736 fc5d36ac77 [Cleanup] Transaction primitive unused methods cleanup. (furszy)
  • #1751 dbcbf8a995 [Miner] Unused reserveKey cleanup (furszy)

Credits

Thanks to everyone who directly contributed to this release:

  • Akshay
  • Alex Morcos
  • Ambassador
  • Ben Woosley
  • Cory Fields
  • Ethan Heilman
  • Fuzzbawls
  • Gavin Andresen
  • Gregory Maxwell
  • JSKitty
  • Jeffrey
  • Jeremy Rubin
  • Jiaxing Wang
  • John Newbery
  • Jonas Schnelli
  • João Barbosa
  • Kaz Wesley
  • Marko Bencun
  • Patrick Strateman
  • Peter Todd
  • PeterL73
  • Pieter Wuille
  • Suhas Daftuar
  • Wladimir J. van der Laan
  • Yuurin Bee
  • furszy
  • practicalswift
  • random-zebra

As well as everyone that helped translating on Transifex, the QA team during Testing and the Node hosts supporting our Testnet.

Assets 13
Pre-release
Pre-release

@Fuzzbawls Fuzzbawls released this Jul 13, 2020 · 303 commits to master since this release

First release candidate for the upcoming 4.2.0 release.

Full, finalized release notes will be available with the final release version, until then, you can view the draft, in-progress release notes at https://github.com/PIVX-Project/PIVX/blob/4.2/doc/release-notes.md

Assets 11

@Fuzzbawls Fuzzbawls released this May 31, 2020 · 936 commits to master since this release

PIVX Core version 4.1.1 is now available from: https://github.com/pivx-project/pivx/releases

This is a new minor version release, including various bug fixes and performance improvements, as well as updated translations.

Please report bugs using the issue tracker at github: https://github.com/pivx-project/pivx/issues

Mandatory Update

PIVX Core v4.1.1 is a mandatory update for all users. This release contains new consensus rules and improvements that are not backwards compatible with older versions. Users will need to update their clients before enforcement of this update goes into effect.

Update enforcement is currently scheduled to go into effect at the following time:

Mainnet: Friday, June 5, 2020 9:00:00 PM GMT

Masternodes will need to be restarted once both the masternode daemon and the controller wallet have been upgraded.

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, 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. 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

We have identified and fixed Layer 2 check that was causing some nodes to disagree on Masternode winners list and thus resulted in these nodes forking.

Credits

Thanks to everyone who directly contributed to this release:

  • Fuzzbawls
  • furszy
  • random-zebra

As well as everyone that helped translating on Transifex, the QA team during Testing and the Node hosts supporting our Testnet.

Assets 13

@Fuzzbawls Fuzzbawls released this May 6, 2020 · 936 commits to master since this release

PIVX Core version 4.1.0 is now available from: https://github.com/pivx-project/pivx/releases

This is a new major version release, including various bug fixes and performance improvements, as well as updated translations.

Please report bugs using the issue tracker at github: https://github.com/pivx-project/pivx/issues

Recommended Update

This version is an optional, but recommended, update for all users and services.

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, 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. 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

Hierarchical Deterministic Wallet (HD Wallet)

Wallets under a tree derivation structure in which keypairs are generated deterministically from a single seed, which can be shared partially or entirely with different systems, each with or without the ability to spend coins, BIP32.

Enabling major improvements over the keystore management, the PIVX wallet doesn't require regular backups as before, keys are following a deterministic creation path that can be verified at any time (before HD Wallet, every keypair was randomly created and added to the keypool, forcing the user to backup the wallet every certain amount of time or could end up loosing coins forever if the latest wallet.dat was not being used).
As well as new possibilities like the account extended public key that enables deterministic public keys creation without the private keys requisite inside the wallet (A good use case could be online stores generating fresh addresses).

This work includes a customization/extension to the BIP44 standard. We have included an unique staking keys derivation path which introduced the deterministic generation/recovery of staking addresses.

An extended description of this large work can be found in the PR here.

HD Wallet FAQ

  • How do i upgrade to HD Wallet?

    GUI:

    1. A dialog will appear on every wallet startup notifying you that you are running a pre-HD wallet and letting you upgrade it from there.
    2. If you haven't upgraded your wallet, the topbar (bar with icons that appears at the top of your wallet) will have an "HD" icon. Click it and the upgrade dialog will be launched.

    RPC:

    1. If your wallet is unlocked, use the -upgradewallet flag at startup and will automatically upgrade your wallet.
    2. If your wallet is encrypted, use the upgradewallet rpc command. It will upgrade your wallet to the latest wallet version.
  • How do i know if i'm already running an HD Wallet?

    1. GUI: Go to settings, press on the Debug option, then Information.
    2. RPC: call getwalletinfo, the walletversion field must be 169900 (HD Wallet Feature).

Boosted wallet performance

This release introduces a number of upgrades and improvements that greatly increase the wallet performance. RAM usage is reduced by ~64% and wallet's initial sync is ~42% faster.

Drop Windows 32-bit Binaries

We are no longer shipping pre-compiled 32-bit Windows binaries as the demand for such binaries has been observed to be non-existent. While it may still be possible to self-compile for 32-bit Windows (x86), no efforts henceforth will be made to maintain that compatibility.

Any users currently running a 32-bit Windows OS should seek to upgrade to a 64-bit Windows OS in order to continue using the Core wallet now and in the future.

Removal of Partially translated locales

From version 4.1.0 and onward, releases will no longer include any translation for languages that are not at least 80% translated.

MultiSend Disabled

The MultiSend wallet feature has been effectively disabled as it's flow is clunky, out of date, and in need of a full re-code and review.

This has no effect on user funds.

GUI Changes

Keyboard navigation

Dialogs can now be accepted with the ENTER (RETURN) key, and dismissed with the ESC key (#1392).

Address sorting

Address sorting in "My Addresses" / "Contacts" / "Cold Staking" can now be customized, setting it either by label (default), by address, or by creation date, ascending (default) or descending order.
Addresses in the dropdown of the "Send Transaction" and "Send Delegation" widgets are now automatically sorted by label with ascending order (#1393).

Custom Fee

The custom fee selected when sending a transaction is now saved in the wallet database and persisted across multiple sends and wallet's restarts (#1406). The fee is now also validated against the maximum value (10000 times minRelayTxFee) and minimum value (minTxFee) (#1576).

Include delegations in send

The send and cold-staking page present a checkbox to make the automatic input selection algorithm include delegated (P2CS) utxos if needed. The option is unchecked by default. (#1391)

Optional Hiding of Staking Charts

The staking charts can now be hidden at startup (with a flag --hidecharts) or at runtime with a checkbox in settings --> options --> display (#1475).

Context Lock/Unlock

Present the unlock dialog directly (instead of an error message), whenever an action on encrypted/locked wallet requires full unlock.

Restore the previous locking state ("locked" or "locked for staking only") when the action is completed. (#1387)

External Change Address Warning

A new warning/confirmation dialog is displayed if a custom change address is not part of the wallet. (#1527)

Cold Stake delegations marked in Coin Control

The Coin Control window now includes an icon next to the select checkbox when the UTXO is a Cold Stake delegation. This shares the space with the locked UTXO indicator icon, and locked UTXO's take priority in their icon display. (#1470)

Hide zPIV balance info as needed

When the wallet contains no zPIV, the zPIV balance details will be hidden, reducing visual clutter.

CSV Exporting

Transaction and address data can now be quickly exported to a CSV file from the Settings area of the GUI.

Transaction output format is comma separated with header row as follows:

"Confirmed","Date","Type","Label","Address","Amount (PIV)","ID"

Address output format is comma separated with header row as follows:

"Label","Address","Type"

Functional Changes

zPIV Backup Removed

Automatic zPIV backup has been disabled. Thus, the following configuration options have been removed (either as entries in the pivx.conf file or as startup flags):

  • autozpivbackup
  • backupzpiv
  • zpivbackuppath

Stake-Split threshold

The stake split threshold is no longer required to be integer. It can be a fractional amount. A threshold value of 0 disables the stake-split functionality.

The default value for the stake-split threshold has been lowered from 2000 PIV, down to 500 PIV.

Changed command-line options

  • -debuglogfile=<file> can be used to specify an alternative debug logging file. This can be an absolute path or a path relative to the data directory
  • -debugexclude=<category> can be used to specify which debug categories to not log, useful when pairing with the -debug=<exclude> option.
  • The -reservebalance configuration/startup option has been removed (#1373).

Dependencies

The minimum required version of QT has been increased from 5.0 to 5.5.1 (the depends system provides 5.9.7)

RPC Changes

Modified input/output for existing commands

  • "CoinStake" JSON object in getblock output is removed, and replaced with the strings "stakeModifier" and "hashProofOfStake"

  • "obfcompat" JSON field in getmasternodecount output is removed as it is/was redundant with the enabled field.

  • "moneysupply" and "zpivSupply" attributes in getblock output are removed.

  • "isPublicSpend" boolean (optional) input parameter is removed from the following commands:

    • createrawzerocoinspend
    • spendzerocoin
    • spendzerocoinmints
    • spendrawzerocoin

    These commands are now able to create only public spends (private spends were already enabled only on regtest).

  • "mintchange" and "minimizechange" boolean input parameters are removed from the following commands:

    • spendzerocoin

    Mints are disabled, therefore it is no longer possible to mint the change of a zerocoin spend. The change is minimized by default.

  • setstakesplitthreshold now accepts decimal amounts. If the provided value is 0, split staking gets disabled. getstakesplitthreshold returns a double.

  • dumpwallet no longer allows overwriting files. This is a security measure
    as well as prevents dangerous user mistakes.

  • The output of getstakingstatus was reworked. It now shows the following information:

    {
       "staking_status": true|false,       (boolean) whether the wallet is staking or not
       "staking_enabled": true|false,      (boolean) whether staking is enabled/disabled in pivx.conf
       "coldstaking_enabled": true|false,  (boolean) whether cold-staking is enabled/disabled in pivx.conf
       "haveconnections": true|false,      (boolean) whether network connections are present
       "mnsync": true|false,               (boolean) whether masternode data is synced
       "walletunlocked": true|false,       (boolean) whether the wallet is unlocked
       "stakeablecoins": n,                (numeric) number of stakeable UTXOs
       "stakingbalance": d,                (numeric) PIV value of the stakeable coins (minus reserve balance, if any)
       "stakesplitthreshold": d,           (numeric) value of the current threshold for stake split
       "lastattempt_age": n,               (numeric) seconds since last stake attempt
       "lastattempt_depth": n,             (numeric) depth of the block on top of which the last stake attempt was made
       "lastattempt_hash": xxx,            (hex string) hash of the block on top of which the last stake attempt was made
       "lastattempt_coins": n,             (numeric) number of stakeable coins available during last stake attempt
       "lastattempt_tries": n,             (numeric) number of stakeable coins checked during last stake attempt
     }
    

Removed commands

The following commands have been removed from the RPC interface:

  • createrawzerocoinstake
  • getmintsinblocks
  • reservebalance
  • getpoolinfo

Newly introduced commands

The following new commands have been added to the RPC interface:

  • logging Gets and sets the logging configuration.

    When called without an argument, returns the list of categories that are currently being debug logged.

    When called with arguments, adds or removes categories from debug logging.

    E.g. logging "[\"all\"]" "[\"http\"]""

4.1.0 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.

GUI

  • #1044 9d259c93c7 [Qt] Define QT_NO_KEYWORDS (Fuzzbawls)
  • #1047 ebe1fcbce4 [Qt] Add more information to settings info panel (Fuzzbawls)
  • #1049 521d13b6f0 [Qt] Switch to newer connect syntax (Fuzzbawls)
  • #1286 b0e43379ee [GUI] Set width and default minimum scrollbar height (Mrs-X)
  • #1289 4c39ad1ec6 [GUI] Windowtitle parameter fix (Mrs-X)
  • #1297 5e407c71cc [GUI] Restore address list when switching panes in CSwidget (random-zebra)
  • #1298 5dfad15c57 [Model][Performance] Unnecessary double cs_wallet and cs_main lock. (furszy)
  • #1301 af90f927a0 [ClientModel] Remove polling based chain height update entirely. (furszy)
  • #1306 65ba128634 [GUI] Hide privacy widget when the wallet has no zPIV balance (furszy)
  • #1316 bcb04a44a1 [Trivial] fix typo "recomended" in sendcustomfee dialog (random-zebra)
  • #1323 e2c07184f9 [Qt] Hide zPIV balances when they are zero (Fuzzbawls)
  • #1332 a5be177025 [GUI] Do not update the GUI so often when reindex/import is being executed. (furszy)
  • #1339 1716e6e835 [GUI] Tor topbar icon status. (furszy)
  • #1353 ff7b460ef4 [GUI] Export csv files. (furszy)
  • #1354 8c31fed2f5 [Trivial] Minor showed amount fix (NoobieDev12)
  • #1357 85497fed21 [Qt] Replace deprecated Qt methods (Fuzzbawls)
  • #1361 0a613c0a5e [GUI] Dashboard, include owner cold stakes in the chart (furszy)
  • #1377 5a600bab11 [Trivial] Fix typo in settingsbittoolwidget.cpp (RottenCoin)
  • #1385 be05f52000 [GUI] Don't change selected address after editing its label (random-zebra)
  • #1387 cc072687db [GUI] Add Unlock/Relock context flow (random-zebra)
  • #1388 c80688e02a [GUI] Customize the timeout of the SnackBar based on its message length (random-zebra)
  • #1389 f80888b770 [GUI] MasternodeWidget-Wizard bugfixes (random-zebra)
  • #1391 2bdc9f8689 [GUI] Spend cold-stake delegations (random-zebra)
  • #1392 da2f6e56f8 [GUI] Accept dialogs with ENTER (random-zebra)
  • #1393 541a688bee [GUI] Customizable sorting for address books (random-zebra)
  • #1396 b56172a01b [GUI] Topbar MNs sync phase status. (furszy)
  • #1400 f1206ed87d [Trivial] Rewording of Custom Fee dialog text (NoobieDev12)
  • #1402 023e7719f2 [GUI][Bug] Fix max decimals in sendcustomfeedialog (random-zebra)
  • #1403 de5fb73775 [GUI] SendWidget: automatically set focus on last recipient entry (random-zebra)
  • #1404 28bc0e3104 [GUI] SendMultiRow: clear address label when address is changed (random-zebra)
  • #1405 d8663a8410 [GUI] Upgrade to HD wallet functionality. (furszy)
  • #1406 ca26229afc [GUI] Save custom fee selected (random-zebra)
  • #1408 8bd8c2ca93 [GUI][Model] Save cache BlockIndex tip in the model (random-zebra)
  • #1413 4fdd3225b3 [GUI] Explicit cast from quint32 to bool in filterAcceptsRow (random-zebra)
  • #1423 ca48a453eb [GUI][Trivial] Fix button size in welcomecontentwidget (random-zebra)
  • #1424 592aa52fca [GUI] One-click export to file (random-zebra)
  • #1425 be6f1279b6 [Trivial][GUI] Add more room to contacts dropdown (random-zebra)
  • #1428 1ba03cc688 [GUI][Trivial] Emphasize warning better (NoobieDev12)
  • #1429 623821c799 [GUI] Dark theme (furszy)
  • #1430 1907a80938 [Trivial][GUI] Fix capsLabel color (make it text-warning) (random-zebra)
  • #1431 01651b6c63 [GUI] Automatic wallet backup after upgrade to HD (random-zebra)
  • #1436 98e6867e0c [Trivial] Rewording of remote masternode data export notification (NoobieDev12)
  • #1443 0b0c8267a6 [GUI] Removing unused DenomGenerationDialog. (furszy)
  • #1447 ec666ec8d8 [GUI] Add address-label to sendconfirm-popup (random-zebra)
  • #1454 110aa9c83d [GUI] Settings widget (furszy)
  • #1464 0bbf18ee1a [GUI][Model] Fix staking address validation (random-zebra)
  • #1468 8860401a75 [GUI] Less GUI locks (furszy)
  • #1469 7521d6d193 [GUI][Cleanup] Coin Control Cleanup (random-zebra)
  • #1470 02ede334f2 [GUI] Mark delegated UTXOs in CoinControl (random-zebra)
  • #1473 ca7f351350 [GUI] Hide charts container when not USE_QTCHARTS (random-zebra)
  • #1475 3dddd25def [GUI] Hide charts at startup or at runtime (random-zebra)
  • #1477 6879786153 [GUI][Trivial] ColdStakingWidget: fix containerSend margins (random-zebra)
  • #1479 c9c618e365 [BUG][GUI] Fix MasternodeWidget StartAll (furszy)
  • #1481 8e9214014b [GUI][BugFix] Tor topbar button text. (furszy)
  • #1487 ac7a5b302f [GUI] ClientModel cacheTip sync with back-end. (furszy)
  • #1489 e4d6c26f61 [GUI] Add missing error notification in encrypt wallet. (furszy)
  • #1494 3ea8c577d4 [Qt] Convert leftover connects to Qt5 syntax (Fuzzbawls)
  • #1499 5e6c05305e [GUI] Settings console (furszy)
  • #1501 417e8cb73c [GUI] Update MNs count every 40 seconds. (furszy)
  • #1503 66f523d46f [GUI] Fix cold staking owner dropdown position. (furszy)
  • #1508 104db7d7f3 [BUG] Prevent StartAll from starting mns with immature collateral (random-zebra)
  • #1509 13c4302087 [GUI] Correct the reference to ColdStakingWidget address (PWRB-Project)
  • #1510 5a4b0f9a70 [GUI] Fix text cut-off in sendchangeaddressdialog (JSKitty)
  • #1515 24bc866346 [GUI] Back port latest MacOS dock icon handler. (furszy)
  • #1522 ab353d9848 [Qt] Fixup filter dropdown localizations (Fuzzbawls)
  • #1523 e92c8ed86a [Trivial] [GUI] Fix masternodeswidget snackbar typos (JSKitty)
  • #1527 6e1745be85 [GUI] Warn about change address not belonging to the wallet. (furszy)
  • #1529 f05a451021 [Trivial] Fix compiler warning in mousePressEvent. (furszy)
  • #1530 b7c0c0e31d [GUI] Don't log to console by default. (furszy)
  • #1535 7d25604239 [Qt] Don't translate dummy strings in mnrow (Fuzzbawls)
  • #1543 440c8f514b [GUI][Bug] CoinControl: mark delegated after setting checked state (random-zebra)
  • #1545 7fdf25b4f7 [GUI] MasternodeWizard validations (random-zebra)
  • #1551 8b25a1eaf5 [GUI][Bug] Reset custom change address (random-zebra)
  • #1556 5ba10f0d58 [GUI] CoinControlDialog remove duplicate esc button (furszy)
  • #1574 18bce1bfaf [Bug][GUI] SendCustomFee: reset checkbox on clearAll (random-zebra)
  • #1576 e99a18e410 [GUI] SendCustomFeeDialog: prevent user from saving insane fees (random-zebra)
  • #1577 2205e3d302 [RPC][GUI][Bug] Disable/Hide multisend (random-zebra)
  • #1578 c064baaf6e [GUI][Bug] Fix transaction details output-index (random-zebra)
  • #1581 55c9236429 [GUI] Do not create new SettingsMultisendWidget (furszy)
  • #1588 7694d5fc6d [GUI][Bug] Fix editing of CS address labels (Fuzzbawls)
  • #1589 7694d5fc6d [GUI][Bug] Don't clear address label during send address validation (Fuzzbawls)
  • #1590 1fc629be86 [GUI] Update translations from Transifex for 4.1 (Fuzzbawls)
  • #1594 e001ddf106 [GUI][Bug] Reconnect CS owner address edit-label action (Fuzzbawls)
  • #1595 7779ab1194 [GUI][Bug] Fix "Select all" / "Unselect all" logic in coincontrol (random-zebra)
  • #1599 72595d7692 [GUI][Bug] Fix language selection invalidly stored (furszy)

RPC Interface

  • #1299 523db49f49 [Trivial][Regtest][RPC] generate call failing properly when the wallet is locked (furszy)
  • #1321 d382a249be [RPC][Tests] Don't throw when generate doesn't create all blocks (PoS) (random-zebra)
  • #1343 735d8ddb4d [Bug] nStakeSplitThreshold: division by zero (random-zebra)
  • #1368 d610d013dd [RPC] Expand getstakingstatus output (random-zebra)
  • #1381 88256004a3 [RPC][Bug] Fix masternodecurrent: return next winner, not rank-1 mn (random-zebra)
  • #1399 eb8cb624f9 [RPC] Upgrade to HD wallet. (furszy)
  • #1451 1fa5156a97 [RPC] Add logging RPC (random-zebra)
  • #1497 fd77102258 [Trivial][RPC] Remove references to old command list-conf (random-zebra)

Wallet

  • #1277 d870d5c003 [Wallet] Refactor MintableCoins (random-zebra)
  • #1300 0e3644d531 [Wallet] Add function CMerkleTx::IsInMainChainImmature (random-zebra)
  • #1327 d58fd6fee1 [Wallet] HD Wallet - v2. (furszy)
  • #1345 abdc0e762e [Wallet][RPC][GUI] nStakeSplitThreshold as CAmount (random-zebra)
  • #1356 d6298c5fa0 [Wallet][GUI] Set default stake-split threshold to 500 (random-zebra)
  • #1369 bb9b762bb1 [Wallet] Fix staking balance calculation (random-zebra)
  • #1373 5d004d514c [Wallet] Remove reserve balance (random-zebra)
  • #1382 df2db0d5c6 [Wallet] Don't initialize zpivwallet on first run (Fuzzbawls)
  • #1401 e1585f7609 [Wallet][Bug] Fix ScriptPubKeyMan::CanGetAddresses (random-zebra)
  • #1411 3c34c34fd1 [Wallet][Bug] Fix ScriptPubKeyMan::CanGenerateKeys (random-zebra)
  • #1458 8d8050fa6d [Wallet][Bug] Fix min depth requirement for stake inputs in AvailableCoins (random-zebra)
  • #1474 840821321c [Wallet] Fix wrong Lock/Unlock zWallet method call. (furszy)
  • #1485 d43d5fa1f6 [Wallet] Fix BIP38 import crashing on empty DecKey (JSKitty)
  • #1495 caa91b08fd [Wallet] Clean wrong pwalletMain inside wallet class. (furszy)
  • #1498 ebfa5979a6 [Wallet] Initialize zwalletMain to prevent memory access violations. (furszy)
  • #1520 b92584a482 [Wallet] remove unused code, remove cs_main lock requirement (furszy)
  • #1537 dabb5168f1 [Wallet] Cleanup invalid IsMasternodeReward method in OutPoint primitive. (furszy)
  • #1565 7fb724ffe4 [Bug] Simpler nTimeSmart computation (random-zebra)
  • #1575 f16125b83d [Bug][Wallet] Fix insane fees (random-zebra)

Core Systems

  • #1249 fbcc5305d6 [Script] Optimize and Cleanup CScript::FindAndDelete (Akshay)
  • #1259 cf1bab30d5 [Core] Remove StakeV1 (random-zebra)
  • #1302 e9ceb6daf9 [Refactor] Move CBlockFileInfo and CValidationState out of main (Fuzzbawls)
  • #1308 ca912fc823 [zPIV] Public coin, a super for-each removed (furszy)
  • #1319 fc6d9514f4 [Refactor] Move CDiskTxPos/CBlockUndo to txdb.h/undo.h respectively (barrystyle)
  • #1320 563d5c2515 [Refactor] Move transaction checks out to consensus/tx_verify.cpp (barrystyle)
  • #1325 91566195ee Add WITH_LOCK macro: run code while locking a mutex. (furszy)
  • #1328 6143e95f98 [Refactor] Introduce Consensus namespace (barrystyle)
  • #1331 484a98673f [Core] CheckColdStakeFreeOutput: skip SPORK checks if mnsync incomplete (random-zebra)
  • #1333 6bb09adfbb [Backport] Wait locking for genesis connection. (furszy)
  • #1335 535baaacd7 Inlining sync.cpp with latest upstream (furszy)
  • #1336 f30074a123 Sync Upgrades, part 2 (furszy)
  • #1337 c5fc9cc7a3 Sync upgrade, part 3 (furszy)
  • #1338 d00ac8c3d2 [Core] CBlockIndex cleanup - Bump client version to 4.0.99.1 (random-zebra)
  • #1341 c992fc1523 [Refactor] ChainParams::consensus - Part 1 (random-zebra)
  • #1342 dc530c072f [Refactor] Move zerocoin checks out of main (Fuzzbawls)
  • #1344 e4041b1631 [Refactor] ChainParams::consensus - Part 2 (random-zebra)
  • #1359 9869a384e2 [Chain][Bug] Fix mapZerocoinSupply recalculation (random-zebra)
  • #1364 f4339f4621 [Refactor][PoS] Kernel Refactoring (random-zebra)
  • #1375 41aae2d589 [Init] Do parameter interaction before creating the UI model (Jonas Schnelli)
  • #1376 ac4ab94dd8 [Init] Combine common error strings so translations can be shared (Luke Dashjr)
  • #1395 b3fcbea5b1 Replace uint256/uint160 with opaque blobs where possible (First) (furszy)
  • #1407 678d3ed933 [Consensus] CheckColdStakeFreeOutput when mnsync not complete (random-zebra)
  • #1409 8c112d3ac0 [MN] Refactor to the mapMasternodesLastVote map. (furszy)
  • #1418 87e3dcddef [Consensus] Remove IsSuperMajority (random-zebra)
  • #1445 9896879fff [Refactor] Init wallet parameters interaction (furszy)
  • #1450 cb6d15a6ac [Util] Buffer log messages and explicitly open logs (random-zebra)
  • #1457 841f702d13 [Bug] Fix g_best_block initialization in ABC (random-zebra)
  • #1465 1c5d9c641e [Bug] Fix height_start_StakeModifierV3 (Stamek)
  • #1502 0c8950a8ec [Core] Reduce CBlockIndex RAM usage (random-zebra)
  • #1504 4689f7e9a6 [BUG] Fix ambiguous call to distance in ParseAccChecksum (random-zebra)
  • #1517 c4834eb1b6 [Shutdown] remove PID file at the very end. (furszy)

P2P Protocol and Network Code

  • #1307 31a56e9cf9 [Net] Do not launch the clock warning dialog like crazy. (furszy)
  • #1360 aee230135f [Net] Split DNS resolving functionality out of net structures (Cory Fields)
  • #1363 7c78ece64d [Net] Banlist updates (Philip Kaufmann)
  • #1367 82b4147a30 [Net] Max block locator entries size. (furszy)
  • #1372 59fdfee134 [P2P] Remove p2p alert system (random-zebra)
  • #1378 2055163092 [Net] Fix de-serialization bug where AddrMan is corrupted after exception (Fuzzbawls)
  • #1452 a86ee0f271 [Net] Add support for dnsseeds with option to filter by servicebits (Jonas Schnelli)
  • #1453 195d46690c [Net] Addrman offline attempts (Gregory Maxwell)
  • #1460 18fa545831 [Net] Do not print an error on connection timeouts through proxy (furszy)
  • #1463 976f46d6e1 [Net] Protocol update enforcement for 70919 (random-zebra)
  • #1484 0a4072e4fc [Net] Fix resource leak in ReadBinaryFile (practicalswift)
  • #1492 86ecb08159 [Net] Relay actual peers instead of localhost on getaddr (akshaynexus)
  • #1538 38f848ecb1 [P2P] Update hard coded seed nodes (Fuzzbawls)
  • #1591 8a96306de6 [P2P] Removing dead seeder (furszy)

Build Systems

  • #1256 05bd016774 [Build][Scripts] Update translation flow (Fuzzbawls)
  • #1324 586a051c7f [Build] Remove Windows 32 bit build. (furszy)
  • #1351 5ad9c81acc [Build] Bump minimum required Qt version to 5.5.1 (Fuzzbawls)
  • #1358 1517dbe271 [Build] Cleanup Qt m4 file (Fuzzbawls)
  • #1390 d84d6bea2e [Build] Add flag for enabling thread_local (Fuzzbawls)
  • #1435 79c539acf7 [Travis][Build] Restore macOS Travis tests (Fuzzbawls)
  • #1448 ab0be2f1e4 [CMake] Fix missing file error (Fuzzbawls)
  • #1483 f79a7026d0 [Depends] Update OpenSSL download URL (Fuzzbawls)
  • #1493 5df2b6767b [Depends] Include qt-gif plugin. (furszy)
  • #1536 be79988a8f [Build] Disable apt-cacher for Windows WSL gitian setup (Fuzzbawls)

Testing Systems

  • #1278 805800164e [Tests][Bug] Fix staking status in generate_pos() (random-zebra)
  • #1295 e7cd10434f [Tests] Set '-staking' disabled by default on RegTest (random-zebra)
  • #1312 f860860e4d [Tests] Use V2 stake modifiers on regtest (random-zebra)
  • #1410 0b5fef0376 [Tests] Run tests on pre-HD wallets (random-zebra)
  • #1434 c2ddd267f5 [QA] Continuous Testing Environment for legacy pre-HD wallets (random-zebra)
  • #1442 a5288eca97 [Tests] Remove non-determinism which is breaking net_tests (random-zebra)
  • #1446 2f9bfc84b0 [Test] Wallet testing setup. (furszy)
  • #1472 46585f7b62 [Tests][Refactor] Remove connect_nodes_bi (random-zebra)
  • #1550 f246e104e5 [QA] Avoid printing to console during cache creation (random-zebra)
  • #1580 3d36502c3a [QA][Bug] Shorter wallet_basic.py functional test (random-zebra)

Logging

  • #1437 8a6f5147c9 [Util] LogAcceptCategory: use uint32_t rather than sets of strings (random-zebra)
  • #1438 37d53b777c [Trivial] Remove spammy log in CheckSignature (random-zebra)
  • #1439 eb1ed66c2e [Core] Add -debugexclude option (random-zebra)
  • #1449 9ef9f5dea1 [Util] tinyformat / LogPrint backports (random-zebra)
  • #1455 b26dbc4e55 [Init] Add -debuglogfile option (random-zebra)
  • #1459 c94f2412af [Util] Refactor logging code into a global object (random-zebra)

Cleanup

  • #1247 3e1233cccb [Cleanup] Remove automint and automint addresses (Fuzzbawls)
  • #1254 cc547e7927 [Cleanup] ZLNP code removed entirely. (furszy)
  • #1276 e5d6fdfd38 [Tests][Cleanup][Trivial] Remove legacy zerocoin spends tests (random-zebra)
  • #1281 a293072cdb [Trivial][Cleanup] Remove extra checks before GetBlocksToMaturity (random-zebra)
  • #1282 76f29fccf3 [Trivial][Cleanup] Add IsRegTestNet() function in chainparams (random-zebra)
  • #1290 2ceeb2cca0 [zPIV][Cleanup] Zerocoin Cleanup 1: remove Accumulators values (random-zebra)
  • #1291 16d7dac5f7 [zPIV][Cleanup] Zerocoin Cleanup 2: remove CZPivStake class (random-zebra)
  • #1293 28e0048b3e [zPIV][Cleanup] Zerocoin Cleanup 3: remove old ZK proofs (random-zebra)
  • #1314 185194bd7e [zPIV][Cleanup] Zerocoin Cleanup 4: further wallet cleaning (random-zebra)
  • #1322 5bd387e18d [zPIV][Cleanup] Zerocoin Cleanup 5: further main.cpp cleaning (random-zebra)
  • #1326 6bbd575860 [zPIV][Cleanup] Zerocoin Cleanup 6: Remove zerocoin mint checks (random-zebra)
  • #1330 b766048068 [Cleanup] Remove stale UNITTEST network (Fuzzbawls)
  • #1340 57cf8a67bd [Cleanup] Remove MineBlocksOnDemand function in chainparams (random-zebra)
  • #1352 fe60594c4a [Cleanup] Remove unused blockexplorer GUI files (Fuzzbawls)
  • #1412 35c58d8ef7 [Cleanup] Remove walletbroadcast and resendwallettransactions tests (random-zebra)
  • #1456 42567f14b2 [Trivial] Cleaning not used pCheckpointCache. (furszy)
  • #1461 0a63983ac2 [Cleanup] Remove old governancepage and proposalframe code (Akshay)
  • #1467 aa50351b18 [Cleanup] Remove redundant and unused code (Fuzzbawls)
  • #1490 dfda1b80af [Cleanup] Nuke obfuscation from orbit (Fuzzbawls)
  • #1507 172387aad5 [Trivial] Remove leftover temporary comment (random-zebra)
  • #1513 ae4fde3b3a [Trivial] Remove CMasternode::SliceHash (random-zebra)

Documentation

  • #1573 f973fb6fd6 [Doc] Note that v3 onion addresses are not supported (Fuzzbawls)

Scripts and Tools

  • #1433 f5f6c3cd92 [Scripts] Only fetch translations for high-completion locals (Fuzzbawls)

Misc

  • #1583 7fdf29f816 Update copyright headers for files changed in 2020 (Fuzzbawls)

Credits

Thanks to everyone who directly contributed to this release:

  • Cory Fields
  • EthanHeilman
  • Fuzzbawls
  • Gregory Maxwell
  • JSKitty
  • Jonas Schnelli
  • Luke Dashjr
  • Mrs-X
  • NoobieDev12
  • PWRB-Project
  • Philip Kaufmann
  • RottenCoin
  • Stamek
  • akshaynexus
  • barrystyle
  • furszy
  • practicalswift
  • random-zebra

As well as everyone that helped translating on Transifex, the QA team during Testing and the Node hosts supporting our Testnet.

Assets 13
Pre-release
Pre-release

@Fuzzbawls Fuzzbawls released this Apr 16, 2020 · 936 commits to master since this release

First release candidate for the upcoming 4.1.0 release.

Full, finalized release notes will be available with the final release version, until then, you can view the draft, in-progress release notes at https://github.com/PIVX-Project/PIVX/blob/4.1/doc/release-notes.md

Assets 13

@Fuzzbawls Fuzzbawls released this Jan 17, 2020 · 1886 commits to master since this release

PIVX Core version v4.0.2 is now available from: https://github.com/pivx-project/pivx/releases

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: https://github.com/pivx-project/pivx/issues

Recommended Update

PIVX Core v4.0.2 is NOT a mandatory update, and user can choose to stay with v4.0.0/v4.0.1 if they wish. However, v4.0.2 does contain minor bug fixes and performance improvements to address feedback from the v4.0.0/v4.0.1 versions.

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, 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. 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

Bug Fixes

Double counting of delegated values

Fixed a bug where the values/amounts for cold staking delegations was being double counted in the UI's available/total balance calculation.

Incorrect sorting for transaction loading

Fixed a bug where The 20,000 limit for loading wallet transactions was incorrectly sorting these transactions, resulting in the first 20,000 transactions to be loaded instead of the most recent 20,000 transactions.

No information shown for spent cold stake delegations

Fixed a bug where the transaction record for spent cold stake delegations was showing as "No information".

GUI Changes

Add latest block height to top bar

The top bar's sync status button now shows the latest block height (number) when hovering over the button.

Coin Control copy functions

The coin control screen now allows for copying the various values to the OS clipboard

v4.0.2 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

  • #1273 d114eda990 [Core] Update checkpoints for first v7 block (Fuzzbawls)

GUI

  • #1261 c02cc4acdd [Bug][GUI] Double counted delegated balance. (furszy)
  • #1267 350184044d [Qt][Bug] Load the most recent instead of the first transactions (Fuzzbawls)
  • #1263 1d0c1bb81c [GUI] P2CS transaction divided in two types for visual accuracy. (furszy)
  • #1266 f659cbf1ef [GUI] Quick minor GUI startup useful changes. (furszy)
  • #1269 0771075668 [GUI] CoinControlDialog, every copy to clipboard action implemented. (furszy)
  • #1265 da7c50eca1 [GUI] Connect P2CSUnlockOwner and P2CSUnlockStaker records to the model (random-zebra)
  • #1268 912cf67847 [GUI] Display latest block number in the top bar (random-zebra)
  • #1279 c09cd0d40f [GUI] Transaction record cold staking fixes. (furszy)

Wallet Code

  • #1264 1a12735df5 [Wallet] Don't add P2CS automatically to GetLockedCredit (random-zebra)

Documentation

  • #1272 d4a9475e40 [Trivial] Update copyright headers for 4.0.2 (Fuzzbawls)

RPC Interface

  • #1274 f5c3552c96 [RPC] Remove extra PoW rounds in 'generate' (random-zebra)

Credits

Thanks to everyone who directly contributed to this release:

  • Fuzzbawls
  • furszy
  • random-zebra

As well as everyone that helped translating on Transifex, the QA team during Testing and the Node hosts supporting our Testnet.

Assets 15

@Fuzzbawls Fuzzbawls released this Jan 13, 2020 · 1886 commits to master since this release

PIVX Core version v4.0.1 is now available from: https://github.com/pivx-project/pivx/releases

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: https://github.com/pivx-project/pivx/issues

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, 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. 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.

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, the QA team during Testing and the Node hosts supporting our Testnet.

Assets 15

@Fuzzbawls Fuzzbawls released this Dec 18, 2019 · 1886 commits to master since this release

PIVX Core version v4.0.0 is now available from: https://github.com/pivx-project/pivx/releases

This is a new major version release, including various bug fixes and performance improvements, as well as updated translations.

Please report bugs using the issue tracker at github: https://github.com/pivx-project/pivx/issues

Mandatory Update

PIVX Core v4.0.0 is a mandatory update for all users. This release contains new consensus rules and improvements that are not backwards compatible with older versions. Users will need to update their clients before enforcement of this update goes into effect.

Update enforcement is currently scheduled to go into effect at the following time:

Mainnet: Sunday, January 5, 2020 12:00:00 AM GMT

Masternodes will need to be restarted once both the masternode daemon and the controller wallet have been upgraded.

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, 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. 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

New Wallet UI

v4.0.0 introduces a completely new GUI for the wallet, designed and coded from the ground up by the Krubit team.

This new UI, aside from the overall design large implementation, includes user-focused improvements and features such as a brief introduction on first load, a FAQ section, one-click QRCode compatible receiving addresses, masternode creation wizard, dark and light themes, filterable staking charts, and much more.

You can read more details about this extensive work in (PR #954)

There are some legacy features that have not been included, however, notably the in-wallet block explorer and the governance page. The in-wallet block explorer was sorely outdated, and the governance page was a newer addition that will be seeing a return in a future version.

Cold Staking

A brand new feature is being introduced with the release of v4.0.0: Cold Staking (PR #955)! This feature allows a coin owner to keep coins in a "cold" (or locked) wallet whilst a "hot" wallet carries out the burden of staking those coins.

This brings added security to coin owners as they are no longer required to use an unlocked or partially unlocked wallet (with the ability to spend coins anywhere) in order to gain staking rewards. Users who have chosen to store their coins on hardware devices such as a Ledger or Trezor1 can also gain staking rewards with those coins.

A full technical writup is available on the PIVX Wiki, and an initial video showcase is available on YouTube.
A brief guide to setup cold staking with GUI and RPC is available here.

1 Spending cold stakes from HW wallets currently available only for Ledger devices via PET4L tool.

Multi-Split Stake Splitting

Stake splitting has received a makeover and now supports splitting to more than two (2) outputs. PR #968 introduced the change, which is controlled by the wallet's stakesplitthreshold setting.

The default split threshold remains at 2000 PIV, and can be adjusted in the GUI's Settings page, or via the RPC setstakesplitthreshold command.

For a real example, with a stake split threshold of 1500, and a UTXO of 4708.1557; the current stake split algorithm would break that into two outputs of approximately 2355.07785. With this new logic; it will be broken into 3 outputs instead of two; each sized 1570.0519 (4708.1557 input + 2 stake = 4710.1557 / 3 outputs = 1570.0519.

The maximum number of outputs is currently capped at 48. Also, in relation to the new Cold Staking feature described above; the stake split threshold is set by the staker wallet and NOT the owner wallet.

New Consensus Rules

The following consensus rule changes will be enforced on or shortly after block 2153200. Note that Upgrade Enforcement (mentioned above) will occur prior to this block height.

V1 zPIV Spending (Public Spends Version 4)

Since the discovery of a critical exploit within the libzerocoin library in early 2019, remaining legacy v1 zPIV have been un-spendable. We're happy to say that, once the new consensus rules are in effect, users will once again be able to spend their v1 zPIV with public spends version 4 (PR #936).

As with the previous version 3 public spends introduced in core wallet version 3.3.0 (enabling the spending of v2 zPIV), version 4 spends will also be public. A full technical writeup is available on the PIVX Wiki.

OP_CHECKCOLDSTAKEVERIFY and P2CS

Cold staking introduces a new opcode, OP_CHECKCOLDSTAKEVERIFY, in the scripting language, and a new standard transaction type using it, named P2CS (Pay-To-Cold-Staking). A P2CS script is defined as follows:

OP_DUP OP_HASH160 OP_ROT OP_IF OP_CHECKCOLDSTAKEVERIFY [HASH160(stakerPubKey]
OP_ELSE [HASH160(ownerPubKey)] OP_ENDIF OP_EQUALVERIFY OP_CHECKSIG

OP_CHECKCOLDSTAKEVERIFY is used to ensure that the staker can only spend the output in a valid coinstake transaction (using the same P2CS script in the new output).

Time Protocol v2

#PR1002 introduces a new time protocol for the Proof-Of-Stake consensus mechanism, to ensure better efficiency, fairness and security. The time is now divided in 15-seconds slots and valid blocktimes are at the beginning of each slot (i.e. the block timestamp's seconds can only be 00, or 15, or 30 or 45).

The maximum future time limit is lowered from 3 minutes to 14 seconds and the past limit is set to the previous blocktime (i.e. a block can no longer have a timestamp earlier than its previous block).

This means that, when looking for a valid kernel, each stakeable input can be hashed only once every 15 seconds (once per timeslot), and it is not possible to submit blocks with timestamp higher than the current time slot. This ultimately enables the removal of the "hashdrift" concept.

NOTE: Given the much stricter time constraints, a node's clock synchronization is required for P2P connections: the maximum time offset is 15 seconds and peers with a time drift higher than 30 seconds (in absolute value) will be outright disconnected.

For advanced users, we recommend the setup of NTP clients and own servers. This will provide to your node a higher level of time accuracy and the best, time wise, synchronization with the peers in the network.

Block Version 7

#PR1022 defines Version 7 blocks, which remove the (now-unused) accumulator checkpoint from the block header. This results in an overall data reduction of ~256 bits from each block as well as the in-memory indexes.

New Network Message Signatures

Layer 2 network messages (MN, Budget, Spork, etc) are now signed based on the hash of their binary content instead of their string representation (#PR1024).

New SPORKS

Two new SPORKS are introduced, SPORK_17 (#PR975) and SPORK_18 (#PR995).

SPORK_17 (off by default) is used to activate the Cold Staking protocol. When this spork is off, no cold-staked block is accepted by the network and new delegations are rejected, but coin-owners are still able to spend previously created pay-to-cold-stake delegations.

SPORK_18 (off by default) is used to switch between Version 3 and Version 4 Public Spends. When this spork is active, only version 4 spends are accepted by the network. When it's not, only version 3 spends are accepted.

RPC Changes

New options for existing wallet commands

A new (optional) argument, includeDelegated, has been added to the following commands that allows these commands to include delegated coins/information in their operation:

  • getbalance - Boolean (Default: True)
  • sendfrom - Boolean (Default: False)
  • sendmany - Boolean (Default: False)
  • listtransactions - Boolean (Default: True)

Additionally, a new (optional) argument, includeCold, has been added to the listtransactions command (Boolean - Default: True), which allows for filtering of cold-staker delegated transactions.

New return fields for existing commands

The validateaddress command now includes an additional response field, isstaking, to indicate wither or not the specified address is a cold staking address.

The getwalletinfo command now includes two additional response fields:

  • delegated_balance - PIV balance held in P2CS contracts (delegated amount total).
  • cold_staking_balance - PIV balance held in cold staking addresses.

Newly introduced commands

The following new commands have been added to the RPC interface:

  • getnewstakingaddress
  • delegatestake
  • rawdelegatestake
  • getcoldstakingbalance
  • delegatoradd
  • delegatorremove
  • listcoldutxos
  • liststakingaddresses
  • listdelegators

Details about each new command can be found below.

getnewstakingaddress generates a new cold staking address:

getnewstakingaddress ( "account" )

Returns a new PIVX cold staking address for receiving delegated cold stakes.

Arguments:
1. "account"        (string, optional) The account name for the address to be linked to. if not provided, the default account "" is used. It can also be set to the empty string "" to represent the default account. The account does not need to exist, it will be created if there is no account by the given name.

Result:
"pivxaddress"    (string) The new pivx address

delegatestake sends a cold staking delegation transaction:

delegatestake "stakingaddress" amount ( "owneraddress" fExternalOwner fUseDelegated fForceNotEnabled )

Delegate an amount to a given address for cold staking. The amount is a real and is rounded to the nearest 0.00000001

Requires wallet passphrase to be set with walletpassphrase call.

Arguments:
1. "stakingaddress"      (string, required) The pivx staking address to delegate.
2. "amount"              (numeric, required) The amount in PIV to delegate for staking. eg 100
3. "owneraddress"        (string, optional) The pivx address corresponding to the key that will be able to spend the stake.
                               If not provided, or empty string, a new wallet address is generated.
4. "fExternalOwner"      (boolean, optional, default = false) use the provided 'owneraddress' anyway, even if not present in this wallet.
                               WARNING: The owner of the keys to 'owneraddress' will be the only one allowed to spend these coins.
5. "fUseDelegated"       (boolean, optional, default = false) include already delegated inputs if needed.6. "fForceNotEnabled"    (boolean, optional, default = false) force the creation even if SPORK 17 is disabled (for tests).

Result:
{
   "owner_address": "xxx"   (string) The owner (delegator) owneraddress.
   "staker_address": "xxx"  (string) The cold staker (delegate) stakingaddress.
   "txid": "xxx"            (string) The stake delegation transaction id.
}

rawdelegatestake creates a raw cold staking delegation transaction without broadcasting it to the network:

rawdelegatestake "stakingaddress" amount ( "owneraddress" fExternalOwner fUseDelegated )

Delegate an amount to a given address for cold staking. The amount is a real and is rounded to the nearest 0.00000001

Delegate transaction is returned as json object.
Requires wallet passphrase to be set with walletpassphrase call.

Arguments:
1. "stakingaddress"      (string, required) The pivx staking address to delegate.
2. "amount"              (numeric, required) The amount in PIV to delegate for staking. eg 100
3. "owneraddress"        (string, optional) The pivx address corresponding to the key that will be able to spend the stake.
                               If not provided, or empty string, a new wallet address is generated.
4. "fExternalOwner"      (boolean, optional, default = false) use the provided 'owneraddress' anyway, even if not present in this wallet.
                               WARNING: The owner of the keys to 'owneraddress' will be the only one allowed to spend these coins.
5. "fUseDelegated         (boolean, optional, default = false) include already delegated inputs if needed.

Result:
{
  "txid" : "id",        (string) The transaction id (same as provided)
  "version" : n,          (numeric) The version
  "size" : n,             (numeric) The serialized transaction size
  "locktime" : ttt,       (numeric) The lock time
  "vin" : [               (array of json objects)
     {
       "txid": "id",    (string) The transaction id
       "vout": n,         (numeric)
       "scriptSig": {     (json object) The script
         "asm": "asm",  (string) asm
         "hex": "hex"   (string) hex
       },
       "sequence": n      (numeric) The script sequence number
     }
     ,...
  ],
  "vout" : [              (array of json objects)
     {
       "value" : x.xxx,            (numeric) The value in btc
       "n" : n,                    (numeric) index
       "scriptPubKey" : {          (json object)
         "asm" : "asm",          (string) the asm
         "hex" : "hex",          (string) the hex
         "reqSigs" : n,            (numeric) The required sigs
         "type" : "pubkeyhash",  (string) The type, eg 'pubkeyhash'
         "addresses" : [           (json array of string)
           "pivxaddress"        (string) pivx address
           ,...
         ]
       }
     }
     ,...
  ],
  "hex" : "data",       (string) The serialized, hex-encoded data for 'txid'
}

getcoldstakingbalance returns the cold balance of the wallet:

getcoldstakingbalance ( "account" )

If account is not specified, returns the server's total available cold balance.
If account is specified, returns the cold balance in the account.
Note that the account "" is not the same as leaving the parameter out.
The server total may be different to the balance in the default "" account.

Arguments:
1. "account"      (string, optional) The selected account, or "*" for entire wallet. It may be the default account using "".

Result:
amount              (numeric) The total amount in PIV received for this account in P2CS contracts.

delegatoradd whitelists a delegated owner address for cold staking:

delegatoradd "addr"

Add the provided address <addr> into the allowed delegators AddressBook.
This enables the staking of coins delegated to this wallet, owned by <addr>

Arguments:
1. "addr"        (string, required) The address to whitelist

Result:
true|false           (boolean) true if successful.

delegatorremove to remove previously whitelisted owner address:

delegatoradd "addr"

Add the provided address <addr> into the allowed delegators AddressBook.
This enables the staking of coins delegated to this wallet, owned by <addr>

Arguments:
1. "addr"        (string, required) The address to whitelist

Result:
true|false           (boolean) true if successful.

listcoldutxos lists all P2CS UTXOs belonging to the wallet (both delegator and cold staker):

listcoldutxos ( nonWhitelistedOnly )

List P2CS unspent outputs received by this wallet as cold-staker-

Arguments:
1. nonWhitelistedOnly   (boolean, optional, default=false) Whether to exclude P2CS from whitelisted delegators.

Result:
[
  {
    "txid" : "true",            (string) The transaction id of the P2CS utxo
    "txidn" : "accountname",    (string) The output number of the P2CS utxo
    "amount" : x.xxx,             (numeric) The amount of the P2CS utxo
    "confirmations" : n           (numeric) The number of confirmations of the P2CS utxo
    "cold-staker" : n             (string) The cold-staker address of the P2CS utxo
    "coin-owner" : n              (string) The coin-owner address of the P2CS utxo
    "whitelisted" : n             (string) "true"/"false" coin-owner in delegator whitelist
  }
  ,...
]

liststakingaddresses lists all cold staking addresses generated by the wallet:

liststakingaddresses "addr"

Shows the list of staking addresses for this wallet.

Result:
[
   {
   "label": "yyy",  (string) account label
   "address": "xxx",  (string) PIVX address string
   }
  ...
]

listdelegators lists the whitelisted owner addresses

listdelegators "addr"

Shows the list of allowed delegator addresses for cold staking.

Result:
[
   {
   "label": "yyy",  (string) account label
   "address": "xxx",  (string) PIVX address string
   }
  ...
]

Snapcraft Packages

For our linux users, in addition to the Ubuntu PPA repository, we are now offering a Snap package as quick way to install and update a PIVX wallet.

Release versions are available via the Stable branch, and (for testing-only purposes) nightly builds are available in the Beta branch.

Internal Miner/Staker Change

The wallet's internal miner/staker is no longer prevented from running prior to having synced all the additional layer 2 (MN/Budget) data. Instead, mining/staking uses better logic to allow block creation without fully synced layer 2 data when the full data set wouldn't be required.

In other words, try to stake a new block only if:

  • full layer 2 sync is complete
    OR
  • The spork list is synced and all three sporks (8,9 and 13) are not active.

Faster Shutdown During Initial Loading

Previously, if a user wanted to close/quit the wallet before it had finished its initial loading process, they would need to wait until that loading process actually completed before the wallet would fully close.

Now, the new behavior is to gracefully close the wallet once the current step is complete.

v4.0.0 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

  • #643 469d974519 [Crypto] Use stronger rand for key generation (warrows)
  • #936 12a6b704b6 [zPIV] PublicCoinSpend v4 - Coin Randomness Schnorr Signature (random-zebra)
  • #955 008b7938db [Core][Script][Wallet][RPC][Tests] Cold Staking (random-zebra)
  • #989 6f645ce457 [DB] Db runtime error cleaning the variable that needs to be logged (furszy)
  • #1000 34e11dd5fa [Core] Spork code overhaul (random-zebra)
  • #1002 5666184cc5 [PoS] Time Protocol v2 (random-zebra)
  • #1022 b5bede0661 remove accumulators checkpoint (random-zebra)
  • #1025 988ee3fe37 [Startup] Stop loading the wallet if shutdown was requested. (furszy)
  • #1029 0df20ddbab [Startup][Refactor][Backport] Memory allocation fail handler + init step 1 refactored. (furszy)
  • #1040 01fe200d4a [Bug] Fix GetDepthInMainChain returning 0 when tx is not in mempool (random-zebra)
  • #1050 adc74f737c [Core] Prevent coinstakes from overpaying masternodes (random-zebra)
  • #1063 04834fff67 [Node] Remove a call to IsSuperMajority (warrows)
  • #1066 6a4bf7c42c [Cleanup][Refactor]Main.cpp code cleanup. (furszy)
  • #1067 c947e534ee [Node] Replace IsSuperMajority with height checks (warrows)
  • #1070 fbffae1b38 [Bug] Fix contextCheckBlock for the first block that it's a v1 block. (furszy)
  • #1129 a87bfc32a0 [Consensus] Define TestNet changeover block for PIVX v4.0 RC (random-zebra)
  • #1134 a4ded20de4 [Trivial] Remove a duplicate variable definition (warrows)
  • #1191 9a054eeba6 [Consensus] Define MainNet changeover block for PIVX v4.0 (random-zebra)
  • #1197 ad241150e9 [Trivial] Update copyright headers (Fuzzbawls)

GUI

  • #954 e815815fdc [GUI] [Model] New Wallet UI (furszy)
  • #997 4d50ff33da [Trivial][UI] MN screen (furszy)
  • #998 6380da7eb4 [Qt] Guard MN tab from possible missing TXs in masternode.conf (Fuzzbawls)
  • #999 c6567aec89 [UI] Send screen total amounts refresh after custom options cleaned (furszy)
  • #1003 a89f4e6603 [QT][Performance] Memory leak re creating the row object instead of re initialize it. (furszy)
  • #1006 ac523b24c2 [Trivial] Fix mnrow ifdef typo (Fuzzbawls)
  • #1007 39e8a03505 [Qt] Reintroduce networkstyle to title texts (Fuzzbawls)
  • #1008 91514a0326 [Qt] Don't set placeholder on QPlainTextEdit (Fuzzbawls)
  • #1009 e0178087c8 [QT] Dashboard chart left and right day range movement control buttons (furszy)
  • #1012 0d05b5381d [Performance][Wallet][QT][Model] TransactionTableModel multi-thread initialization + tx filter sort speed improved. (furszy)
  • #1014 49f42e9a59 [GUI] Refresh coin control upon reopening (CryptoDev-Project)
  • #1015 17ef4163dc [Qt] Update source strings (Fuzzbawls)
  • #1016 33182066ba [GUI] Tx detail dialog (furszy)
  • #1017 8b6819a9d8 [GUI][Trivial] Remove hardcoded address. (Matias Furszyfer)
  • #1018 e264c77e63 [GUI] Update amounts when entry is removed from SendMultiRow (random-zebra)
  • #1026 968000bb33 [Cleanup] Prev 4.0 wallet UI files cleanup. (furszy)
  • #1032 d3b2969fff [GUI] Dashboard chart map first segfault (furszy)
  • #1033 c04f442e4c [GUI][Model][Wallet] Cold staking UI. (furszy)
  • #1048 1cb55b4822 [Qt] Make CoinControlTreeWidget focusable (Fuzzbawls)
  • #1053 6aaa531ec1 [GUI] Segfault for a bad cast of the parent in the escape key press event (furszy)
  • #1054 7c2cd32d6e [UI] Guard a call to GetDepthInMainChain (warrows)
  • #1055 232cea5584 [Wallet] Create label for addresses generated via masternode wizard (CryptoDev-Project)
  • #1057 d4e6525410 [UI] Fix AA_EnableHighDpiScaling warning (Akshay)
  • #1071 297acac8d6 [UI] Settings options buttons hover css (furszy)
  • #1072 1e0cea53e8 [Qt] Update welcomecontentwidget.ui (Jeffrey)
  • #1073 64a90d717f [Model][Backport] Remove mapWallet not needed call + stop treating coinbase differently (furszy)
  • #1074 54ff8bd3da [UI] TransactionFilter do not invalidate filter if range is already set (furszy)
  • #1075 31e9f0fbde [Model][UI] Receive dialog (furszy)
  • #1076 decac23124 [GUI] Decreasing the tooltip padding for #1076 windows issue. (furszy)
  • #1083 fba6d3cdac [Qt] Hide option for 3rd party transaction URLs (Fuzzbawls)
  • #1084 7b3455acaa [Qt] Show display unit option as text (Fuzzbawls)
  • #1085 a4d141fd1c [Qt] Fixup topbar balance calculation (Fuzzbawls)
  • #1099 5d03160837 [GUI][Model][Performance] Dashboard (furszy)
  • #1104 97bea9cfc0 [Trivial][GUI] Fix typos in welcome widget (random-zebra)
  • #1105 e4e5df1018 [GUI] Fix bug in change wallet passphrase (random-zebra)
  • #1109 4771f6a7d7 [Trivial] [GUI] Customize Fee Dialog text change (NoobieDev12)
  • #1112 645854ad57 [Qt] Refresh coin control when re-opening from CS widget (Fuzzbawls)
  • #1113 b546151bc0 [Qt] Re-work settings restart and saving flow (Fuzzbawls)
  • #1115 12be3e2a8c [Trivial] [GUI] Request Dialog typo fix (JSKitty)
  • #1119 6ceff8f97f [GUI] Cold staking Warning for unconfirmed balance + stop multiple model updates (furszy)
  • #1120 0d04267c89 [GUI][BUG] Bad top padding on the dashboard nav icon in dark theme fix. (furszy)
  • #1121 0216fd3c8a [GUI] Cold staking alert user if the owner address is not from the wallet (furszy)
  • #1122 641b1d6bbe [GUI][Backport] Explicitly disable "Dark Mode" appearance on macOS (fanquake)
  • #1123 a4fb368d39 [GUI] Prevent worker constant creation and invalid removal (furszy)
  • #1124 bbb0125077 [GUI] Use QRegexValidator instead of the QDoubleValidator. (furszy)
  • #1125 c6e238ca4d [GUI] Inform if open pivx.conf and/or backups folder fail. (furszy)
  • #1126 c910490c53 [BUG] Fix send transaction detail destinations (furszy)
  • #1130 c582cabbd3 [UI] Copy correct data from mninfo dialog (Akshay)
  • #1131 8ca5db691b [Bug] URI read from file coded properly.. (furszy)
  • #1132 a34a7dfe1f [Bug][GUI] Tx list row amount color changing invalidly. (furszy)
  • #1133 d159cb1878 [Bug][GUI] Topbar sync progressbar not expanding fixed. (furszy)
  • #1139 03b51c411d [Qt] Fix segfault when running GUI client with --help or -? (Fuzzbawls)
  • #1141 01c517085b [GUI][Model] isTestNetwork regtest correction. (furszy)
  • #1142 17ad5a2a61 [Bug] Fix segfault on GUI initialization for cold staker wallet (random-zebra)
  • #1151 da3bea5971 Rewording text under Change Wallet Passphrase (NoobieDev12)
  • #1158 7deae859f1 [BUG] Masternodes wizard (furszy)
  • #1159 1ae53d0a2a [GUI][Trivial] Rewording of Error message when wallet is unlocked for staking only (NoobieDev12)
  • #1160 88ddd1a947 [GUI][Model] Do not re request passphrase when the wallet is unlocked. (furszy)
  • #1161 e4bfe3e9af [GUI][Trivial] Custom change address (furszy)
  • #1162 1c23ea6a59 [Qt] Periodic make translate (Fuzzbawls)
  • #1163 474e2bc6b2 [GUI] Validate wallet password on enter key press (warrows)
  • #1165 c54dad3b9f [GUI][Bug] Cold staking screen (furszy)
  • #1166 4cc04b0ba6 [Qt] properly copy IPv6 externalip MN info (Fuzzbawls)
  • #1173 8e42e03192 [GUI][Trivial] Remove every pushButton focus decoration property. (furszy)
  • #1174 b352e2d096 [GUI] Min cold staking amount in ColdStaking widget (random-zebra)
  • #1178 d7a929c6a8 [GUI][Bug] Cold staking screen (furszy)
  • #1179 7a33fe10d2 [Qt] Fix for dead link to wrong PIVX website (NoobieDev12)
  • #1183 60053d6786 [GUI][Trivial] Allow immediate typing in dialogs / tools widget (random-zebra)
  • #1185 682d54cd12 [GUI][Trivial] Make amount optional in staking address gen dialog (random-zebra)
  • #1186 0cc2976bbc [GUI][Trivial] move caps lock warning in askpassphrase dialog (random-zebra)
  • #1187 0a2baa686d [GUI][Trivial] Fix tx detail dialog expanding policy (random-zebra)
  • #1188 d5ed83896c [GUI] Workaround to the OSX border-image pink stripes. (furszy)
  • #1190 129c4744ea [GUI] Feature/Bug CoinControl Update on Open (Liquid369)
  • #1192 e52043b260 [GUI][Bug] Accept P2CS locked coins in coincontrol (random-zebra)
  • #1193 f49b0309a0 [GUI][Wallet] Allow spending of P2CS without coincontrol selection (random-zebra)
  • #1194 8854eace66 fix "total staking" amount (random-zebra)
  • #1195 ce5bc08988 [Qt] Update translations from transifex (Fuzzbawls)

P2P and Network Code

  • #975 9765a772b8 [Consensus] Define SPORK_17 (random-zebra)
  • #995 8f2217d2bd [Consensus] Define SPORK_18 (random-zebra)
  • #1001 59f55d6a54 [Consensus] Remove Old message format in CMasternodeBroadcast (random-zebra)
  • #1024 98aa3fa438 [Consensus] New signatures for network messages (random-zebra)
  • #1110 f89f672847 [Masterndoes] Masternodes sync try locking cs_main when it looks for the tip (furszy)
  • #1118 3219d9b48c [Sporks] Guard chainActive.Tip() and chainActive.Height() methods call. (furszy)
  • #1128 d6573e70c7 [Consensus] nTimeOffset warning for time protocol V2 (random-zebra)
  • #1137 4241574857 [Net] Protocol update enforcement for 70918 (random-zebra)
  • #1138 e0c49356ae [Consensus] nTimeOffset warning addition (random-zebra)
  • #1167 fc4ffcf4af [Trivial] Remove time offset warning when it gets back within range (random-zebra)
  • #1177 421cc1017b [Network] Add SPORK 17 & 18 to the fMissingSporks flag + code reorg. (furszy)

Wallet

  • #968 47ccf45adb [Staking][Wallet] Add Multi-Split functionality to stake output splitting (Cave Spectre)
  • #970 0f1764a3db [Wallet] Various transaction handling improvements (warrows)
  • #1030 ed83481494 [Wallet][Startup][DB][Backport] Remove vchDefaultKey from wallet.h (furszy)
  • #1031 52aed66930 [Wallet] fix CreateZerocoinSpendTransaction with empty addressesTo (random-zebra)
  • #1039 41d19c106f Fix OOM when deserializing UTXO entries with invalid length (random-zebra)
  • #1043 d1d0cb691a [Wallet][Tests] Fix bug re-adding orphan coinstake's inputs to the wallet (random-zebra)
  • #1056 3ba3b0e244 [Wallet][Refactor] Updating ancient getbalanceXXX methods to a lambda call. (furszy)
  • #1058 18e23a49e7 [Wallet] Transaction IsEquivalentTo method backported + code cleanup. (furszy)
  • #1064 bfbbb6b30c [Wallet][RPC] Diagnose unsuitable outputs in lockunspent() (random-zebra)
  • #1065 d605e528db [Wallet] Unlock spent outputs (random-zebra)
  • #1068 59b45e6d33 [Wallet] Do not cache the credit amount if fUnspent is enabled. (random-zebra)
  • #1069 d6f9eff763 [Wallet] Enable miner with mnsync incomplete (random-zebra)
  • #1116 e4d7addbb7 [Wallet] Do not use p2cs outputs in the autocombine flow. (furszy)
  • #1117 8d425bdf0d [Wallet][GUI][Model] Cold staking addresses contacts flow. (furszy)

Build System(s)

  • #977 ee9f6ca9da [Build] CMake Improvements (Fuzzbawls)
  • #979 8ffc045f7d [Compilation] Pass caught exceptions by reference (warrows)
  • #990 e7e31442e8 [Build] Fix wrong argument when verifying MacOS signatures (Mrs-X)
  • #991 4f3dd5ef66 [Build] Remove OpenSSL 1.0 check (warrows)
  • #1010 6ff12f70de [Build] Fixup moc includes and generation (Fuzzbawls)
  • #1013 75b8ad2ae5 [Build] Clean up GUI dependency checking (Fuzzbawls)
  • #1021 899b4bd6a9 [Build] Use in-tree intermediary endian header (Fuzzbawls)
  • #1023 509d63526b [Travis] Lower timeout for the full test suite (warrows)
  • #1027 569ac5e5e0 [Cleanup] Get rid of compiler warnings (random-zebra)
  • #1036 adfcb46149 [Build] Add SnapCraft Builds (Fuzzbawls)
  • #1042 8efd696b3f [TravisCI] Run CMake tests earlier (Fuzzbawls)
  • #1045 a761323178 [travis] Update .travis.yml (Warrows)
  • #1052 dd62f3f66a [CMake] Fix macOS Boost detection (Fuzzbawls)
  • #1127 c7bc2e1288 [Deployment] Windows taskbar icon pixelated fix. (furszy)
  • #1136 0f92bf8e17 [Build] Include full version in release file names (fanquake)
  • #1157 04480012aa [Travis] Increase functional tests reserved time (Warrows)
  • #1180 4f4da456de [Build] Add random-zebra gitian GPG public key fingerprint (random-zebra)

RPC Interface

  • #1111 fcb0db8321 [Trivial] Fix help text for delegatorremove (Akshay)

Testing System(s)

  • #981 92de4b81b3 [Tests] Add RPC budget regression tests (Fuzzbawls)

Documentation

  • #1051 9ea7519026 [Doxygen] Generate Todo list (Fuzzbawls)
  • #1176 eb1eb4d2c6 [Docs][Utils] Overhaul gitian build docs/script (Fuzzbawls)
  • #1181 78034c937b [Docs] 4.0.0 release notes (Fuzzbawls)

Credits

Thanks to everyone who directly contributed to this release:

  • Akshay
  • Alex Morcos
  • Andrew Chow
  • Ben Woosley
  • Cave Spectre
  • Cory Fields
  • CryptoDev-Project
  • Dag Robole
  • Fuzzbawls
  • Gregory Solarte
  • JSKitty
  • James Hilliard
  • Jeffrey
  • Jonas Schnelli
  • Liquid369
  • MarcoFalke
  • Matias Furszyfer
  • Matt Corallo
  • Mrs-X
  • NoobieDev12
  • Pieter Wuille
  • Warrows
  • Wladimir J. van der Laan
  • cevap
  • dexX7
  • fanquake
  • furszy
  • practicalswift
  • presstab
  • random-zebra

As well as everyone that helped translating on Transifex, the QA team during Testing and the Node hosts supporting our Testnet.

Assets 15
Pre-release

@Fuzzbawls Fuzzbawls released this Nov 27, 2019 · 1886 commits to master since this release

⚠️ ⚠️ ⚠️ THESE BINARIES ARE ONLY FOR USE ON THE PIVX TESTNET. ⚠️ ⚠️ ⚠️

If you're looking for the latest release version for mainnet use, goto https://github.com/PIVX-Project/PIVX/releases/tag/v3.4.0

Assets 13
Nov 26, 2019
You can’t perform that action at this time.