Was ist der Standardwert für den zweiten Parameter von eth_getBalance(), falls nicht angegeben?

Es ist in der Dokumentation nicht klar , aber diese Funktion funktioniert, wenn der 2. Parameter nicht übergeben wird. Was ist der Standardwert, wenn nicht bestanden?

Antworten (2)

Verhalten, das möglicherweise nicht clientübergreifend unterstützt wird

Standardmäßig wird der latestBlock verwendet, was bedeutet, dass eth_getBalanceder Kontostand gemäß dem zuletzt abgebauten Block, den der Client/Knoten hat, zurückgegeben wird. Der latestBlock ist äquivalent zu eth_blocknumber.

Verhalten nach JSON-RPC spec

Sie haben Recht, dass gemäß der JSON-RPC-Spezifikation der zweite Parameter erforderlich ist. Technisch gesehen sollten alle Clients die Spezifikation implementieren, aber einige Clients sind nicht 100% konform mit der Spezifikation (und Fehler sollten gemeldet werden). Bei der Verwendung eth_getBalanceempfiehlt es sich, ihn gemäß der JSON-RPC-Spezifikation aufzurufen, da es keine Garantie dafür gibt, dass alle Clients mit dem einzelnen Parameter umgehen können. Die Einzelparameteranforderung funktioniert möglicherweise mit EthereumJ, funktioniert jedoch möglicherweise nicht mit Geth oder cpp-ethereum.

Vergleichen Sie dies mit web3.eth.getBalance, wo der zweite Parameter tatsächlich optional ist.

Zumindest für die Implementierung von EthereumJ (dh Java) gibt es 2 Versionen der Funktion: eine, die die beiden in der Dokumentation erwähnten Argumente akzeptiert, und eine, die nur das erste der beiden Argumente (dh die Adresszeichenfolge) akzeptiert.

Wenn Sie nur die Adresszeichenfolge übergeben, wird die Version mit einem Argument aufgerufen.

Die Java-Implementierung ist unten. Es zeigt, dass das zweite Argument standardmäßig auf "neueste" eingestellt ist.

Siehe JsonRpcImpl.javafür den Code.

   public String eth_getBalance(String address) throws Exception {
        String s = null;
        try {
            return s = eth_getBalance(address, "latest");
        } finally {
            if (logger.isDebugEnabled()) logger.debug("eth_getBalance(" + address + "): " + s);
        }
    }

Bearbeiten: Siehe Antwort von Eth für Ratschläge zu anderen Clients.