# 通货膨胀

# 介绍

POW 共识网络的激励机制十分简明:一旦新的区块产生,那么区块的产生者将会获得一定数量的 token 和累积的交易费作为出块奖励。Plug Chain 是 POS 区块链网络,这里的奖励生成过程跟 POW 区块链网络类似,但是奖励分配机制复杂很多。

POW 网络中,在每个区块生成期间,所有矿工竞争计算工作证明,最快计算出结果的矿工将成为赢家。实际上,所有失败的矿工都没有向优胜者矿工提供任何积极的帮助或合作,他们只是竞争对手。因此,向获胜者矿工授予所有奖励是合理的。但是,在 POS 区块链网络中,我们不能这样做。因为每个块生成过程都是所有验证人和委托人的协作,这意味着所有这些贡献者应该共享出块收益。至于如何将出块奖励分发给贡献者,我们将在 distribution 模块中详细解说。

在 Plug Chain 网络中,奖励有两个来源,一个是区块中打包的交易的交易费;另一个是每个区块中增发的 token,我们把增发的这部分 token 称为通胀。这里,mint 模块负责通胀的计算,并把通胀的 token 添加到奖励池中。

# 计算通胀

# 区块时间

区块时间不是机器时间,因为不同机器的时间不可能完全相同。 他们或多或少一定会有一些偏差,这将导致不确定性。 这里的时间是指BFT时间。 有关详细说明,请参阅 tendermint bft-time (opens new window)

# 通胀率

genesis 中指定的初始通胀率是 13%,这个值可以通过在 governance 中提交参数修改的提议来修改。相关步骤,请查阅 governance

# 通胀计算

通胀计算的公式如下:

blockCostTime  = (当前区块的BFT time) - (上一个区块的BFT time)
AnnualInflationAmount = inflationBasement * inflationRate
blockInflationAmount = AnnualInflationAmount * blockCostTime / (year)

inflationBasement 的值被定义在 genesis 文件中. 默认情况下,genesis 里面写入的值是 15989000000uplugcn(159.89亿个 pc,1 pc 等于 1*10^6 uplugcn)。

假设 blockCostTime 是5000毫秒,通胀比例 inflationRate13%,那么这个块增发的 token 数量是 329000000uplugcn329pc

# 对用户的影响

通胀计算是一个自动过程,没有用户接口能直接干预此过程。每产生一个新的区块,就会增发一定数量的 token,loose tokens 的数量也会因此增加。

这里可以通过 staking 模块命令行和 restful api 来查询总的 loose tokens 的数量:

plugchaind q staking pool

这个接口执行速度比较快,但是不能做默克尔证明,因此如果连接不上可信的全节点,请不要使用此接口。

plugchaind q staking pool --node=<plug_node_url>

示例输出:

bonded_tokens: "100000000000000000000"
not_bonded_tokens: "0"

/staking/pool

Restful API 的用法请参阅 swagger 文档。

如何运行一个 swagger 节点,请参阅 wagger 文档