I've been getting the "missing trie node" error in the majority of my eth_getBalance requests if I use anything other than the "latest" block or very recent blocks. For example, the request:

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

on the rinkeby network will return the error as 0xf4251 (1000017) is an old block (current is around 1.7M)

Other answers to this question suggets that I cant get the value because the state tree has been pruned so Im wondering if there is a way of getting the full tree? Someone suggested using --synmode=full when starting get, but that didnt work.

Any thoughts? Thanks

2 Answers 2


From trie/errors.go:

package trie

import (


// 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)

You have to download full blockchain.

  • shouldn't synmode=full when running geth do that? thanks
    – Diego
    Feb 14, 2018 at 22:49
geth --rpc --rpcapi db,eth,net,web3,personal,admin,debug --syncmode full --gcmode=archive


--syncmode full and --gcmode=archive will be work

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.