Как удалить или сбросить блокчейн в geth? (ОС)

У меня повреждена цепочка блоков, и я хочу выполнить полную перезагрузку цепочки. что мне нужно удалить, чтобы начать скачивать цепочку с нуля?

Я знаю, что есть 2 папки ethereum (у меня OSX):

$home/.ethereum
$home/Libary/Ethereum

Я недавно обновил geth до «Homestead» 1.3.5 и получил ошибку в терминале, например:

E0306 ... 3211 trie.go:309] Dangling hash node ref 3c6233326.... leveldb: not found

и иногда я получаю предупреждение о плохом блоке:

Bad block #1102797
Я обновил geth до версии 1.3.5, но некоторое время назад также установил eth (версия протокола v 1.1.0 / eth newtwork: 61). Я не использовал оба много, просто запускал их время от времени

Ответы (3)

Для гета удалите $home/Libary/Ethereum/chaindata. Это должно стереть саму цепочку блоков и позволить вам синхронизироваться с нуля. Кроме того, вы, вероятно, захотите выполнить быструю синхронизацию после этого, чтобы быстро вернуться в цепочку --fast.

вы бы начали gethперезагружать цепочку или направлять с помощью geth --fast?
geth --fast --cache=512 consoleвот как бы я лично начал гет :D
Не более ли осторожно вместо этого использовать «geth removeb»? Это его цель.
Для Mac OSXrm -R ~/Library/Ethereum/geth/chaindata/
geth removedb

Вы также можете использовать geth removedbдля удаления блокчейна и баз данных состояний.

geth removedb
Remove local database? [y/N] 

После удаления старых баз запустите geth --fast --cache=1024(см. ответ на этот вопрос от @eth).

Обратите внимание, что использование geth --fastне позволит вам использовать загруженные debug.traceTransaction(...)блоки . --fastНекоторая дополнительная информация в разделе Как проверить трассировку ВМ с помощью Geth? и Как можно определить статус транзакции из выброшенной ошибки, когда газ может быть точно таким же, как и газ, использованный для успешной транзакции? .

См. также Что такое «быстрая» синхронизация Geth и почему она быстрее? .

Кроме того, если на вашем компьютере больше оперативной памяти, можно также использовать параметр --cache=4024. И geth --fast можно использовать только тогда, когда база данных блоков пуста. Если вы уже загружаете блоки, рекомендуется не использовать geth --fast

Для других операционных систем по умолчанию datadir:

Mac: ~/Library/Ethereum
Linux: ~/.ethereum
Windows: %APPDATA%/Ethereum

Удалите chaindataнайденный подкаталог.

Запустите geth --fast --cache=1024рекомендуемый способ быстрой синхронизации цепочки (не забудьте использовать большее --cacheзначение со значением, например 1024, в противном случае значение по умолчанию равно 16, и оно не будет синхронизироваться так быстро).

youtube.com/watch?v=vPi3nMmaunY — показывает, как найти папку %APPDATA% в Windows 10. Для меня: %AppData%/Roaming/Ethereum/geth/chaindata