LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > PlatON 的 Staking 玩法揭秘

PlatON 的 Staking 玩法揭秘

2020-06-29 HashQuark 来源:区块链网络



专注隐私计算的明星项目 PlatON今年3月20日开启了“新贝莱世界”测试网,并开启了“环银河拉力赛”活动。活动总共提供了高达500万 LAT(PlatON 主网代币)的总奖励池,在吸引了大量拥有技术实力的验证节点团队的同时,也使测试网的广大持币用户兴趣浓厚——验证节点可通过参与网络的一系列比赛获得可观的奖励,广大测试网的持币人也能通过委托的方式获取主网奖励。


PlatON 的 Staking 收益如何?本文将为读者介绍 PlatON 的 Staking 流程,并结合源码对 Staking 奖励进行分析,涵盖:1、PlatON 网络中的角色;2、验证节点的选举流程;3、委托人的 Staking 奖励;4、结合源码查验证奖励

PlatON 网络中的角色

备选节点候选人

质押一定数量 LAT 到质押智能合约内的 LAT 持有者即为备选节点候选人。

备选节点

抵押(包括委托)排名前101的备选节点候选人为备选节点,备选节点参与每个共识周期的验证节点选举,可获得每个结算周期内发放的 LAT 奖励,即 Staking 奖励。

验证节点

由系统通过 VRF 可验证随机函数从101备选节点中随机选出25个节点作为共识周期验证节点。

委托人

将 LAT 委托给以上节点的 LAT 持有者即为委托人。

验证节点选举流程

质押成为备选节点候选人

LAT 持有者通过质押超过一定量的 LAT 作为保证金成为备选节点候选人,备选节点候选人总数不限。

委托 LAT

LAT 持有者可以将自己的 LAT 委托给备选节点候选人,其中备选节点和验证节点在参与共识的过程中可获得收益。

选举备选节点

每个结算周期的最后一个区块(即结算区块),系统会选取当前排名前101的备选节点作为下个结算周期的备选节点,参与下个结算周期共识。备选节点可获得 Staking 奖励。

选举验证节点

每轮共识需要25个验证节点,系统会通过 VRF 从当前的备选节点中随机选取25个验证节点参与下一轮共识。

共识出块

验证节点轮流成为提议人进行出块,其他验证节点进行区块验证,共同运行 CBFT 协议完成一轮共识(每轮共250个区块),出块节点获得交易手续费和出块奖励。

退出备选节点候选人

在结算周期的结算区块获取新排名,排名在101之后的节点变为备选节点候选人,不再享受 Staking 奖励。如果申请解除质押,将在下一个结算周期淘汰出备选节点候选人列表,并需要冻结一段时间后保证金才退回。如被举报多签且举报属实或持续几个共识轮出块率为0,则节点会立刻被淘汰出备选节点候选人列表。

Staking 奖励

PlatON 采用PPoS共识,委托人将 LAT 委托给备选节点候选人,从而影响备选节点候选人的排名。前101名备选节点候选人可成为每个结算周期的备选节点,并获得 Staking 奖励,同时有机会成为验证节点,参与出块并获得出块奖励和区块内的交易手续费奖励。委托人是维护备选节点候选人列表排名的重要影响因素,为提升排名,吸引委托人进行委托,备选节点候选人需慷慨地对给予其获得系统奖励的委托人分配委托奖励。具体分配给委托人的奖励比例由节点在质押成为备选节点候选人阶段提交,也可以在质押后进行修改,下一个结算周期生效。


委托人奖励包含两种来源:

一、基于委托奖励比例分享的出块奖励:委托的备选节点候选人成为验证节点,参与出块获得出块奖励,并将出块奖励按照该节点的委托奖励比例分享给节点名下的委托人。

二、基于委托奖励比例分享的 Staking 奖励:委托的备选节点候选人成为备选节点,在结算区块获得 Staking 奖励,将 Staking 奖励按照该节点的委托奖励比例分享给节点名下委托人。


委托奖励遵循以下规则:

一、委托奖励结算间隔:每隔一个结算周期结算一次委托奖励。


二、委托奖励范围:锁定一个完整结算周期的委托(有效委托)才能获得委托奖励;任何中途退出的锁定委托、未锁定委托以及节点退出解除锁定的委托都没有委托奖励。


三、委托奖励分配:根据节点名下各委托人之间的有效委托比例分享委托奖励,有效委托越多,委托奖励越多


四、委托奖励领取:委托人可以通过 ATON 客户端主动发起领取交易,可一次性领取所有委托节点名下全部可领取的委托奖励。如全部赎回某节点委托,将自动领取某节点下全部可领取的委托奖励。


五、下述情况下,节点在该结算周期将不会分享委托奖励:

某结算区块时,节点名下无有效委托;

某结算周期内,节点被处罚并强制退出备选节点候选人列表;

节点申请退出备选节点候选人后,在当前结算周期的下一个结算周期不会再分享委托奖励。

激励规则

PlatON 对验证节点有两种奖励方式,对于委托人,PlatON 则根据验证节点设定的“委托奖励比例”发放一定比例的奖励给委托者。下述两种奖励方式都按照设定的比例发放给委托人:


(1)出块奖励

