It’s been a while since the last Core Development update and all for good reason — the changes we’ve been working on behind the scenes have been HUMONGOUS!
Let’s dive into the details…
Something we’re incredibly proud of is the implementation of Hierarchical deterministic (HD) addressing and Mnemonic seed words.
HD addressing is an improved method of generating key pairs that use a master seed that generates new key pairs in a deterministic way so that it can be recovered and the same key pairs can be re-created using the original master seed.
The most obvious user benefit is that HD addressing allows you to use seed words as a permanent backup for wallets that are set up with it. There are many more advanced things that we may be able to do with it in the future — e.g. setting up websites that can take payments by generating new addresses, but that don’t have the private keys so there is no way a hacker could steal the funds — the private keys can be stored in a separate wallet.
Mnemonic seed words go along with HD addressing and make the Phore wallet significantly more user friendly by allowing the user to create their master seed using a randomly generated set of 24 seed words. Users only need to make a note of these words when setting up a Phore wallet. This results in the ability to keep a wallet completely safe (even if the wallet is offline for a prolonged period), as the seed provides a permanent, secure backup and could be used at any time in the future to recover a Phore wallet.
A second ‘drag and drop’ screen has also been implemented where users must place the same set of randomized words in the same order as shown on the first screen. The purpose of this is to protect user funds by ensuring they have acknowledged the generated seed and have made a reliable copy of this.
Finally, a small change has been made to proposal creation. Users now have the ability to unlock a Phore wallet whilst in the process of creating a proposal.
A big focus of this release has been on performance improvements. Some operations have been sped up substantially. The list of performance improvements are as follows:
- IMPROVED STAKING / MINING EFFICIENCY!
- QT front end performance improvements for wallets with large numbers of transactions (> 20,000). The Qt wallet will now only display the most recent 20,000 transactions. You are still able to do a full CSV export of all transactions. This makes a huge difference to performance for Qt wallets with a lot of transaction history.
- Replaced mapNextTx with a smaller map to reduce memory usage.
- Removed unnecessary multithreading lock in getrawpmempool
- Improved performance over 20 times for RPC getchaintips (5.5 seconds -> 0.25 seconds)
- Added SSE4 assembly support to optimize SHA256 for CPUs that support it.
- Batching disk writes for flushing operations to wallet database
- Batching block index writes to improve disk update performance.
- Use object reference instead of copy to improve performance.
- Replaced sigcache with cuckoocache for mempool validation operations.
- Cache full script execution results to connect blocks 1.7 times faster (affects resyncing times as well as adding new blocks).
A list of bugs fixes in V1.6.4 of the Phore Core Wallet:
- Added new coin selection algorithm to fix “transaction too large” error that would sometimes happen in wallets with a lot of small UTXOs, such as staking and Masternode rewards that have not been combined. The new algorithm detects when this would happen and if possible, chooses a smaller number of larger UTXOs to keep the transaction size under the limit.
- Fixed issue with editing Masternode information using the Qt wallet.
- Fixed bug in walletframe.cpp that sometimes caused crashes using Qt 5.10.
- Fixed ability to open proposal description URL by double-clicking on the proposal in Qt wallet.
- Disable RPC calls during initialization to avoid certain crash conditions during the startup process.
- Fixed reindex crash bug.
- Set AA_EnableHighDpiScaling attribute early to eliminate output warning on startup.
- Updated depends paths for OSX building.
- Upgraded compatibility with OpenSSL 1.1.
- Updated checkpoints to help minimize long-running forks.
- Added security warning to debug console.
- Refactoring changes to improve code organization and coding standards.
To learn more about the changes made in this new release, you can see the release notes at https://github.com/phoreproject/Phore/releases/tag/v1.6.4
*HD addressing and seed words are primarily designed for use with NEW wallets. We have included an upgrade path for existing wallets to begin using HD addressing, but this is not recommended. If you do upgrade an existing wallet, any balances on addresses from before the upgrade will not be protected by your seed words, so you would still need your wallet.dat backup to recover your funds.