Releases: PIVX-Project/PIVX
v4.1.0
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:
- 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.
- 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:
- If your wallet is unlocked, use the
-upgradewallet
flag at startup and will automatically upgrade your wallet. - 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?
- GUI: Go to settings, press on the Debug option, then Information.
- RPC: call
getwalletinfo
, thewalletversion
field must be169900
(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 theenabled
field. - "moneysupply" and "zpivSupply" attributes in
getblock
output are removed. - "isPublicSpend" boolean (optional) input parameter is removed from the following commands:
- `createraw...
v4.1.0rc1
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
v4.0.2
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.
v4.0.1
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.
v4.0.0
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...
v4.0.0rc2 (TESTNET ONLY)
⚠️ ⚠️ ⚠️ 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
v3.4.0
PIVX Core version 3.4.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.
Please report bugs using the issue tracker at github: https://github.com/pivx-project/pivx/issues
Mandatory Update
PIVX Core v3.4.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 goes into effect at the following times:
Testnet: Tuesday, August 27, 2019 7:00:00 PM GMT
Mainnet: Friday, August 30, 2019 4: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
Internal (Core) Changes
Version 2 Stake Modifier
A new 256-bit modifier for the proof of stake protocol has been defined, CBlockIndex::nStakeModifierV2
.
It is computed at every block, by taking the hash of the modifier of previous block along with the coinstake input.
To meet the protocol, the PoS kernel must comprise the modifier of the previous block.
Changeover enforcement of this new modifier is set to occur at block 1214000
for testnet and block 1967000
for mainnet.
Block index batch writing
Block index writes are now done in a batch. This allows for less frequent disk access, meaning improved performances and less data corruption risks.
Eliminate needless key generation
The staking process has been improved to no longer request a new (unused) key from the keypool. This should reduce wallet file size bloat as well as slightly improve staking efficiency.
Fix crash scenario at wallet startup
A program crash bug that happens when the wallet.dat file contains a zc public spend transaction (input) and the user had removed the chain data has been fixed.
GUI Changes
Removal of zero-fee transaction option
The long term viability of acceptable zero-fee transaction conditions is in need of review. As such, we are temporarily disabling the ability to create zero-fee transactions.
Show latest block hash and datadir information tab
A QoL addition has been made to the Information tab of the UI's console window, which adds the display of both the current data directory and the latest block hash seen by the client.
RPC Changes
Require valid URL scheme when preparing/submitting a proposal
The preparebudget
and submitbudget
RPC commands now require the inclusion of a canonical URL scheme as part of their url
parameter. Strings that don't include either http://
or https://
will be rejected.
The 64 character limit for the url
field is inclusive of this change, so the use of a URL shortening service may be needed.
Testing Suite Changes
Functional testing readability
Several changes have been introduced to the travis script in order to make the output more readable. Specifically it now lists tests left to run and prints the output of failing scripts.
Build System Changes
OpenSSL configure information
When the configure step fails because of an unsupported OpenSSL (or other library), it now displays more information on using an override flag to compile anyways. The long term plan is to ensure that the consensus code doesn't depend on OpenSSL in any way and then remove this configure step and related override flag.
3.4.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
- #983
ac8cb7376d
[PoS] Stake Modifier V2 (random-zebra) - #958
454c487424
[Staking] Modify miner and staking thread for efficiency (Cave Spectre) - #915
9c5a300624
Modify GetNextWorkRequired to set Target Limit correctly (Cave Spectre) - #952
7ab673f6fa
[Staking] Prevent potential negative out values during stake splitting (Cave Spectre) - #941
0ac0116ae4
[Refactor] Move ThreadStakeMinter out of net.cpp (Fuzzbawls) - #932
924ec4f6dd
[Node] Do all block index writes in a batch (Pieter Wuille)
Build System
- #934
92aa6c2daa
[Build] Bump master to 3.3.99 (pre-3.4) (Fuzzbawls) - #943
918852cb90
[Travis] Show functional tests progress (warrows) - #957
2c9f624455
[Build] Add info about '--with-unsupported-ssl' (Warrows)
P2P Protocol and Network Code
- #987
fa1dbab247
[Net] Protocol update enforcement for 70917 and new spork keys (Fuzzbawls)
GUI
- #933
e47fe3d379
[Qt] Add blockhash + datadir to information tab (Mrs-X)
RPC/REST
- #950
3d7e16e753
[RPC] require valid URL scheme on budget commands (Cave Spectre) - #964
a03fa6236d
[Refactor] Combine parameter checking of budget commands (Cave Spectre) - #965
b9ce433bd5
[RPC] Correct issues with budget commands (Cave Spectre)
Wallet
- #939
37ad934ad8
[Wallet] Remove (explicitely) unused tx comparator (warrows) - #971
bbeabc4d63
[Wallet][zPIV] zc public spend parse crash in wallet startup. (furszy) - #980
8b81d8f6f9
[Wallet] Remove Bitcoin Core 0.8 block hardlinking (JSKitty) - #982
a0a1af9f78
[Miner] Don't create new keys when generating PoS blocks (random-zebra)
Test Suites
- #961
2269f10fd9
[Trivial][Tests] Do not fail test when warnings are written to stderr (random-zebra) - #974
f9d4ee0b15
[Tests] Add Spork functional test and update RegTest spork key (random-zebra) - #976
12de5ec1dc
[Refactor] Fix stake age checks for regtest (random-zebra)
Miscellaneous
- #947
6ce55eec2d
[Scripts] Sync github-merge.py with upstream (Fuzzbawls) - #948
4a2b4831a9
[Docs] Clean and re-structure the gitian-keys directory (Fuzzbawls) - #949
9e4c3576af
[Refactor] Remove all "using namespace" statements (warrows) - #951
fa40040f80
[Trivial] typo fixes (Cave Spectre) - #986
fdd0cdb72f
[Doc] Release notes update (Fuzzbawls)
Credits
Thanks to everyone who directly contributed to this release:
- Cave Spectre
- Chun Kuan Lee
- Fuzzbawls
- Isidoro Ghezzi
- JSKitty
- MarcoFalke
- Mrs-X
- Pieter Wuille
- Steven Roose
- Warrows
- furszy
- random-zebra
As well as everyone that helped translating on Transifex, the QA team during Testing and the Node hosts supporting our Testnet.
v3.3.0
PIVX Core version 3.3.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 v3.3.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 have a grace period of approximately one week to update their clients before enforcement of this update goes into effect.
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
zPIV Public Spends
Recent exploits of the Zerocoin protocol (Wrapped serials and broken P1 proof) required us to enable the zerocoin spork and deactivate zPIV functionality in order to secure the supply until the pertinent review process was completed.
Moving forward from this undesired situation, we are enabling a secure and chain storage friendly solution for the zerocoin public spend (aka zPIV to PIV conversion).
The explanation of how this works can be found in #891
After block 1,880,000
has past, SPORK_16
will be deactivated to allow zPIV spends to occur using this new public spend method for version 2 zPIV (version 1 zPIV won't be spendable, see note below). zPIV public spends, as the name suggests, are NOT private, they reveal the input mint that is being spent. The minting of NEW zPIV, as well as zPIV staking will remain disabled for the time being.
It is advised that users spend/convert their existing zPIV to PIV, which can be done via the GUI or RPC as it was prior to the disabling of zPIV. Note that with the public spend method, the restriction on the number of denominations per transaction (previously 7) has been lifted, and now allows for several hundred denominations per transaction.
Note on version 1 zPIV: Version 1 zPIV was only available to me minted between versions v3.0.0 (Oct 6, 2017) and v3.1.0 (May 8, 2018). The announcement that version 1 zPIV was deprecated went out on May 1, 2018 with a recommendation for users to spend/convert their version 1 zPIV.
Version 1 zPIV will be made spendable at a later date due to the extra work required in order to make these version 1 mints spendable.
GUI Changes
Options Dialog Cleanup
The options/settings UI dialog has been cleaned up to no longer show settings that are wallet related when running in "disable wallet" (-disablewallet
) mode.
Privacy Tab
Notice text has been added to the privacy tab indicating that zPIV minting is disabled, as well as the removal of UI elements that supported such functionality. Notice text has also been added indicating that zPIV spends are currently NOT private.
RPC Changes
Removal of Deprecated Commands
The masternode
and mnbudget
RPC commands, which were marked as deprecated in PIVX Core v2.3.1 (September 19, 2017), have now been completely removed from PIVX Core.
Several new commands were added in v2.3.1 to replace the two aforementioned commands, reference the v2.3.1 Release Notes for further details.
New getblockindexstats
Command
A new RPC command (getblockindexstats
) has been introduced which serves the purpose of obtaining statistical information on a range of blocks. The information returned is as follows:
- transaction count (not including coinbase/coinstake txes)
- transaction count (including coinbase/coinstake txes)
- zPIV per-denom mint count
- zPIV per-denom spend count
- total transaction bytes
- total fees in block range
- average fee per kB
Command Reference:
getblockindexstats height range ( fFeeOnly )
nReturns aggregated BlockIndex data for blocks
height, height+1, height+2, ..., height+range-1]
nArguments:
1. height (numeric, required) block height where the search starts.
2. range (numeric, required) number of blocks to include.
3. fFeeOnly (boolean, optional, default=False) return only fee info.
Result:
{
first_block: x, (integer) First counted block
last_block: x, (integer) Last counted block
txcount: xxxxx, (numeric) tx count (excluding coinbase/coinstake)
txcount_all: xxxxx, (numeric) tx count (including coinbase/coinstake)
mintcount: { [if fFeeOnly=False]
denom_1: xxxx, (numeric) number of mints of denom_1 occurred over the block range
denom_5: xxxx, (numeric) number of mints of denom_5 occurred over the block range
... ... number of mints of other denominations: ..., 10, 50, 100, 500, 1000, 5000
},
spendcount: { [if fFeeOnly=False]
denom_1: xxxx, (numeric) number of spends of denom_1 occurred over the block range
denom_5: xxxx, (numeric) number of spends of denom_5 occurred over the block range
... ... number of spends of other denominations: ..., 10, 50, 100, 500, 1000, 5000
},
pubspendcount: { [if fFeeOnly=False]
denom_1: xxxx, (numeric) number of PUBLIC spends of denom_1 occurred over the block range
denom_5: xxxx, (numeric) number of PUBLIC spends of denom_5 occurred over the block range
... ... number of PUBLIC spends of other denominations: ..., 10, 50, 100, 500, 1000, 5000
},
txbytes: xxxxx, (numeric) Sum of the size of all txes (zPIV excluded) over block range
ttlfee: xxxxx, (numeric) Sum of the fee amount of all txes (zPIV mints excluded) over block range
ttlfee_all: xxxxx, (numeric) Sum of the fee amount of all txes (zPIV mints included) over block range
feeperkb: xxxxx, (numeric) Average fee per kb (excluding zc txes)
}
Build System Changes
New Architectures for Depends
The depends system has new added support for the s390x
and ppc64el
architectures. This is done in order to support the future integration with Snapcraft, as well as to support any developers who may use systems based on such architectures.
Basic CMake Support
While the existing Autotools based build system is our standard build system, and will continue to be so, we have added basic support for compiling with CMake on macOS and linux systems.
This is intended to be used in conjunction with IDEs like CLion (which relies heavily on CMake) in order to streamline the development process. Developers can now use, for example, CLion's internal debugger and profiling tools.
Note that it is still required to have relevant dependencies installed on the system for this to function properly.
3.3.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
- #875
a99c2dd3bb
[Zerocoin] GMP BigNum: Fix limits for random number generators (random-zebra) - #888
0c071c3fd0
[Zerocoin] remove CTransaction::IsZerocoinSpend/IsZerocoinMint (random-zebra) - #891
855408c2c3
[ZPIV] Zerocoin public coin spend. (furszy) - #897
65bd788945
[zPIV] Disable zerocoin minting (random-zebra) - #899
4b22a09024
[zPIV] Disable zPIV staking (random-zebra) - #909
458b08c8f2
[Consensus] Mainnet public spend enforcement height set. (furszy) - #924
988b33dab8
[Backport] Max tip age to consider a node in IBD status customizable. (furszy) - #925
a9827a0e63
[Consensus] Time checks (warrows)
Build System
- #810
a373fee908
[Depends] Fix archs (fixes s390x and ppc64el builds on snap) (cevap) - #906
8a47747b59
[Build] Add CMake Support (Fuzzbawls) - #910
07c8fb8f88
[Build] Clean all coverage files during make clean (Fuzzbawls) - #913
473976c619
[Depends] Update from upstream (Fuzzbawls) - #914
5a43ea790a
[Gitian] Bump gitian build versions (Fuzzbawls) - #917
b38ef04838
[Build] TravisCI Update (Fuzzbawls) - #922
0f98fd4d3f
[Build] Fix app name casing in mac deploy related files (Fuzzbawls)
P2P Protocol and...
v3.2.2
PIVX Core version 3.2.2 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.
Please report bugs using the issue tracker at github: https://github.com/pivx-project/pivx/issues
Supplemental Update
PIVX Core v3.2.2 is a supplemental update to v3.2.0/1 containing minor bug fixes. Users are still advised to read the v3.2.0 Release Notes to familiarize themselves with the major feature changes.
While updating from v3.2.0 is not required, it is highly recommended, especially for anyone encountering the issues detailed in the Notable Changes section below.
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
Minimum Supported MacOS Version
The minimum supported version of MacOS (OSX) has been moved from 10.8 Mountain Lion to 10.10 Yosemite. Users still running a MacOS version prior to Yosemite will need to upgrade their OS if they wish to continue using the latest version(s) of the PIVX Core wallet.
Bug Fixes
Improper rejection of valid blocks
A bug was discovered in the block acceptance portion of the code that resulted in rejection of otherwise valid blocks. This caused a race condition where some clients ended up on a low-difficulty chain.
This issue has been fixed, and no user funds were at risk.
Performance Improvements
New checkpoints
More recent checkpoints have been added for mainnet. These help alleviate some of the load when (re-)syncing from the network.
3.2.2 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.
P2P Protocol and Network Code
- #880
a890dc97cd
[NET] Valid forked blocks rejected fix. (furszy) - #884
013676df00
[Net] Add additional checkpoints (Fuzzbawls) - #887
ec7993eac8
[Net] Fix incorrect last checkpoint timestamp (Fuzzbawls)
Credits
Thanks to everyone who directly contributed to this release:
Fuzzbawls
Furszy
As well as everyone that helped with reviews and translating on Transifex, the QA team during Testing and the Node hosts supporting our Testnet.
v3.2.1
PIVX Core version 3.2.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.
Please report bugs using the issue tracker at github: https://github.com/pivx-project/pivx/issues
Supplemental Update
PIVX Core v3.2.1 is a supplemental update to v3.2.0 containing minor bug fixes. Users are still advised to read the v3.2.0 Release Notes to familiarize themselves with the major feature changes.
While updating from v3.2.0 is not required, it is recommended, especially for anyone encountering the issues detailed in the Notable Changes section below.
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
Minimum Supported MacOS Version
The minimum supported version of MacOS (OSX) has been moved from 10.8 Mountain Lion to 10.10 Yosemite. Users still running a MacOS version prior to Yosemite will need to upgrade their OS if they wish to continue using the latest version(s) of the PIVX Core wallet.
Bug Fixes
GUI crash when recalculating zPIV data
A GUI only crash when recalculating zPIV data (mints/spends/supply) has been fixed. Clients syncing via the network from a point prior to any recalculations can now do so without error again.
macOS installer mounting
The macOS installer image (.dmg
file) had an issue with it's stylesheet that caused an error after mounting the image. Affected macOS users will now see the expected behavior of a finder window appearing after mounting, allowing drag-n-drop installation of the PIVX-Qt.app
macOS "Pink Pinstripes"
A GUI wallet stylesheet issue was causing "pink pinstripes" to display in many of the wallet's views, this has now been resolved.
Incorrect seed warning in zPIV control dialog
Because of the way the zPIV master seed is handled, locked wallets were showing a status message in the zPIV control dialog window which mentioned that the master seed was not the same used to mint the denom. This message was not entirely correct, and a more appropriate message is now displayed for locked wallets.
Invalid chain state on shutdown
An issue in how the wallet shutdown procedure is carried out was sometimes leading to marking an incoming block as invalid when it in fact was valid. This would cause the client to seem "stuck" when starting it again. This issue is now resolved.
Performance Improvements
New checkpoints
More recent checkpoints have been added for both mainnet and testnet. These help alleviate some of the load when (re-)syncing from the network.
3.2.1 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.
Build System
- #858
a2c801205e
[Build] [macOS] Fix macOS dmg issue (10.12+) (Jonas Schnelli) - #866
9cd6016f3a
[Build] Update debian contrib files (Fuzzbawls)
P2P Protocol and Network Code
- #861
909ed11702
[Net] Add new checkpoints for mainnet/testnet (Fuzzbawls)
GUI
- #860
2cefebd1f7
[Qt] Prevent double deletion of progress dialog (Fuzzbawls) - #852
37e88b892f
[QT] Fix a display bug about zPIV mints (warrows) - #863
89b84a4f5a
[Qt] Stop using a solid white image as a border image (Fuzzbawls)
Miscellaneous
- #865
ede1af4e10
[Main] Don't return an invalid state when shutting down the wallet (Fuzzbawls) - #868
a1080d8658
[Performances] Decrease the number of wasted CPU cycles (warrows)
Credits
Thanks to everyone who directly contributed to this release:
Fuzzbawls
Warrows
As well as everyone that helped translating on Transifex, the QA team during Testing and the Node hosts supporting our Testnet.