allow custom configs in Gnosis binary (#4134)
When running as Gnosis-chain binary the config was no longer adjustable. Restores loading custom configs when running as Gnosis-chain binary, as long as the following keys remain same: - SLOTS_PER_EPOCH=16 - SECONDS_PER_SLOT=5 - BASE_REWARD_FACTOR=25 - EPOCHS_PER_SYNC_COMMITTEE_PERIOD=512 This allows running the Gnosis-chain binary on custom test networks.
This commit is contained in:
parent
ca871a5435
commit
abd6581b22
|
@ -1223,21 +1223,27 @@ proc readValue*(r: var TomlReader, a: var Address)
|
|||
proc loadEth2Network*(
|
||||
eth2Network: Option[string]
|
||||
): Eth2NetworkMetadata {.raises: [Defect, IOError].} =
|
||||
network_name.set(2, labelValues = [eth2Network.get(otherwise = "mainnet")])
|
||||
when not defined(gnosisChainBinary):
|
||||
const defaultName =
|
||||
when defined(gnosisChainBinary) and const_preset == "mainnet":
|
||||
"gnosis"
|
||||
elif const_preset == "mainnet":
|
||||
"mainnet"
|
||||
else:
|
||||
"(unspecified)"
|
||||
network_name.set(2, labelValues = [eth2Network.get(otherwise = defaultName)])
|
||||
|
||||
if eth2Network.isSome:
|
||||
getMetadataForNetwork(eth2Network.get)
|
||||
else:
|
||||
when const_preset == "mainnet":
|
||||
when defined(gnosisChainBinary) and const_preset == "mainnet":
|
||||
gnosisMetadata
|
||||
elif const_preset == "mainnet":
|
||||
mainnetMetadata
|
||||
else:
|
||||
# Presumably other configurations can have other defaults, but for now
|
||||
# this simplifies the flow
|
||||
echo "Must specify network on non-mainnet node"
|
||||
fatal "Must specify network on non-mainnet node"
|
||||
quit 1
|
||||
else:
|
||||
checkNetworkParameterUse eth2Network
|
||||
gnosisMetadata
|
||||
|
||||
template loadEth2Network*(config: BeaconNodeConf): Eth2NetworkMetadata =
|
||||
loadEth2Network(config.eth2Network)
|
||||
|
|
|
@ -200,19 +200,29 @@ template mergeTestnet(path: string, eth1Network: Eth1Network): Eth2NetworkMetada
|
|||
loadCompileTimeNetworkMetadata(mergeTestnetsDir & "/" & path,
|
||||
some eth1Network)
|
||||
|
||||
when not defined(gnosisChainBinary):
|
||||
when const_preset == "mainnet":
|
||||
when defined(gnosisChainBinary) and const_preset == "mainnet":
|
||||
const
|
||||
gnosisMetadata* = loadCompileTimeNetworkMetadata(
|
||||
currentSourcePath.parentDir.replace('\\', '/') &
|
||||
"/../../media/gnosis")
|
||||
static:
|
||||
for network in [gnosisMetadata]:
|
||||
checkForkConsistency(network.cfg)
|
||||
|
||||
elif const_preset == "mainnet":
|
||||
const
|
||||
mainnetMetadata* = eth2Network("shared/mainnet", mainnet)
|
||||
praterMetadata* = eth2Network("shared/prater", goerli)
|
||||
ropstenMetadata* = mergeTestnet("ropsten-beacon-chain", ropsten)
|
||||
sepoliaMetadata* = mergeTestnet("sepolia", sepolia)
|
||||
static:
|
||||
for network in [mainnetMetadata, praterMetadata, ropstenMetadata, sepoliaMetadata]:
|
||||
for network in [
|
||||
mainnetMetadata, praterMetadata, ropstenMetadata, sepoliaMetadata]:
|
||||
checkForkConsistency(network.cfg)
|
||||
|
||||
proc getMetadataForNetwork*(networkName: string): Eth2NetworkMetadata {.raises: [Defect, IOError].} =
|
||||
template loadRuntimeMetadata: auto =
|
||||
proc getMetadataForNetwork*(
|
||||
networkName: string): Eth2NetworkMetadata {.raises: [Defect, IOError].} =
|
||||
template loadRuntimeMetadata(): auto =
|
||||
if fileExists(networkName / "config.yaml"):
|
||||
try:
|
||||
loadEth2NetworkMetadata(networkName)
|
||||
|
@ -223,8 +233,19 @@ when not defined(gnosisChainBinary):
|
|||
fatal "config.yaml not found for network", networkName
|
||||
quit 1
|
||||
|
||||
var
|
||||
metadata = when const_preset == "mainnet":
|
||||
let metadata =
|
||||
when defined(gnosisChainBinary) and const_preset == "mainnet":
|
||||
case toLowerAscii(networkName)
|
||||
of "gnosis":
|
||||
gnosisMetadata
|
||||
of "gnosis-chain":
|
||||
warn "`--network:gnosis-chain` is deprecated, " &
|
||||
"use `--network:gnosis` instead"
|
||||
gnosisMetadata
|
||||
else:
|
||||
loadRuntimeMetadata()
|
||||
|
||||
elif const_preset == "mainnet":
|
||||
case toLowerAscii(networkName)
|
||||
of "mainnet":
|
||||
mainnetMetadata
|
||||
|
@ -236,6 +257,7 @@ when not defined(gnosisChainBinary):
|
|||
sepoliaMetadata
|
||||
else:
|
||||
loadRuntimeMetadata()
|
||||
|
||||
else:
|
||||
loadRuntimeMetadata()
|
||||
|
||||
|
@ -243,34 +265,15 @@ when not defined(gnosisChainBinary):
|
|||
fatal "The selected network is not compatible with the current build",
|
||||
reason = metadata.incompatibilityDesc
|
||||
quit 1
|
||||
|
||||
metadata
|
||||
|
||||
proc getRuntimeConfig*(
|
||||
proc getRuntimeConfig*(
|
||||
eth2Network: Option[string]): RuntimeConfig {.raises: [Defect, IOError].} =
|
||||
if eth2Network.isSome:
|
||||
return getMetadataForNetwork(eth2Network.get).cfg
|
||||
defaultRuntimeConfig
|
||||
|
||||
else:
|
||||
const
|
||||
gnosisMetadata* = loadCompileTimeNetworkMetadata(
|
||||
currentSourcePath.parentDir.replace('\\', '/') & "/../../media/gnosis")
|
||||
|
||||
static: checkForkConsistency(gnosisMetadata.cfg)
|
||||
|
||||
proc checkNetworkParameterUse*(eth2Network: Option[string]) =
|
||||
# Support `gnosis-chain` as network name which was used in v22.3
|
||||
if eth2Network.isSome and eth2Network.get notin ["gnosis", "gnosis-chain"]:
|
||||
fatal "The only supported value for the --network parameter is 'gnosis'"
|
||||
quit 1
|
||||
|
||||
if eth2Network.isSome and eth2Network.get == "gnosis-chain":
|
||||
warn "`--network:gnosis-chain` is deprecated, use `--network:gnosis` instead"
|
||||
|
||||
proc getRuntimeConfig*(eth2Network: Option[string]): RuntimeConfig {.raises: [Defect, IOError].} =
|
||||
checkNetworkParameterUse eth2Network
|
||||
gnosisMetadata.cfg
|
||||
|
||||
proc extractGenesisValidatorRootFromSnapshot*(
|
||||
snapshot: string): Eth2Digest {.raises: [Defect, IOError, SszError].} =
|
||||
sszMount(snapshot, phase0.BeaconState).genesis_validators_root[]
|
||||
|
|
Loading…
Reference in New Issue