當呼叫solidity函式時,如何從web3js中的事務ID獲取從solidity函式返回的數據?
我想在 web3js 中獲取用solidity 函式編寫的返回數據。我正在使用
web3.min.js
truffle pet-shop 包中的作為 web3 庫。呼叫函式時一切正常,它返回了我用來web3.eth.getTransactionReciept
獲取詳細資訊的交易數據,並且還使用了 gas。現在我想要返回我的solidity方法的數據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:空累積GasUsed:21899 gasUsed:21899日誌:
$$ $$logsBloom:“0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”狀態:“0×01”transactionHash:“0x988d4bd3169a4d752f6e4ac230d01840f2f7b4cc8e87d768a8e41b6fe867740d”transactionIndex:0
請幫忙謝謝
這可能被標記為重複,所以只是為了幫助你。你不能。
返回值僅適用於其他合約。作為軟體客戶端簽署和發送交易,您得到交易回執,然後等待交易被探勘後,您可以只讀方式檢查檢查其他功能的日誌(合約功能是
view
或pure
,或您使用 JavaScript 方法呼叫它.call()
)以發現合約狀態中的新內容。狀態改變函式的返回值是遙不可及的。希望能幫助到你。