所有参与共识出块的验证节点将会获得所出区块的出块奖励,出块奖励根据随着生产的区块实时发放。奖励池的50%用于区块奖励,总奖励池在之前一年的代币总量的基础按照设定的膨胀率增发。每个结算周期,会根据前一个结算周期的平均出块时间计算当年剩余区块数,并根据当年的奖励余额计算单个区块的出块奖励金额。

当前测试网出块奖励为5.25 LAT/block


(2)Staking 奖励

委托的备选节点候选人成为备选节点,在结算区块获得Staking奖励,将Staking奖励按照该节点的委托奖励比例分享给节点名下委托人。奖励池的50%用于 Staking奖励。每个结算周期,会根据前一个结算周期的平均出块时间计算当年剩余结算周期数,并根据当年的奖励余额计算当前结算周期的Staking奖励,Staking奖励平均分配给当前结算周期的所有备选节点。

Staking 奖励数据

官网浏览器:https://platscan.test.platon.network/?lang=zh


出块奖励:5.176 LAT/块,每个结算周期计算一次,计算公式为br=f*50%/b

其中,f 为当年激励池中剩余资金,b 为根据前一个结算周期的平均出块时间算出的当年剩余应该出的块,50%则表示总奖励池的一半用于出块奖励,另一半为用户质押奖励。按照当前1个/s的出块速度计算,出块奖励大概为3 LAT/block,但是目前的实际奖励为5.17,这是因为测试网当初出块并非1s一个。

质押奖励:质押奖励 869 LAT,每个结算周期计算一次,计算公式为 dr = f * 50%/N

其中,f 为当年奖励池中剩余资金,N 为当前验证节点数,50%则表示总奖励池一半用于质押奖励。不同于多数公链,PlatON 的质押奖励不以节点的质押数量为计——也就是说,质押排名第一和最后的节点的质押奖励是相同的,因此当验证节点自身质押相同且设定的委托奖励相同时,最后一名验证节点的委托者平分的奖励比第一名验证节点的委托者获得的奖励多。

该设计的目的在于避免节点质押过于集中,在保证安全的前提下,选择节点排名相对低的节点进行委托可获得较高的奖励


委托奖励比例:即验证节点承诺的将自己获得的奖励(包括出块奖励和委托奖励)按照多少比例分发给委托者。

例如,HashQuark 委托奖励为50%,即将奖励的一半分给用户。0表示全部奖励归节点所有,100%则表示奖励全部发放给委托人,两个极端值都不利于主网的良性发展


总质押:节点收到的总质押,包括自有质押和用户提供的委托质押。


自有质押:一般来说,自有质押越高,节点自己捆绑的越多,相对更安全。


接受委托:委托者给节点的委托总和


预计节点年化收益率:节点本身的出块奖励和质押奖励,取自近四个计算周期的平均值(若不足四个周期,满足一个即可计算)。

计算公式:节点收益率=[(W1+W2+W3+W4)/(C1+C2+C3+C4)](当前增发周期的结算周期数)100%,其中,W1,W2,W3,W4 和 C1,C2,C3,C4 分别表示节点自身获得的收益和节点自身质押的代币成本。

预计委托年化收益率:委托者最近四个结算周期每份额委托净收益折合的年化收益率,取自近四个周期的平均值(若不足四个周期,满足一个即可计算)。

计算公式:预计收益率=[(W1+W2+W3+W4)/(C1+C2+C3+C4)](当前增发周期的结算周期数)100%。其中,W1,W2,W3,W4 和 C1,C2,C3,C4 分别表示节点委托者获得的收益和委托者自身质押的代币成本。


稳定性:记录区块低出块惩罚次数以及双签触发次数。


出块率:统计节点自身本该出块而实际出块的统计学概率。出块率越高,节点运行越稳定。

代码实现

PlatON对于奖励部分的代码主要在x/reward_plugin.go中,对于节点出块奖励和Staking奖励都是先计算好直接发放到节点的收益账户,而节点分享给委托人的出块奖励和Staking奖励则存放到委托收益池中等待委托用户主动领取。主要集中在EndBlock()方法内部对AllocatePackageBlock()方法、AllocateStakingReward()方法及HandleDelegatePerReward()方法。

单个区块奖励和 Staking 奖励是根据当年剩余出块数量动态调整的。在每个结算周期都会根据上一个结算周期的平均出块时间重新计算当年剩余的区块数和结算周期数,再结合当年激励池中的余额计算出每个结算周期的出块奖励和 Staking 奖励。这一块主要也是在 x/reward_plugin.go 的 EndBlock() 方法中对 CalcEpochReward() 方法调用部分。


出块奖励和 Staking 奖励均从当年的激励池中出,而当年激励池中的余额为当年增发及上一年节点惩罚金填充进来的。增发部分 LAT 流入激励池作为本年出块奖励和 Staking 奖励的逻辑主要也是在 x/reward_plugin.go 的 runIncreaseIssuance() 方法对 increaseIssuance() 方法调用。

在 increaseIssuance() 方法中,我们可以看到当年增发的 LAT 是上一年总量的 2.5%,其中的2%进入激励池。


—-

编译者/作者:HashQuark

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...