Giter Club home page Giter Club logo

medalla's Introduction

⚠️ for post-launch testnets, check: https://github.com/eth-clients/eth2-testnets


Ethereum 2.0 Multi-Client Testnets

discord gitter

This repository has become a collection of multiple active and inactive testnets. Please refer to the following specs for details:

Or read the generalized outline on how to launch your own testnet: LAUNCH.md

F.A.Q.

I'm wondering ...

Why do we need multi-client test-networks?

The first phase of Ethereum 2.0, the phase 0, is the beacon chain. For the first time, a variety of new clients will be working together on a brand new blockchain with a new, unique approach to networking and consensus.

Before such a mainnet can be launched, we need testnets that mimic mainnet conditions as good as possible. This requires us to have stable, long-term, and persistent testnets up and running that are supported by not only one client but multiple clients, ideally, all clients.

The Schlesi testnet was one of many steps in that direction. The Witti testnet was another. The Altona testnet is yet another. The Medalla testnet aims to be the final one prior to mainnet launch.

Is Medalla the official, public multi-client testnet?

Yes.

What's the difference between Altona and Onyx?

The Onyx Testnet is a single-client testnet launched by the Prysmatic Labs team to replace Topaz. It's entirely comprised of Prysm validators, other clients didn't have releases at genesis yet.

Altona, Witti, and Schlesi, on the other side, tried to have as many different clients right from the start. The Schlesi genesis contained 50% Lighthouse and 50% Prysm validators. The Witti genesis even featured three clients. Altona featured four clients. They are multi-client testnets.

What's the difference between Altona and Topaz?

The Topaz Testnet is a single-client testnet. Same reasoning as Onyx above.

What's the difference between Altona and Multinet?

The ETH 2.0 Multinet is a collection of startup scripts to simulate multi-client testnets with various parameters such as number of validators to run the network with. The multinet is based on a minimal ETH 2.0 specification.

Altona, however, is not a simulation. It's a real persistent end-user testnet based on a slightly modified mainnet configuration. Everyone should be able to add validators and beacon chain nodes.

What's the difference between Altona and Interop?

The ETH 2.0 Interop Lock-In was a physical meetup of seven client teams working towards interoperability in 2019. This was the first major step towards multi-client testnets, even though the focus of the lock-in was mainly on networking. Other aspects of interoperability were playing minor roles.

For Altona, all aspects are important, as they would be important for a potential mainnet candidate.

Why does Altona use the Mainnet configuration?

The ultimate goal of Altona should be proving that the clients are ready to support a potential beacon-chain mainnet. Therefore, it is time to template the testnet as close as possible to mainnet.

Why is there no docker file or startup script?

The focus of the testnet is no longer developer but end-user centric. Each user of the beacon chain should be able to manually complete any task, i.e., setting up a validator or synchronizing a beacon chain node. Scripts will be convenient in future to ease this process but for now we need to ensure that nodes, clients, and other tooling is ready to be used sufficiently to complete all tasks required by a beacon chain mainnet.

Additionally, not having a script that does the job for you, ensures that all node implementations and their according tooling are well documented across the different clients.

Is Altona an incentivized adversarial network?

No. The Altona testnet is not incentivized. The current goal is to ensure protocol compatibility across major ETH 2.0 client implementations. Participation is free and permissionless, everyone can create validator deposits at 0x16e82D77882A663454Ef92806b7DeCa1D394810f on the Goerli Ethereum testnet and start validating on Altona.

Why do you call it Medalla?

Medalla means "medal" and can be seen as a reference to the Olympic testnet that was used to prepare the ETH1 launch. It emphasizes the importance of the network at this stage towards the ETH2 launch. It can also be seen as a hint that Medalla validators will recieve a proof of attendance "medal" on the Ethereum network for participation.

Why did you call Altona Altona?

Altona is a subway station in the city of Hamburg, Germany. It was proposed on Reddit by u/krokodilmannchen.

Why did you call Witti Witti?

Witti (Wittenbergplatz) is a subway station in Berlin proposed by MP. It's the first testnet named by a subway station in Berlin that is not located in the district of Kreuzberg were many blockchain companies, including the ETH DEV, have their offices.

Why did you call Schlesi Schlesi?

Schlesi (Schlesisches Tor) is a subway station in Berlin with proximity to Goerli and ETH DEV offices.

