GETH всегда зависает после попытки синхронизации

Я хочу добывать эфир и уже несколько дней пытаюсь синхронизировать блокчейны.

Я пробовал использовать geth --fastкоманду, и она всегда зависала, как на картинке.

Скриншот

Мой компьютер работает под управлением 64-битной Windows 10 с установленным geth 1.4.10. Я также пытался использовать geth --rpc, но это дало мне тот же результат. Я догадался, что это из-за того, что мой провайдер блокирует P2P-соединение, но после того, как я попытался подключиться через VPN, ничего не изменилось.

Я уже настроил синхронизацию времени с time.nist.gov, как подсказывают некоторые решения, которые я нашел.

Также у меня есть проблема с зависанием MIST при «поиске пиров» при запуске без какого-либо прогресса.

Что я должен сделать, чтобы сделать это дело?

admin.peersТоже пусто ? (Я предполагаю, что это произойдет, если вы застряли в «поиске пиров».) Убедитесь, что порты TCP и UDP 30303 правильно перенаправляются через любой брандмауэр, который у вас может быть.
@RichardHorrocks Да, net.peerCountвозвращает 0. Я пытался вручную подключиться к одноранговому узлу, admin.addPeer()но это не удалось.

Ответы (1)

Я думаю, ключом к разгадке здесь является сообщение «ВНИМАНИЕ: записал блок генезиса Ethereum по умолчанию».

Я бы попробовал переименовать каталог данных по умолчанию (см. «Не синхронизация из-за «необработанной ошибки дерева: отсутствующий узел дерева» для путей»), затем попробуйте geth --fast console.

Вы можете скопировать хранилище ключей в каталоге данных из старого каталога данных в новый каталог данных, чтобы сохранить свои учетные записи. И в случае успеха удалите свой старый переименованный каталог данных

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



Предупреждение

Предупреждение исходит от go-ethereum — eth/backend.go, строки 239-248 , и кажется, что gethне может найти блок генезиса, поэтому пишет новый. Исходный код выглядит следующим образом:

// load the genesis block or write a new one if no genesis
// block is prenent in the database.
genesis := core.GetBlock(chainDb, core.GetCanonicalHash(chainDb, 0))
if genesis == nil {
    genesis, err = core.WriteDefaultGenesisBlock(chainDb)
    if err != nil {
        return nil, err
    }
    glog.V(logger.Info).Infoln("WARNING: Wrote default ethereum genesis block")
}
Спасибо за ответ! Как мне назвать defaultdir ? Я уже пробовал, removedbпрежде чем опубликовать вопрос, но это не помогло.
Обычно я переименовываю свой каталог {старое имя каталога}_pre_20160723 . removedbУдалить данные цепочки, но не конфиги .