Compilar contrato inteligente en el navegador de la consola

Yo uso metamask con cromo. En el navegador de la consola cuando ejecuto este código

var source = "" + 
    "contract test {\n" +
    "   function multiply(uint a) returns(uint d) {\n" +
    "       return a * 7;\n" +
    "   }\n" +
    "}\n";
var compiled = web3.eth.compile.solidity(source, function(err,res){
  console.log(err);
  console.log(res);
})

tengo este error:

Error: Error while compiling code.(…)

¿Es una forma de compilar e implementar un contrato inteligente directamente en el navegador de la consola?

Respuestas (1)

Definitivamente puedes compilar solidez de MetaMask.

MetaMask pasa ese contenido a su RPC alojado para su compilación, en este caso, un nodo de paridad.

En este caso, el mensaje de error no es del todo ideal y abriré un error en MetaMask para eso.

Al abrir el proceso en segundo plano de MetaMask, encontré que el error que arroja Parity es "No existe tal archivo o directorio", y no estoy seguro de por qué se generaría, este es un error extraño para obtener algún código de solidez, yo recomendamos pedirle al equipo de Parity un error más descriptivo.

Para obtener el resultado completo, puede ejecutar esto en su consola para simular la misma llamada al backend:

curl -X POST  -H "Content-Type: application/json"  --data '{"jsonrpc":"2.0","method":"eth_compileSolidity","params":["contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"],"id":1}' https://morden.infura.io

Donde puede reemplazar morden.infura.iocon su propio nodo de paridad si lo desea.

Abrí un problema en MetaMask para preservar los errores del compilador y pasarlos al objeto web3 aquí: github.com/MetaMask/metamask-plugin/issues/794