Gnosis const preset
This commit is contained in:
parent
c01e53e35e
commit
b06502bf65
|
@ -197,3 +197,6 @@
|
||||||
path = vendor/merge-testnets
|
path = vendor/merge-testnets
|
||||||
url = https://github.com/eth-clients/merge-testnets.git
|
url = https://github.com/eth-clients/merge-testnets.git
|
||||||
branch = main
|
branch = main
|
||||||
|
[submodule "vendor/gnosis-chain-configs"]
|
||||||
|
path = vendor/gnosis-chain-configs
|
||||||
|
url = https://github.com/zah/gnosis-chain-configs.git
|
||||||
|
|
11
Makefile
11
Makefile
|
@ -589,11 +589,7 @@ clean-sepolia:
|
||||||
### Gnosis chain binary
|
### Gnosis chain binary
|
||||||
###
|
###
|
||||||
|
|
||||||
# TODO The constants overrides below should not be necessary if we restore
|
# TODO The `-d:gnosisChainBinary` override can be removed if the web3 library
|
||||||
# the support for compiling with custom const presets.
|
|
||||||
# See the prepared preset file in media/gnosis/preset.yaml
|
|
||||||
#
|
|
||||||
# The `-d:gnosisChainBinary` override can be removed if the web3 library
|
|
||||||
# gains support for multiple "Chain Profiles" that consist of a set of
|
# gains support for multiple "Chain Profiles" that consist of a set of
|
||||||
# consensus object (such as blocks and transactions) that are specific
|
# consensus object (such as blocks and transactions) that are specific
|
||||||
# to the chain.
|
# to the chain.
|
||||||
|
@ -604,11 +600,8 @@ gnosis-build gnosis-chain-build: | build deps
|
||||||
beacon_chain/nimbus_beacon_node.nim \
|
beacon_chain/nimbus_beacon_node.nim \
|
||||||
$(NIM_PARAMS) \
|
$(NIM_PARAMS) \
|
||||||
-d:gnosisChainBinary \
|
-d:gnosisChainBinary \
|
||||||
|
-d:const_preset=gnosis \
|
||||||
-d:has_genesis_detection \
|
-d:has_genesis_detection \
|
||||||
-d:SLOTS_PER_EPOCH=16 \
|
|
||||||
-d:SECONDS_PER_SLOT=5 \
|
|
||||||
-d:BASE_REWARD_FACTOR=25 \
|
|
||||||
-d:EPOCHS_PER_SYNC_COMMITTEE_PERIOD=512 \
|
|
||||||
&& \
|
&& \
|
||||||
echo -e $(BUILD_END_MSG) "build/nimbus_beacon_node_gnosis"
|
echo -e $(BUILD_END_MSG) "build/nimbus_beacon_node_gnosis"
|
||||||
|
|
||||||
|
|
|
@ -1265,7 +1265,7 @@ proc loadEth2Network*(
|
||||||
eth2Network: Option[string]
|
eth2Network: Option[string]
|
||||||
): Eth2NetworkMetadata {.raises: [Defect, IOError].} =
|
): Eth2NetworkMetadata {.raises: [Defect, IOError].} =
|
||||||
const defaultName =
|
const defaultName =
|
||||||
when defined(gnosisChainBinary) and const_preset == "mainnet":
|
when const_preset == "gnosis":
|
||||||
"gnosis"
|
"gnosis"
|
||||||
elif const_preset == "mainnet":
|
elif const_preset == "mainnet":
|
||||||
"mainnet"
|
"mainnet"
|
||||||
|
@ -1276,7 +1276,7 @@ proc loadEth2Network*(
|
||||||
if eth2Network.isSome:
|
if eth2Network.isSome:
|
||||||
getMetadataForNetwork(eth2Network.get)
|
getMetadataForNetwork(eth2Network.get)
|
||||||
else:
|
else:
|
||||||
when defined(gnosisChainBinary) and const_preset == "mainnet":
|
when const_preset == "gnosis":
|
||||||
gnosisMetadata
|
gnosisMetadata
|
||||||
elif const_preset == "mainnet":
|
elif const_preset == "mainnet":
|
||||||
mainnetMetadata
|
mainnetMetadata
|
||||||
|
|
|
@ -1867,14 +1867,16 @@ proc startListening*(node: Eth2Node) {.async.} =
|
||||||
if node.discoveryEnabled:
|
if node.discoveryEnabled:
|
||||||
try:
|
try:
|
||||||
node.discovery.open()
|
node.discovery.open()
|
||||||
except CatchableError:
|
except CatchableError as err:
|
||||||
fatal "Failed to start discovery service. UDP port may be already in use"
|
fatal "Failed to start discovery service. UDP port may be already in use",
|
||||||
|
err = err.msg
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await node.switch.start()
|
await node.switch.start()
|
||||||
except CatchableError:
|
except CatchableError as err:
|
||||||
fatal "Failed to start LibP2P transport. TCP port may be already in use"
|
fatal "Failed to start LibP2P transport. TCP port may be already in use",
|
||||||
|
err = err.msg
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
proc peerPingerHeartbeat(node: Eth2Node): Future[void] {.gcsafe.}
|
proc peerPingerHeartbeat(node: Eth2Node): Future[void] {.gcsafe.}
|
||||||
|
|
|
@ -213,11 +213,11 @@ template mergeTestnet(path: string, eth1Network: Eth1Network): Eth2NetworkMetada
|
||||||
loadCompileTimeNetworkMetadata(mergeTestnetsDir & "/" & path,
|
loadCompileTimeNetworkMetadata(mergeTestnetsDir & "/" & path,
|
||||||
some eth1Network)
|
some eth1Network)
|
||||||
|
|
||||||
when defined(gnosisChainBinary) and const_preset == "mainnet":
|
when const_preset == "gnosis":
|
||||||
const
|
const
|
||||||
gnosisMetadata* = loadCompileTimeNetworkMetadata(
|
gnosisMetadata* = loadCompileTimeNetworkMetadata(
|
||||||
currentSourcePath.parentDir.replace('\\', '/') &
|
currentSourcePath.parentDir.replace('\\', '/') &
|
||||||
"/../../media/gnosis")
|
"/../../vendor/gnosis-chain-configs/mainnet")
|
||||||
static:
|
static:
|
||||||
checkForkConsistency(gnosisMetadata.cfg)
|
checkForkConsistency(gnosisMetadata.cfg)
|
||||||
doAssert gnosisMetadata.cfg.CAPELLA_FORK_EPOCH == FAR_FUTURE_EPOCH
|
doAssert gnosisMetadata.cfg.CAPELLA_FORK_EPOCH == FAR_FUTURE_EPOCH
|
||||||
|
@ -252,7 +252,7 @@ proc getMetadataForNetwork*(
|
||||||
warn "Ropsten is unsupported; https://blog.ethereum.org/2022/11/30/ropsten-shutdown-announcement suggests migrating to Goerli or Sepolia"
|
warn "Ropsten is unsupported; https://blog.ethereum.org/2022/11/30/ropsten-shutdown-announcement suggests migrating to Goerli or Sepolia"
|
||||||
|
|
||||||
let metadata =
|
let metadata =
|
||||||
when defined(gnosisChainBinary) and const_preset == "mainnet":
|
when const_preset == "gnosis":
|
||||||
case toLowerAscii(networkName)
|
case toLowerAscii(networkName)
|
||||||
of "gnosis":
|
of "gnosis":
|
||||||
gnosisMetadata
|
gnosisMetadata
|
||||||
|
@ -298,10 +298,9 @@ proc getRuntimeConfig*(
|
||||||
return getMetadataForNetwork(eth2Network.get).cfg
|
return getMetadataForNetwork(eth2Network.get).cfg
|
||||||
|
|
||||||
when const_preset == "mainnet":
|
when const_preset == "mainnet":
|
||||||
when defined(gnosisChainBinary):
|
mainnetMetadata.cfg
|
||||||
gnosisMetadata.cfg
|
elif const_preset == "gnosis":
|
||||||
else:
|
gnosisMetadata.cfg
|
||||||
mainnetMetadata.cfg
|
|
||||||
else:
|
else:
|
||||||
# This is a non-standard build (i.e. minimal), and the function was most
|
# This is a non-standard build (i.e. minimal), and the function was most
|
||||||
# likely executed in a test. The best we can do is return a fully default
|
# likely executed in a test. The best we can do is return a fully default
|
||||||
|
|
|
@ -205,6 +205,113 @@ when const_preset == "mainnet":
|
||||||
DEPOSIT_CONTRACT_ADDRESS: default(Eth1Address)
|
DEPOSIT_CONTRACT_ADDRESS: default(Eth1Address)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
elif const_preset == "gnosis":
|
||||||
|
import ./presets/gnosis
|
||||||
|
export gnosis
|
||||||
|
|
||||||
|
# TODO Move this to RuntimeConfig
|
||||||
|
const SECONDS_PER_SLOT* {.intdefine.}: uint64 = 5
|
||||||
|
|
||||||
|
# The default run-time config specifies the default configuration values
|
||||||
|
# that will be used if a particular run-time config is missing specific
|
||||||
|
# confugration values (which will be then taken from this config object).
|
||||||
|
# It mostly matches the gnosis config with the exception of few properties
|
||||||
|
# such as `CONFIG_NAME`, `TERMINAL_TOTAL_DIFFICULTY`, `*_FORK_EPOCH`, etc
|
||||||
|
# which must be effectively overriden in all network (including mainnet).
|
||||||
|
const defaultRuntimeConfig* = RuntimeConfig(
|
||||||
|
# Mainnet config
|
||||||
|
|
||||||
|
# Extends the mainnet preset
|
||||||
|
PRESET_BASE: "gnosis",
|
||||||
|
|
||||||
|
# Free-form short name of the network that this configuration applies to - known
|
||||||
|
# canonical network names include:
|
||||||
|
# * 'mainnet' - there can be only one
|
||||||
|
# * 'prater' - testnet
|
||||||
|
# * 'ropsten' - testnet
|
||||||
|
# * 'sepolia' - testnet
|
||||||
|
# Must match the regex: [a-z0-9\-]
|
||||||
|
CONFIG_NAME: "",
|
||||||
|
|
||||||
|
# Transition
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# TBD, 2**256-2**10 is a placeholder
|
||||||
|
TERMINAL_TOTAL_DIFFICULTY:
|
||||||
|
u256"115792089237316195423570985008687907853269984665640564039457584007913129638912",
|
||||||
|
# By default, don't use these params
|
||||||
|
TERMINAL_BLOCK_HASH: BlockHash.fromHex(
|
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000000"),
|
||||||
|
# TODO TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH: Epoch(uint64.high),
|
||||||
|
|
||||||
|
# Genesis
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# `2**14` (= 16,384)
|
||||||
|
MIN_GENESIS_ACTIVE_VALIDATOR_COUNT: 4096,
|
||||||
|
# Dec 1, 2020, 12pm UTC
|
||||||
|
MIN_GENESIS_TIME: 1638968400,
|
||||||
|
# Mainnet initial fork version, recommend altering for testnets
|
||||||
|
GENESIS_FORK_VERSION: Version [byte 0x00, 0x00, 0x00, 0x64],
|
||||||
|
# 604800 seconds (7 days)
|
||||||
|
GENESIS_DELAY: 604800,
|
||||||
|
|
||||||
|
# Forking
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# Some forks are disabled for now:
|
||||||
|
# - These may be re-assigned to another fork-version later
|
||||||
|
# - Temporarily set to max uint64 value: 2**64 - 1
|
||||||
|
|
||||||
|
# Altair
|
||||||
|
ALTAIR_FORK_VERSION: Version [byte 0x01, 0x00, 0x00, 0x64],
|
||||||
|
ALTAIR_FORK_EPOCH: FAR_FUTURE_EPOCH,
|
||||||
|
# Bellatrix
|
||||||
|
BELLATRIX_FORK_VERSION: Version [byte 0x02, 0x00, 0x00, 0x64],
|
||||||
|
BELLATRIX_FORK_EPOCH: FAR_FUTURE_EPOCH,
|
||||||
|
# Capella
|
||||||
|
CAPELLA_FORK_VERSION: Version [byte 0x03, 0x00, 0x00, 0x64],
|
||||||
|
CAPELLA_FORK_EPOCH: FAR_FUTURE_EPOCH,
|
||||||
|
# eip4844
|
||||||
|
EIP4844_FORK_VERSION: Version [byte 0x04, 0x00, 0x00, 0x64],
|
||||||
|
EIP4844_FORK_EPOCH: FAR_FUTURE_EPOCH,
|
||||||
|
# Sharding
|
||||||
|
SHARDING_FORK_VERSION: Version [byte 0x05, 0x00, 0x00, 0x64],
|
||||||
|
SHARDING_FORK_EPOCH: FAR_FUTURE_EPOCH,
|
||||||
|
|
||||||
|
# Time parameters
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 12 seconds
|
||||||
|
# TODO SECONDS_PER_SLOT: 12,
|
||||||
|
# 14 (estimate from Eth1 mainnet)
|
||||||
|
SECONDS_PER_ETH1_BLOCK: 5,
|
||||||
|
# 2**8 (= 256) epochs ~27 hours
|
||||||
|
MIN_VALIDATOR_WITHDRAWABILITY_DELAY: 256,
|
||||||
|
# 2**8 (= 256) epochs ~27 hours
|
||||||
|
SHARD_COMMITTEE_PERIOD: 256,
|
||||||
|
# 2**11 (= 2,048) Eth1 blocks ~8 hours
|
||||||
|
ETH1_FOLLOW_DISTANCE: 2048,
|
||||||
|
|
||||||
|
|
||||||
|
# Validator cycle
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**2 (= 4)
|
||||||
|
INACTIVITY_SCORE_BIAS: 4,
|
||||||
|
# 2**4 (= 16)
|
||||||
|
INACTIVITY_SCORE_RECOVERY_RATE: 16,
|
||||||
|
# 2**4 * 10**9 (= 16,000,000,000) Gwei
|
||||||
|
EJECTION_BALANCE: 16000000000'u64,
|
||||||
|
# 2**2 (= 4)
|
||||||
|
MIN_PER_EPOCH_CHURN_LIMIT: 4,
|
||||||
|
# 2**16 (= 65,536)
|
||||||
|
CHURN_LIMIT_QUOTIENT: 4096,
|
||||||
|
|
||||||
|
|
||||||
|
# Deposit contract
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# Gnosis PoW Mainnet
|
||||||
|
DEPOSIT_CHAIN_ID: 100,
|
||||||
|
DEPOSIT_NETWORK_ID: 100,
|
||||||
|
DEPOSIT_CONTRACT_ADDRESS: default(Eth1Address)
|
||||||
|
)
|
||||||
|
|
||||||
elif const_preset == "minimal":
|
elif const_preset == "minimal":
|
||||||
import ./presets/minimal
|
import ./presets/minimal
|
||||||
export minimal
|
export minimal
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
import
|
||||||
|
./gnosis/[altair_preset, bellatrix_preset, capella_preset, eip4844_preset, phase0_preset]
|
||||||
|
|
||||||
|
export altair_preset, bellatrix_preset, capella_preset, eip4844_preset, phase0_preset
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Mainnet preset - Altair
|
||||||
|
# https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/presets/mainnet/altair.yaml
|
||||||
|
const
|
||||||
|
# Updated penalty values
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 3 * 2**24 (= 50,331,648)
|
||||||
|
INACTIVITY_PENALTY_QUOTIENT_ALTAIR*: uint64 = 50331648
|
||||||
|
# 2**6 (= 64)
|
||||||
|
MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR*: uint64 = 64
|
||||||
|
# 2
|
||||||
|
PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR*: uint64 = 2
|
||||||
|
|
||||||
|
|
||||||
|
# Sync committee
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**9 (= 512)
|
||||||
|
SYNC_COMMITTEE_SIZE* = 512
|
||||||
|
# 2**8 (= 256)
|
||||||
|
EPOCHS_PER_SYNC_COMMITTEE_PERIOD* {.intdefine.}: uint64 = 512
|
||||||
|
|
||||||
|
|
||||||
|
# Sync protocol
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 1
|
||||||
|
MIN_SYNC_COMMITTEE_PARTICIPANTS* = 1
|
||||||
|
# SLOTS_PER_EPOCH * EPOCHS_PER_SYNC_COMMITTEE_PERIOD (= 32 * 256)
|
||||||
|
UPDATE_TIMEOUT*: uint64 = 8192
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Mainnet preset - Bellatrix
|
||||||
|
# https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/presets/mainnet/bellatrix.yaml
|
||||||
|
const
|
||||||
|
# Updated penalty values
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**24 (= 16,777,216)
|
||||||
|
INACTIVITY_PENALTY_QUOTIENT_BELLATRIX*: uint64 = 16777216
|
||||||
|
# 2**5 (= 32)
|
||||||
|
MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX*: uint64 = 32
|
||||||
|
# 3
|
||||||
|
PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX*: uint64 = 3
|
||||||
|
|
||||||
|
|
||||||
|
# Execution
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**30 (= 1,073,741,824)
|
||||||
|
MAX_BYTES_PER_TRANSACTION* = 1073741824
|
||||||
|
# 2**20 (= 1,048,576)
|
||||||
|
MAX_TRANSACTIONS_PER_PAYLOAD* = 1048576
|
||||||
|
# 2**8 (= 256)
|
||||||
|
BYTES_PER_LOGS_BLOOM* = 256
|
||||||
|
# 2**5 (= 32)
|
||||||
|
MAX_EXTRA_DATA_BYTES* = 32
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Mainnet preset - Capella
|
||||||
|
# https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/presets/mainnet/capella.yaml
|
||||||
|
const
|
||||||
|
# Max operations per block
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**4 (= 16)
|
||||||
|
MAX_BLS_TO_EXECUTION_CHANGES* = 16
|
||||||
|
|
||||||
|
|
||||||
|
# Execution
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**4 (= 16) withdrawals
|
||||||
|
MAX_WITHDRAWALS_PER_PAYLOAD* = 16
|
||||||
|
|
||||||
|
|
||||||
|
# Withdrawals processing
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**14 (= 16384) validators
|
||||||
|
MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP* = 16384
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Mainnet preset - EIP-4844
|
||||||
|
# https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/presets/mainnet/eip4844.yaml
|
||||||
|
const
|
||||||
|
# `uint64(4096)`
|
||||||
|
FIELD_ELEMENTS_PER_BLOB*: uint64 = 4096
|
||||||
|
# `uint64(2**2)` (= 4)
|
||||||
|
MAX_BLOBS_PER_BLOCK*: uint64 = 4
|
|
@ -0,0 +1,97 @@
|
||||||
|
# Mainnet preset - Phase0
|
||||||
|
# https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/presets/mainnet/phase0.yaml
|
||||||
|
|
||||||
|
const
|
||||||
|
#
|
||||||
|
# Misc
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**6 (= 64)
|
||||||
|
MAX_COMMITTEES_PER_SLOT* {.intdefine.}: uint64 = 64
|
||||||
|
# 2**7 (= 128)
|
||||||
|
TARGET_COMMITTEE_SIZE*: uint64 = 128
|
||||||
|
# 2**11 (= 2,048)
|
||||||
|
MAX_VALIDATORS_PER_COMMITTEE*: uint64 = 2048
|
||||||
|
# See issue 563
|
||||||
|
SHUFFLE_ROUND_COUNT*: uint64 = 90
|
||||||
|
# 4
|
||||||
|
HYSTERESIS_QUOTIENT*: uint64 = 4
|
||||||
|
# 1 (minus 0.25)
|
||||||
|
HYSTERESIS_DOWNWARD_MULTIPLIER*: uint64 = 1
|
||||||
|
# 5 (plus 1.25)
|
||||||
|
HYSTERESIS_UPWARD_MULTIPLIER*: uint64 = 5
|
||||||
|
|
||||||
|
|
||||||
|
# Fork Choice
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**3 (= 8)
|
||||||
|
SAFE_SLOTS_TO_UPDATE_JUSTIFIED*: uint64 = 8
|
||||||
|
|
||||||
|
|
||||||
|
# Gwei values
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**0 * 10**9 (= 1,000,000,000) Gwei
|
||||||
|
MIN_DEPOSIT_AMOUNT*: uint64 = 1000000000
|
||||||
|
# 2**5 * 10**9 (= 32,000,000,000) Gwei
|
||||||
|
MAX_EFFECTIVE_BALANCE*: uint64 = 32000000000'u64
|
||||||
|
# 2**0 * 10**9 (= 1,000,000,000) Gwei
|
||||||
|
EFFECTIVE_BALANCE_INCREMENT*: uint64 = 1000000000
|
||||||
|
|
||||||
|
|
||||||
|
# Time parameters
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**0 (= 1) slots 12 seconds
|
||||||
|
MIN_ATTESTATION_INCLUSION_DELAY*: uint64 = 1
|
||||||
|
# 2**5 (= 32) slots 6.4 minutes
|
||||||
|
SLOTS_PER_EPOCH* {.intdefine.}: uint64 = 16
|
||||||
|
# 2**0 (= 1) epochs 6.4 minutes
|
||||||
|
MIN_SEED_LOOKAHEAD*: uint64 = 1
|
||||||
|
# 2**2 (= 4) epochs 25.6 minutes
|
||||||
|
MAX_SEED_LOOKAHEAD*: uint64 = 4
|
||||||
|
# 2**6 (= 64) epochs ~6.8 hours
|
||||||
|
EPOCHS_PER_ETH1_VOTING_PERIOD*: uint64 = 64
|
||||||
|
# 2**13 (= 8,192) slots ~27 hours
|
||||||
|
SLOTS_PER_HISTORICAL_ROOT*: uint64 = 8192
|
||||||
|
# 2**2 (= 4) epochs 25.6 minutes
|
||||||
|
MIN_EPOCHS_TO_INACTIVITY_PENALTY*: uint64 = 4
|
||||||
|
|
||||||
|
|
||||||
|
# State list lengths
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**16 (= 65,536) epochs ~0.8 years
|
||||||
|
EPOCHS_PER_HISTORICAL_VECTOR*: uint64 = 65536
|
||||||
|
# 2**13 (= 8,192) epochs ~36 days
|
||||||
|
EPOCHS_PER_SLASHINGS_VECTOR*: uint64 = 8192
|
||||||
|
# 2**24 (= 16,777,216) historical roots, ~26,131 years
|
||||||
|
HISTORICAL_ROOTS_LIMIT*: uint64 = 16777216
|
||||||
|
# 2**40 (= 1,099,511,627,776) validator spots
|
||||||
|
VALIDATOR_REGISTRY_LIMIT*: uint64 = 1099511627776'u64
|
||||||
|
|
||||||
|
|
||||||
|
# Reward and penalty quotients
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**6 (= 64)
|
||||||
|
BASE_REWARD_FACTOR* {.intdefine.}: uint64 = 25
|
||||||
|
# 2**9 (= 512)
|
||||||
|
WHISTLEBLOWER_REWARD_QUOTIENT*: uint64 = 512
|
||||||
|
# 2**3 (= 8)
|
||||||
|
PROPOSER_REWARD_QUOTIENT*: uint64 = 8
|
||||||
|
# 2**26 (= 67,108,864)
|
||||||
|
INACTIVITY_PENALTY_QUOTIENT*: uint64 = 67108864
|
||||||
|
# 2**7 (= 128) (lower safety margin at Phase 0 genesis)
|
||||||
|
MIN_SLASHING_PENALTY_QUOTIENT*: uint64 = 128
|
||||||
|
# 1 (lower safety margin at Phase 0 genesis)
|
||||||
|
PROPORTIONAL_SLASHING_MULTIPLIER*: uint64 = 1
|
||||||
|
|
||||||
|
|
||||||
|
# Max operations per block
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# 2**4 (= 16)
|
||||||
|
MAX_PROPOSER_SLASHINGS*: uint64 = 16
|
||||||
|
# 2**1 (= 2)
|
||||||
|
MAX_ATTESTER_SLASHINGS*: uint64 = 2
|
||||||
|
# 2**7 (= 128)
|
||||||
|
MAX_ATTESTATIONS*: uint64 = 128
|
||||||
|
# 2**4 (= 16)
|
||||||
|
MAX_DEPOSITS*: uint64 = 16
|
||||||
|
# 2**4 (= 16)
|
||||||
|
MAX_VOLUNTARY_EXITS*: uint64 = 16
|
|
@ -1,8 +0,0 @@
|
||||||
- enr:-Ly4QMU1y81COwm1VZgxGF4_eZ21ub9-GHF6dXZ29aEJ0oZpcV2Rysw-viaEKfpcpu9ZarILJLxFZjcKOjE0Sybs3MQBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhANLnx-Jc2VjcDI1NmsxoQKoaYT8I-wf2I_f_ii6EgoSSXj5T3bhiDyW-7ZLsY3T64hzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
|
||||||
- enr:-Ly4QBf76jLiCA_pDXoZjhyRbuwzFOscFY-MIKkPnmHPQbvaKhIDZutfe38G9ibzgQP0RKrTo3vcWOy4hf_8wOZ-U5MBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhBLGgjaJc2VjcDI1NmsxoQLGeo0Q4lDvxIjHjnkAqEuETTaFIjsNrEcSpdDhcHXWFYhzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
|
||||||
- enr:-Ly4QLjZUWdqUO_RwyDqCAccIK5-MbLRD6A2c7oBuVbBgBnWDkEf0UKJVAaJqi2pO101WVQQLYSnYgz1Q3pRhYdrlFoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhANA8sSJc2VjcDI1NmsxoQK4TC_EK1jSs0VVPUpOjIo1rhJmff2SLBPFOWSXMwdLVYhzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
|
||||||
- enr:-Ly4QKwX2rTFtKWKQHSGQFhquxsxL1jewO8JB1MG-jgHqAZVFWxnb3yMoQqnYSV1bk25-_jiLuhIulxar3RBWXEDm6EBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhAN-qZeJc2VjcDI1NmsxoQI7EPGMpecl0QofLp4Wy_lYNCCChUFEH6kY7k-oBGkPFIhzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
|
||||||
- enr:-Ly4QPoChSQTleJROee1-k-4HOEgKqL9kLksE-tEiVqcY9kwF9V53aBg-MruD7Yx4Aks3LAeJpKXAS4ntMrIdqvQYc8Ch2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhGsWBHiJc2VjcDI1NmsxoQKwGQrwOSBJB_DtQOkFZVAY4YQfMAbUVxFpL5WgrzEddYhzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
|
||||||
- enr:-Ly4QBbaKRSX4SncCOxTTL611Kxlz-zYFrIn-k_63jGIPK_wbvFghVUHJICPCxufgTX5h79jvgfPr-2hEEQEdziGQ5MCh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhAMazo6Jc2VjcDI1NmsxoQKt-kbM9isuWp8djhyEq6-4MLv1Sy7dOXeMOMdPgwu9LohzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
|
||||||
- enr:-Ly4QKJ5BzgFyJ6BaTlGY0C8ROzl508U3GA6qxdG5Gn2hxdke6nQO187pYlLvhp82Dez4PQn436Fts1F0WAm-_5l2LACh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhA-YLVKJc2VjcDI1NmsxoQI8_Lvr6p_TkcAu8KorKacfUEnoOon0tdO0qWhriPdBP4hzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
|
||||||
- enr:-Ly4QJMtoiX2bPnVbiQOJCLbtUlqdqZk7kCJQln_W1bp1vOHcxWowE-iMXkKC4_uOb0o73wAW71WYi80Dlsg-7a5wiICh2F0dG5ldHOIAAAAAAAAAACEZXRoMpCCS-QxAgAAZP__________gmlkgnY0gmlwhDbP3KmJc2VjcDI1NmsxoQNvcfKYUqcemLFlpKxl7JcQJwQ3L9unYL44gY2aEiRnI4hzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA
|
|
|
@ -1,71 +0,0 @@
|
||||||
# TODO:
|
|
||||||
# Re-implement the support for custom const presets and load the Gnosis
|
|
||||||
# const preset properly. Right now, we cannot set this because it will
|
|
||||||
# result in failures to load the config.
|
|
||||||
# PRESET_BASE: gnosis
|
|
||||||
PRESET_BASE: mainnet
|
|
||||||
|
|
||||||
CONFIG_NAME: gnosis
|
|
||||||
|
|
||||||
# Transition
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# Estimated on Dec 5, 2022
|
|
||||||
TERMINAL_TOTAL_DIFFICULTY: 8626000000000000000000058750000000000000000000
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# 2**2 (= 4)
|
|
||||||
MIN_PER_EPOCH_CHURN_LIMIT: 4
|
|
||||||
# 2**12 (= 4096)
|
|
||||||
CHURN_LIMIT_QUOTIENT: 4096
|
|
||||||
# `2**12` (= 4096)
|
|
||||||
MIN_GENESIS_ACTIVE_VALIDATOR_COUNT: 4096
|
|
||||||
# Dec 08, 2021, 13:00 UTC
|
|
||||||
MIN_GENESIS_TIME: 1638968400
|
|
||||||
|
|
||||||
# Validator
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# 2**10 (= 1024) ~1.4 hour
|
|
||||||
ETH1_FOLLOW_DISTANCE: 1024
|
|
||||||
# 6 (estimate from xDai mainnet)
|
|
||||||
SECONDS_PER_ETH1_BLOCK: 6
|
|
||||||
|
|
||||||
# Deposit contract
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# xDai Mainnet
|
|
||||||
DEPOSIT_CHAIN_ID: 100
|
|
||||||
DEPOSIT_NETWORK_ID: 100
|
|
||||||
# GBC deposit contract on xDai Mainnet
|
|
||||||
DEPOSIT_CONTRACT_ADDRESS: 0x0B98057eA310F4d31F2a452B414647007d1645d9
|
|
||||||
|
|
||||||
# Gwei values
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# 2**4 * 10**9 (= 16,000,000,000) Gwei
|
|
||||||
EJECTION_BALANCE: 16000000000
|
|
||||||
|
|
||||||
# Initial values
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# GBC area code
|
|
||||||
GENESIS_FORK_VERSION: 0x00000064
|
|
||||||
|
|
||||||
# Time parameters
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# Customized for GBC: ~1 hour
|
|
||||||
GENESIS_DELAY: 6000
|
|
||||||
# 5 seconds
|
|
||||||
SECONDS_PER_SLOT: 5
|
|
||||||
# 2**8 (= 256) epochs ~8 hours
|
|
||||||
MIN_VALIDATOR_WITHDRAWABILITY_DELAY: 256
|
|
||||||
# 2**8 (= 256) epochs ~8 hours
|
|
||||||
SHARD_COMMITTEE_PERIOD: 256
|
|
||||||
|
|
||||||
ALTAIR_FORK_VERSION: 0x01000064
|
|
||||||
ALTAIR_FORK_EPOCH: 512
|
|
||||||
|
|
||||||
BELLATRIX_FORK_VERSION: 0x02000064
|
|
||||||
BELLATRIX_FORK_EPOCH: 385536
|
|
||||||
|
|
||||||
INACTIVITY_SCORE_BIAS: 4
|
|
||||||
# 2**4 (= 16)
|
|
||||||
INACTIVITY_SCORE_RECOVERY_RATE: 16
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
19469077
|
|
|
@ -1 +0,0 @@
|
||||||
0x1f4c7aeb763dd18921f4bc597c8da86f35184fac0bb0a7100f8808b698537ba9
|
|
|
@ -1,17 +0,0 @@
|
||||||
PRESET_NAME: gnosis
|
|
||||||
PRESET_BASE: mainnet
|
|
||||||
|
|
||||||
# Time parameters
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# 2**4 (= 16) slots 1.87 minutes
|
|
||||||
SLOTS_PER_EPOCH: 16
|
|
||||||
|
|
||||||
# Reward and penalty quotients
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
BASE_REWARD_FACTOR: 25
|
|
||||||
|
|
||||||
# Sync committee
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# assert EPOCHS_PER_SYNC_COMMITTEE_PERIOD * SLOTS_PER_EPOCH <= SLOTS_PER_HISTORICAL_ROOT
|
|
||||||
EPOCHS_PER_SYNC_COMMITTEE_PERIOD: 512
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 7109da331bc6aec0d17dacdc9214163b86cd4f24
|
Loading…
Reference in New Issue