Skip to content

v1.2.6

Latest
Compare
Choose a tag to compare
@nathansenn nathansenn released this 09 Sep 01:39

v1.2.6 is an optional, recommended release for all wallets and masternodes.
A big focus of this release has been on performance improvements. Some operations have been sped up quite substantially--for example the getchaintips operation is over 20 times faster (5.5 seconds -> 0.25 seconds). The speed to connect blocks is about 1.7 times faster, which affects resyncing times as well as adding new blocks. Improvements have been also been made to memory usage, disk operations, processing speeds, and front end processing for large wallets with a lot of history.
There are also some new features--HD addressing has been something we've wanted to add for some time and I think Kolby has done a great job with it. This is mainly designed for new wallets, so you might need to start over if you want to get the full benefit of it. The most obvious benefit to users is that HD addressing will allow 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.
Helix Core version 1.2.6 is now available from:
https://helix-crypto.com/
Please report bugs using the issue tracker at github:
https://github.com/ProjectHelixCoin/helix/issues

New/Improved Features

  • Added ability to unlock wallet during proposal creation process
  • Hierarchical deterministic (HD) addressing. This is an improved method of generating key pairs that uses 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.
  • Mnemonic seed words. This goes along with HD addressing and makes it more user friendly by allowing the user to create their master seed using a randomly generated set of 24 seed words. By writing down these words when you set up your wallet and keeping it secure and offline, it will be a permanent, secure backup and could be used at any time in the future to recover your wallet.

IMPORTANT NOTE: 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.
There is no need to enable HD addressing on masternodes running on a VPS that are not storing any PHR. Upgrading masternodes to v1.2.6 will not automatically upgrade to HD addressing.
If you wish to convert your wallet to use HD addressing, you would need to create the new wallet and then send your PHR from your old wallet to your new wallet. If you are running masternodes, this would require you to re-create your masternodes using new HD generated addresses.

Performance Improvements

  • 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 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.
  • Improved staking/mining efficiency.

Bug Fixes

  • 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 proposal in Qt wallet.
  • Disable RPC calls during initialization to avoid certain crash conditions during startup process.
  • Fixed reindex crash bug.
  • Set AA_EnableHighDpiScaling attribute early to eliminate output warning on startup.

Other Changes

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

How to Upgrade Wallets

Shut down the older version wallet, 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/Helix-Qt (on Mac) or
helixd/helix-qt (on Linux).

How to Upgrade Masternodes

