2016-02-11 6 views
1

Я несколько новичок в Mix IDE и ethereum (твердость), и у меня есть наивный вопрос. Как код javascript на моей веб-странице «привязан» к коду контракта? Я написал простую веб-страницу, которая принимает значение, но javascript не может передать значение фактическому контракту. Точная линия ошибка:Solidity - «Uncaught TypeError: Невозможно прочитать свойство« контракт »неопределенного«

var result = contracts["MyFirstContract"].contract.reportUser("foo"); 

Точная ошибка Mix дает мне это:

"Uncaught TypeError: Cannot read property 'contract' of undefined."

Так что, по-видимому видит контракты [ "MyFirstContract"] как ноль

Однако, Файл MyFirstContract.sol существует! Как javascript знает, в каком файле контракта я говорю? Кажется, он не появляется в документации, хотя я могу что-то упустить.

ответ

1

Я понял, что случилось. Кажется, что javascript-код напрямую не обращается к файлам .col. Он получает код контракта непосредственно из блока, а не файл .col. Таким образом, вы должны скомпилировать и загрузить контракт в блок-цепочку, прежде чем ваш javascript сможет ее увидеть.

Вы должны добавить транзакцию к тестовой блок-цепочке. В Mix IDE вам нужно нажать кнопку «Добавить транзакцию», доступную на панели «Вид справа» (F7 поднимает панель «Вид справа»). Когда откроется диалоговое окно, нажмите переключатель «Создать контракт» и выберите контракт, который вы только что создали из раскрывающегося меню. Нажмите OK, и Mix создает транзакцию с вашим кодом контракта. Затем попробуйте свой javascript, он должен работать.