大家都知道STEEM的Hardfork是要见证人批准的,具体需要多少个见证人来批准呢?这是在代码中定义的。
(图源 :pexels.com)
定义的如下:
#define STEEM_HARDFORK_REQUIRED_WITNESSES 17
之前我的理解是需要TOP20中的17个见证人同意,实际上是需要21个见证人中的17个同意即可,上述定义后边的备注也说明了这个问题。
// 17 of the 21 dpos witnesses (20 elected and 1 virtual time) required for hardfork. This guarantees 75% participation on all subsequent rounds.
如果不想看代码,这个数据也可以通过get_witness_schedule
这个API获取。
{"jsonrpc": "2.0", "method": "condenser_api.get_witness_schedule", "params": [], "id": 1}
以我随便调用一次的返回为例,其中箭头指向处,就是代表STEEM_HARDFORK_REQUIRED_WITNESSES
因为轮值见证人(runner_witnesses),是按得票数选出,每21轮更新一次,所以除非所有的备选见证人都运行最新的Hardfork版本,否则无法确定到了硬分叉时机时选出的轮值见证人是什么版本,所以要保证安全的分叉,最好是TOP20中有17个人运行最新HF版本。
但是现在STEEM还有一些反对的声音,抵制HF21,如果反对者获胜,那么HF21将不被应用。
反对的方式就是不运行v0.21.0,而是运行v0.20.12或者v.20.12之前的版本。也就是说,到了分叉时机:
如果TOP20中运行v0.20.x的见证人多于4人,那么分叉将不被应用;
TOP20中运行v0.20.x的见证人等于4人,那么有一定概率进行分叉;
TOP20中如果运行v0.20.x的见证人小于4人,那么分叉将会被应用。
而目前运行v0.20.x版本的见证人为7人
当然有很大的可能是这些见证人还没来得及更新程序到v0.21.0,硬分叉的时间是27 August 2019 15:00:00 UTC
,倒是也不着急更新。
但是如果这些见证人一直不更新,那么除非票仓变化,导致运行v0.20.x的见证人掉出TOP20,否则分叉有可能就不被应用哦。
另外一个有趣事是,假如TOP20当中有17人运行v0.21.0,但是如果分叉之前选择witnesses时,某(些)个见证人下线,就会导致排名20之后的见证人补进来,如果这(些)个见证人运行的是v0.20.x,并且轮值见证人也运行的0.20.x(大概率事件),那么分叉也不会被应用。
所以HF21硬分叉还是会有些悬念的:
HF之前,TOP20中运行旧版本程序的人会升级到新版本吗?
HF之前,票仓会发生巨大变化,把运行旧版本的见证人踢出去吗?
HF之前的时刻,TOP20见证人中会有人离线吗?
HF之前,反对分叉的人,会把更多运行v0.20.x的见证人顶进TOP20吗?
你怎么看待这问题?也许不到最后一刻,不会见分晓,也许现在某个运行v0.21.0的见证人就是反对派,到时候临时切换呢?
不过我还是倾向于分叉会顺利进行,毕竟STEEMIT的财力在那摆着呢,有钱当然就可以任性喽😀
相关链接
https://steemit.com/~witnesses type in
oflyhigh
and click VOTE
Vote @oflyhigh via Steemconnect
Thank you!
This page is synchronized from the post: ‘HF21悬念’