Skip to content
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

Deposit contract address cli flag #939

Closed
mpetrunic opened this issue Mar 19, 2020 · 9 comments
Closed

Deposit contract address cli flag #939

mpetrunic opened this issue Mar 19, 2020 · 9 comments

Comments

@mpetrunic
Copy link

Description

It would be nice if we could use "recent" generated state with custom deposit address.

Present Behaviour

Currently we can either:

  • generate spec yaml with our deposit address and regenerate it so genesis time doesn't get too old which is not satisfactory
  • set genesis to start after first deposit which complicates things for developers
  • use lcli to update state genesis time before each start -> seems most promising

Expected Behaviour

--deposit-contract-address 0x... should override deposit contract address in generated yaml file.

Steps to resolve

Implement flag.

@paulhauner
Copy link
Member

paulhauner commented Mar 23, 2020

@mpetrunic have you considered using the eth2-testnets format to define testnets? We can take a --testnet-dir flag which will load those configs.

We also have an lcli command for generating these directories:

lcli --spec mainnet new-testnet
  --deposit-contract-address 0xaA888248144Bc5d584a7f400839d0D912F21C39A \
  --deposit-contract-deploy-block 2355031 \
  --effective-balance-increment 100000000 \
  --ejection-balance 1600000000 \
  --eth1-follow-distance 16 \
  --genesis-fork-version 0x00000539 \
  --max-effective-balance 3200000000 \
  --min-deposit-amount 100000000 \
  --min-genesis-active-validator-count 16 \
  --min-genesis-delay 3600 \
  --min-genesis-time 1584316800 \
  --testnet-dir ~/.lighthouse/testnet

@mpetrunic
Copy link
Author

Can I configure genesis with 8 interop validators preloaded like with "recent" subcommand?

@paulhauner
Copy link
Member

Can I configure genesis with 8 interop validators preloaded like with "recent" subcommand?

Hmm, I haven't used recent with an eth1-based testnet before... Do you have a deposit contract deployed somewhere with those interop validators already deposited?

@mpetrunic
Copy link
Author

Yeah, we are trying to have working chain with preloaded interop validators at genesis state while being able to add new validators trough deposit contract on private eth1 chain.

Here is working docker-compose: https://github.com/NodeFactoryIo/ChainGuardian/blob/mpetrunic/lighthouse/docker-compose.yml

@mpetrunic
Copy link
Author

@paulhauner @AgeManning
Manage to get it working with this script:
https://github.com/NodeFactoryIo/ChainGuardian/blob/mpetrunic/lighthouse/start.sh

but it seems that it's not tracking eth1 chain and deposits. Keep getting this error message:

lighthouse_beacon_node | Mar 23 15:30:18.107 ERRO No valid eth1_data votes, `votes_to_consider` empty, outcome: casting `state.eth1_data` as eth1 vote, genesis_time: 1584976710, earliest_block_timestamp: None, lowest_block_number: None, service: eth1_rpc

@paulhauner
Copy link
Member

paulhauner commented Mar 24, 2020

I ran the docker-compose and it seems that the issue is because when the compose environment comes up, it deploys the deposit contract then immediately starts Lighthouse. Since the configuration sets ETH1_FOLLOW_DISTANCE = 16, there's nothing to vote on until 16 blocks have passed.

See the following logs, when eth1 block #14 is the latest block we get the "No valid eth1_data votes" error. As soon as block #15 reaches the canonical chain (blocks are zero-indexed, so this means 16 blocks exist) we stop getting the error.

cg_eth1_node       | INFO [03-24|06:55:24.001] Successfully sealed new block            number=21 sealhash=5499cb…a87833 hash=9dd141…ba4fef elapsed=13.999s
cg_eth1_node       | INFO [03-24|06:55:24.001] 🔗 block reached canonical chain          number=14 hash=ed2455…efdd11
cg_eth1_node       | INFO [03-24|06:55:24.001] 🔨 mined potential block                  number=21 hash=9dd141…ba4fef
lighthouse_validators | Mar 24 06:55:24.001 INFO All validators active                   slot: 45, epoch: 5, total_validators: 32, active_validators: 32, proposers: 8, service: notifier
cg_eth1_node       | INFO [03-24|06:55:24.003] Commit new mining work                   number=22 sealhash=79babb…c58772 uncles=0 txs=0 gas=0       fees=0           elapsed=1.462ms
lighthouse_beacon_node | Mar 24 06:55:27.104 ERRO No valid eth1_data votes, `votes_to_consider` empty, outcome: casting `state.eth1_data` as eth1 vote, genesis_time: 1585032651, earliest_block_timestamp: 0, lowest_block_number: 0, service: eth1_rpc
lighthouse_beacon_node | Mar 24 06:55:27.115 INFO Block from local validator              block_slot: 46, block_root: 0x77f4…f694, service: http
lighthouse_validators | Mar 24 06:55:27.116 INFO Successfully published block            slot: 46, 

... truncated ...

cg_eth1_node       | INFO [03-24|06:55:38.001] Successfully sealed new block            number=22 sealhash=79babb…c58772 hash=0861a5…db6a87 elapsed=13.998s
cg_eth1_node       | INFO [03-24|06:55:38.001] 🔗 block reached canonical chain          number=15 hash=0d5dbf…196221
cg_eth1_node       | INFO [03-24|06:55:38.001] 🔨 mined potential block                  number=22 hash=0861a5…db6a87
cg_eth1_node       | INFO [03-24|06:55:38.002] Commit new mining work                   number=23 sealhash=d050d7…8de3bd uncles=0 txs=0 gas=0       fees=0           elapsed=1.043ms
lighthouse_beacon_node | Mar 24 06:55:39.118 INFO Block from local validator              block_slot: 48, block_root: 0x3d42…7e26, service: http
lighthouse_validators | Mar 24 06:55:39.119 INFO Successfully published block            slot: 48, attestations: 1, deposits: 0, service: block

@paulhauner
Copy link
Member

@mpetrunic, are you still in need of this flag or does the testnet directory suffice? :)

@mpetrunic
Copy link
Author

Testnet directory will suffice once we figure out eth1 data votes an deposits 😄

@paulhauner
Copy link
Member

Ok, thanks! I'll close this for now, feel free to reopen if you wish.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants