I was using an old version ( 1.10.13 ) of geth to run my full node. I didn't update my node to new version before block#15050000. and notice that it stop syncing at 15050010. when I check I found that all blocks after 15050000 are invalid, ( different block hash than blocks accepted by etherscan.io ). I upgrade my client to eth-1.10.20 and then using debug.setHEAD("0xE5A50F") to go back to block no. 15049999, but again it syncs block to invalid chain and stops.

How can I force by node to only connect to trusted nodes or nodes with the valid chain?

2 Answers 2


I have the exact same symtom with you, stuck at 15050010. Assume you know the Gray Glacier hard forks but I also didn't get it you have updated geth to 1.10.20, which meet requirement as mentioned 1.10.19.

However, I just switched to prebuilt docker version (1.10.23) instead of build it myself with exisiting data, it syncing block 15050305 at the moment.

Some indicator is I saw some new log from geth at bootup which I didn't seen before, like: "Consensus: Beacon (proof-of-stake), merging from Ethash (proof-of-work) "


Hard shut-down and restart geth worked for me.

I was having the same issue. I tried (unsuccessfully) to shut down geth with SIGTERM or SIGINT (graceful shut-down) and it was just acknowledging the signal without doing anything else, so after a while I just sent SIGKILL.

After restart it positioned itself on the right chain and went on with the syncing.

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.