Я хочу получить возвращаемые данные, записанные в функции Solidity в web3js. Я использую web3.min.js
пакет из трюфельного зоомагазина в качестве библиотеки web3. Все работает нормально, при вызове функции она возвращает данные транзакции, из которых я использовал, web3.eth.getTransactionReciept
чтобы получить детали, и газ также используется. Теперь мне нужны данные, которые возвращают мой метод прочности
function helloworld() public returns (string) {
return "helloworld";
}
JS-часть
<script>
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:7545"));
}
web3.eth.defaultAccount = web3.eth.accounts[0];
console.log('web3.eth.accounts :', web3.eth.accounts);
var walletContractJSONabiGlobal;
$.getJSON('./contracts/Wallet.json',async function(walletContractJSONabi) {
walletContractJSONabiGlobal = walletContractJSONabi;
var walletContract = web3.eth.contract(walletContractJSONabi.abi);
var walletInstance = walletContract.at('0xc74c8d941494495a4f65c42bebc556398e1f028d');
walletInstance.helloworld((err,data)=>{
if (err) {
console.log('err :', err);
} else {
console.log('data :', data);
}
})
})
</script>
я получаю данные в консоли
данные: 0x988d4bd3169a4d752f6e4ac230d01840f2f7b4cc8e87d768a8e41b6fe867740d
Я сделал это web3.toAscii(this transaction is)
, но не получил правильного результата, который ожидается, поскольку это не шестнадцатеричное значение.
При выводеweb3.eth.getTransactionReciept
blockHash : "0x552a93b0035571b93e4a1a89daa445663b0ddb29974078cdf9a250b7f873ca96" blockNumber : 10 contractAddress : null cumulativeGasUsed : 21899 gasUsed : 21899 logs : [] logsBloom : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" status : "0x01" transactionHash : "0x988d4bd3169a4d752f6e4ac230d01840f2f7b4cc8e87d768a8e41b6fe867740d"индекс транзакции: 0
Пожалуйста, помогите в этом Спасибо
Это может быть помечено как дубликат, так что просто чтобы помочь вам. Вы не можете.
Возвращаемые значения доступны только для других контрактов. Как программный клиент, подписывающий и отправляющий транзакцию, вы получаете квитанцию о транзакции, а затем, дождавшись обработки транзакции, вы можете просматривать журналы проверки других функций только для чтения (либо функция контракта или view
, pure
либо вы вызываете его с помощью метода JavaScript .call()
), чтобы узнать, что нового в состоянии контракта. Возвращаемые значения функции изменения состояния недоступны.
Надеюсь, поможет.
Аникет Саха
.call()
но это был неопределенный метод, затем я понял, что использую старый web3, я обновил его, и теперь он.call()
работает.Роб Хитченс
Аникет Саха