有关Power UP:吓人巴拉的命令行钱包

因为抄底操作抄到了山腰,看样子一时半会儿没法解套卖出,所以这两天从交易所提回来数万个HIVE,毕竟币还是放自己钱包里安心一些。

image.png
(图源 :pixabay)

很多人可能笑我杞人忧天胆小如鼠,可是想想我死在ZB交易所的币,就觉得谨慎一些还是没错的。

话说币回钱包后,我就纠结如何处理比较好,要么拿来做交易机器人?想想当年我做了一个交易机器人,一周时间就帮我赔掉约30W人民币,哎,这也赔不起呀,还是别挑战了。

另外一个思路就是Power UP,毕竟HP越高,点赞收益越多,也算是很好的投资方式了。不过我还要等价回暖出掉换取生活费买大米白面呢,最终决定,Power UP一部分,留一部分。

命令行钱包

于是打开命令行钱包,准备开始操作,准备先把零头都Power UP了,不过写指令时,鬼使神差地把最后一个是否广播指令写成false

transfer_to_vesting oflyhigh oflyhigh "3693.270 HIVE" false

或许我潜意识中就是想测试一下指令有没有写错,毕竟万一写错指令,把几千个HIVE弄丢,就悲催了。

执行上述指令后,提示信息如下:

Reveal spoiler

image.png

乍一看,可能没啥异常,可是仔细瞧瞧,咦,怎么"to": "",,这地方不也应该是我自己嘛?怎么变成"",这是把我的HIVE Power UP给谁了?莫非是给null账户了?不过想想也不对,毕竟""null明显也不一样。

苦思冥想,不得其解,还是直接小额测试一下吧,于是输入如下指令:

transfer_to_vesting oflyhigh oflyhigh "0.270 HIVE" true

只Power UP了0.270 HIVE,这样即便弄丢了,我也不会心疼。

提示信息还是一样,"to": "",

Reveal spoiler

image.png

区块链浏览器

在区块链浏览器上看一下,可以看到如下一组信息:

Reveal spoiler

1671266929726.png

这样看来,大抵应该没有转到其它账户或者转丢。

点开区块链浏览器,看一下原始的交易信息:

Reveal spoiler

image.png

和我命令行钱包里展示的信息一样,为啥不好好地弄成"to": "oflyhigh",呢?那样看着多让人安心。

通过区块链浏览器,我又看一下这个块中对应的虚拟操作,找到如下信息:

Reveal spoiler

1671267175170.png

结论是,"to": "",代表的就是Power UP给自己,也就是说to=from

代码核实

尽管得出上述结论,也确定了我Power UP操作是安全的,但是还是很好奇为啥会有这种效果呢?

于是去看了一下HIVE的源代码,和Power UP相关的代码在hive_evaluator.cpp文件中,部分代码如下:

  const auto& from_account = _db.get_account(o.from);
  const auto& to_account = o.to.size() ? _db.get_account(o.to) : from_account;

注意第二句,这是一个问号表达式(也叫问好条件运算符)。

假设有如下表达式:

Exp1 ? Exp2 : Exp3;

代表的意思是,如果Exp1为真,则这个表达式值为Exp2;反之则这个表达式值为Exp3。

对应到我们上述代码中,亦即判断o.to.size()是否为真,就是to的长度,如果to=="",长度当然为零啦,而0代表的是false,所以当to=="",to_account=from_account

这就解释了为啥,operation中"to": "",我的HIVE也正确地Power UP到我的账户上啦。

结论

所以无论是小额测试后在区块链浏览器中查看结果,还是直接分析代码,都证实了,命令行钱包给自己Power UP时,把to写成""是没有问题的。

不过我还是想不通,直接在operation中把to写成oflyhigh,多好,代码中又少一层判断,何乐而不为呢?

改天试试用Python广播一下完整的交易,看看是否正常。至于今天,我被命令行钱包的Power UP吓到了,我先去喝口酒,刷会抖音,压压惊。

Sort:  

O哥你搞这么复杂,会不会有新人误以为power up是一件自己无法理解更没能力操作的事😂
(还是说在自己钱包里想要power up只能这么操作😳)

命令行钱包里才这样
一般情况大家都会用网页钱包

看来我power up是对的 虽然币价一直在跌

就靠O婶来拉盘啰