Después de actualizar a geth 1.4.4, ya no puedo hacer referencia al compilador de geth.
El compilador solc está instalado en /usr/local/bin pero esto es lo que obtengo cuando busco compiladores disponibles:
> eth.getCompilers();
I0520 10:22:45.501340 common/compiler/solidity.go:114] solc, the solidity compiler commandline interface
Version: 0.3.2-7a51852a/Release-Darwin/appleclang/JIT
path: /usr/local/bin/solc
[]
Luego trato de establecer la ruta del compilador nuevamente:
> admin.setSolc("/usr/local/bin/solc")
I0520 10:25:49.234999 common/compiler/solidity.go:114] solc, the solidity compiler commandline interface
Version: 0.3.2-7a51852a/Release-Darwin/appleclang/JIT
path: /usr/local/bin/solc
"solc, the solidity compiler commandline interface\nVersion: 0.3.2-7a51852a/Release-Darwin/appleclang/JIT\n\npath: /usr/local/bin/solc"
Cuando reviso los compiladores nuevamente, todavía obtengo:
> eth.getCompilers();
[]
Obtengo lo mismo usando:
> web3.eth.getCompilers();
[]
He reinstalado go-ethereum, npm.
¿Alguien puede darme una pista de qué hacer o dónde buscar para buscar?
No tuve problemas antes de actualizar a geth 1.4.4
Gracias por adelantado
Fallo de segmentación con la versión de solc 0.3.2-7a51852a/Release-Darwin/appleclang/JIT , corregido con una versión actualizada posterior .
ACTUALIZACIÓN 26/06/2016
Este es un error en el compilador de Solidity.
Aquí está una prueba rápida:
user@Kumquat:~$ echo '' | solc
Unknown exception during compilation.
Ver eth.compile.solidity
fallas con la versión 0.3.5 #2703 de solc , que se vincula a Excepción en compilación desde stdin #651 .
Y el problema Solucionar bloqueo para la entrada de stdin. # 652 se ha solucionado, pero tomará una cantidad de tiempo desconocida (con suerte, corta) para que llegue a los paquetes del repositorio.
Este es el cambio de código para la solución: corrige el bloqueo de la entrada desde la entrada estándar. #652 - Archivos cambiados .
Puedes intentar instalar la versión anterior de solc
.
O una solución ofrecida en el primer enlace de arriba:
Para cualquiera que quiera una solución temporal, puede clonar este repositorio: https://github.com/mattdf/solidity-static y hacer una compilación en docker, luego copiar el archivo solc a su instalación. Hace una compilación compilada estáticamente de solc, por lo que debería funcionar en la mayoría de las distribuciones.
geth
Acabo de verificar por instalación (Linux) y el resultado que obtiene es consistente con el resultado que obtengo, pero el compilador funciona correctamente.
Ejecute la prueba a continuación para verificar si su compilador está configurado correctamente.
Estoy usando el siguiente código:
contract Test {
function double(int a) constant returns(int) {
return 2*a;
}
}
He aplanado el código de arriba para:
> var testSource='contract Test { function double(int a) constant returns(int) { return 2*a; } }'
undefined
He intentado compilar el código usando la siguiente declaración:
> var testCompiled = web3.eth.compile.solidity(testSource);
undefined
Y verificó los resultados de la compilación:
> testCompiled
{
Test: {
code: "0x6060604052602a8060106000396000f3606060405260e060020a60003504636ffa1caa8114601a575b005b6002600435026060908152602090f3",
info: {
abiDefinition: [{...}],
compilerOptions: "--bin --abi --userdoc --devdoc --add-std --optimize -o /tmp/solc935251869",
compilerVersion: "0.3.2",
developerDoc: {
methods: {}
},
language: "Solidity",
languageVersion: "0.3.2",
source: "contract Test { function double(int a) constant returns(int) { return 2*a; } }",
userDoc: {
methods: {}
}
}
}
}
Y si quieres comprobar si el código se ejecuta correctamente:
> var testContract = web3.eth.contract(testCompiled.Test.info.abiDefinition);
var test = testContract.new({
from:web3.eth.accounts[0],
data: testCompiled.Test.code, gas: 2000000},
function(e, contract) {
if (!e) {
if (!contract.address) {
console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");
} else {
console.log("Contract mined! Address: " + contract.address);
console.log(contract);
}
}
})
...
Contract mined! Address: 0x5e3361efa79827d8a53a397b454770c6816585d7
> test.double(5)
10
Si aún tiene problemas, intentemos compilar el código fuente fuera de geth
.
Guarde el siguiente código en Test.sol:
contract Test {
function double(int a) constant returns(int) {
return 2*a;
}
}
Desde su terminal, debería poder ejecutar los siguientes comandos si su compilador de solidez funciona correctamente:
user@Kumquat:~$ solc --bin Test.sol
======= Test =======
Binary:
606060405260728060106000396000f360606040526000357c0100000000000000000000000000000000000000000000000000000000900480636ffa1caa146037576035565b005b604b60048080359060200190919050506061565b6040518082815260200191505060405180910390f35b6000816002029050606d565b91905056
user@Kumquat:~$ solc --abi Test.sol
======= Test =======
Contract JSON ABI
[{"constant":true,"inputs": [{"name":"a","type":"int256"}],"name":"double","outputs":[{"name":"","type":"int256"}],"type":"function"}]
Si los comandos anteriores no producen un resultado similar, hay algo que no está del todo bien con su solc
binario.
web3.js
Tiene un mensaje de error que incluye el texto web3.js
. El problema podría estar en este módulo. Actualizaré cuando haya investigado un poco más.
Estrella de mar
privacidadisahumanright.eth
>
al principio de cada declaración? Este es el aviso engeth
.Estrella de mar
Estrella de mar
privacidadisahumanright.eth
geth
)?Estrella de mar
Estrella de mar
privacidadisahumanright.eth
[]
debe ser como elundefined
mensaje. ¿solc
Desde su línea de comando se ejecuta en absoluto? ¿Sin ningún parámetro? ¿Y con el--help
parámetro?Estrella de mar
privacidadisahumanright.eth
Estrella de mar
Estrella de mar
física
PetrosM