Allow running beacon chain node without connecting to Ethereum 1 node
mFarghaly opened this issue Β· comments
π Issue
Background
All other Ethereum 2.0 clients like Teku, Nimbus, and Lighthouse allow running Beacon chain node without connecting to Ethereum 1 JSON RPC endpoint.
Prysm can't start without Ethereum 1 endpoint and panic with error:
time="2021-01-05 16:21:58" level=fatal msg="cannot create genesis state: no eth1 http endpoint defined" prefix=powchain
Description
Make --http-web3provider
optional. So beacon node can start without connecting to Ethereum 1 endpoint and to be compliant with the behavior of other Ethereum 2.0 clients.
We could achieve this is Prysm shipped with the genesis state already.
At a minimum, an ETH1 connection is required to generate the genesis state from the deposits so if Prysm already included the genesis state then ETH1 conection is not necessary for a non-proposing beacon node.
Working on it
As discussed on Discord, it currently takes very long to fetch the eth1 deposits.
time="2021-01-28 16:48:28" level=warning msg="Running on ETH2 Mainnet" prefix=flags
time="2021-01-28 16:48:28" level=info msg="Using "max_cover" strategy on attestation aggregation" prefix=flags
time="2021-01-28 16:48:28" level=info msg="Checking DB" database-path="/srv/chain/prysm/beaconchaindata" prefix=node
time="2021-01-28 16:48:28" level=info msg="Deposit contract: 0x00000000219ab540356cbb839cbe05303d7705fa" prefix=node
time="2021-01-28 16:48:28" level=info msg="Waiting for state to be initialized" prefix=initial-sync
time="2021-01-28 16:48:28" level=info msg="Starting beacon node" prefix=node version="Prysm/v1.1.0/9b367b36fc12ecf565ad649209aa2b5bba8c7797. Built at: 2021-01-18 19:47:14+00:00"
time="2021-01-28 16:48:28" level=info msg="Starting JSON-HTTP API" address="127.0.0.1:3500" prefix=gateway
time="2021-01-28 16:48:28" level=info msg="Waiting to reach the validator deposit threshold to start the beacon chain..." prefix=blockchain
time="2021-01-28 16:48:28" level=info msg="gRPC server listening on port" address="127.0.0.1:4000" prefix=rpc
time="2021-01-28 16:48:28" level=warning msg="You are using an insecure gRPC server. If you are running your beacon node and validator on the same machines, you can ignore this message. If you want to know how to enable secure connections, see: https://docs.prylabs.network/docs/prysm-usage/secure-grpc" prefix=rpc
time="2021-01-28 16:48:28" level=info msg="Connected to eth1 proof-of-work chain" endpoint="https://mainnet.infura.io/v3/492[...]e5a" prefix=powchain
time="2021-01-28 16:48:33" level=info msg="New gRPC client connected to beacon node" addr="127.0.0.1:59392" prefix=rpc
time="2021-01-28 17:00:00" level=info msg="Processing deposits from Ethereum 1 chain" deposits=512 genesisValidators=507 prefix=powchain
time="2021-01-28 17:04:06" level=info msg="Processing deposits from Ethereum 1 chain" deposits=1024 genesisValidators=1019 prefix=powchain
time="2021-01-28 17:26:03" level=info msg="Processing deposits from Ethereum 1 chain" deposits=1536 genesisValidators=1531 prefix=powchain
time="2021-01-28 17:53:20" level=info msg="Processing deposits from Ethereum 1 chain" deposits=2048 genesisValidators=2043 prefix=powchain
time="2021-01-28 17:58:26" level=info msg="Processing deposits from Ethereum 1 chain" deposits=2560 genesisValidators=2555 prefix=powchain
time="2021-01-28 18:09:49" level=info msg="Processing deposits from Ethereum 1 chain" deposits=3072 genesisValidators=3067 prefix=powchain
At some point presumably ETH1 and ETH2 will merge, so there is good as there is possible logical paradox to address of post-merge what would prysm query? itself? and at the same time, there should also be an option (flag) to cause it to be reverified if someone "really" wants to process the deposits (for purity reasons).