Installieren Sie den Solc-Compiler unter Windows 8

Ich brauche einen Befehlszeilen-Compiler, um ein Expertensystem zu erstellen, das automatisch Systeme mit intelligenten Verträgen erstellt, testet und bereitstellt, die nur auf Metadaten basieren. Ich habe mehrere Tage versucht, Solc zu installieren, ohne Erfolg. Ich gebe zu, dass ich nur durchschnittliche Intelligenz habe, aber ich dachte, der Sinn von Ethereum sei es, normale Menschen zu stärken. Es sollte nicht so kompliziert sein, es sei denn, der Zweck der Komplexität besteht darin, die Anzahl der Personen zu begrenzen, die das Rätsel in einer bestimmten Zeit lösen können. Es fühlt sich an, als würde ich einen Proof of Work machen.

Alles, was ich bisher versucht habe (NPM), ist dokumentiert, aber bevor ich alles hier poste, möchte ich wissen, ob es alternative Compiler gibt, die in einem automatisierten Prozess verwendet werden können, oder ob es eine andere Möglichkeit gibt, solc zu installieren oder es vielleicht aus dem Quellcode zu erstellen. Wenn das Erstellen aus dem Quellcode eine Option ist, brauche ich ein Tutorial, da ich keine Erfahrung mit C++ habe. Ich habe Visual Studio auf meinem Computer installiert, wenn das hilft.

Ganz kurz habe ich versucht, sowohl lokal als auch global von NPM zu installieren, und ich habe versucht geth --solc pathund admin.setSolc('path'). Auf jeden Fall glaube ich nicht, dass das Definieren des Pfads mein Problem ist, da nach der NPM-Installation nirgendwo auf meinem Computer solc.exe installiert ist, die ich finden kann - nur ein Solc-Verzeichnis, das mit Solcjs-Dateien gefüllt ist.

Irgendwelche Ideen würden sehr geschätzt werden Danke, John

Als Randnotiz hatte ich große Schwierigkeiten, eine lokale Blockchain zu erstellen, und ich hatte Schwierigkeiten, Lernressourcen zu finden. Zu diesem Zweck habe ich hier auf GitHub ein Tutorial erstellt, das einen anderen Noob wie mich in kurzer Zeit zum Laufen bringen sollte. Man kann Code aus dem Tutorial ausschneiden und einfügen, um eine lokale Blockchain zu starten, und die hilfreichsten Ressourcen werden indiziert. Ich werde weiter am Index arbeiten, um ihn klarer zu machen und neue Ressourcen hinzuzufügen, sobald sie gefunden werden. Wenn ich herausfinden kann, wie man solc installiert, werde ich etwas Ähnliches schreiben, damit die nächste Person, die vorbeikommt, es leichter haben kann.

Nochmals vielen Dank, John

Hallo zusammen, es ist jetzt einen Tag später und ich habe einige dieser Probleme gelöst.

Weder der Befehl npm install solcnoch npm install -g solctatsächlich installiert solc. Diese Befehle installieren JavaScript-Bindungen für solc.

Besuchen Sie die Seite The NPM für solc . Es ist sehr irreführend – oben steht in großen Buchstaben solc. Aber gleich unten sind zwei Links, wo ich denke, dass man sie finden und finden kann.

Die Links sind hier und hier wiedergegeben .

Das Problem ist, dass ich nicht weiß, wie man Solc von einer dieser beiden GitHub-Seiten installiert, und ich sie daher nicht einmal als Orte erkannt habe, an denen Solc erworben werden kann. Ich weiß immer noch nicht, was ich mit diesen Seiten machen soll.

Keine Sorge, nachdem ich noch ein paar Stunden gegoogelt hatte, fand ich diese Seite mit einem großen Bild mit dem Titel Village Idiot . Ich hoffe, das ist eine Art Insider-Witz und keine Beleidigung für durchschnittliche Leute wie mich, die Hilfe suchen. Wie auch immer, auf dieser Seite ist eine Veröffentlichung einer ausführbaren Datei, die solc zusammen mit der Mix-IDE, AlethZero, geth und eth installiert.

Wenn ich jetzt Geth mit der folgenden Option starte --solc "C:\Program Files\cpp-ethereum\solc", kann ich dann eth.getCompilers()in die Konsole eingeben und sehe [solidity] als zurückgegebenes Ergebnis.

Alternativ kann ich geth ohne die Option solc starten und später den folgenden Befehl in die JavaScript-Konsole eingeben, wenn ich den Compiler verwenden möchte.
admin.setSolc('C:\\\Program Files\\\cpp-ethereum\\\solc')
Beachten Sie, dass die JavaScript-Konsole erfordert, dass drei Schrägstriche verwendet werden, wo normalerweise nur einer vorhanden wäre. Ich habe auf Stack Exchange gelesen, dass dies daran liegt, dass der Schrägstrich in JavaScript ein Escape-Zeichen ist. Beachten Sie auch, dass in diesem Fall einfache oder doppelte Anführungszeichen um den Pfad herum erforderlich sind, da zwischen den Wörtern „Programm“ und „Dateien“ ein Leerzeichen im Pfad steht.

Ich habe noch nicht wirklich versucht, etwas zu kompilieren. Ich melde mich wieder, wenn es Ärger gibt.

