无法使用web3js从smartcontract读取数据

问题描述

我无法从智能合约中读取数据

我这里有以下js脚本:(bcc-js.js)

var contract_address = "0x88e304D8638c31DaC3336917bbE4A152927198D8";
var contract_abi = '[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"name":"spender",{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},"name":"epoch","type":"uint256"},"name":"totalSupply","name":"LogRebase","name":"previousOwner","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","name":"from","name":"to","name":"Transfer",{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_",{"internalType":"address","name":"allowance","outputs":[{"internalType":"uint256",{"internalType":"uint256","name":"approve","outputs":[{"internalType":"bool","type":"bool"}],"name":"who","name":"balanceOf","name":"decimals","name":"subtractedValue","name":"decreaseAllowance","name":"addedValue","name":"increaseAllowance","name":"name","outputs":[{"internalType":"string","type":"string"}],{"inputs":[{"internalType":"uint256","name":"supplyDelta","name":"rebase","name":"renounceOwnership","outputs":[],"name":"symbol","name":"transfer","name":"transferFrom","name":"transferOwnership","type":"function"}]';




window.addEventListener('load',async () => {
    // Modern dapp browsers...
    if (window.ethereum) {
        window.web3 = new Web3(ethereum);
        try {
            await ethereum.enable();
            var accounts= await web3.eth.getAccounts();
            var option={from: accounts[0] };
            var contract = new web3.eth.Contract(contract_abi,contract_address);


            var supply = await contract.methods.totalSupply().call();


            //const agiAccountBalance = await agiContract.methods.balanceOf(accounts[0]).call();


            document.getElementById('totalSupply').innerHTML = supply;



            ethereum.on('accountsChanged',async (accounts) => {
              await ethereum.enable();
              var accounts= await web3.eth.getAccounts();
              var option={from: accounts[0] };
              var contract = new web3.eth.Contract(abi,address);
              console.log(accounts[0]);



              var supply = await contract.methods.totalSupply().call();

            })
        } catch (error) {
            // User denied account access...
            console.log(error)
        }
    }
    // Legacy dapp browsers...
    else if (window.web3) {
        window.web3 = new Web3(web3.currentProvider);
        // Acccounts always exposed
        web3.eth.sendTransaction({/* ... */});
    }
    // Non-dapp browsers...
    else {
        document.getElementById('wallet').innerHTML = "Use '<a href='https://metamask.io/' target='_blank' >Metamask</a>' on a Desktop or use <a href='https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp&hl=en' target='_blank'>TrustWallet</a>' on a mobile";

    }
});

我想在UI(index.html)上打印totalSupply

 <div class="col-lg-3 col-md-6">
            <div class="count-box">
              <i class="icofont-simple-smile"></i>
              <span data-toggle="counter-up"><p id="totalSupply">490</p></span>
              <p>Addresses</p>
            </div>
          </div>

运行时出现此错误

TypeError: Cannot read property '0' of undefined
    at bcc-js.js:14

inpage.js:1 Uncaught TypeError: t is not a function
    at inpage.js:1
    at inpage.js:1
    at n (inpage.js:1)
    at inpage.js:1
    at inpage.js:1
    at i (inpage.js:1)
    at inpage.js:1
    at inpage.js:1
    at c (inpage.js:1)
    at inpage.js:1

要在UI上看到totalSupply,我需要做什么?

文件js文件已正确连接到我的UI,我测试了另一个代码,该代码已正常工作

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)