写给中文区小伙伴:HIVE区块链HF28就要来啦 & 升级本地HIVE节点至1.28.0

最近在HIVE见证人聊天频道中听到一个好消息,HIVE定于2025年11月19日进硬分叉,升级大版本至1.28.0,为hived提供诸多功能和性能上的改进。

image.png
(图源 :pixabay)

上次硬分叉还是三年前(2022年)10月份的硬分叉27(Hardfork 27),这一转眼就过了三年多,不得不感慨时间飞逝啊。

三年来HIVE区块链底层稳步运转,充分证实了HIVE区块链的稳定性和以及强壮性,这期间HIVE的开发团队以及其它第三方团队、见证人群体基于HIVE底层做不大量的开发工作,推出了许多功能强大、实用性强的二层工具以及DAPP,就不一一表述了。

当然,开发团队也在hived上投入了大量精力,现在繁华终于要借出硕果——HIVE Hardfork 28就要来了。我的脑海里突然冒出来一句话:Make HIVE Great Again!

编译hived 1.28.0

为了迎接这次硬分叉,在hived 1.28.0发布的第一时间我就进行了编译,得益于之前为了温故而知新重新编译hived 1.27.11的经历,此次轻车熟路,顺风顺水。

不过从1.27.x升级到HIVE 1.28.0需要Replay(重播)整个区块链数据,因为内部的 hived 状态格式和数据结构发生了变化。

旧债:压缩block_log

但是在Replay之前,我需要做的一件事就是把之前的非压缩区块链数据(block_log)转换成压缩格式的文件——虽然block_log压缩功能已经推出好多年,而且在我见证人节点以及其它一些节点上我都用的压缩文件,但本地节点我还一直用着非压缩的呢。

但现在也到了必须转换的时候了,因为非压缩文件要多占用500G左右的空间,磁盘空间告急呀。

当前非压缩block_log的空间占用情况:

985G block_log
2.3G block_log.artifacts

好在HIVED的开发团队一直有提供和维护compress_block_log工具,我用这个工具对当前非压缩block_log进行了转换。

f967fa756d0addd8e3e31a692888c3d4.png

看把我大电脑累成啥样了:
147446c0a3f763499f5c2baf6f51285f.png

也不知道用时多久(不小心睡着了,又没掐时间,结束后打印的报告里时间应该不对。我觉得大概三四个小时吧),终于完成了转化,完成后的体积如下:

498G block_log
2.3G block_log.artifacts

看,果然省了好多。时隔多年,终于把旧债换上了,以后就和非压缩的block_log说白白了,果断删除之,并把压缩后的block_log复制进对应目录。

拆分区块的问题

hived 1.28.0一个重要的改进就是支持拆分区块,将 block_log 文件拆分为多个“部分文件”(每个部分文件存储 100 万个区块),这对于磁盘空间受限的节点非常友好。

你可以只保留最近的100万个区块,甚至保留0个区块来运行所谓的轻节点,比如共识节点或者跑些轻量级应用(点赞机器人、交易机器人等)。

要想应用这些功能,只需设置相应的参数block-log-split即可,对应情况如下

block-log-split= 9999 默认值 拆分并保留所有区块
block-log-split= 0 共识节点可用 保留0个区块
block-log-split= N 轻量应用节点可用 保留N个百万区块
block-log-split=-1 不拆分

