Gnosis const preset

This commit is contained in:
Zahary Karadjov 2023-01-12 19:58:42 +02:00
parent c01e53e35e
commit b06502bf65
No known key found for this signature in database
GPG Key ID: C1F42EAFF38D570F
18 changed files with 304 additions and 120 deletions

3
.gitmodules vendored
View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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.}

View File

@ -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):
gnosisMetadata.cfg
else:
mainnetMetadata.cfg mainnetMetadata.cfg
elif const_preset == "gnosis":
gnosisMetadata.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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +0,0 @@
19469077

View File

@ -1 +0,0 @@
0x1f4c7aeb763dd18921f4bc597c8da86f35184fac0bb0a7100f8808b698537ba9

View File

@ -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

1
vendor/gnosis-chain-configs vendored Submodule

@ -0,0 +1 @@
Subproject commit 7109da331bc6aec0d17dacdc9214163b86cd4f24