Soy un poco novato en javascript y tengo algunas preguntas sobre el uso de web3js y Metamask.
Mi objetivo (por ahora) es mostrar el saldo de éter como se muestra en mi Metamask (donde estoy conectado).
De las preguntas frecuentes de los desarrolladores de Metamask , tomé un trozo de código e hice algunos cambios. Puedo obtener la dirección correcta, pero el saldo es nulo .
Aquí está el código completo:
<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>
El código anterior se muestra en la consola (después de hacer clic en el botón):
Using web wallet
address = 0x4b6efab615a5e2c4002d23318b891d7bf673e1d34
balance=null
Pregunta 1 : ¿Por qué no funciona el código anterior? No recibo errores de sintaxis o "asincrónicos" y Metamask muestra mi saldo correctamente... ?
Pregunta 2 : De las mejores prácticas se establece "agrupar la versión de web3 que se usa durante el desarrollo". Así que descargué web3.min.js y lo "empaquetado" (vea el comentario en el código anterior). Ahora no estoy seguro de si esa implementación se usa realmente bajo el capó. ¿Puedo estar seguro, puedo imprimir la versión web3 más o menos?
Pregunta 1:
La función de devolución de llamada a la que pasa getBalance
toma dos argumentos. El primero es el error que ocurrió y el segundo el resultado. Entonces, por ahora, dado que solo tiene un parámetro para su función, en realidad imprime el error (que es nulo).
Prueba esto:
web3.eth.getBalance(
web3.eth.coinbase,
function tmp2 (error, balance)
{
if (error) console.log("error" + error);
console.log("balance=" + balance);
});
Pregunta 2:
Diría que si incluye el código, usará el que acaba de pasar allí, porque de dónde más debería obtener la dependencia ... Pero para asegurarse de que puede llamar web3.version.api
y asegurarse.
¡Espero que esto responda a tus preguntas!
Ytsen de Bóer
Ytsen de Bóer
Kai Kalberer