What is the Goerli testnet?

Goerli is a cross-client proof-of-authority Ethereum 1.x testnet. It's well supported across all ETH 1.0 clients, tooling, and infrastructure, and will be used to test the ETH 2.0 transition through a deposit contract deployed to Goerli.

See also

In the news:

Resources:

Historical documentation:

Previous multi-client testnets:

Support

This project is supported by the:

Thanks ❤️

License

This is free and unencumbered software released into the public domain. For more information, please refer to unlicense.org

medalla's People

Contributors

ajsutton avatar alan008 avatar buttaa avatar chrishobcroft avatar djrtwo avatar fredriksvantes avatar handelaar2 avatar ongrid avatar paulhauner avatar protolambda avatar q9f avatar rolfyone avatar stefa2k avatar terencechain avatar timmyers avatar tzapu avatar wschwab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

medalla's Issues

Reccurrent sync error in beacon chain log

[2020-04-29 19:56:56] ERROR sync: Failed to handle p2p pubsub error=attestation is not aggregated
github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations/kv.(*AttCaches).SaveAggregatedAttestation
	beacon-chain/operations/attestations/kv/aggregated.go:74
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).beaconAggregateProofSubscriber
	beacon-chain/sync/subscriber_beacon_aggregate_proof.go:25
github.com/prysmaticlabs/prysm/beacon-chain/sync.(*Service).subscribeWithBase.func1
	beacon-chain/sync/subscriber.go:166
runtime.goexit
	GOROOT/src/runtime/asm_amd64.s:1373 topic=/eth2/9925efd6/beacon_aggregate_and_proof/ssz_snappy

Witti boot enr have 0.0.0.0 address

When addressing sigp/lighthouse#1186, I attempted to connect to Witti to verify LH could sync. I noticed that the boot ENR have a 0.0.0.0 address:

enr-cli --enr "enr:-
KG4QO6QrRlWQ2Z5ss4XoUsrPvsepRuuogcHyC81gMQr7PJ3IFh41bDnGSl9iN_ijg2EgQeEQDpRPkE4FzD2ecbp6XoChGV0aDKQgGboQQAAARP__________4JpZIJ2NIJpcIQAAAAAiXNlY3AyNTZrMaEDpsGvSN7oM2c04ZT9mrG32TVj-sMhb6HiKc6LMEXYEyiDdGNwgnUwg3VkcIJ1MA"

ENR Read
Sequence No: 2
Node ID: 0x5b8c..0cf7
IP: 0.0.0.0
TCP Port: 30000
UDP Port: 30000

(Install enr-cli with cargo install enr-cli --version 0.1.0-alpha)

Fix for #11

See comments at bottom of #11
ws should be changed in http

Unexpected exception thrown for nioEventLoopGroup-3-2

There are 6 error logs related with this problem today in between 11:19 - 11:27

io.netty.channel.ExtendedClosedChannelException: null
	at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]

teku.log

Adding https://beaconscan.com/ to the About section.

Hi guys - On behalf of Etherscan - Would it be possible to add also a hyperlink to the "About" section right here?

image

Reckon there can only be one hyperlink at a time on that section though, so to be honest not exactly too sure how more than one link could be accomodated (maybe as a tag etc)?

cc @mtbitcoin

Missing config for Witti Prysm beacon

The Prysm beacon config only shows --web3provider ws://127.0.0.1:8546
This is incomplete as currently Prysm uses both ws and http.

Only specifying the above can lead to issues, as the http parameter will default to "https://goerli.prylabs.net"
(resulting in 2 different eth1 sources potentially being different)

So if you specify localhost on port 8546, you also have to specify:
--http-web3provider="http://127.0.0.1:8545" \

Details around issue in Prysm rep : prysmaticlabs/prysm#5826

Below a screen print of the Prysm witti config:

2020-05-27_11-37-28

Medalla Metamask interfacee

I am trying to use the Medalla Launchpad and am at the "CONNECT WALLET" page. Although Metamask shows that I am connected to the Medalla Launchpad, on the CONNECT WALLET I am in a continuous cycle. Is there a distinction between an Account and a Wallet in Metamask?

Cannot apply 1052.patch for lighthouse client

error information:
error: patch failed: beacon_node/genesis/src/eth1_genesis_service.rs:10
error: beacon_node/genesis/src/eth1_genesis_service.rs: patch does not apply
error: patch failed: eth2/state_processing/src/genesis.rs:1
error: eth2/state_processing/src/genesis.rs: patch does not apply
error: patch failed: eth2/state_processing/src/lib.rs:10
error: eth2/state_processing/src/lib.rs: patch does not apply

Depositing to contract

Hello,

this is more an issue of documentation and understanding I think rather then a technical issue.
I mananged to contriubute in the testnet5 and would like to do it in the schlesi testnet as well.

Geth is running properly,
lighthouse is properly running a beacon node
I have a MetaMask wallet with >32 ETH.

The only thing I do not get is how I "sign and use the contract" as a validator. There is a section that tries to explain the procedure. However, it's not entirely clear to me:

As far as I understood I need to send 32 ETH to 0xA15554BF93a052669B511ae29EA21f3581677ac5. But I cannot see how I do this with that line:

lighthouse account validator new
--send-deposits
--password ./password.txt
--deposit-value 3200000000 random

For my understanding there is no parameter for the destination (contract address).

  • So how does lighthouse know where to send the GörliETH to?
    Moreover there is no adress from my wallet (source).
  • So how does lighthouse know where to send the GörliETH from?

And also my questions are:

  • How would I send additional GörliETH to the contract if I wanted to?
  • How would I withdraw GörliETH from the contract if I wanted to?
  • Where can see the current deposite of GörliETH I made for the contract?

I do have a lack of knowledge here.
I appreciate your help.

Thank you

How to contribute?

Hi, I'm from the @prysmaticlabs team. We have recently launched our latest testnet (Topaz) on the v0.11.1 spec version with full mainnet configuration. We are wondering how we can contribute to the multiclient testnet effort.

Should we add Topaz information here? It is multi-client compatible.

I see Teku specific information v0.11.1, but using fractional deposits. Is the scope of The Multiclient Testnet defined? Are we planning to use the exact configuration intended for mainnet?

Thanks

The Fate of Medalla

The Fate of Medalla

As discussed on our latest call, we need to decide what to do with Medalla.

Two primary options:

  1. Let it die as we approach mainnet, replacing it with a new v1.0 testnet
  2. Keep it running, and upgrade it to v1.0 release (BLSv4, discv5.1, maybe fork the state to "mainnet" v1.0 constants)

Arguments for (1)

  • With respect to validator breakdown, Medalla is primarily run by the community. As mainnet approaches, I expect most community members to have little appetite to consistently run two nodes, and thus the largely community composed testnet is in for a number of rough leak periods. Validators cannot be activated during a leak so this might diminish the quality of service the testnet provides for the community. (We are currently seeing such a leak and expect finality at end of October. That said, we could easily see another leak or two in the coming months).
  • Forking can be difficult. This is not only wrt the underlying technicals, but also wrt community/user coordination. Given mainnet is imminent, asking existing Medalla users to coordinate software upgrades might (1) distract from their mainnet preparations and (2) might result in a low percentage actually upgrading to the fork. This would lead to another leak. Additionally, there is technical overhead to upgrade each of the fork components. While good practice, it will take significant developer resources.
  • A clean reset when most of the community migrates to mainnet will give us a chance to run the majority of validators on the new network to provide a much higher quality of service to those that need a testnet for testing. Additionally, we can consider "testnet" features that might make keeping the quality of service higher in the first place. For example, we can have a set of master exit keys that are allowed to submit exits for any validator. We can then daily sweep validators that haven't been online in some time period and submit exits for them.

Arguments for (2)

  • We're going to have to do forking upgrades sooner rather than later so it could be good practice for devs and community. This is a practice in both technicals and coordination. The technical upgrade can either be just discv5.1 and BLSv4, or it can also include a migration to v1.0 configuration (e.g. alter some constants, expand some arrays in beacon state, etc). If we do this part of the upgrade, I would recommend doing a "re-genesis" at this fork state and not serve blocks/states prior to the fork. If we did that, it would mean that Medalla does not satisfy the following goal
  • Medalla has a bunch of syncing data so we can have a solid place to test more stressful syncing when mainnet goes live. It has been expressed by some devs that this is an asset to the development and release process and starting mainnet without the asset in place

My thoughts

