Check that the selected data dir is compatible with the selected network
This commit is contained in:
parent
f552ca1731
commit
b9e4fef616
|
@ -30,7 +30,7 @@ import
|
||||||
beacon_node_common, beacon_node_types, beacon_node_status,
|
beacon_node_common, beacon_node_types, beacon_node_status,
|
||||||
block_pools/[chain_dag, quarantine, clearance, block_pools_types],
|
block_pools/[chain_dag, quarantine, clearance, block_pools_types],
|
||||||
nimbus_binary_common, network_metadata,
|
nimbus_binary_common, network_metadata,
|
||||||
eth1_monitor, version, ssz/merkleization,
|
eth1_monitor, version, ssz/[navigator, merkleization],
|
||||||
sync_protocol, request_manager, keystore_management, interop, statusbar,
|
sync_protocol, request_manager, keystore_management, interop, statusbar,
|
||||||
sync_manager, validator_duties, filepath,
|
sync_manager, validator_duties, filepath,
|
||||||
validator_slashing_protection, ./eth2_processor
|
validator_slashing_protection, ./eth2_processor
|
||||||
|
@ -208,13 +208,25 @@ proc init*(T: type BeaconNode,
|
||||||
|
|
||||||
info "Loading block dag from database", path = conf.databaseDir
|
info "Loading block dag from database", path = conf.databaseDir
|
||||||
|
|
||||||
# TODO(zah) check that genesis given on command line (if any) matches database
|
|
||||||
let
|
let
|
||||||
chainDagFlags = if conf.verifyFinalization: {verifyFinalization}
|
chainDagFlags = if conf.verifyFinalization: {verifyFinalization}
|
||||||
else: {}
|
else: {}
|
||||||
chainDag = ChainDAGRef.init(conf.runtimePreset, db, chainDagFlags)
|
chainDag = ChainDAGRef.init(conf.runtimePreset, db, chainDagFlags)
|
||||||
beaconClock = BeaconClock.init(chainDag.headState.data.data)
|
beaconClock = BeaconClock.init(chainDag.headState.data.data)
|
||||||
quarantine = QuarantineRef()
|
quarantine = QuarantineRef()
|
||||||
|
databaseGenesisValidatorsRoot =
|
||||||
|
chainDag.headState.data.data.genesis_validators_root
|
||||||
|
|
||||||
|
if genesisStateContents != nil:
|
||||||
|
let
|
||||||
|
networkGenesisValidatorsRoot =
|
||||||
|
sszMount(genesisStateContents[], BeaconState).genesis_validators_root[]
|
||||||
|
|
||||||
|
if networkGenesisValidatorsRoot != databaseGenesisValidatorsRoot:
|
||||||
|
fatal "The specified --data-dir contains data for a different network",
|
||||||
|
networkGenesisValidatorsRoot, databaseGenesisValidatorsRoot,
|
||||||
|
dataDir = conf.dataDir
|
||||||
|
quit 1
|
||||||
|
|
||||||
if conf.weakSubjectivityCheckpoint.isSome:
|
if conf.weakSubjectivityCheckpoint.isSome:
|
||||||
let
|
let
|
||||||
|
@ -232,6 +244,13 @@ proc init*(T: type BeaconNode,
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
if checkpointState != nil:
|
if checkpointState != nil:
|
||||||
|
let checkpointGenesisValidatorsRoot = checkpointState[].genesis_validators_root
|
||||||
|
if checkpointGenesisValidatorsRoot != databaseGenesisValidatorsRoot:
|
||||||
|
fatal "The specified checkpoint state is intended for a different network",
|
||||||
|
checkpointGenesisValidatorsRoot, databaseGenesisValidatorsRoot,
|
||||||
|
dataDir = conf.dataDir
|
||||||
|
quit 1
|
||||||
|
|
||||||
chainDag.setTailState(checkpointState[], checkpointBlock)
|
chainDag.setTailState(checkpointState[], checkpointBlock)
|
||||||
|
|
||||||
if eth1Monitor.isNil and
|
if eth1Monitor.isNil and
|
||||||
|
@ -1082,6 +1101,9 @@ programMain:
|
||||||
if config.depositContractDeployedAt.isNone:
|
if config.depositContractDeployedAt.isNone:
|
||||||
config.depositContractDeployedAt =
|
config.depositContractDeployedAt =
|
||||||
some mainnetMetadata.depositContractDeployedAt
|
some mainnetMetadata.depositContractDeployedAt
|
||||||
|
|
||||||
|
genesisStateContents = newClone mainnetMetadata.genesisData
|
||||||
|
genesisDepositsSnapshotContents = newClone mainnetMetadata.genesisDepositsSnapshot
|
||||||
eth1Network = some mainnet
|
eth1Network = some mainnet
|
||||||
|
|
||||||
# Single RNG instance for the application - will be seeded on construction
|
# Single RNG instance for the application - will be seeded on construction
|
||||||
|
|
|
@ -19,6 +19,10 @@ func sszMount*(data: openArray[byte], T: type): SszNavigator[T] =
|
||||||
let startAddr = unsafeAddr data[0]
|
let startAddr = unsafeAddr data[0]
|
||||||
SszNavigator[T](m: MemRange(startAddr: startAddr, length: data.len))
|
SszNavigator[T](m: MemRange(startAddr: startAddr, length: data.len))
|
||||||
|
|
||||||
|
func sszMount*(data: openArray[char], T: type): SszNavigator[T] =
|
||||||
|
let startAddr = cast[ptr byte](unsafeAddr data[0])
|
||||||
|
SszNavigator[T](m: MemRange(startAddr: startAddr, length: data.len))
|
||||||
|
|
||||||
template sszMount*(data: MemRange, T: type): SszNavigator[T] =
|
template sszMount*(data: MemRange, T: type): SszNavigator[T] =
|
||||||
SszNavigator[T](m: data)
|
SszNavigator[T](m: data)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue