Kann mit Etherscan in Ethereum Wallet erstellt nicht sehr Vertrag abschließen,

Verwenden Sie den folgenden Code und fügen Sie ihn ein, um einen neuen Vertrag bereitzustellen.

Wenn ich versuche, den Code auf Etherscan zu verifizieren, sagt er, dass er nicht mit dem Code des Vertrags übereinstimmt?

Hier ist der Etherscan-Link:

https://etherscan.io/address/0x84f7f794867642a47ce577fe0d9745da6ac37c44

Und hier ist der Code, den ich in den Deployment-Vertragsteil der Ethereum-Brieftasche eingefügt habe.

pragma solidity ^0.4.16;

contract MyKidsEducationFund {
  string public constant symbol = "MKEF";
  string public constant name = "MyKidsEducationFund";
  uint8 public constant decimals = 18;

  address owner = 0x3755530e18033E3EDe5E6b771F1F583bf86EfD10;

  mapping (address => uint256) public balances;

  event Transfer(address indexed _from, address indexed _to, uint256 _value);

  function MyKidsEducationFund() public {
    balances[msg.sender] = 1000;
  }

  function transfer(address _to, uint256 _value) public returns (bool success) {
    require(balances[msg.sender] >= _value);
    require(_value > 0);
    require(balances[_to] + _value >= balances[_to]);
    balances[msg.sender] -= _value;
    balances[_to] += _value;
    Transfer(msg.sender, _to, _value);
    return true;
  }

  function () payable public {
    require(msg.value >= 0);
    uint tokens = msg.value / 10 finney;
    balances[msg.sender] += tokens;
    owner.transfer(msg.value);
  }
}

Antworten (1)

Es ist wichtig, die Compiler-Version abzugleichen und die Optimierung ein/aus genau so auszuwählen, wie alles war, als der Vertrag kompiliert und der Bytecode generiert wurde.

Ihre Verwendung von ^in pragmamacht es etwas zweideutig, da es möglicherweise mit einer späteren Version des Compilers kompiliert wurde.

Mit ein wenig Vermutung bekam ich es zu überprüfen

  • Compiler-Version: v0.4.16+commit.d7661dd9
  • Optimierung aktiviert: 1

Es ist fertig. Keine Garantie ;-)

Ich hoffe es hilft.

Vielen Dank!! Irgendwelche Ideen, wie man das beheben kann? Warnung: Der kompilierte Vertrag ist möglicherweise anfällig für Solidity-Compilerfehler von ZeroFunctionSelector (sehr niedriger Schweregrad).
Danke für's Annehmen. Die kurze Antwort lautet: An einem bereits bereitgestellten Vertrag kann nichts geändert werden. Es ist was es ist. In diesem Fall heißt es in der Beschreibung, dass unter seltenen Umständen eine sorgfältig benannte Funktion anstelle der Fallback-Funktion ausgeführt werden kann. Die Warnung kann Vertragsbenutzern helfen festzustellen, ob Ihr Vertrag versucht, ein Compilerproblem auf hinterhältige Weise auszunutzen.