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=full
beim Starten von get zu verwenden, aber das hat nicht funktioniert.
Irgendwelche Gedanken? Vielen Dank
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.
geth --rpc --rpcapi db,eth,net,web3,personal,admin,debug --syncmode full --gcmode=archive
beide
--syncmode full und --gcmode=archive werden funktionieren
Diego