6

I'm trying to trace some transactions and I'm getting the "Missing trie node" warning only on some specific blocks, but not on others

I've read a solution that suggests to delete the chaindata folder but I wouldn't want to do that as it took forever to download in the first place.

Is there a way, though a low level API, to force the resync / re-download ONLY of the specific blocks that cause the Missing trie node problem?

3
  • i got the error repeatedly twice ..on third time it started syncing. I had the node shut down for 4/5 days so it missed to sync during that period, may be thats that cause the problem?
    – kahmed
    Commented Jun 1, 2017 at 4:00
  • If you have a NEW question, please ask it by clicking the Ask Question button. If you have sufficient reputation, you may upvote the question. Alternatively, "star" it as a favorite and you will be notified of any new answers.
    – q9f
    Commented Jun 1, 2017 at 10:08
  • does my reply looks like a question to you? that was another answer and that worked for me .
    – kahmed
    Commented Jun 2, 2017 at 18:07

2 Answers 2

2

You may be able to export and import your blocks as explained in after --fast sync in geth is there a way to rebuild the old states?:

PS: You don't necessarily need to redownload the chain, you could export it with geth export chain.dat and then geth --datadir=somehwere-else import chain.dat. But in general sync time is limited currently by import/processing time, not download bandwidth, so it won't make much of a difference.

7
  • thanks. will try that out. What is unclear is that I should import again the chain.dat that I've exported in the first step, or should I import another chain.dat? what good is it to export and reimport it? does it force the resync process?
    – user3498
    Commented Aug 6, 2016 at 10:11
  • also, I've seen these 2 apis admin.importChain(file) and admin.exportChain(file), but I'm unsure of what's the difference. github.com/ethereum/go-ethereum/wiki/…
    – user3498
    Commented Aug 6, 2016 at 10:15
  • also how big should the chain.dat file be and how long should the process take? It's been running for an hour and the file is only 256 Mb, if it has to reach the 16Gb of the full chain that is going to take forever like downloading a full new chain
    – user3498
    Commented Aug 6, 2016 at 11:43
  • My full chain is 32G at the moment. 256 Mb in 1 hour is not right. It will take quite a while with the import as it will be replaying the transactions. It may be faster to run a geth removedb, geth --fast --cache=1024 (ethereum.stackexchange.com/a/7568/1268) but you will lose the ability to use debug.traceTransactions(...) on the fast downloaded blocks - if you intend to trace the transaction. Commented Aug 6, 2016 at 12:54
  • yes the --fast-- option probably was the problem that happened when I first imported the chain through the ethereum wallet. I've discovered that you can export and import even specific blocks github.com/ethereum/go-ethereum/wiki/Backup-&-restore geth export <filename> 0 29999 but I still don't understand the need to export some blocks if you don't actually have them "full" like I need. If I import them once again will they still be "fast synced blocks" or will that prompt an update of those blocks?
    – user3498
    Commented Aug 6, 2016 at 13:35
2

SOLUTION

unfortunately the export and import option did not work for me. try it anyways to see if it does work for you.

I had to download the blockchain again, on another machine.

  • If you don't have another computer, you can run it in an aws instance.
  • once installed on the other machine, don't start the wallet (which will automatically download the blockchain with the --fast, lighter option) and run geth through the command line with these options to download it faster:

$ geth --cache=1024 --jitvm

  • you can push up the cache if you have RAM. I had 8Gb of Ram so I pushed the cache to2Gb (2048) (higher values didn't seem to work)

$ geth --cache=2048 --jitvm

  • whatever you do, DON'T use the the --fast option, that yes will download the blockchain faster, but you won't have the ability to trace the transactions. So if you are a developer and want to parse the whole blockchain, it's better for you to download a full (non --fast) version of it

you can follow these benchmarks for the options to download the full blockchain faster

Your Answer

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

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