如果代币的总余额超过了代币的总供应量,会发生啥?
Posted
技术标签:
【中文标题】如果代币的总余额超过了代币的总供应量,会发生啥?【英文标题】:What happens if the total balance of tokens exceeds the totalSupply of a token?如果代币的总余额超过了代币的总供应量,会发生什么? 【发布时间】:2021-07-19 05:30:24 【问题描述】:据我了解,totalSupply 只是一个仅供参考的数字。 它不会对所有余额的总数施加硬性限制,或者是吗?
例子:
function transfer(address receiver, uint numTokens) public returns (bool)
require(numTokens <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender] — numTokens;//Remove This
balances[receiver] = balances[receiver] + numTokens;
emit Transfer(msg.sender, receiver, numTokens);
return true;
如果我要删除减去余额的行,代币只会出现在接收方余额上,但发送方余额不会改变。 如果发生这种情况,现有的总代币将比以前更多。这是真的吗? 我的理解正确吗,余额映射只是余额列表(类似于 C# 字典)?
这对区块链程序员有什么影响吗?
【问题讨论】:
【参考方案1】:如果我要删除减去余额的行,代币只会出现在接收方余额上,但发送方余额不会改变。
没错。
如果发生这种情况,现有的令牌总数将比以前更多。
修正现有代币的总和。
但是 - 代币标准(ERC-20、ERC-721 等)也希望您计算现有代币的总量(通常存储在名为 totalSupply
的属性中)。由于您的 sn-p 不会更新此 totalSupply
,因此其值将变为不真实。
总供应量主要被 Etherscan 等区块链浏览器用于统计目的(计算代币的最大持有者、他们的所有权百分比等)。
当totalSupply()
输出与实际总供应量不匹配时,其他系统(例如去中心化交易所或一般的 dapp)可能会出现意外行为。但这一切都取决于它们的实现,因此没有通用的答案。
【讨论】:
非常感谢您的回答!所以它是“注意你的余额计算,因为它们是正确的符合你自己的利益。”否则“为不可预见的后果做好准备”。 ? @Howie1337 没错以上是关于如果代币的总余额超过了代币的总供应量,会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章