关于ATON钱包增加委托实时收益的建议和具体实现

使用ATON钱包委托节点挖矿已经两月有余,算得上是一个重度用户,每天都要打开钱包操作几下。虽然钱包现在的功能比较单调,但是整体使用下来,界面很清爽、转账、委托等操作很流畅、易用性方面做得很好,是一款非常容易上手的官方钱包。

但有一点我很介意的就是看不到实时收益。对于用户委托挖矿来说,最关心的就是获取收益,但现在只能每三个小时刷新一次”待领取收益“,对于玩惯流动性挖矿的用户,确实很难接受。

现在市场上最火的Defi应用和流动性挖矿项目,有着超夸张的年化收益率和实时跳动的收益吸引着用户的眼球。对于流动性挖矿来说,大多数都是按资金比例获取挖矿收益,实时收益功能属于简单的技术实现。而Platon/Alaya原创的Giskard共识算法和挖矿机制与流动性挖矿项目有着本质上的区别,之前浏览论坛帖子时候,也看到有用户表示非常想看到每秒收益的变动,那是不是就很难实现呢?我看未必,而且可以很精确的计算出每位用户的实时收益。

我们知道委托收益有以下几个部分组成:

  1. 出块奖励:节点每出一个块可获得出块奖励。

  2. 质押奖励:101个备选节点都会获得质押奖励,不管该结算周期是否有出块,可以简单理解为节点的低保。

  3. 手续费:出块人打包的区块中所有交易手续费,目前可以忽略不计,只给节点不分给用户。  

既然一个结算周期内每一个备选节点都能获得相同的质押奖励。那我们可以简单把一个节点当成一个矿池,质押奖励就是基础奖励,把基础奖励除以10750,就是单个块的收益,再和用户委托占比相乘,就可以计算出单个出块时间每位用户的收益。当节点被选为验证人出块时则要计算增加用户的额外奖励。

举个简单的例子

假设节点A委托奖励比例100%(方便计算),有20000个ATP委托,其中有10000个是用户B委托,另外10000个是用户C委托。

那B每十个出块时间的基础收益为:

(质押奖励 / 10750 * 10 * 10000 / 20000) = 0.0017 ATP

节点A被选为验证人出了十个块,那么B除了基础收益还额外增加的收益为:

(出块奖励 * 10 * 10000 / 20000)= 0.1715 ATP

期间有用户退出委托,比如第1000个块用户C解除委托5000个,那么B的实时收益重新计算为:

(质押奖励 / 10750 * 1000 * 10000/ 15000) +出块奖励 * 10 * 10000 / 15000)= 0.398 ATP

该算法简单来说,就是把节点当矿池,质押收益当成基础奖励按时间比例分配,出块收益当成额外奖励,用户委托的所有节点的实时收益加起来就是该账户的实时总收益。当然具体实现的时候考虑性能不需要追求每秒的收益变动,可以每30/60个出块时间更新一下实时收益,最好像秒表那样数字动态的滚动视觉效果。该算法需要的数据大多数是获取区块浏览器上的实时数据,应该不会增加太多链上的开销。

实现该功能的好处:

  1. 紧跟市场Defi潮流,让小白用户也能直观的感受收益的变动,虽然也是要等结算周期结束才能提取。

  2. 吸引用户、增加用户的粘性,增加ATON的在线用户量,谁不希望盯着自己的收益蹭蹭的往上涨。

  3. 既显示账户每个委托节点的实时收益,也显示每个账户的实时收益。那么当用户有提币需求的话,他们就可以通过该周期节点的收益对比作出判断要解除哪个节点的委托。(不一定是最优解,有可能收益少的节点后面运气好狂出块哈)

以上是我的提议,请官方考虑。

谢谢您的建议,我们已经收录到需求中。

好的,期待早日看到这个功能。