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?
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;
}
};
Espero que no estés mezclando estos 2 conceptos:
web3.eth.getBalance(YOUR_ADDRESS)
.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.
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();
});
};
Kizito
Xavier Leprêtre B9lab
web3.eth.getBalance()
. Lee mi respuesta de nuevo.