2017年以来,随着区块链项目数量的井喷式上升,人们愈发注意到链与链之间缺乏互连互通的能力,以致成为了一个个孤立的网络,跨链技术应运而生。作为跨链技术明星项目之一 Cosmos,其 Staking 经济收益问题也备受关注。本文将结合 Cosmos 源码就下列问题进行详细解析:
· Staking收益如何产生
· 收益分配规则
· 收益领取机制
整体架构
Cosmos 采用了模块化设计,主要模块在源码 Cosmos-sdk/x 目录下:
Auth:账户和交易的验证和授权管理
Bank :发送交易等
Governance:链上治理和投票
Staking:Bonding、Delegation 相关操作
Slashing:处罚验证人节点相关操作
Mint:Staking token 生产管理
Distribution:交易 Fees,Staking token 分配
本文探讨的三个问题主要涉及 Auth、Mint、Distribution 模块,它们分别负责处理交易费、Token 生产、Token 分配和领取功能。
收益产生
Cosmos 的 Staking 收益由两部分组成:交易产生的 Fees 和基于抵押率的浮动 Token 通胀。每生产一个区块,上述两部分收益都会进入全局收益池。下图为代码层面的调用栈。
Fees 的产生
Fees 产生的目的在于有效限制全节点 State 的增长速度,并限制垃圾交易的发送。验证节点在处理每一笔交易时会将 Fees 添加至 CollectedFees 中。
Token 通胀
Token 通胀机制目的在于:一、针对定制的目标抵押率,允许根据市场需求维持灵活的通胀率;二、在抵押率和流通率之间取得平衡。具体可分为以下三种情况:
· 如通胀率小于目标抵押率(Cosmos 目前为67%),通胀率会持续上升,直至达到最大值(目前为20%);
· 如通胀率达到目前抵押率,则通胀率会保持固定;
· 如通胀率大于目前抵押率,通胀率则会持续下降,直至达到最小值(目前为7%)。
收益分配
每生产一个区块,Cosmos 都会实时结算上一个区块产生的 Token 和 Fees。这些 Token会被分配到三处:上一轮出块人、社区基金池、上一轮验证人。
首先,收益会分配给上一轮 Proposer。Proposer 总收益 = BaseProposerRewards(1%) + BonusRewards(0%-4%)
其中,BonusRewards 取决于上一轮参与验证的 Voting Power 所占的比例。
然后,按照 Voting Power 比例分给所有验证人。
当收益分配至具体验证人时,会根据佣金率来分配委托人和验证人之间的比例。
最后,按照目前2%的比例存入社区基金。
收益领取
除验证人和委托人的主动领取外,以下情况均会触发收益领取:
•bonding、unbonding 或 re-delegating 发生
•验证人改变其佣金率
所有的收益领取必须是全部的收益领取,而非部分领取。