Ich versuche, einen Vertrag zu überprüfen, den ich kompiliert und mit Etherscan im Netzwerk bereitgestellt habe . Der Vertrag wurde mit Truffle erstellt. Wie finde ich genau heraus, welche Version des Solidity-Compilers auf Etherscan auszuwählen ist?
Ich laufe Truffle 3.4.11
und laufe gerade: truffle version
Gibt mir auch die Solidity-Version:
truffle version
Truffle v3.4.11 (core: 3.4.11)
Solidity v0.4.15 (solc-js)
Ich habe es geschafft, einen hacky Weg zu finden, dies zu tun. Hinweis - Ich suchte nach mehr als nur der Version von solc. Ich habe nach dem tatsächlichen Build des Compilers gesucht, den solc verwendet (dh der verwendete Commit, die Night-Build-Nummer usw.), damit ich ihn auf EtherScan auswählen konnte .
Ich habe Trüffel global installiert, also habe ich ausgeführt which truffle
, was es mir ermöglichte, schließlich (nach Symlinks) zu finden, wo Trüffel auf meinem Mac gespeichert war:/Users/username/.nvm/versions/node/v7.7.3/lib/node_modules
Von hier aus war es leicht ausfindig zu machen, wo auch die von Trüffel verwendete Solc-Installation aufbewahrt wird. Relativ zum vorherigen Pfad, in dem es sich befinden würde./truffle/node_modules/solc
An dieser Stelle - wenn Sie nur die Version des Solc-Pakets wollen, können Sie hineinschauenpackage.json
Wenn Sie weiter gehen und die spezifische Compiler-Version finden möchten (wie ich), dann werfen Sie einen Blick hinein wrapper.js
und suchen Sie nach der var version
Variablendeklaration. Es stellt sich heraus, dass dies eine Funktion ist, die den Namen der verwendeten Compiler-Version zurückgibt. Einfach console.log(version());
in der nächsten Zeile und beim nächsten Ausführen truffle test
wird truffle compile
der Solidity-Compiler-Build in Ihre Konsole ausgegeben. Bei mir sah das so aus:
var version = soljson.cwrap('version', 'string', []);
console.log(version());
Denken Sie daran, die Datei wrapper.js in ihren ursprünglichen Zustand zurückzusetzen, nachdem Sie die benötigten Informationen erhalten haben.
Hinweis: Dies ist eine sehr hackige Art, dies zu tun. Es gibt wahrscheinlich einen besseren Weg, aber es war die erste Methode, über die ich gestolpert bin. Selbst dann - es hat mir sowieso nicht einmal geholfen, den Vertrag auf Etherscan zu verifizieren.
Der einfachste Weg, um die Compiler-Version mit Truffle zu erhalten, besteht darin, sie in Ihrem Projektverzeichnis ./build/contracts/YourContractName.json
am Ende der Datei zu finden. Es sieht aus wie,
"compiler": {
"name": "solc",
"version": "0.4.18+commit.9cf6e910.Emscripten.clang"
}
Sie können sich die Datei ansehen ./node_modules/solc/package.json
und sehen, "solc@^x.y.z"
wo x.y.z
die Versionsnummer ist, die verwendet wird.
Wenn Sie npm mit dem Flag -g installiert haben, können Sie dies tun (lassen Sie das -g weg, wenn Sie es lokal installiert haben).
$ npm -g ls | grep solc └─┬ solc@0.4.18
Das sollte deine Version sein.
Eladleb