Ich habe eine Neuinstallation von go-ethereum aus der Quelle auf Ubuntu und Fedora durchgeführt, es gestartet und erwartet, Solidity verfügbar zu finden, wenn ich tue eth.getCompilers()
, aber ich erhalte stattdessen eine leere Liste.
Ich habe Solidity dann explizit installiert, wie im Tutorial hier beschrieben , neu gestartet geth
, aber das hat nichts geändert. Ich habe das Paket so installiert, dass es global verfügbar ist, npm -g
und ich kann sehen, dass das Paket verfügbar ist, wenn ich versuche, es aus einer Konsolenknotensitzung zu importieren.
Ich verwende den C++-Client auch nicht, daher habe ich die solc
ausführbare Datei nicht installiert, aber ich scheine zu verstehen, dass sie nicht benötigt wird, wenn ich die npm
Installation durchführe.
Was vermisse ich? Vielen Dank.
eth.getCompilers()
gibt eine leere Liste zurück, selbst wenn es installiert ist.
Du kannst es versuchen :
➜ ~ which solc
/usr/local/bin/solc
dann in geth
> admin.setSolc("/usr/local/bin/solc")
Wenn Sie nach Ihrer Bearbeitung nur das npm-Paket verwenden möchten, können Sie es nicht in Geth kompilieren, aber Sie können es dennoch in einem Skript verwenden, wie in der Paketdokumentation beschrieben :
var solc = require('solc');
var input = "contract x { function g() {} }";
var output = solc.compile(input, 1); // 1 activates the optimiser
for (var contractName in output.contracts) {
// code and ABI that are needed by web3
console.log(contractName + ': ' + output.contracts[contractName].bytecode);
console.log(contractName + '; ' + JSON.parse( output.contracts[contractName].interface));
}
solc
ausführbare Datei nur Teil der C++-Client-Distribution ist? Muss ich sowohl den go- als auch den c++-Client installieren, wenn ich Solidity in der geth
Konsole verwenden möchte? Darüber hinaus npm
gibt mir die Installation keine solc
ausführbare Datei, sondern nur Bibliotheken, die ich in node.Es sieht also so aus, als ob der eigenständige Solidity-Compiler solc
nur als Teil der Ethereum C++-Befehlszeilentools verfügbar ist.
solc
Das bedeutet, dass Sie, wenn Sie von innen verwenden möchten, geth
sowohl die Go-Tools installieren müssen, die Ihnen geben, als auch geth
die C++-Tools, die Ihnen solc
.
Das sieht für mich sehr seltsam aus, insbesondere wenn man bedenkt, dass die C++-Tools ein sekundäres Projekt sind, das einige harte Zeiten durchgemacht hat und anscheinend neu gestartet wird .
Also, was soll man heute als führenden Solidity-Compiler verwenden? Vielleicht die NodeJS-Konsole .
eur10
eur10
eur10
Gianfranco Cecconi
node
ausführbare Datei die Umgebungsvariable NODE_PATH nicht verwendet und daher die npm-Installation von Solidity nicht finden kann.geth