Я создал две учетные записи и для обеих адресов учетных записей я предоставил им некоторое количество эфира в настроенном генезисе.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.
Из-за того, что блок генезиса инициализировался один раз. Вы выполнили один раз, информация о блоке генезиса была записана в БД, но теперь вы выполнили снова, поэтому возникла эта ошибка. правильная команда:
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 не то, что вам нужно, если вы пытаетесь разобраться в майнинге и смарт-контрактах.