硬币总供应量,工作原理以及代码含义是什么?

时间:2017-12-18 21:52:11

标签: bitcoin

我目前正在研究比特币和莱特币,以便更好地了解加密货币和区块链 - 我在代码中发现了一些我有疑问的内容。

在src / amount.h中 - 我看到以下代码......

/** No amount larger than this (in satoshi) is valid.
 *
 * Note that this constant is *not* the total money supply, which in Bitcoin
 * currently happens to be less than 21,000,000 BTC for various reasons, but
 * rather a sanity check. As this sanity check is used by consensus-critical
 * validation code, the exact value of the MAX_MONEY constant is consensus
 * critical; in unusual circumstances like a(nother) overflow bug that allowed
 * for the creation of coins out of thin air modification could lead to a fork.
 * */

static const CAmount MAX_MONEY = 84000000 * COIN;

现在,这里的评论似乎暗示这个代码实际上没有定义货币的总供应量,即使可用的Litecoin数量实际上是84,000,000 ......

所以,我真正的问题是:

真正的总供应量是否在另一段代码中?如果是这样,我错过了什么,我在哪里可以找到这个代码,如果我要编辑这个(我不是 - 但我想了解这里发生了什么) - 我是否需要编辑代码在多个地方?

注意:标记比特币,即使这是问题中的莱茵币,因为litecoin似乎没有stackoverflow标记,并且两个代码库无论如何都是相似的。

编辑:我还想补充一点,我为" 84000000"执行了grep。 - 并且只发现一行代码是相关的...所以我必须遗漏一些东西......

编辑2:根据我所看到的git上的每一枚硬币 - 这是他们在调整总供应量时改变的数字 - 评论是错误的 - 或者我是否误解了它?

1 个答案:

答案 0 :(得分:0)

我意识到这是一个古老的问题,但是由于尚未更新,我将提供答案。

如消息人士所言,MAX_MONEY只是一项健全性检查。如果有人尝试创建一项花费5亿比特币的交易,并且以某种方式设法绕过了所有其他健全性检查,则网络仍会拒绝该交易,因为该金额超过了MAX_MONEY。因此,MAX_MONEY与总供应量没有直接关系,但是正如您所观察到的,许多替代因素会将MAX_MONEY设置为硬币生命周期内的预期总供应量。

对于具有一致奖励方案(例如,每X个区块减半)的纯工作量硬币,可以预先计算总供应量,但是将来的分叉可能会改变这种情况。

对于典型的权益证明或混合工作量证明和权益证明硬币,可以通过模拟来估计最大供应量,但是确切数量将取决于网络活动。

(这假定代码中没有其他部分会在达到限制后切断所有奖励。)