In der Zwischenzeit wäre ich dankbar, wenn mir jemand sagen könnte, wie man solc von den folgenden Seiten hier und hier installiert . Ich muss es wissen, weil die Version auf der Village Idiot-Seite vom Juni ist und ich glaube, dass die Seite nicht mehr unterstützt wird.

Nochmals vielen Dank, John

Antworten (2)

Eine relativ einfache Lösung besteht darin, node.js zu installieren und das Solc-npm-Paket zu verwenden. Ich habe es selbst benutzt, als ich anfing, mit Ethereum-Kontrakten zu spielen, und es war ein Kinderspiel, es einzurichten.

Hier sind die Schritte -

  • Installieren Sie die neueste Version von node.js
  • Erstellen Sie einen Ordner für das Projekt
  • Fügen Sie das Solc-Paket zu Ihrer Datei „package.json“ hinzu oder verwenden Sie die folgende Paketdatei:

    { "name": "eth_compiler", "version": "0.0.1", "engines": { "node": ">=7.0.0", "npm": "^3.0.0" }, "dependencies ": { "solc": "^0.4.7" } }

  • Führen Sie npm install im Ordner aus

  • Fügen Sie dem Ordner ein kleines js-Skript hinzu (compile.js) - es erhält den Namen der Vertragsdatei und gibt die benötigten abi/code-Dateien aus.

Hier ist ein Beispiel -

var solc = require('solc');
var fs = require('fs');

var inputFilePath = process.argv[2];
var outputPath = process.argv[3];

// note - using the synchronous version of the file system functions for simplicity and because the async version isn't really needed in this case
var contractSolidity = fs.readFileSync(inputFilePath , 'utf-8');
if (!contractSolidity)
    return console.error('unable to read file: ' + inputFilePath );

var output = solc.compile(contractSolidity, 1);
for (var contractName in output.contracts) {
    var abi = output.contracts[contractName].interface;
    var code = output.contracts[contractName].bytecode;
    fs.writeFileSync(outputPath + '/' + contractName + '.abi', abi, 'utf-8');
    fs.writeFileSync(outputPath + '/' + contractName + '.code', code, 'utf-8');
}
  • Sobald Sie diese Datei haben, können Sie einfach den folgenden Befehl im neuen Ordner ausführen - node compile [inputFilePath] [outputPath]

und es sollte die kompilierten Dateien generieren.

Hinweis: Ich habe es lokal getestet und es geschafft, einen Vertrag zu erstellen, also glaube ich, dass es funktionieren sollte, aber es ist erwähnenswert, dass ich sowohl party als auch cpp-ethereum auf meinem Computer installiert habe (die Parität lief zum Zeitpunkt der Ausführung dieses Skripts nicht). .

Ich habe eine Schritt-für-Schritt-Anleitung hinzugefügt - besser?
Hallo nergall, Es hat alles perfekt funktioniert. Vielen Dank für die ausführliche Anleitung! Ich verstehe noch nicht alles, was du mir gerade gezeigt hast, aber du hast sicherlich meine Welt größer gemacht. Ich werde dies ein paar Tage lang studieren und dann sollte ich einige nachdenkliche Fragen haben, die ich stellen kann. Danach hoffe ich, ein eigenes Tutorial zu schreiben, damit ich mein neues Wissen festigen und mit anderen teilen kann. Nochmals vielen Dank für Ihre Hilfe, John
Super, helfe gerne!
Wenn ich dies ausführe: Ich erhalte eine Fehlermeldung wie „Keine solche Datei oder kein solches Verzeichnis, öffnen Sie ‚C:\Users\...\SmartContracts\Examples\Multiply\Solidity\contracts\build\:MultiplyContract.abi‘ Es scheint, dass ein : hinzugefügt wird vor dem Vertragsnamen?

Die Frage ist bereits als beantwortet markiert, aber ich werde der Vollständigkeit halber einige Details hinzufügen.

1. Sie können die ausführbare Solidity-Datei von ihrer Github-Seite https://github.com/ethereum/solidity/releases herunterladen

  1. Fügen Sie die ausführbare Datei Ihrem Klassenpfad hinzu.

  2. Stellen Sie sicher, dass Sie Visual Studio installiert haben (ich schlage 2015 vor).

  3. Nachdem Sie die ausführbare Datei zum Klassenpfad hinzugefügt haben, öffnen Sie eine CLI und geben Sie solc --version ein. Dies sollte Ihnen die installierte Solidity-Compiler-Version geben.

  4. Starten Sie jetzt geth. Sie müssen das Admin-Modul nicht aktivieren. Da admin.setSolc('') nicht erforderlich ist.
  5. Sie müssen nicht einmal --solc paramater zu Ihrem 'geth start'-Befehl hinzufügen. Geth wird es von Ihrem Systempfad abholen.
  6. Überprüfen Sie nach dem Start von get Ihren Compiler. eth.getCompilers() ["Solidität"]

Alternativ können Sie das Solc Npm-Paket verwenden (IMHO zweitbeste). ODER Sie können Solidity from Source erstellen, wenn Sie ein Mitwirkender sein möchten. Dies erfordert Cmake, Git und Visual Studio.