Solidity

我呼叫 SmartContract Token ERC20,為什麼要顯示雜湊輸出?(Web3 + Metamask + Javascript)

  • September 3, 2019

我不知道為什麼會這樣,即使在以前的版本(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);
});

引用自:https://ethereum.stackexchange.com/questions/74529