Geth как сохранить статус цепочки блоков?

Fedora 27, CentOS 1708, Go-ethereum 1.8.1

Я пытаюсь создать частную цепочку блоков и монету, используя это для изучения.

Genesis.json:

{
  "config": {
        "chainId": 42,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc": {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x1000000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000012345678",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

И я запускаю geth в консоли с помощью:

geth init genesis.json --datadir datadir
geth console --rpc --rpcport "8080" --rpccorsdomain "*" --datadir "datadir" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 7296

Затем я создал новую учетную запись и начал майнить. Оно работает. Но когда я перезапускаю geth, состояние цепочки блоков не сохраняется.

INFO [03-05|11:39:03] Successfully sealed new block            number=21 hash=ef088f…8b62cb
INFO [03-05|11:39:03] ???? block reached canonical chain          number=16 hash=4dea2d…c41401
INFO [03-05|11:39:03] ???? mined potential block                  number=21 hash=ef088f…8b62cb
INFO [03-05|11:39:03] Commit new mining work                   number=22 txs=0 uncles=0 elapsed=101.305µs
> miner.stop()
true
> exit
INFO [03-05|11:39:28] IPC endpoint closed                      endpoint=/home/hansoli/.ethereum/geth.ipc
ERROR[03-05|11:39:28] Dangling trie nodes after full cleanup 
INFO [03-05|11:39:28] Blockchain manager stopped 
INFO [03-05|11:39:28] Stopping Ethereum protocol 
INFO [03-05|11:39:28] Ethereum protocol stopped 
INFO [03-05|11:39:28] Transaction pool stopped 
INFO [03-05|11:39:28] Database closed                          database=/home/hansoli/.ethereum/geth/chaindata
[hansoli@localhost ethereum]$ geth console --rpc --rpcport "8080" --rpccorsdomain "*" --datadir "datadir" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 7296
INFO [03-05|11:39:59] Maximum peer count                       ETH=25 LES=0 total=25
INFO [03-05|11:39:59] Starting peer-to-peer node               instance=Geth/v1.8.1-stable-1e67410e/linux-amd64/go1.9.4
INFO [03-05|11:39:59] Allocated cache and file handles         database=/home/hansoli/.ethereum/geth/chaindata cache=768 handles=512
INFO [03-05|11:39:59] Initialised chain configuration          config="{ChainID: 42 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Engine: unknown}"
INFO [03-05|11:39:59] Disk storage enabled for ethash caches   dir=/home/hansoli/.ethereum/geth/ethash count=3
INFO [03-05|11:39:59] Disk storage enabled for ethash DAGs     dir=/home/hansoli/.ethash               count=2
INFO [03-05|11:39:59] Initialising Ethereum protocol           versions="[63 62]" network=1
WARN [03-05|11:39:59] Head state missing, repairing chain      number=21 hash=ef088f…8b62cb
INFO [03-05|11:39:59] Rewound blockchain to past state         number=0  hash=7016ba…d4738f
INFO [03-05|11:39:59] Loaded most recent local header          number=21 hash=ef088f…8b62cb td=351436106
INFO [03-05|11:39:59] Loaded most recent local full block      number=0  hash=7016ba…d4738f td=16777216
INFO [03-05|11:39:59] Loaded most recent local fast block      number=21 hash=ef088f…8b62cb td=351436106
INFO [03-05|11:39:59] Loaded local transaction journal         transactions=0 dropped=0
INFO [03-05|11:39:59] Regenerated local transaction journal    transactions=0 accounts=0
INFO [03-05|11:39:59] Starting P2P networking 
INFO [03-05|11:39:59] RLPx listener up                         self="enode://0482a34d9871d20c8beee1b227d7bd0b8e54a5c084d4f55afc86fac65e8d92c4ab51f669aee196c112a4ca6e6461e069ee111a82208f1fcaaff138c3d1a6254b@[::]:30303?discport=0"
INFO [03-05|11:39:59] IPC endpoint opened                      url=/home/hansoli/.ethereum/geth.ipc
Welcome to the Geth JavaScript console!

instance: Geth/v1.8.1-stable-1e67410e/linux-amd64/go1.9.4
INFO [03-05|11:39:59] Etherbase automatically configured       address=0x8eDE74913b1BbFA2be354B3B1E70635E96B6b158
coinbase: 0x8ede74913b1bbfa2be354b3b1e70635e96b6b158
at block: 0 (Thu, 01 Jan 1970 09:00:00 KST)
 datadir: /home/hansoli/.ethereum
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> eth.blockNumber
0
> 

Как это решить? Могу ли я сохранить статус цепочки блоков после выхода из geth?


person Jeong Hansol    schedule 05.03.2018    source источник
comment
networkid должен соответствовать chainid в вашем genesis.json (вывод показывает, что ваш узел подключается к Mainnet (network = 1)). Убедитесь, что вы запускаете init только один раз. И почему ваш datadir в кавычках? Вывод показывает, что вы сохранили в каталоге по умолчанию (database = / home / hansoli / .ethereum / geth / chaindata). Технически нет ничего плохого в использовании каталога по умолчанию, но вы захотите изменить его, чтобы можно было запускать разные сети, не перекрывая друг друга.   -  person Adam Kipnis    schedule 05.03.2018
comment
И console должен стоять в конце вашей geth команды.   -  person Adam Kipnis    schedule 05.03.2018
comment
@AdamKipnis Спасибо за ответ! Я пробую эту команду: geth --rpc --rpcport 8080 --rpccorsdomain "*" --datadir datadir --port 30303 --nodiscover --rpcapi db,eth,net,web3 --networkid 42 console и могу подтвердить, что номер сети 42, а datadir - это мой каталог datadir в консоли. Но все равно не работает.   -  person Jeong Hansol    schedule 06.03.2018
comment
Вы тоже перезапустили майнинг? Ваш вывод показывает, что майнинг также попал в неправильный каталог datadir. Я рекомендую начать с самого начала. Сотрите каталог данных, повторно инициализируйте свою цепочку блоков, выполните некоторые транзакции, а затем перезапустите консоль. Дважды проверяйте вывод после каждой команды, чтобы убедиться, что используются правильный каталог данных, каталог хранилища ключей и сетевой идентификатор. Я только что повторил шаги, и все работает нормально.   -  person Adam Kipnis    schedule 06.03.2018
comment
@AdamKipnis: Кажется, ошибка в гете. Он отлично работает в geth 1.8.2 (выпущен несколько дней назад)   -  person Jeong Hansol    schedule 08.03.2018


Ответы (1)


возможно ошибка в текущей версии ... запустите geth с опцией --gcmode "archive"

person rob    schedule 05.03.2018