I probably showed my bias in the arguments above. I personally lean toward not upgrading Medalla and letting it degrade in mid to late November.

In the next couple of months, there will be a high coordination event (mainnet genesis) going on that I think a testnet fork will distract from on both technical and community. Additionally, if we upgrade to v1.0 configuration, I would recommend doing a "regenesis" event with a single script migration rather than maintaining legacy states/code paths for the testnet. If we do that, it defeats the syncing data argument.

Instead, we could keep the Medalla config around and just upgrade discv5.1 and blsv4. blsv4 could be quietly upgraded anytime because 0 pubkey is not currently on that testnet, but this could change anytime. As for discv5.1 there are two options, (a) do a catdog style dual table or (b) a migration at a discrete epoch. (a) would help reduce the coordination overhead on the upgrade but would require a significant more amount of development and maintenance. (b) would require a single epoch of coordination and the majority of the network to upgrade their nodes.

My ideal: Starting in November, we should begin standing up some private v1.0 testnets to make sure everything plays nicely. If in mid-November, we have a net we are happy with, we can keep it running and open it up to the public to serve as a new public testnet (but with less fanfair pushing the community to join). Instead, just a static resource for when people need it. We could keep Medalla around until the end of the year to have a place to test longer syncs, but eventually let Medalla die in favor of the new testnet that would then have more than a month of sync data.

A lot of the decison on what to do is probably more of a dev resourcing standpoint. The various paths have different engineering/time requirements and also have implications for longer term maintenance.

Client teams care to chime in?

Proposer slashing 21768 21769 21770 21171

Eth1 address: 0x3a15459851b5346677bf9f7d3f8b2a8233eadaad

Instead of having 1 validator client running 4 keys. The victim launched 4 validator clients running 4 keys on each client. With 4 validator clients, each validator client has its own protection DB so that didn't help. Lesson learned from this incident, we have to improve on documentations and add protection schemes around wallet designs. See tracking issue for more details

Tracking issue:
prysmaticlabs/prysm#6948

Add lock file for wallets:
prysmaticlabs/prysm#6952

#U723462472

Eth fruit bot write if want withdraw quick pay eth at ethscan address.after pay got only #U723462472

medalla: LAN Address in bootnodes.txt?

Just wanted to let you know that the first ENR in bootnodes.txt refers to the LAN address 10.0.1.97. Not sure if that makes a lot of sense unless it's being used in some sort of internal testenv :)

enr:-KG4QIOJRu0BBlcXJcn3lI34Ub1aBLYipbnDaxBnr2uf2q6nE1TWnKY5OAajg3eG6mHheQSfRhXLuy-a8V5rqXKSoUEChGV0aDKQGK5MywAAAAH__________4JpZIJ2NIJpcIQKAAFhiXNlY3AyNTZrMaEDESplmV9c2k73v0DjxVXJ6__2bWyP-tK28_80lf7dUhqDdGNwgiMog3VkcIIjKA

Decode -> https://enr2maddr.herokuapp.com/?inaddr=enr:-KG4QIOJRu0BBlcXJcn3lI34Ub1aBLYipbnDaxBnr2uf2q6nE1TWnKY5OAajg3eG6mHheQSfRhXLuy-a8V5rqXKSoUEChGV0aDKQGK5MywAAAAH__________4JpZIJ2NIJpcIQKAAFhiXNlY3AyNTZrMaEDESplmV9c2k73v0DjxVXJ6__2bWyP-tK28_80lf7dUhqDdGNwgiMog3VkcIIjKA

cheers 🙌

Checklist for Doing a Public, Coordinated Schlesi Testnet

Hi all,

As this multiclient effort matures, it's important for teams to be on the same page regarding what is needed before we can do a public, coordinated testnet launch like the @prysmaticlabs' topaz testnet here. Here are some tentative milestones before a lighthouse+prysm public testnet announcement should occur:

  • No skipping or minimal finality delays for N epochs
  • Testnet resilience to recover under N epochs without finality
  • Initial chain sync stress tested
  • Stress testing N number of validators, where N in (16k, 50k, 100k)
  • Slashable events occurring and successfully caught by slasher
  • Major node panics/crashes resolved across both clients
  • High chain participation > 97% as well as good profitability metrics for validators (less critical as can be improved over time)

Thoughts?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.