首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个令牌的totalSupply静态初始化为5500000000?

为什么这个令牌的totalSupply静态初始化为5500000000?
EN

Ethereum用户
提问于 2019-01-01 07:38:56
回答 1查看 115关注 0票数 1
代码语言:javascript
复制
contract UnixERC20 is StandardToken {
    function() {
        throw;
    }

    string public name;
    uint8 public decimals;
    string public symbol;
    string public version = 'H1.0';

    function UnixERC20() {
        balances[msg.sender] = 5500000000;
        totalSupply = 5500000000;
        name = "UNIWORTH COIN";
        decimals = 0;
        symbol = "UNIX";
    }

    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        if (!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { 
            throw; 
        }
        return true;
    }
}

为什么totalSupply被初始化为5500000000,是否有任何理由预先定义这个值?UNIX令牌与其他令牌有何不同或独特之处?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-01-01 08:48:39

totalSupply的价值是由部署人员根据对稀缺性的一般考虑(理论上说,如果很少有令牌就会更珍贵)、分配(理论上更多的令牌涉及更多的买家并由此创建一个市场)、市场预测(理论上,如果您能够预见市场,您可以理解什么是正确的数字)、错觉(理论上,如果您认为您的令牌将升值到1美元或任何东西,如果您有更多的令牌,您有更多的市场上限,即价值)等等。

您所要求的令牌是从教程中派生并部署的一个简单的erc20令牌,绝对不能重复,因为至少在transferFrom方法中,受重入攻击可能性的影响:

代码语言:javascript
复制
...
if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {

        balances[_to] += _value; <—- // attack!!!

        balances[_from] -= _value;
        allowed[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
...

正如您可能注意到的,它们在减少_from平衡之前增加_to余额,因此如果您使用重复重入调用攻击这里的代码,则可以创建令牌,因为双开销屏蔽被破坏(实际上,您可以在_to余额中多次对令牌进行求和,而不从_from余额中取出它们)。

因此,这被认为是一个简单的练习,由某人做,并尽快被放弃。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/64855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档