Чтобы развернуть контракт на моей локальной установке, я использую трюфель. Сеть разработки управляется Ganache. Также отправка данных в сеть из приложения A не проблема (с использованием пакетов с трюфелями / трюфелями). Я запускаю это приложение в том же рабочем каталоге, что и компилирую и переношу контракты.
Однако, когда у меня есть другое приложение, подключенное к этой сети, и я пытаюсь получить данные, я сталкиваюсь с проблемами. Это не использует ничего трюфеля, только web3js.
Я получаю данные следующим образом:
let contractInstance = new web3.eth.Contract(abi, result.contractHashes)
if (!contractInstance) handleError('Could not find contract instance... Shutting down')
for (let i in result) {
let internalId = result[i]._id
contractInstance.methods.getStartDate(internalId).call(function(error, result) {
if (error) handleFatalError(error, mongoClient) // This error is triggered
console.log(result)
})
}
Это всегда возвращает меня:
Ошибка: для этого объекта контракта еще не установлен адрес. Сначала укажите адрес.
Из 48609913 я понимаю это происходит, когда вы забываете упомянутый шаг, как описано, однако я не создаю новый контракт, я просто ссылаюсь на счет, уже существующий в сети. Для меня не имеет смысла, если я ссылаюсь на контракт по его адресу, он не знает адрес контракта? Основываясь на этой статье, я попытался использовать пропущенный шаг (след и ошибка) после адрес параметров web3, но то же сообщение об ошибке.
Также используя
call().then(....)
or
call({ from: result.contractHashes }, function(error, result) {....})
не работал. Я довольно невежественен и не могу понять суть проблемы. Я надеюсь, что кто-то из вас, у кого больше опыта, сможет.
result.contractHashes
? - person user94559   schedule 11.07.2018