Después de compilar un contrato inteligente con solc. Estoy enfrentando algunos problemas y me encantaría recibir algunos consejos para la depuración/solución de problemas.
Descripción
$ node
> var solc = require("solc")
> var src = `contract yoThere {
string public msg;
function yoThere() {
msg = "Hey lol";
}
function greet() constant returns(string) {
return msg;
}
}
`
> var comp = solc.compile(src)
Consultar contratos
> comp.contracts.yoThere
undefined
Aunque, si lo intento, comp.contracts
devuelve todo el contrato. Lo que me gustaría hacer es comp.contracts.yoThere.bytecode
por ejemplo.
No sé si los dos puntos antes del nombre :yoThere
son una indicación de algo que hice mal:
> comp.contracts
{ ':yoThere':
{ assembly: { '.code': [Array], '.data': [Object] },
// ...
Cualquier ayuda o sugerencia en la dirección correcta sería muy apreciada.
De acuerdo con el problema 83 de github para solc-js, "si compila desde algo que no es un archivo, el compilador usa el nombre de archivo vacío y agrega un nombre de :
archivo y nombre de contrato separados".
Esto parece haber sido introducido desde solc 0.4.9.
Dado que se agregan los dos puntos (como se indica en el comentario a la pregunta original), comp.contracts[":yoThere"].bytecode
proporciona el resultado deseado. Si no desea agregar los dos puntos , compile desde un archivo.
dibujó ogryzek
comp.contracts[":yoThere"].bytecode
devuelve lo que estoy buscando. No estoy seguro de por qué:
se agrega delante del nombre del contrato en la compilación.