После составления смарт-контракта с помощью solc. Я сталкиваюсь с некоторыми проблемами и хотел бы получить некоторые указатели для отладки/устранения неполадок.
Описание
$ 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)
Проверить контракты
> comp.contracts.yoThere
undefined
Хотя, если я попытаюсь, comp.contracts
он вернет весь контракт. Что я хотел бы сделать, comp.contracts.yoThere.bytecode
например.
Я не знаю, является ли двоеточие перед именем :yoThere
указанием на то, что я сделал что-то не так:
> comp.contracts
{ ':yoThere':
{ assembly: { '.code': [Array], '.data': [Object] },
// ...
Будем очень признательны за любую помощь или указатели в правильном направлении.
Согласно выпуску 83 github для solc-js: «Если вы компилируете из чего-то, что не является файлом, компилятор использует пустое имя файла и добавляет раздельное имя :
файла и имя контракта».
Похоже, это было введено из solc 0.4.9.
Поскольку добавляется двоеточие (как указано в комментарии к исходному вопросу), comp.contracts[":yoThere"].bytecode
он обеспечивает желаемый результат. Если добавление двоеточия нежелательно , скомпилируйте из файла.
Дрю Огрызек
comp.contracts[":yoThere"].bytecode
возвращает то, что я ищу. Я не уверен, почему:
добавляется перед именем контракта при компиляции.