Я использую трюфельный контракт для соединения между интерфейсом и смарт-контрактом. В настоящее время я могу вызывать метод смарт-контракта и успешно потреблять эфир.
const result = await instance.adoptCreeptomas(
aquaQuantity,
firaQuantity,
aetherQuantity,
gaiaQuantity,
referrer,
{ from: accountAddress, value: ether(sendingEther) }
);
Но перед этим я хочу сначала протестировать метод. Поэтому я перехожу к этому методу:
const data = await instance.adoptCreeptomas.call(
aquaQuantity,
firaQuantity,
aetherQuantity,
gaiaQuantity,
referrer,
{ from: accountAddress, value: ether(sendingEther) }
);
Но при вызове этого я встречаю следующее исключение:
error.js: 38 Uncaught (в обещании) Ошибка: неверный ответ JSON RPC: {"id": 6, "jsonrpc": "2.0", "error": {"code": -32603}}
Я использую ganache для локального блокчейна и метамаску для провайдера. Пожалуйста, помогите мне понять, почему.
Спасибо
Пожалуйста, ознакомьтесь с разницей между transaction
и call
.
Синтаксис .call()
в truffle-contract явно предназначен для вызова , а синтаксис прямого вызова с именем метода :
Мы вызвали функцию sendCoin абстракции напрямую. Это приведет к транзакции по умолчанию (т. е. к записи данных) вместо вызова.
Я могу сказать по сигнатуре вашего метода, что adoptCreeptomas
сохраняются некоторые изменения в сети. Так что просто избавься .call
и посмотри, что произойдет.
штаб-квартира
adoptCreeptomas
сохраняет некоторые данные в блокчейне (а также потребляет эфир). Вот почему я думаю, что мы должны сначала «протестировать» метод. Я основывался на этом: ethereum.stackexchange.com/questions/765/… (рекомендация сначала позвонить, а затем отправить транзакцию)штаб-квартира
а именно
а именно
web3.eth.contract
поддерживает.штаб-квартира
web3.eth.contract
существует. Но я не знаю, как использовать этот метод. Спасибо.штаб-квартира
а именно
а именно