![Hive-in-a-box Logo](https://images.hive.blog/p/HuuaCwcKuiEjNgLb5Q7HbtUvB1HEHgck8hUkQMB4bFSJaxwFsYXGx7N9qtgEvLdGaoY?format=match&mode=fit) Despite my lack of posting for a while, I'm not dead! :) I've been dealing with the useless healthcare system in the UK. I hope to return fulltime to Hive tool development once I have my health issues under control (nothing "serious", but severely impedes my productivity), I'll still be staying on top of my witness nodes, as well as urgent things such as hard forks, critical bug fixes for my Hive projects, etc. - my projects have mostly reached a point of stability anyway. ## What is, and when is Hard Fork 26? #### Understanding a hard fork A Hard Fork is a set of **breaking changes** for a cryptocurrency network - a series of updates to the official "node" software which are NOT backwards compatible with older versions of the software. Due to the lack of backwards compatibility, it would be dangerous if immediately after installing the new software on a block producing node, it started to produce blocks that were incompatible with the existing network. This would result in the blockchain splitting into **two different networks**, with separate blockchains. On the Hive network, we call these block producers "witnesses", somewhat similar to "miners" on other cryptocurrencies. #### Hard fork lock-in date To prevent such a split in the network, hard forks generally have a **lock-in date/time** or **hardfork date/time**. As of right now, the Hive network's Hard Fork 26 (HF26) is set to trigger on **October 11th 2022 at 12:00 PM UTC** ``` Tue, 11 October 2022 12:00:00 UTC (08:00:00 ET) ``` When the clock hits 12:00:00 PM on 11-Oct-2022, the Hive network will check to see if one of the following conditions has been met: Either: - At least **17** of the **top 20 witnesses** are running `v1.26.0` or newer (Hard Fork 26) Or: - **16** of the **top 20 witnesses** produce a block using the HF26 software, plus **one backup witness** (outside of the top 20) ## Blockchain Compression HF26 introduces Blockchain Compression, so the `block_log` file will now only take up ~300GB of disk space :) When you replay your node, or sync it up from scratch, the block_log will be compressed, saving you a lot of disk space. ## Upgrading from an existing HF25 HIAB installation Read this if you've got an existing Hive-in-a-box (hive-docker) installation running the current active version of Hive (HF25). **WARNING:** If you're upgrading a witness node, please remember to **disable your signing key** or switch to a backup node before upgrading your server, as it will require a full replay. ### Core update Hive-in-a-box is an application independant of the Hive software itself, it's important to update the **core files** (i.e. the small programs and files which make up the Hive-in-a-box application) to obtain all the latest bug fixes, new features, and general improvements to HIAB over the past few months. First, open your `hive-docker` folder. ``` cd ~/hive-docker ``` Next, make sure your Hive-in-a-box is on the `master` branch to ensure you get the correct updates. ``` git checkout master ``` Now it's time to update Hive-in-a-box's core files (this will *not* affect your `Hived` node if it's running) ``` git pull ``` Your HIAB files should now be up to date. Now we can stop the server (**if upgrading a witness, please make sure to disable your key or switch to a backup**). ``` ./run.sh stop ``` If your HIAB files were upgraded successfully, your `stop` output should look like this: ``` root@myserver ~/hive-docker # ./run.sh stop If you don't care about a clean stop, you can force stop the container with ./run.sh kill [2019-08-12 11:28:08 CEST] Stopping container 'witness' (allowing up to 600 seconds before killing)... witness [2019-08-12 11:28:12 CEST] Removing old container 'witness'... witness ``` **Server Updates** If you haven't upgraded your server's operating system and packages in a while, now is a good time to do that. For Ubuntu / Debian: ``` sudo apt update -y sudo apt autoremove -y sudo apt upgrade ``` After all server updates have been installed, reboot your server to ensure any OS kernel updates are applied. ``` sudo reboot ``` ### Upgrading to HF26 **Before proceeding with this section, please make sure you've updated HIAB and your server's OS (see above section "Core Update")** First, make sure you're in the `hive-docker` folder ``` cd ~/hive-docker ``` Ensure your Hive node is stopped by running `./run.sh stop` ``` ./run.sh stop ``` Download the latest Hive docker image (non-MIRA) using `install` ``` ./run.sh install ``` Ensure that your `/dev/shm` RAM disk is the appropriate size (at least 20G or bigger is recommended) ``` sudo ./run.sh shm_size 24G ``` To make sure there's no leftover shared_memory files that might cause problems, you can use the new `clean` command to remove them. **Note:** Generally you only need to remove the shared memory files. Leave the blockchain and p2p folder. ``` sudo ./run.sh clean shm ``` **Example output for `clean shm`:** ``` [2019-08-12 11:40:04 CEST] :: Blockchain: /root/Hive-docker/data/witness_node_data_dir/blockchain [2019-08-12 11:40:04 CEST] :: P2P files: /root/Hive-docker/data/witness_node_data_dir/p2p [2019-08-12 11:40:04 CEST] :: Shared Mem / Rocksdb: /dev/shm [2019-08-12 11:40:14 CEST] !!! Clearing shared memory files... removed '/dev/shm/shared_memory.bin' [2019-08-12 11:40:18 CEST] +++ Cleared shared memory files [2019-08-12 11:40:18 CEST] ++ Done. ``` Now you're ready for a replay :) Use the `replay` command to begin replaying Hive `0.21.0` (or whatever the latest version is at the time you're reading this) ``` ./run.sh replay ``` To check that it's working, monitor the logs using the `logs` command. (You can also use `tslogs` to show the logs with timestamps) ``` ./run.sh logs ``` ``` ------------------------------------------------------ STARTING Hive NETWORK ------------------------------------------------------ initminer public key: STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX chain id: 0000000000000000000000000000000000000000000000000000000000000000 blockchain version: 1.26.0 ------------------------------------------------------ 2425233ms main.cpp:121 main ] Backtrace on segfault is enabled. 2425233ms chain_plugin.cpp:468 plugin_startup ] Starting chain with shared_file_size: 64424509440 bytes 2425233ms chain_plugin.cpp:571 plugin_startup ] Replaying blockchain on user request. 2425233ms database.cpp:235 reindex ] Reindexing Blockchain 2425261ms block_log.cpp:142 open ] Log is nonempty 2425276ms block_log.cpp:151 open ] Index is nonempty 2425284ms database.cpp:258 reindex ] Replaying blocks... 0.281818% 100000 of 35483857 (61434M free) 0.563637% 200000 of 35483857 (61434M free) 0.845455% 300000 of 35483857 (61433M free) ``` Assuming you see `blockchain version: 1.26.0` and no strange error messages, then you've **successfully upgraded your Hive node** :) Now go sit back, watch a movie, grab some food, and come back in 8-24 hours to check on the replay progress. Most servers (with at least 64G RAM) should be able to replay a witness/seed node within 10-12 hours. Your replay speed may vary anywhere from just 6-8 hours, up to 72 hours. --- Thanks for reading! ---
GIF Avatar by @stellabelle --- Do you like what I'm doing for Hive? ---- [Vote for me to be a Hive witness](https://peakd.com/witnesses) - every vote counts. ---- Don't forget to follow me for more like this. ---- --- Have you ever thought about being a witness yourself? Join the [witness channel](https://openhive.chat/channel/witness). We're happy to guide you! Join in shaping the Hive economy. Are you looking for a new server provider? My company @privex offers highly-reliable and affordable dedicated and virtual servers for HIVE, HBD, EOS, LTC, BTC, and even DOGE! Check out our website at https://www.privex.io You can join Privex's public Discord at https://discord.privex.io - we also have a Matrix server, sign up at https://riot.privex.io (or if you have an existing Matrix account, join our General chat at `#privex:privex.io`) ---

See: The easy way to upgrade to Hardfork 26 (Hive-in-a-box) by @someguy123