PIVX Development Update
Week 1, November 2019
This update is supposed to cover the PIVX GitHub development for the past 1 month of October immediately following the previous October update. But may also cover some extra developments that happened beyond due to the time of this post.
Our devs have gone into turbo mode for 4.0! This update post just cannot do their tremendous amount of work any justice! It’s simply crazy how much work is being put into PIVX code to make it so much more robust, clean, stable, secure, fast, functional, and usable! Okay, going to try and calm down a bit…. Did I say the amount of work is nuts?!?! Okay, let’s try again….
As I was saying… PIVX core development is progressing extremely well with numerous new commits after thorough testing, along with our first public segregated testnet release that showcases the upcoming 4.0 wallet running on the improved Proof of Stake (PoS) network!
I’m also hearing that the developers will significantly improve the masternode portion of the code to make it work better with staking & syncing. At the end of all this, expect to have an awesome 4.0 wallet that will set us up for an even better 2020!
Segregated Testnet with Cold Staking now ready for public testing!
Cold Staking (PR #955) is being put through its paces in a segregated testnet and now everyone can download the public testnet wallet to put it through its paces!
PIVX AMA on 4.0 with @Fuzzbawls
PIVX core developer Fuzzbawls have recently hosted a live AMA session on Discord and have answered a ton of questions about the recent developments, and some upcoming ones also! We are also considering doing this more regularly so please keep a look out for an announcement in our social media channels.
Core wallet v3.4 Release Refresher
- As a refresher for those who may have missed it, a mandatory PIVX wallet release v3.4.0 has been released on August 27, 2019, with a new Stake Modifier v2 (PR #983) plus other PoS hardening changes to prevent / eliminate stake grinding. If you are running an OLDER core wallet version than 3.4, make sure to upgrade to ensure your wallet is running on the correct network!
- Although the majority of exchanges have been upgraded to 3.4, it is still advisable to make a small test transaction before making larger transactions when making wallet to wallet transfers just in case.
- See detailed v3.4 release notes for a list of all changes & inclusions.
New PoS Time protocol v2
Core developer, random-zebra has been very busy working on a more robust Proof of Stake protocol for PIVX (PR #1002) with a host of improvements including difficulty algorithm changes, and removal of legacy PoW code engagement.
We can expect more consistent block times, more secure network, less energy consumption, more low-end device friendly, and fairer block distribution once this is merged. A detailed write up about this change is expected from the core developers once they are ready.
Community Developer Contributions
We are seeing more and more contributions by our community developers, and this activity can now be tracked on our new Community Developer Contributions Project page within the PIVX GitHub!
Complete GitHub Activity
(October 2, 2019 – November 1, 2019)
Excluding merges, 12 developers have pushed 177 commits to master and 315 commits to all branches. On master, 143 files have changed and there have been 6,097 additions and 2,366 deletions!
32 Pull requests merged (Oldest First)
- Merged #1072 [Qt] Update welcomecontentwidget.ui
- Merged #1067 [Node] Replace IsSuperMajority with height checks
- Merged #1070 [Bug] Fix contextCheckBlock for the first block that it’s a v1 block.
- Merged #1063 [Node] Remove a call to IsSuperMajority
- Merged #1053 [GUI] Segfault for a bad cast of the parent in the escape key press event
- Merged #1058 [Wallet] Transaction IsEquivalentTo method backported + code cleanup.
- Merged #1056 [Wallet][Refactor] Updating ancient getbalanceXXX methods to a lambda call.
- Merged #1054 [UI] Guard a call to GetDepthInMainChain
- Merged #1055 [Wallet] Create label for addresses generated via masternode wizard
- Merged #995 [Consensus] Define SPORK_18
- Merged #975 [Consensus] Define SPORK_17
- Merged #1048 [Qt] Make CoinControlTreeWidget focusable
- Merged #1051 [Doxygen] Generate Todo list
- Merged #1052 [CMake] Fix macOS Boost detection
- Merged #955 [Core][Script][Wallet][RPC][Tests] Cold Staking
- Merged #936 [zPIV] PublicCoinSpend v4 – Coin Randomness Schnorr Signature
- Merged #1050 [Core] Prevent coinstakes from overpaying masternodes
- Merged #1024 [Consensus] New signatures for network messages
- Merged #1043 [Wallet][Tests] Fix bug re-adding orphan coinstake’s inputs to the wallet
- Merged #1045 [travis] Update .travis.yml
- Merged #1042 [TravisCI] Run CMake tests earlier
- Merged #1040 [Bug] Fix GetDepthInMainChain returning 0 when tx is not in mempool
- Merged #1030 [Wallet][Startup][DB][Backport] Remove vchDefaultKey from wallet.h
- Merged #981 [Tests] Add RPC budget regression tests
- Merged #970 [Wallet] Various transaction handling improvements
- Merged #1039 Fix OOM when deserializing UTXO entries with invalid length
- Merged #1036 [Build] Add SnapCraft Builds
- Merged #1029 [Startup][Refactor][Backport] Memory allocation fail handler + init step 1 refactored.
- Merged #1009 [QT] Dashboard chart, left and right day range movement control buttons.
- Merged #1023 [Travis] Lower timeout for the full test suite
- Merged #1031 [Wallet] fix CreateZerocoinSpendTransaction with empty addressesTo
- Merged #1032 [GUI] Dashboard chart map first segfault, background task error catching.
15 Pull requests proposed by 5 people
- Proposed #1041 [Utils] Fix windows utf8 paths
- Proposed #1044 [WIP][Qt] Define QT_NO_KEYWORDS
- Proposed #1047 [Qt] Add more information to settings info panel
- Proposed #1049 [WIP][Qt] Switch to newer connect syntax
- Proposed #1057 [UI] Fix AA_EnableHighDpiScaling warning
- Proposed #1059 [UI] Improve staking chart workflow
- Proposed #1064 [Wallet][RPC] Diagnose unsuitable outputs in lockunspent()
- Proposed #1065 [Wallet] Unlock spent outputs
- Proposed #1066 [Cleanup][Refactor]Main.cpp code cleanup.
- Proposed #1068 [Wallet] Do not cache the credit amount if fUnspent is enabled.
- Proposed #1069 [Wallet] Enable miner with mnsync incomplete
- Proposed #1071 [UI] Settings, options buttons hover css.
- Proposed #1073 [Model][Backport] Remove mapWallet not needed call + stop treating coinbase differently
- Proposed #1074 [UI] TransactionFilter, do not invalidate filter if range is already set.
- Proposed #1075 [Model][UI] Receive dialog, create address if addressbook is empty
4 Issues closed by 4 people
- Closed #579 Feature request: risk-free, proxy staking
- Closed #937 Fix Version 1 zPIV public Spends
- Closed #1046 2019-10-19 10:37:02 ERROR: CheckBlockHeader() : block version must be above 4 after ZerocoinStartHeight 2019-10-19 10:37:02 ERROR: CheckBlock() : CheckBlockHeader failed
- Closed #994 Crash with MacOs Mojave
8 Issues created by 4 people
- Opened #1080 Complete wallet load during the initial loading phase
- Opened #1079 [Feature request] “Subtract fee from amount” option
- Opened #1078 Expanding a Settings screen to show all the options without the need for scrolling
- Opened #1077 Recognize comma (,) as a dot (.) when typing an Amount in Send tab in 4.0 PIVX Core wallet
- Opened #1076 [GUI] Transaction details are not shown properly when hovering with mouse cursor over it
- Opened #1038 [GUI] sort addresses in addressbook
- Opened #1037 Improve staking chart workflow
- Opened #1035 [Backport][Model][GUI] Back port and connect contextual unlock/lock flow.
GitHub PR Highlights
- PIVX-Project/PIVX (Newest First)
- This adds the necessary GUI elements and backend connections for Cold Staking functionality into the next generation GUI included in 4.0.
- This is a major step forward in improving the current Proof of Stake performance in order to enable more consistent & predictable block times.
- This improves the Multisend handling during staking when UTXO that won the block reward is split, thus preventing multiple transfers during that occurrence.
- This fixes and thus prevents very large free transactions being accepted into blocks, despite what the block creator sets the -blockminsize parameter to.
- This pull request is a happy melting pot of improvements regarding transactions handling with most being backports from bitcoin.
- So far, there are more than 10 improvements included in this PR and the full list can be found in the initial PR notes.
- This enhancement will make the staking inputs split into 2 or more outputs based on the stake split threshold instead of splitting in half.
- This is a highly requested feature where it provides users an option to backup and restore the entire wallet (all associated addresses and their balances) using a multi-word seed phrase instead of more complex file-based or private-key methods.
- This customized staking feature (name subject to change) allows a mutually agreed full-node online wallet to stake coins from an address that it has been given delegation to stake from. This provides extra security for stakers while still requiring a full node online wallet. More info can be found HERE
- This is a brand new UI/UX wallet, designed in collaboration with Krubit UI and UX designers and written from scratch in Qt by core dev furszy and Krubit front-end developers. More info and a full demo video can be seen HERE
- Public testnet release of the next generation wallet GUI has been released in the latest segregated testnet release.
- This enhances the AutoCombineRewards function allowing the user to configure how often to run the scan, and the amount to combine each time it executes; as well as adding a new One Shot option that enables sweep on next block, and at wallet startup.
- This advanced function will allow spending of legacy zPIV v1 (minted prior to 3.1 release) back to PIV.
Major Development Targets
Q4 2019 – v4.0 Major Core Wallet Release
(Targets are subject to change of course)
Want to contribute?
Anyone and everyone is welcome to contribute to our code, as they will all go through the same process of developer peer review and will be merged if it gets enough ACKs!