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

Early Pre-Shanghai EthereumJS Ephemeral Testnet #2298

Closed
1 of 11 tasks
holgerd77 opened this issue Sep 20, 2022 · 8 comments
Closed
1 of 11 tasks

Early Pre-Shanghai EthereumJS Ephemeral Testnet #2298

holgerd77 opened this issue Sep 20, 2022 · 8 comments

Comments

@holgerd77
Copy link
Member

holgerd77 commented Sep 20, 2022

This morning after some exchange with @MariusVanDerWijden on Twitter we stumbled upon the idea of an early EthereumJS based Pre-Shanghai ephemeral testnet with selected EIPs activated.

To make it short: I really love the idea. 🔥 😎

We are pretty early on with various Shanghai CFI EIP implementations and this is exactly where we are with our client and what we CAN do right now. I guess this will be a great experience and learning to get such a setup going. So we should just do. We'll just see how much this will be used and what will come out of that and we should already do for fun and to get over some after-Merge-laziness. 😋 🙂

So I think it would be great if we have a testnet going within 2-3 weeks - eventually 4 weeks - time (I think one of the main benefits is to have this set up quickly so that people can run early tests against) with a dedicated chain ID, 2-3 bootnodes running, a public RPC endpoint and the following EIPs activated:

@parithosh do you find this useful enough that we can get some official support from you guys regarding infrastructure and some guidance and stuff? 🙂


Some things I can think of what we need to / should do from our side:

  • Log into our server, prepare for some basic (still testnet independent) client setup (scripts, folder structure, reboot persistance, backups,...)
  • Create a genesis.json configuration file clients can use
  • Optional but would be really nice on this occasion: execute on Common: Support Geth Config #1708 and have genesis.json be natively/directly supported in Common
  • Properly integrate testnet genesis.json in Common (would suggest dedicated marked-as-temporary hardfork JSON file), local client test
  • Setup testnet with 2 clients (same machine?), internal testrun
  • Submit at least one transaction for every EIP
  • Successful testnet run for at least 2-3 days
  • Go live! 🍿💯🙂
  • Some super-basic monitoring (at least one bootnode still up and running?)

Questions:

  • Do we have a stable IP on our server after reboot? 🤔
  • Advanced "features": faucet (manually for now?) / block explorer: to skip or not to skip?
@g11tech
Copy link
Contributor

g11tech commented Sep 21, 2022

I think @parithosh can easily seed us with tools for this (genesis EL+CL generation with deposits) + advanced tools

@g11tech
Copy link
Contributor

g11tech commented Sep 21, 2022

Also if we are not concerned with "running" a multi-team testnet atleast before going live, we can just make do with a genesis.json (setting off with a deployed deposit contract state with the validator keys is the only gotcha here) and lodestar 's devnet setup which may not require much tooling

@holgerd77
Copy link
Member Author

Also if we are not concerned with "running" a multi-team testnet atleast before going live, we can just make do with a genesis.json (setting off with a deployed deposit contract state with the validator keys is the only gotcha here) and lodestar 's devnet setup which may not require much tooling

Yes, definitely no need for a multi-team testnet on this round, so we should keep this simple whereever possible.

@g11tech
Copy link
Contributor

g11tech commented Sep 22, 2022

Post some of my casual discussions with @parithosh I propose the following plan:

  1. Test and setup a local 1 EL <> CL
    1. Setup the genesis.json for a post merge genesis block which has a minimal deposit contract
    2. Use that genesis.json to start a lodestar <> ethereumjs instance since lodestar has a utility to drive a post-merge EL
    3. Test EIPs using it
  2. Test and setup a multi-peer setup
    1. Extend the previous 1 EL <> CL setup to a multi -peer
  3. Devnet Setup
    1. Use the Pari's tooling to generate cross EL/CL configurations
    2. Pair up other advance toolset like beacon chain/etherscan/forkmon etc
    3. Launch it to wider audience

@g11tech
Copy link
Contributor

g11tech commented Sep 26, 2022

repasting here from the discord channel to keep this updated:

able to run a single ethereumjs<>lodestar instance locally for custom genesis
image

Next step: will write a small shell script to bring things together and start PR

@jochem-brouwer
Copy link
Member

jochem-brouwer commented Sep 30, 2022

I think an item which needs to be added here: we need a faucet.

EDIT: have to read better

@acolytec3
Copy link
Contributor

Can we close this now that we have the meta issue #2375 and the PR branch?

@holgerd77
Copy link
Member Author

Can we close this now that we have the meta issue #2375 and the PR branch?

No strong opinion, yeah, but why not. Everyone feel free to reopen though if the need arises.

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

No branches or pull requests

4 participants