Cómo comprobar el saldo de una cuenta específica (MetaCoin)

Soy bastante nuevo en programación y solidez, todavía estoy en la curva de aprendizaje de las cosas aquí... Así que ahora mismo estoy tratando de verificar el saldo en Wei de la cuenta que envío en el campo de texto (Cuenta). ¿Cómo logro esta funcionalidad?

Controlar

Mi código html para esto en index.html es ;

<h1>Check</h1>
    <br><label for="acctAddress">Account:</label><input type="text" id="acctAddress" placeholder="e.g., 0x93e66d9baea28c17d9fc393b53e3fbdd76899dae"></input>
    <br><br><button id="check" onclick="checkBalance()">Check Balance</button>
    <br>
    <h3>You have <span class="green"><span id="acctBalance"></span> META</span>
    </h3>

La función Metacoin Solidity en MetaCoin.sol es;

function checkBalance(address _account) returns (uint balance) {
        return balances[_account];
    }   

La función de JavaScript en app.js es

function checkBalance() {


    var acctAddress = document.getElementById("acctAddress").value;
    var check_element = document.getElementById("acctBalance");

    setStatus("Retreving Balance... (please wait)");

    web3.eth.getBalance(acctadd) 

      acctAddress = acctadd;


    }

};

Respuestas (2)

Espero que no estés mezclando estos 2 conceptos:

  • El saldo de éter de su cuenta, que recupera con web3.eth.getBalance(YOUR_ADDRESS).
  • El saldo de MetaCoin almacenado en el contrato, que recuperas con contractAddress.checkBalance(YOUR_ADDRESS).

Así que si es tu caso, quieres:

función comprobar Saldo() {
    var dirección de cuenta = document.getElementById("dirección de cuenta").value;
    var check_element = document.getElementById("acctBalance");

    setStatus("Recuperando Saldo... (por favor espere)");

    MetaCoin.deployed().checkBalance(acctAddress)
        .entonces(función(saldo) {
            consola.log(equilibrio.toString(10));
            consola.log(saldo.aNúmero());
        })
        .catch(función(error) {
            consola.error(error);
        });
    }
};

Tenga en cuenta que Truffle usa Ether-Pudding, por lo que sus llamadas de contrato devuelven promesas.

¡Gracias! Logré que mostrara el saldo aunque parece estar mal, envié 5 a la dirección 0xcb439bd73060413b5b24227bd2bad7b4263039b6, o puede ser cosa de conversión?!. También logré agregar un campo que devuelve el hash de la transacción, pero aparece un error. Vea la captura de pantalla aquí -> ![SS_meta.png ]( postimg.org/image/gb1w2wpwp ) y Las funciones del código aquí -> ![bal_tran.png ]( postimg.org/image/zfxaplm5f )
Bueno, por supuesto, estás usando web3.eth.getBalance(). Lee mi respuesta de nuevo.

Esta es la forma en que lo estoy haciendo usando Truffle y la API Web3:

web3.eth.getBalance(address, 'latest', function(err, result) {
    if (err != null) {
        console.error("Error while retrieving the balance for address["+address+"]: "+err);
    }

    var balance = Number(web3.fromWei(result, "ether"));
    console.debug("Balance for address["+address+"]="+balance);
}); 

A continuación encontrará la documentación completa:

web3.eth.getBalance

web3.eth.getBalance(addressHexString [, defaultBlock] [, callback]) Obtiene el saldo de una dirección en un bloque dado.

Parámetros

Cadena: la dirección de la que obtener el saldo.

Número|Cadena - (opcional) Si pasa este parámetro, no utilizará el conjunto de bloques predeterminado con web3.eth.defaultBlock.

Función - (opcional) Si pasa una devolución de llamada, la solicitud HTTP se realiza de forma asíncrona. Vea esta nota para más detalles.


EDITAR: ejemplo completo

HTML

<label for="amount">Address:</label><input type="text" id="address" placeholder="0x***"></input>
<br><button id="send" onclick="checkBalance()">Check balance</button>
<label for="balance">Balance:</label><input type="text" id="balance" disabled></input>

JavaScript

function checkBalance() {
    var address = document.getElementById("address").value;
    web3.eth.getBalance(address, 'latest', function(err, result) {
        if (err != null) {
            console.error("Error while retrieving the balance for address["+address+"]: "+err);
        }

        var balance = Number(web3.fromWei(result, "ether"));
        console.debug("Balance for address["+address+"]="+balance);

        var balance_element = document.getElementById("balance");
        balance_element.innerHTML = balance.valueOf();
    }); 
};
Gracias @gjeanmart ¿Podría mostrarme también el bloque html y el bloque de solidez correspondientes?
La cuenta, el saldo y la transacción son funciones nativas en Ethereum. No necesita un contrato inteligente (en Solidity) para implementar una función GetBalance (agregar) para el código html. Agregué un ejemplo completo que debería funcionar.
¡Gracias! Logré que mostrara el saldo aunque parece estar mal, envié 5 a la dirección 0xcb439bd73060413b5b24227bd2bad7b4263039b6, o puede ser cosa de conversión?!. También logré agregar un campo que devuelve el hash de la transacción, pero aparece un error. Vea la captura de pantalla aquí -> ![SS_meta.png ]( postimg.org/image/gb1w2wpwp ) y Las funciones del código aquí -> ![bal_tran.png ]( postimg.org/image/zfxaplm5f )