2024年开工第一弹 & 检查治理票是否失效

新年新气象,开始编写2024新的一年第一行代码!我靠,我发现好久不写PHP,竟然手生到不知从何着手啦!毕竟PHP是世界上最好的语言,怎么能就此放弃,一定要捡起来!

image.png
(图源 :pixabay)

重谈治理票失效

话说,最近发现中文区好多小伙伴的治理票都失效啦,看来大家对治理票的失效机制还不是很了解,或者说还不是很适应。

所谓的治理票,简单来讲就是在HIVE区块链中所有用户通过投票(见证人投票、设置投票代理、提案投票)来共同治理HIVE区块链,使其向更加安全、稳定、繁荣的方向发展。

所谓的治理票失效机制,是HF25引进的一个新的共识变化,简单来讲就是:

一年以上没有参加治理投票的用户,他的见证人投票& 设置投票代理 &提案投票都会重置。

举个例子:

你在2022年12月30日将我(@oflyhigh)设置成你的见证人代理,这样你就不用纠结选择哪个见证人以及支持哪个有益HIVE发展的提案,我来帮你搞定。

但是一年以后,上述代理设置将会自动失效。为了一直保持上述代理设置,你应该在你的治理票失效之前,重新将我设置为你的见证人代理。😀

又或者,你并没有将我设置为见证人投票代理,而是自己手动投了一些见证人,以及手动去支持了一些提案,但是如果一年内你并未进行过任何和治理票有关的操作,你之前设置(见证人票、提案投票等)将会全部被清空。

如何查找治理票失效时间

那么如何检查自己的治理票是否失效呢?我们可以通过API调用来实现:

curl -s --data '{"jsonrpc":"2.0", "method":"condenser_api.get_accounts", "params":[["hiveio"]], "id":1}' https://api.hive.blog

从返回信息中找到image.png,没错,这个就是治理票的过期时间。

又或者可以通过访问:https://hiveblocks.com/@hiveio,找到如下内容:
image.png

虽然两者都可以找到治理票失效时间,但是缺点显而易见——比较麻烦且不够明显。

检查治理票是否失效的新方法

为了解决上述不便,我在https://www.cutehive.com/witnesses.php 工具上,增加了治理票失效的检查功能。

使用方法也超级简单,在输入框输入你的HIVE ID,再点击Check(查询)即可:
1704187108468.png

以我的ID为例,会返回类似如下的结果(治理票未过期):
1704187224887(1).png

如果你的治理票已失效,将会显示类似如下的信息:
1704187550839(1).png

如果你的治理票将在两个月内过期,那么将会显示类似第一个图的信息(Your governance vote will expire in xx days!),但是文字的颜色将会是黄色的警告⚠字样。

技术背景简介

实现上述功能主要还是使用condenser_api.get_accounts API调用,并从中取出治理票失效时间戳($account['governance_vote_expiration_ts'])。

然后将其转换为DateTime类型并于当前时间(UTC)进行比较date_diff

给我造成一些困扰内容如下:

  • DateInterval 结构中d(Number of days)并不包含所有天数,应该使用days来获取总的差额天数。
  • days并没有正负之分,应该用invert来判断正负。
  • 我们也可以直接比较两个DateTime类型实例,来做相应的逻辑处理。

编写代码期间我竟然还犯了语句结尾不写;等低级到不能再低级的错误呢。

由此可见拳不离手,曲不离口真是至理名言呀,我这才多久没碰PHP,就把一些基本的东西忘得一干二净了。

如何解决治理票失效

这部分内容直接复制以前一篇文章中的段落:

解决治理票失效也很简单,那就是: 至少每年参与一次治理投票(见证人投票、设置见证人代理或者提案投票)

这里顺便求一下见证人票,欢迎大家支持见证人(witness):@abit 以及 @oflyhigh

如果你不清楚该投哪个见证人或者支持哪个提案,可以考虑把我:设置成你的见证人代理哦!非常感谢!

相关链接

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center