PIVX Development Update
Week 1, April 2020
This update covers the PIVX GitHub development for the beginning of March until 1st week of April in addition to any extra announcements or news provided by the core development team.
Another month, another packed full of developments made into our GitHub by our developers who just keep on coding non-stop. The sheer amount of development is truly astounding and in fact, PIVX is currently ranked 7th in Messari.io’s Development Activity rankings!
For those who wants to be kept up to date with every commit, merge, comments being made in our public PIVX GitHub repository, we have recently added a new Discord channel called #github-updates that pipes all the activities automatically into the channel as a feed. It is a great channel to keep tabs on, and soon you will also be able to really see and appreciate how much work is being put into our wallet.
Due to extra features being developed, and extended testing, the soft-target of 4.1 wallet release is now set for this month. This is now going to be one of our biggest releases ever with a huge amount of improvements, new features, and optimizations that will significantly improve its usability and performance.
Although there are way too many changes to simply list and mention, I wanted to mention 2 particular big core improvements that’s coming with 4.1.
Over 60% reduction in memory usage!! Say what?!
The new 4.1 wallet is poised to use MUCH less memory. With recent works, the current master build already uses around 15% less memory than 4.0.2. That’s around 400 MB less! But that’s not all. The latest PR# 1502 (proposed on April 6 2020) is set to reduce this down a lot further. In fact, the new 4.1 wallet with this PR merged has been tested to use up to 64% less memory than before! From nearly 2.6 GB memory usage in 4.0.2 down to only around 900 MB of memory usage! What kind of sorcery is this? Anyways, this is a massive improvement and something that should make everyone happy. It also means that the new 4.1 wallet should launch faster and shut down faster. Overall a massive win, and something I cannot wait to see everyone benefit from.
Over 40% faster sync times!!
I have also tested a self-compiled build from master recently just to compare some of its core improvements that optimizes both memory utilization and block synchronization times, and the difference was massive!! Syncing both wallets off from scratch on a 100 Mbps broadband internet, the 4.1 wallet showed a significantly shorter sync time as can be seen below. Yup. 21 hours vs 12 hours. Your mileage may vary of course, but this is a huge difference nonetheless and is a repeatable one as I’ve tested it twice just in case and got similar results. We’ve been told that this area will be optimized more over time, and means the need for snapshots to speed up the chain sync may soon be a thing of the past.
Recent Development Highlights & Reminders
zPIV is now spendable! Convert them back to PIV now!
PublicCoinSpend v4 (PR #936) function has been incorporated into the 4.x wallet and so it is now possible for anyone with any version of zPIV to spend them back as PIV. As per the recent announcement, the support for zPIV as we know it will cease once 5.0 (Sapling Update) is released. So we urge everyone with zPIV to convert them back to PIV as soon as possible and request assistance in PIVX Discord #support channel if you run into any issues or simply have questions.
Cold Staking is now Active!
Cold Staking (PR #955) is now active in mainnet so all users are now able to cold stake their coins if the required steps have been executed. We have created a basic how-to guide here. Also, some non-custodial (thus safe) cold staking services have started popping up so that is another option if you feel comfortable with their service levels.
Upcoming PR Highlights
(This is NOT a complete list, as there are too many to list.)
- This is a highly anticipated update that will implement the BIP44 derivation path in order to allow deterministic generation of addresses for the PIVX wallet’s database. This means that any addresses generated with the new HD master seed will not get lost in any of its future backups, ensuring that no addresses and their associated private keys to get lost when restoring a wallet backup that has either been HD upgraded or backed up after the wallet update with HD wallet support.
Complete GitHub Activity
(March 5, 2020 – April 5, 2019)
Excluding merges, 11 authors have pushed 180 commits to master and 181 commits to all branches. On master, 307 files have changed and there have been 8,591 additions and 8,149 deletions.
80 Pull requests merged
- #1450 [Util] Buffer log messages and explicitly open logs 1 hour ago
- #1497 [Trivial][RPC] Remove references to old command list-conf 19 hours ago
- #1495 [Wallet] Clean wrong pwalletMain inside wallet class. 23 hours ago
- #1393 [GUI] Customizable sorting for address books yesterday
- #1492 [Net] Relay actual peers instead of localhost on getaddr 2
- #1489 [GUI] Add missing error notification in encrypt wallet. 2
- #1484 [Net] Fix resource leak in ReadBinaryFile 2
- #1469 [GUI][Cleanup] Coin Control Cleanup 2
- #1439 [Core] Add -debugexclude option 2
- #1487 [GUI] ClientModel cacheTip sync with back-end. 2
- #1481 [BugFix] Tor topbar button text. 2
- #1483 [Depends] Update OpenSSL download URL 4
- #1473 [GUI] Hide charts container when not USE_QTCHARTS 4
- #1437 [Util] LogAcceptCategory: use uint32_t rather than sets of strings 4
- #1477 [GUI][Trivial] ColdStakingWidget: fix containerSend margins 5
- #1474 [Wallet] Fix wrong Lock/Unlock zWallet method call. 5
- #1445 [Refactor] Init wallet parameters interaction 5
- #1472 [Tests][Refactor] Remove connect_nodes_bi 6
- #1433 [Scripts] Only fetch translations for high-completion locals 7
- #1468 [GUI] Less GUI locks, IBD state cached. 7
- #1467 [Cleanup] Remove redundant and unused code 7
- #1464 [GUI][Model] Fix staking address validation 7
- #1424 [GUI] One-click export to file 9
- #1454 [GUI] Settings widget, expand/collapse scroll area. 9
- #1463 [Net] Protocol update enforcement for 70919 9
- #1465 [Bug] Fix height_start_StakeModifierV3 9
- #1453 [Net] Addrman offline attempts 10
- #1438 [Trivial] Remove spammy log in CheckSignature 10
- #1452 [Net] Add support for dnsseeds with option to filter by servicebits 10
- #1461 [Cleanup] Remove old governancepage and proposalframe code 10
- #1449 [Util] tinyformat / LogPrint backports 10
- #1462 [PoS] Stake Modifier V3 10
- #1460 netbase: Do not print an error on connection timeouts through proxy 11
- #1457 [Bug] Fix g_best_block initialization in ABC 11
- #1456 [Trivial] Cleaning not used pCheckpointCache. 11
- #1407 [Consensus] CheckColdStakeFreeOutput when mnsync not complete 11
- #1458 [Bug] Fix min depth requirement for stake inputs in AvailableCoins 12
- #1430 [Trivial][GUI] Fix capsLabel color (make it text-warning) 13
- #1431 [GUI] Automatic wallet backup after upgrade to HD 13
- #1049 [Qt] Switch to newer connect syntax 13
- #1448 [CMake] Fix missing file error 13
- #1442 [Tests] Remove non-determinism which is breaking net_tests 14
- #1434 [QA] Continuous Testing Environment for legacy pre-HD wallets 14
- #1387 [GUI] Add Unlock/Relock context flow 14
- #1443 [GUI] Removing unused DenomGenerationDialog. 14
- #1364 [Refactor][PoS] Kernel Refactoring 16
- #1411 [Wallet][Bug] Fix ScriptPubKeyMan::CanGenerateKeys 16
- #1392 [GUI] Accept dialogs with ENTER, reject with ESC 16
- #1428 [GUI][Trivial] Emphasize warning better 17
- #1435 [Travis][Build] Restore macOS Travis tests 17
- #1403 [GUI] SendWidget: automatically set focus on last recipient entry 18
- #1367 [Net] Max block locator entries size. 18
- #1381 [RPC][Bug] Fix masternodecurrent: return next winner, not rank-1 mn 18
- #1413 [GUI] Explicit cast from quint32 to bool in filterAcceptsRow 19
- #1410 [Tests] Run tests on pre-HD wallets 19
- #1405 [GUI] Upgrade to HD wallet functionality. 19
- #1418 [Consensus] Remove IsSuperMajority 19
- #1368 [RPC] Expand getstakingstatus output 19
- #1395 Replace uint256/uint160 with opaque blobs where possible (First) 19
- #1353 [GUI] Export csv files. 19
- #1378 [Net] Fix de-serialization bug where AddrMan is corrupted after exception 19
- #1409 [MN] Refactor to the `mapMasternodesLastVote` map. 21
- #1412 [Cleanup] Remove walletbroadcast and resendwallettransactions tests 21
- #1408 [GUI][Model] Save cache BlockIndex tip in the model 21
- #1404 [GUI] SendMultiRow: clear address label when address is changed 21
- #1401 [Wallet][Bug] Fix ScriptPubKeyMan::CanGetAddresses 22
- #1390 [Build] Add flag for enabling thread_local 23
- #1402 [GUI][Bug] Fix max decimals in sendcustomfeedialog 23
- #1399 [RPC] Upgrade to HD wallet. 23
- #1372 [P2P] Remove p2p alert system 23
- #1376 [Init] Combine common error strings so translations can be shared 23
- #1396 [GUI] Topbar MNs sync phase status. 24
- #1375 [Init] Do parameter interaction before creating the UI model 24
- #1400 [Trivial] Rewording of Custom Fee dialog text 25
- #1385 [GUI] Don’t change selected address after editing its label 25
- #1369 [Wallet] Fix staking balance calculation 26
- #1373 [Wallet] Remove reserve balance 26
- #1327 [Wallet] HD Wallet – v2. 26
- #1389 [GUI] MasternodeWidget-Wizard bugfixes 26
- #1382 [Wallet] Don’t initialize zpivwallet on first run 26
24 Pull requests proposed
- #1388 [GUI] Customize the timeout of the SnackBar based on its message length
- #1391 [GUI] Spend cold-stake delegations
- #1406 [GUI] Save custom fee selected
- #1414 uint256 to arith_uint256 migration (Second step).
- #1423 [GUI][Trivial] Fix button size in welcomecontentwidget
- #1425 [Trivial][GUI] Add more room to contacts dropdown
- #1429 [GUI] Dark theme, inactive icons color fix.
- #1436 [Trivial] Rewording of remote masternode data export notification
- #1446 [Test] Wallet testing setup.
- #1447 [GUI] Add address-label to sendconfirm-popup
- #1451 [RPC] Add logging RPC
- #1455 [Init] Add `-debuglogfile` option
- #1459 [Util] Refactor logging code into a global object
- #1470 [GUI] Mark delegated UTXOs in CoinControl
- #1475 [GUI] Hide charts at startup or at runtime
- #1479 [BUG][GUI] Fix MasternodeWidget StartAll
- #1485 [Wallet] Fix BIP38 import crashing on empty DecKey
- #1486 Replace OpenSSL AES with ctaes-based version
- #1488 CCrypter using secure allocator vector.
- #1490 [Cleanup] Nuke obfuscation from orbit
- #1491 [Consensus] Revert 1462
- #1493 [Depends] Include qt-gif plugin.
- #1494 [Qt] Convert leftover connects to Qt5 syntax
- #1498 [Wallet] Initialize zwalletMain to prevent memory access violations.
20 Issues closed
- #1038 [GUI] sort addresses in addressbook
- #1496 [GUI][Trivial] Console: Old command in error output.
- #1444 [Visual bug] Cold Staking Amount is cutted out if max amount of numbers is entered
- #944 Faulty shutdown causes inability to sync next time wallet is run.
- #1420 [Feature request] Make English as default language during initial wallet startup if language is not translated enough
- #1432 [RFC] Enforcing minimum translation completion
- #1417 [Feature request] Removal of unncessary extra mouse-click while creating wallet backup
- #1078 Expanding a Settings screen to show all the options without the need for scrolling
- #1035 [Backport][Model][GUI] Back port and connect contextual unlock/lock flow.
- #1171 [Feature request] Offer to type password immediately instead of returning error message
- #553 Add option to automatically relock wallet when unlocked
- #1365 [UX Enhancement] Wallet unlock option upon hitting Send PIV, then re-lock to last state.
- #378 Add BIP39/44 functionality
- #1427 Always crash after restart pivxd
- #1348 [RPC] masternodecurrent != getmasternodewinners
- #1394 Wallet gets stuck on block 2153199 re built index
- #1397 [GUI][Feature request] Custom Fee option allows the user to type unlimited amount of numbers
- #1258 [GUI] Receiving address changes after changing the label
- #892 Unable to sync
- #358 Secure Staking
15 Issues created
- #1482 [GUI][Visual bug][Trivial] The icons are overwritten when selecting the folder.
- #1480 [GUI][Visual bug] Transaction details shown TWICE.
- #1478 [Feature Request] Add ‘Backup Chain’ (AKA Snapshot) functionality.
- #1476 [GUI][Feature request] Make PIV and zPIV rewards statistics possible to turn ON/OFF
- #1471 Can not use special character for Masternode name
- #1466 conftest.exe error during make of depends on Windows Subsystem for Linux
- #1440 [Packaging] Make your wallet available as flatpak package on FlatHub
- #1426 [GUI][Feature request] Keep current date in the middle of staking statistics chart
- #1422 [Feature request] Set Dark Theme as a default theme after first wallet startup
- #1421 [GUI][Visual bug] Shortened topbar icon shows full sync although wallet is still syncing
- #1419 [GUI][Trivial] Word “Masternodes” is cutted out during initial wallet startup screen
- #1416 [GUI][Feature request] Expand Cold Staking dropdown menus
- #1415 [GUI][Feature request] Allow navigation through wallet dropdown menus with keyboard arrows
- #1398 [Feature request] Save the Custom Fee selection after wallet is closed with manually selected Custom Fee
- #1384 Debug file
Major Development Targets
(subject to change and is never a complete list)
Q2 2020 – PIVX Core Wallet 4.1 release
Q4 2020 – PIVX zk-SNARKs Privacy Test
Q4 2020 – PIVX Core Wallet 5.0 release
Please also check our roadmap for some more info on what is coming.
Also, we have many other 2020 developments in the works at a project level such as new websites, logo refresh and more. So it’s going to be one heck of a year for PIVX!
Want to contribute?
Anyone and everyone is welcome to contribute to our code, and they will all go through the same process of multi-dev peer review and will be merged if it gets enough ACKs!