Realicé una nueva instalación de go-ethereum desde la fuente en Ubuntu y Fedora, la inicié y esperaba encontrar Solidity disponible al hacerlo eth.getCompilers()
, pero en su lugar aparece una lista vacía.
Luego instalé Solidity explícitamente, como se describe en el tutorial aquí , reinicié geth
, pero eso no cambió nada. Instalé el paquete para que esté disponible globalmente npm -g
y puedo ver que el paquete está disponible si intento importarlo desde una sesión de nodo de consola.
Tampoco estoy usando el cliente c ++, por lo que no tengo solc
instalado el ejecutable, pero parece que entiendo que no es necesario si realizo la npm
instalación.
¿Qué me estoy perdiendo? Gracias.
eth.getCompilers()
devuelve una lista vacía incluso si está instalado.
Puedes probar :
➜ ~ which solc
/usr/local/bin/solc
entonces en geth
> admin.setSolc("/usr/local/bin/solc")
Después de su edición, si solo desea usar el paquete npm, no podrá compilar en geth, pero aún puede usarlo en un script como se describe en el documento del paquete :
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
ejecutable es solo parte de la distribución del cliente c ++? ¿Necesito instalar los clientes go y c++ si quiero usar Solidity dentro de la geth
consola? Además de eso, la npm
instalación no me da un solc
ejecutable, solo bibliotecas que puedo usar en node.Por lo tanto, parece que el compilador independiente de Solidity solc
solo está disponible como parte de las herramientas de línea de comandos de Ethereum C++.
Esto significa que si desea usar solc
desde adentro geth
, debe instalar las herramientas Go, que le brindan, geth
y las herramientas C ++, que le brindan solc
.
Esto me parece muy extraño, particularmente considerando que las herramientas de C++ son un proyecto secundario que pasó por momentos difíciles y aparentemente se está reiniciando .
Entonces, ¿qué se supone que uno debe usar hoy en día como el principal compilador de Solidity? Quizás la consola de NodeJS .
eur10
eur10
eur10
Gianfranco Cecconi
node
ejecutable puede encontrar Solidity, es que elgeth
ejecutable no usa la variable de entorno NODE_PATH, por lo tanto, no puede encontrar la instalación npm de Solidity.