Ich bin ein bisschen ein Javascript-Noob und habe einige Fragen zur Verwendung von web3js und Metamask.
Mein Ziel (vorerst) ist es, die Etherbilanz so anzuzeigen, wie sie auf meiner Metamask (wo ich eingeloggt bin) angezeigt wird.
Aus den FAQ der Metamask-Entwickler habe ich einen Codeschnipsel genommen und einige Änderungen vorgenommen. Ich kann die richtige Adresse abrufen, aber das Guthaben ist null .
Hier ist der vollständige Code:
<html>
<body>
<button id="buttonBalance">Click to get balance</button>
// Bundling my version of web3
<script type="text/javascript" src="scripts/web3.min.js"></script>
<script type="text/javascript">
window.addEventListener("load", function() {
if (typeof web3 === "undefined") {
console.log("No web3 provider found");
} else {
web3 = new Web3(web3.currentProvider);
console.log("Using web wallet");
console.log("address = " + web3.eth.coinbase);
button = document.getElementById("buttonBalance")
button.onclick = function tmp()
{
web3.eth.getBalance(
web3.eth.coinbase,
function tmp2 (balance)
{
console.log("balance=" + balance);
});
};
}
}) </script>
</body>
</html>
Der obige Code wird in der Konsole angezeigt (nachdem Sie auf die Schaltfläche geklickt haben):
Using web wallet
address = 0x4b6efab615a5e2c4002d23318b891d7bf673e1d34
balance=null
Frage 1 : Warum funktioniert der obige Code nicht? Ich erhalte keine Syntax- oder "Async"-Fehler und Metamask zeigt mein Guthaben korrekt an ... ?
Frage 2 : Aus den Best Practices geht hervor, „die Version von web3 zu bündeln, die während der Entwicklung verwendet wird“. Also habe ich web3.min.js heruntergeladen und "gebündelt" (siehe Kommentar im obigen Code). Jetzt bin ich mir nicht sicher, ob diese Implementierung tatsächlich unter der Haube verwendet wird. Kann ich sicher sein, kann ich die web3-Version oder so ausdrucken?
Frage 1:
Die Callback-Funktion, an die Sie übergeben, akzeptiert getBalance
zwei Argumente. Das erste ist der aufgetretene Fehler und das zweite das Ergebnis. Da Sie also vorerst nur einen Parameter für Ihre Funktion haben, geben Sie tatsächlich den Fehler aus (der null ist).
Versuche dies:
web3.eth.getBalance(
web3.eth.coinbase,
function tmp2 (error, balance)
{
if (error) console.log("error" + error);
console.log("balance=" + balance);
});
Frage 2:
Ich würde sagen, wenn Sie den Code gebündelt haben, wird er den Code verwenden, den Sie gerade dort übergeben, denn woher sollte er sonst die Abhängigkeit abrufen ... Aber um sicherzugehen, können Sie anrufen web3.version.api
und sich vergewissern.
Hoffe das beantwortet deine Fragen!
Ytsen de Bur
Ytsen de Bur
Kai Kälberer