【问题标题】: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# 字典)?

这对区块链程序员有什么影响吗?

【问题讨论】:

    标签: token solidity cryptocurrency erc20


    【解决方案1】:

    如果我要删除减去余额的行,代币只会出现在接收方余额上,但发送方余额不会改变。

    没错。

    如果发生这种情况,现有的令牌总数将比以前更多。

    修正现有代币的总和。

    但是 - 代币标准(ERC-20、ERC-721 等)也希望您计算现有代币的总量(通常存储在名为 totalSupply 的属性中)。由于您的 sn-p 不会更新此 totalSupply,因此其值将变为不真实。

    总供应量主要被 Etherscan 等区块链浏览器用于统计目的(计算代币的最大持有者、他们的所有权百分比等)。

    totalSupply() 输出与实际总供应量不匹配时,其他系统(例如去中心化交易所或一般的 dapp)可能会出现意外行为。但这一切都取决于它们的实现,因此没有通用的答案。

    【讨论】:

    • 非常感谢您的回答!所以它是“注意你的余额计算,因为它们是正确的符合你自己的利益。”否则“为不可预见的后果做好准备”。 ?
    • @Howie1337 没错
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2016-03-06
    • 2018-11-17
    • 2021-09-01
    • 2018-06-22
    • 2018-05-04
    • 2022-12-23
    相关资源
    最近更新 更多