Problem: Wenn ich ein Konto auf testrpc verwende, erhalte ich 0 als meinen Kontostand innerhalb eines Programms, aber ich erhalte den richtigen Betrag, wenn ich den Kontostand an der web3-Eingabeaufforderung abfrage:
//hier rufe ich eine Funktion (unten gezeigt) von der Befehlszeile aus auf
contractInstance.queryBalance(" 0xf24qf4b3ae667a23f296f48eb92fa619310c95fd ") { [String: '0' ] s: 1, e: 0, c: [ 0 ] }
//Hier liste ich meine Konten auf und zeige nur das erste, um Platz zu sparen
web3.eth.accounts [ ' 0xf24qf4b3ae667a23f296f48eb92fa619310c95fd ', ...
//hier frage ich den Kontostand direkt an der Eingabeaufforderung ab
web3.eth.getBalance(' 0xf24qf4b3ae667a23f296f48eb92fa619310c95fd ') { [String: ' 99999999999984495002 '] s: 1, e: 19, c: [ 999999, 99999984495002 ] }
Hier ist der Funktionsaufruf, den ich in meinem Programm mache:
function queryBalance(address addr) public constant returns (uint balance) {
return balances[addr];
}
Was ich noch probiert habe contractInstance.queryBalance("0xf24qf4b3ae667a23f296f48eb92fa619310c95fd", {from: web3.eth.accounts[0], gas: 4500000}) { [String: '0'] s: 1, e: 0, c: [ 0 ] } und
Umgebung : web3.js-Umgebung auf Mac mit laufendem testrpc
Danke
Wir haben, dass web3.eth.getBalance
das Guthaben in Ether Ihrer Adresse zurückgibt.
Sondern in Ihrer Funktion
function queryBalance(address addr) public constant returns (uint balance) {
return balances[addr];
}
Sie geben den Wert zurück, den Sie in der Saldenzuordnung gespeichert haben. Wenn Sie nichts gespeichert haben, ist der Standardwert Null.
Um das Gleichgewicht in Äther Ihrer Adresse in Solidität zu erhalten
function queryBalance(address addr) public constant returns (uint balance) {
return addr.balance;
}
Jazzmine