如果代币的总余额超过了代币的总供应量,会发生啥?

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 没错

以上是关于如果代币的总余额超过了代币的总供应量,会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 RSK 代币余额转换为 Javascript 数字?

Web3.js查询以太币和代币余额以及转账

Web3.js查询以太币和代币余额以及转账

Web3:从地址中检索 ERC20 代币的余额

Web3 JS 库(& Metamask),获取代币余额

Solana - 如何获得外国账户的代币余额?