Syntaxfehler im offiziellen Ethereum ERC20 Code?

Ich kopiere den hier gefundenen Code und füge ihn in eine Datei namens TokenERC20.sol ein : https://www.ethereum.org/token

Wenn ich laufe

truffle compile

Ich bekomme diesen Fehler:

SyntaxError: Expected "contract", "import", "library", "pragma", "using", comment, end of input, end of line, or whitespace but "i" found.
    at peg$buildStructuredError (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:177767:12)
    at Object.peg$parse [as parse] (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:181366:11)
    at Object.parse (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:89808:23)
    at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:57847:36
    at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:50141:5
    at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:66021:16
    at next (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:75933:18)
    at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:50126:7
    at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:96942:5
    at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:75838:16

Weiß jemand woran das liegen könnte?

EDIT Das Problem scheint hier zu sein:

pragma solidity ^0.4.8;

interface tokenRecipient {
   function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public;
}

contract TokenERC20 {
    // Public variables of the token
    string public name;
    string public symbol;
    uint8 public decimals = 18;
    // 18 decimals is the strongly suggested default, avoid changing it
    uint256 public totalSupply;

Wenn ich die Schnittstelle und jede Zeile, die sie verwendet, auskommentiere, wird sie gut kompiliert. Gibt es ein Problem mit der Deklaration der Schnittstelle?

Mit welchem ​​Editor bearbeitest du die Datei? Können Sie Ihre Datei als utf8 speichern und es erneut versuchen?
@Ismael Ich verwende Atom und am Ende der Datei steht bereits utf8
@Ismael Danke für die Hilfe, ich habe die Frage bearbeitet. Ich habe die Zeile gefunden, die das Problem verursacht, aber ich bin mir nicht sicher, wie ich sie umschreiben soll?
Was ist Ihre Solidity-Compiler-Version? Es scheint, dass es 0.4.11 oder höher erfordert (ungeachtet des Pragmas).

Antworten (1)

Schnittstellenverträge wurden in Solidity Version 0.4.11 eingeführt :

Version 0.4.11

Diese Version ... fügt Schnittstellenverträge hinzu und implementiert einige zusätzliche Sicherheitsprüfungen.

Merkmale:

...

  • Schnittstellenverträge unterstützen.

...

Ältere Compiler als 0.4.11 geben den von Ihnen gemeldeten Fehler aus.

Überprüfen Sie Ihre Compiler-Version, aber Ihre pragma solidity ^0.4.8;sieht nicht vielversprechend aus.