When upgrading masternodes, upgrade your controller wallet first. There are two ways people have installed masternodes, and to know how to upgrade, you first need to know which method yours was installed with. If you know you have more than one masternode running on a single VPS, then your masternodes were installed with the VPS installation script, and you can proceed to that section.
For those running a single masternode on a VPS, log in to your masternode VPS, and run the following command to see how the helixd daemon is running:
ps -ef | grep helixd
For server with an active masternode, that will print out the line you just ran (ps -ef etc.) and also one line that shows the running helixd daemon command.
For masternodes installed with the VPS installation script, it will look like this:
mastern+ 20646 1 1 Jul12 ? 00:19:02 /usr/local/bin/helixd -daemon -pid=/var/lib/masternodes/helix1/helix.pid -conf=/etc/masternodes/helix_n1.conf -datadir=/var/lib/masternodes/helix1
If you see this, use the [VPS upgrade method](### VPS Installation Script Method)
For masternodes installed with either the original type-in-all-the-commands way, or with liray-undelich's masternode automation script, it will look more like this:
root 20646 1 1 Jul12 ? 00:19:02 helixd -daemon
If you see this, use the [other upgrade method](### Other Installation Method)
There could be some variations, but the main difference that matters is the -conf=/etc/masternodes/helix_n1.conf part. That is a clear sign of the VPS installation script, and if nothing is there like that, it is one of the other methods.

VPS Installation Script Method

For a single masternode installed with the VPS script method, upgrading the masternode can be done with the following commands after logging in to your VPS, with each command on a separate line, pressing Enter after each one:
rm -rf /root/vps
git clone https://github.com/ProjectHelixCoin/vps
 cd /root/vps
./install.sh -p helix -u
After that completes, then type:
systemctl restart helix_n1
To verify the status of the masternode after restarting with the upgraded version, type:
helix-cli --conf=/etc/masternodes/helix_n1.conf masternode status
If it says started successfully, that may be all you need to do. If it tells you that it is a hot node awaiting activation, go back to your controller wallet, open the debug console, and type the following, replacing "aliasname" with the name you used for your masternode:
startmasternode alias false "aliasname"

Other Installation Method

For anyone who used the helix-masternode-automation script, that also has upgrade instructions that can be found at the link below, which really is just logging in to your VPS and entering the following command all on one line:
curl -s https://raw.githubusercontent.com/liray-unendlich/helix-masternode-automation/master/masternode-setup.sh | bash -s -- -u -v 1.2.6
For those who installed masternodes with another method, you can download the linux binaries to your VPS, replace them in either /root or /usr/local/bin depending on where you have them installed, and restart your masternodes.
cd /root
wget https://github.com/ProjectHelixCoin/helix/releases/download/v1.2.6/helix-1.2.6-x86_64-linux-gnu.tar.gz
tar zxvf helix-1.2.6-x86_64-linux-gnu.tar.gz
mkdir helix-old
mv /usr/local/bin/helix* helix-old/
cp /root/helix-1.2.6/bin/helix* /usr/local/bin/
helix-cli stop
helixd -daemon
After either of these methods, check the status of the masternode on the VPS with:
helix-cli masternode status
If it tells you it is not a masternode, wait a minute and try again. If if says it is awaiting remote activation, go back to your wallet and start it with the following command in the debug console, replacing with the name you gave it in your wallet:
startmasternode alias false
After that, you can verify it is working with a couple of steps. First, on the VPS, type:
helix-cli masternode status
That should now say it is started successfully. Then after about 15 or 20 minutes from when you started the masternode, verify on your Helix wallet masternode tab, in the Active column, that the time has started counting up from zero. If it is, you're in good shape.

Reinstalling using a new VPS

You also have the option of starting over with a new VPS, and following one of the two mostly-automated VPS installation script guides available here:
https://github.com/ProjectHelixCoin/vps
If you do that, you can set up the new VPS and then delete your old VPS once you have the new one ready to activate.

Syncing the blockchain with bootstrap.dat

It is more secure and recommended to sync the Helix blockchain over the network from other Helix nodes. However, if you have issues with your Helix wallet/masternode syncing the blockchain, for example if it gets stuck on a specific block and won't continue syncing, in some cases it may help to use a bootstrap.dat file that provides a local copy of all of the blocks up to a certain point. The team has provided a recent bootstrap.dat file to help with troubleshooting in these cases. Unless you have a very slow Internet connection, it is not significantly faster to load blocks from a bootstrap.dat file than it is to load it over the network--it is mostly useful in cases when a user is having issues with that completing successfully.
For last resort troubleshooting where even the bootstrap.dat is failing, we have also provided a snapshot of the key folders in the Helix data directory
Any time you are using either a bootstrap.dat file or a snapshot of the Helix data directory, you use this at your own risk. Do not use bootstrap.dat or snapshot files that are from any unofficial sources, as your node is trusting that the data is from the correct Helix blockchain.
To use the bootstrap.dat file, shut down your wallet or masternode if it was already running, download, uncompress and move the file to the Helix data directory, and start your wallet/masternode. It will load the blockchain up to the last block contained in the bootstrap.dat file and then switch to loading blocks over the network.

Helix Snapshot

It is more secure and recommended to sync the blockchain online from the Helix network. However, if you have issues with your Helix wallet/masternode syncing the blockchain, or when even the bootstrap.dat does not work, we have provided a snapshot of the key folders in the Helix data directory. Syncing the blockchain with the snapshot will be faster, but is less secure because your wallet/masternode is trusting that all of the previous blocks in the snapshot are valid and accurate.
Using a bootstrap.dat file or a snapshot of the Helix data directory are done at your own risk. Never use bootstrap.dat or snapshot files from any unofficial sources.

Syncing the blockchain with the Helix Snapshot:

If your wallet/masternode has never been run before, start your wallet/masternode to have it create the initial Helix data directory. If you have an existing wallet you can skip this step.
Shut down the wallet/masternode.
Delete the following folders: blocks, chainstate, sporks, and zerocoin.
Download and uncompress the same folders into the Helix data directory.
Start your wallet/masternode.
Your wallet/masternode should load the snapshot database and continue syncing the blockchain from that point forward.

Notes on the above process:

The default locations of the Helix wallet data directory that contains the four folders above can be found in our wallet troubleshooting FAQ:
For Helix masternodes, the default Helix data directory location for masternodes installed using the VPS script method would be /var/lib/masternodes/helix1, and if you are running more than one masternode on the VPS, you can use /var/lib/masternodes/helix2, and so on for each masternode.
For Helix masternodes installed using other methods, in most cases the Helix data directory will be found in the /root/.helix directory.
On Windows, 7zip is one option to uncompress .tar.gz files. Please note you have to run the file through 7zip twice--once to unzip the gzipped file into a tar file, and a second time opening the tar file to extract the individual folders and files it contains.
For OSX or Linux, after deleting the four folders listed above, you can copy the snapshot file into the Helix data folder, navigate to that folder using Terminal, and uncompress it using the command tar zxvf HelixSnapshot.tar.gz