Balance gibt Null zurück, zeigt aber Ether mit web3.eth.getBalance auf testrpc

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

Antworten (1)

Wir haben, dass web3.eth.getBalancedas 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;
}
Danke für deine klare Antwort. Das habe ich gesucht.