Ich habe gerade versucht, ein Trüffelprojekt auf die Beine zu stellen und einen Vertrag zu erstellen, den ich bereits geschrieben habe.
Dabei bekomme ich folgende Fehlermeldung:
/usr/lib/node_modules/truffle/node_modules/solidity-parser/index.js:39
throw e;
^
SyntaxError: Expected "contract", "import", "library", comment, end of input, end of line or whitespace but "p" found. Line: 1, Column: 1
at peg$buildException (/usr/lib/node_modules/truffle/node_modules/solidity-parser/build/imports_parser.js:423:14)
at Object.peg$parse [as parse] (/usr/lib/node_modules/truffle/node_modules/solidity-parser/build/imports_parser.js:3355:13)
at Object.module.exports.parse (/usr/lib/node_modules/truffle/node_modules/solidity-parser/index.js:34:23)
at /usr/lib/node_modules/truffle/lib/profiler.js:134:36
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)
Die erste Zeile, über die sich der Compiler beschwert, lautet:
pragma solidity ^0.4.0;
Soweit ich weiß, gibt es keine Möglichkeit, dass ich diese Linie herauslassen könnte. Gibt es eine Lösung, mit der ich Truffle mit der neuesten Solidity-Version verwenden kann?
Danke im Voraus.
Ich habe gerade Support Solidity 0.4.x hinzugefügt und eine neue Version von Truffle veröffentlicht. Sie können die Ankündigung hier lesen: https://www.reddit.com/r/ethereum/comments/574rvr/truffle_v210_now_with_solc_04x_support/
Prost!
Ich hatte das gleiche Problem, also habe ich auf dem Gitter-Kanal von Truffle nachgefragt, und dies ist die Antwort, die ich erhalten habe:
Truffle wird solc 0.4.x nicht unterstützen, bis Truffle 3.0 veröffentlicht wird, da wesentliche Änderungen an Truffle erforderlich sind.
Hoffe das hilft!
Ich kann es ohne den Code für den Kontext nicht wissen, aber ich würde wetten, dass dies in einem Funktionsmodifikator ist und die Zeile darüber ist _
.
In Solidity >= 0.4 _
muss dahinter ein Semikolon stehen.
dh_;
Sie sollten auch die vorgeschlagene Pragma-Zeile am Anfang Ihrer Dateien hinzufügen, nur damit sie aufhört zu meckern.
Einzelheiten finden Sie in den Versionshinweisen
BEARBEITEN: Die kürzeste funktionierende Lösung ist die Verwendung von Browser Solidity ( https://ethereum.github.io/browser-solidity/ ) und sagen Sie ihm einfach, dass er Solidity 0.3.6 verwenden soll, dann werden die Dinge in Trüffel wieder funktionieren.
Ich kämpfe mit dem gleichen Problem, und schließlich gibt es eine Problemumgehung - ich habe es noch nicht selbst versucht:
truffle migrate
und truffle build
auf Ihr Trüffelprojekt ohne die pragma solidity ^0.4.0;
in Ihrem VertragContract.all_networks
und ändern Sie die Adresse in die Ihres manuell bereitgestellten Vertrags.Auf diese Weise könnten Sie möglicherweise Ihren Trüffel-Build austricksen, um den zuvor gut zusammengestellten Vertrag zu verwenden. Absolut keine Garantie, vielleicht kann jemand mit tieferem Verständnis von all dem sagen, ob dies völliger Unsinn oder eine praktikable Lösung ist.
PS: Kompilieren und Bereitstellen auf die harte Tour: 1. $ sudo apt-get install -y solc
2. Entfernen Sie alle Zeilenumbrüche aus Ihrem Vertragscode (Online-Tools könnten helfen) 3. In geth
: > var myContractSource = *paste contract source without linebreaks here*
4. > var myContractCompiled = eth.compile.solidity(myContractSource)
5. > var myContract = eth.contract(myContractCompiled.theContractNameInTheSolidityCode.info.abiDefinition);
6. wieder ohne Zeilenumbrüche und mit aktiviertem Mining:
var myContractTransaction = myContract.new({
from: eth.coinbase,
data: myContractCompiled.theContractNameInTheSolidityCode.code,
value: 1000000000000000000,
gas: 1000000
},
function(err, contract) {
if (err) {
console.error(err);
} else {
console.log(contract);
console.log(contract.address);
}
});
Die zuletzt zurückgegebene Adresse ist die Adresse Ihres Vertrags.
PPS: Auch hier bin ich mir nicht sicher, aber vielleicht app.js
müssen Sie in den Maßanfertigungen auch (unter contract.all_networks) durch das ersetzen, unlinked_binary
was Sie finden, code:
wenn Sie gerade > myContractCompiled
in geth nach der Definition dieser var. diese werte sehen für mich irgendwie mit der identifikation von verträgen zusammen.
Ich hoffe ich konnte helfen. Warten wir auf das Update von truffle..
zyam
Aniket
BotX
Xavier Leprêtre B9lab
solc --version
es? Wenn ich v0.3.6 verwende, erhalte ich denselben Fehler in derpragma
Leitung.BotX