ethereumjs-monorepo icon indicating copy to clipboard operation
ethereumjs-monorepo copied to clipboard

Early Pre-Shanghai EthereumJS Ephemeral Testnet

Open holgerd77 opened this issue 3 years ago β€’ 4 comments
trafficstars

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
  • [x] Optional but would be really nice on this occasion: execute on #1708 and have genesis.json be natively/directly supported in Common
    • https://github.com/ethereumjs/ethereumjs-monorepo/pull/2300
  • [ ] 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?

holgerd77 avatar Sep 20 '22 11:09 holgerd77

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

g11tech avatar Sep 21 '22 12:09 g11tech

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

g11tech avatar Sep 21 '22 12:09 g11tech

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.

holgerd77 avatar Sep 22 '22 09:09 holgerd77

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 avatar Sep 22 '22 10:09 g11tech

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

g11tech avatar Sep 26 '22 13:09 g11tech

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

EDIT: have to read better

jochem-brouwer avatar Sep 30 '22 14:09 jochem-brouwer

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

acolytec3 avatar Oct 24 '22 15:10 acolytec3

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.

holgerd77 avatar Oct 24 '22 15:10 holgerd77