Nach dem Erstellen eines Smart Contracts mit solc. Ich stoße auf einige Probleme und würde einige Hinweise zum Debuggen/Fehlerbeheben lieben.
Beschreibung
$ 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)
Verträge prüfen
> comp.contracts.yoThere
undefined
Wenn ich comp.contracts
es jedoch versuche, wird der gesamte Vertrag zurückgegeben. Was ich gerne machen würde ist comp.contracts.yoThere.bytecode
zB.
Ich weiß nicht, ob der Doppelpunkt vor dem Namen :yoThere
ein Hinweis darauf ist, dass ich etwas falsch gemacht habe:
> comp.contracts
{ ':yoThere':
{ assembly: { '.code': [Array], '.data': [Object] },
// ...
Jede Hilfe oder Hinweise in die richtige Richtung würden sehr geschätzt werden.
Laut github issue 83 für solc-js: „Wenn Sie aus etwas kompilieren, das keine Datei ist, verwendet der Compiler den leeren Dateinamen und fügt ein hinzu, um den :
Dateinamen und den Vertragsnamen zu trennen.“
Dies scheint ab Solc 0.4.9 eingeführt worden zu sein.
Da der Doppelpunkt hinzugefügt wird (wie im Kommentar zur ursprünglichen Frage angegeben), comp.contracts[":yoThere"].bytecode
wird die gewünschte Ausgabe bereitgestellt. Wenn das Hinzufügen des Doppelpunkts nicht erwünscht ist, kompilieren Sie aus einer Datei.
Zeichnete Ogryzek
comp.contracts[":yoThere"].bytecode
liefert, was ich suche. Ich bin mir nicht sicher, warum:
bei der Kompilierung vor dem Vertragsnamen hinzugefügt wird.