rm require engine API check (#4144)

The `eth1_monitor` check to require engine API from bellatrix onward
has issues in setups where the EL and CL are started simultaneously
because the EL may not be ready to answer requests by the time that the
check is performed. This can be observed, e.g., on Raspberry Pi 4 when
using Besu as the EL client. Now that the merge transition happened, the
check is also not that useful anymore, as users have other ways to know
that their setup is not working correctly (e.g., repeated exchange logs)
This commit is contained in:
Etan Kissling 2022-09-19 23:47:46 +02:00 committed by GitHub
parent 77d28f43f6
commit 0708fcd7cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 17 additions and 28 deletions

View File

@ -173,9 +173,9 @@ type
name: "web3-force-polling" .}: bool
requireEngineAPI* {.
defaultValue: true
hidden # Deprecated > 22.9
desc: "Require Nimbus to be configured with an Engine API end-point after the Bellatrix fork epoch"
name: "require-engine-api-in-bellatrix" .}: bool
name: "require-engine-api-in-bellatrix" .}: Option[bool]
nonInteractive* {.
desc: "Do not display interative prompts. Quit on missing configuration"

View File

@ -141,8 +141,6 @@ type
stopFut: Future[void]
getBeaconTime: GetBeaconTimeFn
requireEngineAPI: bool
when hasGenesisDetection:
genesisValidators: seq[ImmutableValidatorData]
genesisValidatorKeyToIndex: Table[ValidatorPubKey, ValidatorIndex]
@ -1041,8 +1039,7 @@ proc init*(T: type Eth1Monitor,
depositContractSnapshot: Option[DepositContractSnapshot],
eth1Network: Option[Eth1Network],
forcePolling: bool,
jwtSecret: Option[seq[byte]],
requireEngineAPI: bool): T =
jwtSecret: Option[seq[byte]]): T =
doAssert web3Urls.len > 0
var web3Urls = web3Urls
for url in mitems(web3Urls):
@ -1060,8 +1057,7 @@ proc init*(T: type Eth1Monitor,
eth1Progress: newAsyncEvent(),
forcePolling: forcePolling,
jwtSecret: jwtSecret,
blocksPerLogsRequest: targetBlocksPerLogsRequest,
requireEngineAPI: requireEngineAPI)
blocksPerLogsRequest: targetBlocksPerLogsRequest)
proc safeCancel(fut: var Future[void]) =
if not fut.isNil and not fut.finished:
@ -1349,16 +1345,6 @@ proc startEth1Syncing(m: Eth1Monitor, delayBeforeStart: Duration) {.async.} =
await m.ensureDataProvider()
doAssert m.dataProvider != nil, "close not called concurrently"
if m.currentEpoch >= m.cfg.BELLATRIX_FORK_EPOCH:
let status = await m.exchangeTransitionConfiguration()
if status != EtcStatus.match and isFirstRun and m.requireEngineAPI:
fatal "The Bellatrix hard fork requires the beacon node to be connected to a properly configured Engine API end-point. " &
"See https://nimbus.guide/merge.html for more details. " &
"If you want to temporarily continue operating Nimbus without configuring an Engine API end-point, " &
"please specify the command-line option --require-engine-api-in-bellatrix=no when launching it. " &
"Please note that you MUST complete the migration before the network TTD is reached (estimated to happen near 13th of September)"
quit 1
# We might need to reset the chain if the new provider disagrees
# with the previous one regarding the history of the chain or if
# we have detected a conensus violation - our view disagreeing with

View File

@ -541,8 +541,7 @@ proc init*(T: type BeaconNode,
getDepositContractSnapshot(),
eth1Network,
config.web3ForcePolling,
optJwtSecret,
config.requireEngineAPI)
optJwtSecret)
eth1Monitor.loadPersistedDeposits()
@ -643,8 +642,7 @@ proc init*(T: type BeaconNode,
getDepositContractSnapshot(),
eth1Network,
config.web3ForcePolling,
optJwtSecret,
config.requireEngineAPI)
optJwtSecret)
if config.rpcEnabled:
warn "Nimbus's JSON-RPC server has been removed. This includes the --rpc, --rpc-port, and --rpc-address configuration options. https://nimbus.guide/rest-api.html shows how to enable and configure the REST Beacon API server which replaces it."
@ -1806,6 +1804,12 @@ proc doRunBeaconNode(config: var BeaconNodeConf, rng: ref HmacDrbgContext) {.rai
cmdParams = commandLineParams(),
config
template ignoreDeprecatedOption(option: untyped): untyped =
if config.option.isSome:
warn "Config option is deprecated",
option = config.option.get
ignoreDeprecatedOption requireEngineAPI
createPidFile(config.dataDir.string / "beacon_node.pid")
config.createDumpDirs()

View File

@ -64,8 +64,7 @@ programMain:
cfg, db = nil, getBeaconTime, config.web3Urls,
none(DepositContractSnapshot), metadata.eth1Network,
forcePolling = false,
rng[].loadJwtSecret(config, allowCreate = false),
true)
rng[].loadJwtSecret(config, allowCreate = false))
waitFor res.ensureDataProvider()
res
else:

View File

@ -35,8 +35,6 @@ The following options are available:
--secrets-dir A directory containing validator keystore passwords.
--wallets-dir A directory containing wallet files.
--web3-url One or more execution layer Web3 provider URLs.
--require-engine-api-in-bellatrix Require Nimbus to be configured with an Engine API end-point after the Bellatrix
fork epoch [=true].
--non-interactive Do not display interative prompts. Quit on missing configuration.
--netkey-file Source of network (secp256k1) private key file (random|<path>) [=random].
--insecure-netkey-password Use pre-generated INSECURE password for network private key file [=false].
@ -113,6 +111,8 @@ The following options are available:
--validator-monitor-totals Publish metrics to single 'totals' label for better collection performance when
monitoring many validators (BETA) [=false].
--suggested-fee-recipient Suggested fee recipient.
--payload-builder Enable external payload builder [=false].
--payload-builder-url Payload builder URL.
...
```

View File

@ -59,7 +59,7 @@ proc run() {.async.} =
eth1Monitor = Eth1Monitor.init(
defaultRuntimeConfig, db = nil, nil, @[paramStr(1)],
none(DepositContractSnapshot), none(Eth1Network), false,
some readJwtSecret(paramStr(2)).get, true)
some readJwtSecret(paramStr(2)).get)
await eth1Monitor.ensureDataProvider()
try:

View File

@ -61,7 +61,7 @@ proc run() {.async.} =
eth1Monitor = Eth1Monitor.init(
defaultRuntimeConfig, db = nil, nil, @[web3Url],
none(DepositContractSnapshot), none(Eth1Network),
false, jwtSecret, true)
false, jwtSecret)
web3Provider = (await Web3DataProvider.new(
default(Eth1Address), web3Url, jwtSecret)).get