Я сделал новую установку go-ethereum из исходного кода на Ubuntu и Fedora, запустил ее и ожидал, что Solidity будет доступен при выполнении eth.getCompilers()
, но вместо этого я получаю пустой список.
Затем я явно установил Solidity, как описано в туториале , перезапустил geth
, но это ничего не изменило. Я установил пакет, который будет доступен глобально, npm -g
и я увижу, что пакет доступен, если попытаюсь импортировать его из сеанса узла консоли.
Я тоже не использую клиент С++, поэтому у меня нет установленного solc
исполняемого файла, но я, кажется, понимаю, что он не нужен, если я выполняю npm
установку.
Что мне не хватает? Спасибо.
eth.getCompilers()
возвращает пустой список, даже если он установлен.
Можешь попробовать :
➜ ~ which solc
/usr/local/bin/solc
потом в гет
> admin.setSolc("/usr/local/bin/solc")
После вашего редактирования, если вы просто хотите использовать пакет npm, вы не сможете скомпилировать его в geth, но все же вы можете использовать его в скрипте, как описано в документации по пакету :
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
исполняемый файл является частью только клиентского дистрибутива C++? Нужно ли устанавливать клиенты go и c++, если я хочу использовать Solidity в geth
консоли? Кроме того, npm
установка не дает мне solc
исполняемый файл, а только библиотеки, которые я могу использовать в node.Итак, похоже, что автономный компилятор Solidity solc
доступен только как часть инструментов командной строки Ethereum C++.
Это означает, что если вы хотите использовать solc
изнутри geth
, вам необходимо установить как инструменты Go, которые дают вам, так geth
и инструменты C++, которые дают вам solc
.
Мне это кажется очень странным, особенно если учесть, что инструменты C++ — это второстепенный проект, который пережил трудные времена и, по-видимому, перезагружается .
Итак, что сегодня предполагается использовать в качестве ведущего компилятора Solidity? Возможно консоль NodeJS .
евро10
евро10
евро10
Джанфранко Чеккони
node
исполняемый файл может найти Solidity, заключается в том, чтоgeth
исполняемый файл не использует переменную среды NODE_PATH, поэтому не может найти установку Solidity npm.