Solidität Web3-Token-Guthaben

Ich verwende Code wie diesen, um mein Ethereum-Guthaben mit web3 zu erhalten

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="./web3.min.js"></script>
    <script type="text/javascript">
        window.addEventListener('load', function () {
            if (typeof web3 !== 'undefined') {
                console.log('Web3 Detected! ' + web3.currentProvider.constructor.name)
                window.web3 = new Web3(web3.currentProvider);
            } else {
                console.log('No Web3 Detected... using HTTP Provider')
                window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
            }
        })
        function getBalance() {
            var address, wei, balance
            address = document.getElementById("address").value
            try {
                web3.eth.getBalance(address, function (error, wei) {
                    if (!error) {
                        var balance = web3.fromWei(wei, 'ether');
                        document.getElementById("output").innerHTML = balance + " ETH";
                    }
                });
            } catch (err) {
                document.getElementById("output").innerHTML = err;
            }
        }
    </script>
</head>
<body>
    <h1>ETH Balance Fetcher</h1>
    <p>Enter your Ethereum Address:</p>
    <input type="text" size="50" id="address" />
    <button type="button" onClick="getBalance();">Get Balance</button>
    <br />
    <br />
    <div id="output"></div>
</body>
</html>

Aber es funktioniert nicht für Token.

Zum Beispiel erstelle ich ERC20 und die Vertragsadresse ist 0xa318948fd693281fa6a95a409b3efb79e228edec(ich füge sie in Metamaske hinzu und sie zeigt mein Token-Guthaben)

Wie kann ich es mit web3 lesen? tnx für die Hilfe

Was meinst du mit "es funktioniert nicht für Token"
0xa318948fd693281fa6a95a409b3efb79e228edec ist meine Token-Adresse, ich habe 100 Token, es zeigt 0
Wenn jemand den obigen Code verwendet, stellen Sie sicher, dass Sie human_standard_token_abi.js einschließen
Dies ist eine separate Frage, bitte machen Sie es so: P
Wenn Sie eine neue Frage haben, stellen Sie diese bitte, indem Sie auf die Schaltfläche „Frage stellen“ klicken . Fügen Sie einen Link zu dieser Frage hinzu, wenn dies hilfreich ist, um den Kontext bereitzustellen. - Aus Bewertung

Antworten (1)

Sie verwenden mein ETH-Balance- Beispiel, das nicht funktioniert, wenn Sie sich einen ERC20-Token ansehen. Dieses Beispiel soll das Ether-Guthaben an einer bestimmten Adresse abrufen.

Stattdessen sollten Sie mein anderes Beispiel ERC-20-Token-Balance verwenden , wo Sie sowohl die Vertragsadresse als auch die Adresse eingeben können, an der Sie den Kontostand der Token überprüfen möchten.

Hier kannst du es live ausprobieren: http://shawntabrizi.com/ethbalance/erc20/

async function getERC20Balance() {
    var address, contractAddress, contractABI, tokenContract, decimals, balance, name, symbol, adjustedBalance
    address = document.getElementById("address").value
    contractAddress = document.getElementById("contractAddress").value
    contractABI = human_standard_token_abi

    tokenContract = web3.eth.contract(contractABI).at(contractAddress)

    decimals = promisify(cb => tokenContract.decimals(cb))
    balance = promisify(cb => tokenContract.balanceOf(address, cb))
    name = promisify(cb => tokenContract.name(cb))
    symbol = promisify(cb => tokenContract.symbol(cb))

    try {
        adjustedBalance = await balance / Math.pow(10, await decimals)
        document.getElementById("output2").innerHTML = adjustedBalance;
        document.getElementById("output2").innerHTML += " " + await symbol + " (" + await name + ")";
    } catch (error) {
        document.getElementById("output2").innerHTML = error;
    }
}
Wow, seine Arbeit! vielen Dank