Trüffel, Verträge und Bereitstellung

Ich folge diesem Tutorial . Alles hat gut funktioniert. Jetzt möchte ich BalanceOf-Tokens in meiner nodejs-App abrufen, aber ich erhalte immer wieder diesen Fehler:

tokenContract.methods.balanceOf is not a function.

Mein Code ist wie folgt:

var provider = new web3.providers.HttpProvider(node.url);
            var w3 = new web3(provider);

            var tokenContract = new w3.eth.Contract(abi, query.token_address);

            console.log(tokenContract);

            w3.eth.call({
                to: query.pub_address,
                data: tokenContract.methods.balanceOf(query.pub_address).encodeABI()
            }).then(function(balance) {
                console.log(balance);
            }).catch(function(error) {
                console.log(error)
                reject(error)
            })

Wenn ich meine tokenContract-Methoden in der Konsole überprüfe, sehe ich durch Drucken von (tokenContract.methods), dass keine balanceOf-Methode verfügbar ist.

Irgendwelche Ideen?

Haben Sie versucht, tokenContract.balanceOf() separat aufzurufen?
@RomanFrolov ja, ich habe versucht, ich bekomme: tokenContract.balanceOf ist keine Funktion. Wenn ich auf der Konsole drucke: console.log(tokenContract.methods);. Ich sehe die balanceOf-Methode nicht, wenn das das Problem ist, wie füge ich sie hinzu?
verwendest du den richtigen vertrag abi?
@RomanFrolov Ich habe gerade das Problem gefunden, im Tutorial zeigen sie Verträge: Coin und CrowdSale, ich habe den CrowdSale verwendet, der keine Methode getBalance hat, da es anscheinend eine andere Art von Vertrag ist. Kennen Sie den Unterschied?
Sie können den Unterschied hier sehen
Wie Sie beim Token-Vertrag sehen können, können Sie einfach eine Art Währung oder Aktien einsetzen und damit herumspielen. Mit dem Crowdsale-Vertrag können Sie jedoch eine vollständige Spendenaktion mit einer Frist und einer Funktion zum Abheben von Geld im Falle einer Frist durchführen.
@RomanFrolov kannst du das alles als Antwort hinzufügen? Also kann ich es als Lösung auswählen

Antworten (1)

Wie im Kommentarbereich unter der Frage erwähnt, bestand das Problem darin, dass der CrowdSale-Vertrag anstelle des Token-Vertrags verwendet wurde. Der Grund für den Fehler war, dass der Vertrag CrowdSalekeine Methode balanceOf() hat.

Lesen Sie mehr über den Crowd-Sale-Vertrag .

Lesen Sie mehr über den Token-Vertrag .