Contract-Development

為什麼這個token的totalSupply靜態初始化為5500000000?

  • January 1, 2019
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 令牌與其他令牌有何不同或唯一性?

totalSupply 的值只是由部署者根據稀缺性(理論上如果存在的代幣很少,它們更珍貴)、分配(理論上更多的代幣涉及更多的買家,這會創造一個市場)、市場的一般考慮來選擇預測(理論上,如果你能預見市場,你就能理解正確的數字),幻覺(理論上,如果你認為你的代幣將升值 1 美元或其他任何東西,如果你有更多的代幣,你就有更多的市值,即值)等等。

您要求的令牌是從教程派生並部署的簡單 erc20 令牌,絕對不可推薦,因為至少在 transferFrom 方法中受到重入攻擊可能性的影響:

...
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);
...

您可能會注意到,它們會先增加 _to 餘額,然後再從餘額中減少 _,因此,如果您在此處使用重複呼叫可重入攻擊程式碼,則可以創建令牌,因為雙花防護已被破壞(實際上,您獲得了反复求和令牌在 _to 餘額中而不將它們從 _from 餘額中取出)。

所以它被認為是某人做的一個簡單的練習,盡快放棄。

引用自:https://ethereum.stackexchange.com/questions/64855