我的打算是本地节点不拆分(block-log-split=-1 ),共识节点保留0个区块(block-log-split= 0),应用节点保留100W个区块(block-log-split= 1

关于comments-rocksdb

我觉得这次升级一个最重大的改进就是把评论数据(应该不含评论内容)从共享内存(shared_memory.bin)中移到RocksDB中。

原来所有的数据都在shared_memory.bin,大概要占19G左右的空间,对于想把shared_memory.bin文件完整地放到内存中的节点而言,必须配置内存足够大的主机。(我最早用64G内存的VPS,后来换成32G内存的VPS)。

改进后的shared_memory.bin和RocksDB空间占用情况:

3.9G comments-rocksdb-storage
5.0G shared_memory.bin

实际只占了不到10G的空间,而shared_memory.bin只占了5G空间,完全可以考虑把两者或者两者之一放到内存上去运行。这无疑会节省大量的成本呀。😍

用hived 1.28.0重播区块

有了上述准备工作,设置好相应的参数后就可以replay区块链啦。

UTC时间28日9点开工
1a05e089b88730f9fb16e88b3a39be1e.png

中途被我停掉几次看进度(我把输出关得七七八八)
3ccc87e3b48e7ca9985f26f86de3999b.png

12小时后到了这里
3ccc87e3b48e7ca9985f26f86de3999b.png

到16个小时后已经重播完成且开始正常同步啦
360c7a5010646e018071906febccc94a.png

其实我猜它没用上16个小时,而是因为16个小时后是北京时间的早餐九点多,这时候我刚忙完一堆事,再次看重播进度。

所以重播时间可能在14-15个小时左右,下次设置重播完成后退出,就能看报告时间了。😳 如果我不瞎折腾(来回重启),应该更快。

来关掉重新运行一下,一切正常,好喜欢这个大图标。
b133972b18292d8379de88e552ea4523.png

至此,本地节点升级已顺利完成。其实是断断续续折腾了三两天天,但是前期的各种测试转换,都是之前欠的旧债。又怪得了谁呢?

对了,顺便感谢一下我的大主机,之前好多操作(编译等)都在AWS的超贵服务器上测试,现在发现在我大主机上搞,快到飞起呀,毕竟是有着I9超强内心以及128G超高内存呢。

就是我的主NVME SSD没挂到CPU旁的接口,速度大打折扣呀。这要是把主NVME SSD挂到CPU旁,相比压缩和重播速度会更胜一筹呢!咦,这个思路不错呀,岂不是又可以折腾了?

关于见证人节点的升级

通过查看见证人列表,截至撰写本文时已经有三个小伙伴在开始运行hived 1.28.0版本的见证人节点啦。

6861b91a027ebefa244d7e7b353a989d.png

他们分别是@gtg@rishi556@holoz0r,恭喜@gtg第一个运行hived 1.28.0版本的见证人节点,勇夺桂冠。

我现在也在VPS上部署了hived 1.28.0版本,准备先跑一两天看看,再切见证人KEY过去不迟。毕竟距离11月19日还有多半个月呢。

嗯,就这么愉快地决定了,我决定回头先折腾我的NVME SSD去,想必很好玩。😍

相关链接

Sort:  

现在运行 1.28.0 版本的是我的备用节点,我的主节点目前正在运行回放测试。完成后,我会更新备用节点上的 NVMe 硬盘,然后它就成为我的主节点了。:) 谢谢你的提及。我没有遇到什么大问题。因为我是新见证人,所以我想冒着错过几个区块的风险来测试一下软件。祝一切顺利!(我是用机器翻译阅读你的帖子的。)

It is my back up node running the 1.28.0 now, my primary node is running a replay at the moment. Once complete, I update the Nvme(s) in my back up node and it becomes my primary. :) Thank you for the mention. I did not have any big problems. As I am a new witness I thought I could take the risk of a few missed blocks to test the software. All the best! (I used machine translation to read your post.)

Haha, mentioning you in the article was actually to praise your strong execution and quick action.

As for switching between primary and backup nodes, the best approach is to set up two pairs of public and private keys, and then use witness_update to update the witness’s public key information for the switchover. Just for your reference.

Yes, I will be setting that up once they are both online properly. The machine for my back up box arrived only a week ago, and I am still learning. ... I also start a new job in about 11 days so I do not have much time to make it perfect before I have far less time!

I have a blog post coming soon about my homelab, I love having these machines running in my own space :)

I upgraded my backup witness to 1.28.0 for testing and decided to put the producer on it after about a day of letting it sit. Seems mostly stable. It does look like I'll need to upgrade it again soon due to a bugfix.

恭喜HIVE,这次分叉有送币吗?我记得当年比特币分叉送了不少币。。不过那个时候我不懂事,还没等太子长大就给全卖了。。哈哈。

在HIVE这边,硬分叉也叫共识升级、协议升级
你可以简单地理解为软件升级

好的,懂了。

辛苦O哥维护hive,太折腾了

那些开发者们最辛苦
我就是跟着弄

三年前刚刚进驻HIVE,时光如梭

是呢,时光飞逝啊

O哥辛苦了,这是个大工程呀

确实是大工程
不过最辛苦的是那些开发者和见证人们

Thank you for providing this information. It is very interesting.

You are welcome!

虽然我也看不懂🙈🙈,但看到升级字样知道是好消息。辛苦啦O神大佬☕☕,真厉害,佩服你👍👍👍

是好消息肯定没错啦

软件升级好,各方面比以前好,恭喜hive,也恭喜我们😃😃

期待方方面面都变得更好

原来O哥最近在搞这个大工程呀~

三年前我没在,这次我也是见证者啦~

NONONO,不是我搞的大工程,我只是个打酱油的

虽然不懂 但升级肯定是好事

升级本身肯定是好事

希望升级之后~币价一飞冲天~让我缓缓~哈哈

我也要缓缓

哇!升级⬆️是喜大普奔的大好消息啊!🎉🎉🎉🎉🎉🎉 见证人大佬们都辛苦啦!🌞🌞🌞

一起撒花

那个数码堆叠的hive大图标真好看,技术控好细节好有心,佩服
O哥辛苦了,hive又升级了

辛苦的是开发团队和其它见证人大佬

感叹,程序员改变世界啊

大佬程序员们改变世界