Contract-Development
如何使用 web3 和 abi 從智能合約中獲取變數?
我使用 web3.js 並嘗試從智能合約中獲取變數的值。
我的程式碼是:
var contract = web3.eth.contract(abi).at(address);
其中 abi - json 數組和地址 - 有效的工作地址。
abi json對象的一部分是
{ "constant": true, "inputs": [], "name": "weiRaised", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "type": "function" },
當我使用此程式碼時:
console.log(contract.abi[0].abi[6].name);
我在控制台中看到“weiRaised”。
但是如果我使用
console.log(contract.abi[0].abi[6].inputs);
我看到’未定義’。
我做錯了什麼?如何從基於 abi 和 web3.js 的智能合約中獲取變數?
在控制台上列印完東西後,上帝讓我高興地睡覺=)
var contract = web3.eth.contract(abi).at(address); async function getContractPublicVariable() { const weiRaised = await contract.methods.weiRaised.call().call(); }
所以這個想法是
contract.methods.VARIABLENAME.call().call();
Web3.js 會自動將 ABI 函式映射到您從
web3.eth.contract(abi).at(address)
.這意味著您可以通過執行以下操作來訪問變數的值:
let weiRaisedValue = contract.weiRaised.call()