-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deploy Geth and set of Nimbus nodes for Ropsten testnet #97
Comments
Although if we are in a hurry we do have a
So we can copy that in an emergency, but a fresh sync would be nice too. |
#97 Signed-off-by: Jakub Sokołowski <[email protected]>
#97 Signed-off-by: Jakub Sokołowski <[email protected]>
Deployed a host and Geth node on it:
We have an instance syncing:
|
We are getting there, about one third in 16 hours:
|
Halfway there:
But we might need a bigger data volume:
|
This sync progress doesn't look that great:
We might need some help with this. |
I added some more peers via the JS console based on comments in this Gist:
I also increased memory limits slightly. Lets see if that does anything. |
The number of peers we have is decent:
|
One thing that worries me is that after restart the
|
Looks like I made a bad call by copying Goerli config, since Goerli uses infra-nimbus/ansible/group_vars/nimbus-geth-goerli.yml Lines 7 to 8 in e163284
Updated it and will attempt to sync from scratch: infra-nimbus/ansible/group_vars/nimbus-geth-ropsten.yml Lines 7 to 8 in 6a2a801
|
Looks like we got synced in under 5 hours: Now only state sync is left which is at 71%:
Nice. |
#97 Signed-off-by: Jakub Sokołowski <[email protected]>
Had to bump the data volume to 250 GB: 8c27671a
And we're synced. |
Host for Nimbus nodes for new merge testnet called Ropsten: #97 Signed-off-by: Jakub Sokołowski <[email protected]>
The host is here, I've bootstrapped it already: 05214dc2 infra-nimbus/ansible/inventory/test Line 13 in 05214dc
|
#97 - no validators have been deployed yet. Signed-off-by: Artur Marud <[email protected]>
4 instances of beacon nodes were created based on
|
As I mentioned, the Ropsten testent config can be found here based on the changes in status-im/nimbus-eth2#3648: I would recommend some extra reading about Consensus Layer and Beacon Chain: |
Thew new
https://github.com/ethereum/go-ethereum/releases/tag/v1.10.18 |
Zahary has generated the Ropsten validators: https://github.com/status-im/nimbus-private/tree/master/ropsten_deposits |
One more thing worth verifying is the genesis for the testnet the nodes have configured:
Which indeed matches the config provided: # Monday, May 30th, 2022 3:00:00 PM +UTC
MIN_GENESIS_TIME: 1653318000
GENESIS_FORK_VERSION: 0x80000069 You can read about gensis files here: |
Validators have been deployed in requested fashion (2500 validators per instance). |
Looks good:
|
We will need a TTD fix that was added recently: eth-clients/merge-testnets@dd5e025 It has been included in the For now I just manually edited the systemd services to include this flag:
And disabled Ansible changes with the toggle script. |
Turns out apparently that the original description of the task was incorrect. We need a dedicated Geth node for each Nimbus beacon node instance, otherwise we'd have multiple beacon nodes trying to control the same Geth instance, which won't work. The alternatives are:
@zah what do you think? |
Right now we have 384 GB on the
And each beacon node takes up about 4 GB. At most we could fit two Geth instances on this host. And it wouldn't last a long time. |
@zah made a decision to temporarily use just one beacon chain node with all validators, and split it up after the merge. |
We can't have multiple nodes controling a single Geth instance. This will lead to unpredictable behavior on the execution layer. #97 Signed-off-by: Jakub Sokołowski <[email protected]>
I've fixed the layout: fbc939ae infra-nimbus/ansible/group_vars/nimbus.ropsten.yml Lines 29 to 35 in fbc939a
Once the merge happens we can try to get extra storage and spread out the validators again. |
There's not much time left to the merge:
|
Apparently, according to docs:
And according to @tersec:
|
status-im/infra-nimbus#97 Signed-off-by: Jakub Sokołowski <[email protected]>
Looks like the merge failed because we were missing the
I've enabled it explicitly for the Ropsten Geth instnace, but I also enabled I by default in Geth Ansible role: |
We really need some kind of validation process to check if the setup is correct before the next testnet merge. |
We have something which just needs minor adaptation: https://github.com/status-im/nimbus-eth2/blob/stable/scripts/test_merge_vectors.nim |
@tersec And that has to be built separately and called separately from the node? Any reason why it can't be part of the node and the check be triggered via API? |
That would currently have to be built separately, yes. There's even an engine API call for exactly this (https://github.com/ethereum/execution-apis/blob/main/src/engine/specification.md#engine_exchangetransitionconfigurationv1) which So one option is to switch to proc onMinute(node: BeaconNode) {.async.} =
## This procedure will be called once per minute.
# https://github.com/ethereum/execution-apis/blob/v1.0.0-alpha.8/src/engine/specification.md#engine_exchangetransitionconfigurationv1
if not node.eth1Monitor.isNil and
node.currentSlot.epoch >= node.dag.cfg.BELLATRIX_FORK_EPOCH:
try:
# TODO could create a bool-succeed-or-not interface to this function
await node.eth1Monitor.exchangeTransitionConfiguration()
except CatchableError as exc:
debug "onMinute: exchangeTransitionConfiguration failed",
error = exc.msg
|
Also if there's a mismatch: let ecTransitionConfiguration =
await p.dataProvider.web3.provider.engine_exchangeTransitionConfigurationV1(
ccTransitionConfiguration)
if ccTransitionConfiguration != ecTransitionConfiguration:
# TODO is this the right place to log?
info "exchangeTransitionConfiguration: transition configuration mismatch",
ccTerminalTotalDifficulty =
ccTransitionConfiguration.terminalTotalDifficulty,
ccTerminalBlockHash =
ccTransitionConfiguration.terminalBlockHash,
ccTerminalBlockNumber =
ccTransitionConfiguration.terminalBlockNumber.uint64,
ecTerminalTotalDifficulty =
ecTransitionConfiguration.terminalTotalDifficulty,
ecTerminalBlockHash =
ecTransitionConfiguration.terminalBlockHash,
ecTerminalBlockNumber =
ecTransitionConfiguration.terminalBlockNumber.uint64 |
I think we can close this. |
There is a new testnet brewing intended to test The Merge on Ropsten:
This testnet is launching on the 30th of May, and each org will receive 10 k validators.
The support for this testnet has already been merged into
nimbus-eth2
:What we'll need is:
go-ethereum
instance tosnap
sync Eth1 Ropsten testnet.nimbus-eth2
instances running on Eth2 Ropsten testnet, 2500 validators each.The sooner the Geth node is up the sooner it syncs.
The text was updated successfully, but these errors were encountered: