"fehlender Trie-Knoten" beim Anfordern des Gleichgewichts

Ich habe bei den meisten meiner eth_getBalance-Anfragen den Fehler „fehlender Trie-Knoten“ erhalten, wenn ich etwas anderes als den „neuesten“ Block oder sehr aktuelle Blöcke verwende. Zum Beispiel die Anfrage:

"eth_getBalance", ['0x1cbff6551b8713296b0604705b1a3b76d238ae14', '0xf4251']

im rinkeby-Netzwerk gibt den Fehler zurück, da 0xf4251 (1000017) ein alter Block ist (der aktuelle beträgt etwa 1,7 Mio.)

Andere Antworten auf diese Frage deuten darauf hin, dass ich den Wert nicht erhalten kann, weil der Zustandsbaum beschnitten wurde. Ich frage mich also, ob es eine Möglichkeit gibt, den vollständigen Baum zu erhalten. Jemand schlug vor, --synmode=fullbeim Starten von get zu verwenden, aber das hat nicht funktioniert.

Irgendwelche Gedanken? Vielen Dank

Antworten (2)

Von trie/errors.go:

package trie

import (
    "fmt"

    "github.com/ethereum/go-ethereum/common"
)

// MissingNodeError is returned by the trie functions (TryGet, TryUpdate, TryDelete)
// in the case where a trie node is not present in the local database. It contains
// information necessary for retrieving the missing node.
type MissingNodeError struct {
    NodeHash common.Hash // hash of the missing node
    Path     []byte      // hex-encoded path to the missing node
}

func (err *MissingNodeError) Error() string {
    return fmt.Sprintf("missing trie node %x (path %x)", err.NodeHash, err.Path)
}

Sie müssen die vollständige Blockchain herunterladen.

sollte synmode=full das nicht tun, wenn geth ausgeführt wird? Danke
geth --rpc --rpcapi db,eth,net,web3,personal,admin,debug --syncmode full --gcmode=archive

beide

--syncmode full und --gcmode=archive werden funktionieren