Консоль geth не запускается в режиме разработки (Json-файл Custom Genesis)

Я создал две учетные записи и для обеих адресов учетных записей я предоставил им некоторое количество эфира в настроенном генезисе.json. Затем я выполнил команду

geth - datadir "/tmp/ethereum_dev_mode/" -dev unlock 0,1 -rpc -rpcaddr w.x.y.z -rpccorsdomain "*" -rpcport abcd init "/tmp/ethereum_dev_mode/genesis.json"

Эта команда выполнилась успешно и создала пользовательский блок генезиса, выделила кеш и дескрипторы файлов, записала состояние генезиса и т. д. затем я выполнил команду geth -datadir "/tmp/ethereum_dev_mode/geth/" -fast console "/tmp/ethereum_dev_mode/genesis.json" -dev я получил следующую ошибку:

Fatal: Ошибка при запуске стека протоколов: база данных уже содержит несовместимый блок генезиса (есть 65e04841b69188e8, новый e5be92145a301820)

Это из-за настроенного файла генезиса? Даже при использовании настроенного файла генезиса команда инициализации выполнялась успешно, но не удалось запустить консоль Dev.

Ответы (2)

Из-за того, что блок генезиса инициализировался один раз. Вы выполнили один раз, информация о блоке генезиса была записана в БД, но теперь вы выполнили снова, поэтому возникла эта ошибка. правильная команда:

geth --datadir "/tmp/ethereum_dev_mode/geth/" --fast --dev console 

В исходном файле go-ethereum есть четкое суждение, а именно:

// Check whether the genesis block is already written.
    if genesis != nil {
        block, _ := genesis.ToBlock()
        hash := block.Hash()
        if hash != stored {
            return genesis.Config, block.Hash(), &GenesisMismatchError{stored, hash}
        }
    }

Надеюсь, это поможет вам~

Взгляните на этот вопрос: Как использовать настраиваемый каталог данных в режиме разработки (частный блокчейн) . DevMode применяет определенные функции, такие как определенный блок генезиса, конкретный каталог данных и т. д. Вероятно, --dev не то, что вам нужно, если вы пытаетесь разобраться в майнинге и смарт-контрактах.