O哥闲扯淡:SP 代理回收要多久?

今天一个朋友问我:“O哥O哥,SP代理多长时间才能收回来啊?” 其实这个问题我一点也不关心,因为我也不用呀(代理出去一点电也不着急回收),那回收耗时对我而言就是浮云啊。但是既然别人问到了,就研究研究吧。

那今天就来扯扯SP 代理回收要多久?

(图源 :pixabay)

安全提示:O哥闲扯淡系列本就是闲扯淡,诸位千万别当真!

SP代理回收

SP代理功能以前没啥介绍啦,这里就不赘述了,感兴趣的自己去找找看喽。

那么什么是SP代理回收呢?简单来讲,我代理给你1000 SP,现在想取消代理了,或者想改成代理500SP,那么就要收回多余的部分,这个功能我称之为SP代理回收。

你可能会问,这有啥啊,不就是加减法嘛,比如代理1000 SP变成 代理500 SP,那就收回500SP好了。最初我也是这样想的,事实也没有啥出入,但是关键的问题是:SP代理回收不是即时到账的

vesting_delegation_expiration_object

既然SP代理回收不是即时到账,那要多久呢?

社区中流传较广的回答是普通SP代理取消(或调整)后7天到账,创建账户代理取消(或调整)后30天到账,事实真的如此吗?让我们从代码上找找看,是否如此。

首先,SP代理创建和取消代理在STEEM区块链上都是一个操作, 都是delegate_vesting_shares_operation操作,而SP代理创建还有一种方式是account_create_with_delegation_operation,亦即创建账户并代理SP。

因为我们要研究的是取消时间,所以来看看取消是咋处理的,所谓的取消实际上就是减少代理了。相关代码如下:

其中核心内容是创建了一个vesting_delegation_expiration_object,而和时间有关的是这句啦:

obj.expiration = std::max( _db.head_block_time() + STEEM_CASHOUT_WINDOW_SECONDS, delegation->min_delegation_time );

当这个对象超时,代理SP的差额就会返还到对应账户,亦即回收啦。从代码我们可以看出来,它取_db.head_block_time() + STEEM_CASHOUT_WINDOW_SECONDSdelegation->min_delegation_time这两者的最大值。

delegation->min_delegation_time

那么delegation->min_delegation_time又是啥呢?

在创建SP代理(delegate_vesting_shares_operation)时:

(调整时不修改)

在创建账户并代理SP(account_create_with_delegation_operation)时

代理回收到账时间

通过上述介绍我们知道,取消(或减少)SP代理,到账时间是_db.head_block_time() + STEEM_CASHOUT_WINDOW_SECONDSdelegation->min_delegation_time这两者的最大值。

这其中涉及两个常量

  • STEEM_CASHOUT_WINDOW_SECONDS
  • STEEM_CREATE_ACCOUNT_DELEGATION_TIME

到此,我们不难得出SP代理的回收时间了。

结论

不多写了,直接上结论:

  • 普通SP代理操作,代理回收(取消或减少)到账时间为操作7天之后
  • 创建账户并代理,代理回收到账时间如下:
    • 创建账户并代理起23天之内回收,创建账户并代理起30天之后到账
    • 创建账户并代理起23天以上回收,回收操作7天之后到账

也就是说创建账户并代理,(SP)回款最短期限是创建并代理起30天。社区中流传较广的回答:创建账户代理取消(或调整)后30天到账 是不精确的说法

H2
H3
H4
3 columns
2 columns
1 column
29 Comments