最佳做法建议:
如果使用不同的变量来保存某些供应,而不直接保存ERCToken变量中的所有令牌,那么重写ERCToken的ERCToken()是否可以接受?
例子:.
uint _extraSupplyForGivingAway = 1e27; //decimal 1e18 * 1M just an example
function totalSupply() public view override returns(uint totalSupply){
totalSupply = super.totalSupply() + _extraSupplyForGivingAway);
return (totalSupply);
}
契约的总价值不仅是_totalSupply,还包括_totalSupply和额外的令牌。
问:社区和/或交易所是否认为这是可以接受的?
发布于 2022-10-24 18:51:14
这里有两个不同的问题。其一,你是否符合EIP-20 (ERC-20)的标准,这将为整个社区所理解?另一个问题是,这是业务逻辑的合理实现吗?
后一个问题超出了这里的范围,因为你还没有提供足够的信息。所以我会先讲,这就是你想知道的。
我解释这一点的原因是因为您专注于实现细节,但是ERC20是一个接口标准,所以它一般不会规定应该如何实现。
就totalSupply而言,所有标准上说都是:
totalSupply 返回总令牌供应。
function totalSupply() public view returns (uint256)
如果不清楚这意味着什么,EIP将链接到OpenZeppelin合同作为示例实现,其中包括:
/**
* @dev Total number of tokens in existence
*/
function totalSupply() public view returns (uint256) {
return _totalSupply;
}因此,只要返回造币标记的总数,就可以了。如果在内部将其计算为其他两个私有变量的之和,这并不重要。从您所写的内容来看,我确实对您的实现有一些挥之不去的疑虑,但正如我所说,这是超出范围的:)
我不愿再加上这个,可能会把水弄得浑浊,但是..“存在的标记”有点含糊不清。有时,人们有自己的刻录功能,将其实际转移到零地址(而不仅仅是事件),有效地将其从循环供应中移除,并相应地调整总供应量。因此,它们的totalSupply将返回仅由非零地址持有的令牌数。封锁探险者可能解释这一点,也可能不解释。除非你知道自己在做什么,否则我不会这么做的。
https://stackoverflow.com/questions/74184527
复制相似问题