Solidity
我呼叫 SmartContract Token ERC20,為什麼要顯示雜湊輸出?(Web3 + Metamask + Javascript)
我不知道為什麼會這樣,即使在以前的版本(web3 + Metamask)中可以發出真實數據。但現在用作散列(輸出)。我在下面的程式碼和輸出中使用了範例(以獲取 ERC20 代幣上的 TotalSupply):
const contractInstance = web3.eth.contract(contractAbi).at(contractAddress); const total_supply = contractInstance.totalSupply.getData(); console.log(total_supply);
輸出:0x18160ddd(這是我的問題)
如何顯示真實數據?從某種意義上說,它不會產生散列。謝謝
在 web3.js v0.x 中:
該表達式
contractInstance.totalSupply.getData()
將為您提供對 function 的呼叫的編碼 ABI 數據(字節碼)totalSupply
。為了實際呼叫函式並非同步檢索返回值,您應該使用:
contractInstance.totalSupply.call().then(total_supply => { console.log(total_supply); });
在 web3.js v1.x 中:
該表達式
contractInstance.methods.totalSupply().encodeABI()
將為您提供對 function 的呼叫的編碼 ABI 數據(字節碼)totalSupply
。為了實際呼叫函式並非同步檢索返回值,您應該使用:
contractInstance.methods.totalSupply().call().then(total_supply => { console.log(total_supply); });