I have been heavily focused on testing the completeness and accuracy of various blockchain project's published documentation. Crypto projects make many claims and many of them are true, but I prefer first hand verified experience. I participated in an effort to unstake (also called destaking or unbonding) HNT from a Helium validator node. The published documentation was mostly there but lacked some important and critical details that I'll cover here as a token of goodwill to the crypto community.
Sources for reference:
https://github.com/helium/helium-wallet-rs/releases/tag/v1.7.4
https://docs.helium.com/wallets/cli-wallet/
Go to the Helium Rust Wallet GitHub and click on Releases on the right.
https://github.com/helium/helium-wallet-rs/
You should now click on the version of the wallet that matches your operating system. Linux, macOS and Windows are supported.
Extract that file to a directory, in my case I’m using ‘C:/Crypto/Helium’ and I extract the contents to a folder called ‘helium-wallet-v1.7.4-x86-64-win’
For Windows Users:
a. Click Start
b. Click Run
c. Type CMD and press enter
d. Type ‘cd C:/Crypto/Helium/helium-wallet-v1.7.4-x86-64-win’
e. The program may be run by entering ‘.\helium-wallet.exe’ and pressing enter
f. If you get this returned, you’ve installed the software correctly
You have to create a local wallet file with the 12 word seed you have from your HNT wallet
a. Type in the string below
.\helium-wallet.exe create basic --seed mobile
b. Enter your 12 seed words each separated by a space and press enter
c. You will see your Public Address under Address and a hash generated for your password
You can validate the Address generated by searching it on https://explorer.helium.com/accounts
We used StakeJoy, so in our case, we navigate to the StakeJoy validator page
- We need to get our details organized as this is time sensitive
a. Copy your "Address" for your staking node to a notepad
b. Copy the "Block Height" to a notepad
c. In a calculator, add the Block Height + 255060
i. This deviates from the Helium Documentation on Unstaking.
They state “You need to include the stake release block height which should be at least the current block height plus the cooldown period, and 5-10 blocks to allow for chain processing delays.”
What I found from experience and some people on the Helium Discord community is that 5-10 blocks should actually be 60 blocks ahead of current block height.
They state that “if the current block height was 5000, you'd add 250,000 for the stake withdrawal cooldown period, plus an additional 10 blocks to allow for chain processing delays. Therefore the stake-release-height = 5000 + 250000 + 10 or 255010.”
10 is too soon for the Unstake request to go through in my testing so I recommend setting it to 60 instead.
https://docs.helium.com/mine-hnt/validators/mainnet/wallet/#stake-tokens
d. Example Syntax
.\helium-wallet.exe validators unstake EnterValidatorAddressHere --stake-release-height [255060 + Block Height] --commit
Actual Example
.\helium-wallet.exe validators unstake 216hrGvUjueHiWYFqA9xjy61i1oaLyiZKXrEkzyQrkooviCq7DF --stake-release-height 1574233 --commit
e. You should get a Hash of your unstake commit.
- You can now go to https://explorer.helium.com/ and search for your public wallet address. Under Activity you should soon see “Unstaked” confirming the unstaking request was validated on the blockchain.
- You may also confirm the unstake request on your mobile Helium App.
For more information, please refer to the following links:
https://docs.helium.com/wallets/cli-wallet/
https://discord.com/invite/helium/