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

EIP-2982: Serenity Phase 0 #2982

Merged
merged 14 commits into from Oct 8, 2020
Merged

EIP-2982: Serenity Phase 0 #2982

merged 14 commits into from Oct 8, 2020

Conversation

djrtwo
Copy link
Contributor

@djrtwo djrtwo commented Sep 16, 2020

EIP for Phase 0 of Serenity (eth2) major upgrade of Ethereum's consensus mechanism from Pow to a sharded PoS.

EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
vbuterin and others added 6 commits September 16, 2020 17:52
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
Co-authored-by: Koh Wei Jie <weijiekoh@users.noreply.github.com>
Copy link
Contributor

@MicahZoltu MicahZoltu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The EIPs repository is for technical specifications, not end-user support/educational material. If the goal of this document is to educate users about the high level view of an upcoming change in Ethereum, then a blog post or website article would be a more appropriate medium, or even just a Readme on the linked repository.

Recommendation:
Either convert/move this document elsewhere, or move the entire ETH2 spec into the EIPs repository. Trying to have only a small portion of the spec in the EIPs repository (which is likely to end up out of sync with reality if not maintained as the canonical source of information) is likely to lead to a maintenance nightmare, not to mention this repository isn't the place for that kind of content.

I left some other minor feedback, but upon realizing that this isn't actually a technical specification I mostly stopped reviewing as I think that most other feedback I give is just going to be me saying over and over "this shouldn't be part of a technical specification".

EIPS/eip-X.md Outdated Show resolved Hide resolved
EIPS/eip-X.md Outdated Show resolved Hide resolved
@lightclient
Copy link
Member

@MicahZoltu does have a point, this EIP is less of a specification and more of an informational memo. For that reason, I think it would be best to categorize it as such, rather than under the Standards Track. However, I think that modifying the ether issuance schedule is an appropriate change to EIP under the Standards Track. I also think that the deposit contract is EIP-able due to it's role in the genesis of a new, ether-issuing chain.

@unixpi
Copy link
Member

unixpi commented Sep 16, 2020

@MicahZoltu,

The EIPs repository is for technical specifications, not end-user support/educational material.

That's not strictly true. EIPs can be of type Informational, where an informational EIP "Describes a Ethereum design issue, or provides general guidelines or information to the Ethereum community..."

Trying to have only a small portion of the spec in the EIPs repository (which is likely to end up out of sync with reality if not maintained as the canonical source of information) is likely to lead to a maintenance nightmare

I'm not sure this necessarily follows. It depends on how stable the included portion is expected to be, the language used to clarify future uncertainty, amongst other things.

If the specification lives elsewhere, why bother with an EIP?

The primary purpose of this EIP isn't to mirror the spec. There's information contained in this document that is not included in the specification (and vice-versa). Symbolism is important. It would be quite strange to have no mention of Serenity (perhaps the most significant improvement to ethereum) in a repository devoted to keeping track of improvements to ethereum.

@djrtwo
Copy link
Contributor Author

djrtwo commented Sep 16, 2020

From EIP-1:

EIP stands for Ethereum Improvement Proposal. An EIP is a design document providing information to the Ethereum community, or describing a new feature for Ethereum or its processes or environment. The EIP should provide a concise technical specification of the feature and a rationale for the feature. The EIP author is responsible for building consensus within the community and documenting dissenting opinions.

"Ethereum Improvement Proposal" <-- this is precisely what this is. There is a (large) specification maintained in a separate repo and this is a concise proposal on how to use that specification to improve Ethereum (i.e. to reason about the motivation, to provide a reference to the "canonical" spec, and to commit to this as part of the roadmap).

This EIP is also a tool for "building consensus within the community" as a place to point to canonical-ness of a single deposit contract and release of the specs, as well as a singular place to discuss the ultimate acceptance and integration of the phased eth2 as part of the protocol.

I actually would argue this EIP is "Core" because it is designed to expand the consideration of what the Ethereum "layer 1" protocol is to include the PoS beacon chain, and is a commitment to a series of breaking changes (most prominently the swap of Ethereum's PoW consensus for that of the beacon chain).

I also expect much of the stateless ethereum work to manifest as similarly structured EIPs -- a concise motivation and reference to a larger spec -- because these specs, too, are also being designed in an independent spec repo

@djrtwo djrtwo changed the title Serenity Phase 0 EIP EIP-2982: Serenity Phase 0 Sep 16, 2020
@jpitts
Copy link
Member

jpitts commented Sep 16, 2020

In terms of classification, I can definitely see how this EIP can be considered Informational. A working system could not be generated from it, requiring specifications described and maintained elsewhere outside of the EIP process. Should this be a requirement of a Core EIP?

I actually would argue this EIP is "Core" because it is designed to expand the consideration of what the Ethereum "layer 1" protocol is to include the PoS beacon chain, and is a commitment to a series of breaking changes (most prominently the swap of Ethereum's PoW consensus for that of the beacon chain).

In terms of intent, this EIP can be considered a Core EIP. It follows a long history of precedent of Core EIPs modifying the protocol. While EIP-2982 does not yet modify the current system, it is clearly intending to be an upgrade to the network in later phases over the long term. How else would Eth2 protocol researchers and developers propose these kinds of important changes to the protocol?

I also expect much of the stateless ethereum work to manifest as similarly structured EIPs -- a concise motivation and reference to a larger spec -- because these specs, too, are also being designed in an independent spec repo

Editors, how difficult would it be to submit the full contents of another repo in order to best represent the full system that is proposed? Should it all be packed into one file when being submitted as an EIP? This becomes more and more important as Eth1 becomes upgraded by large system-wide changes and additions of new systems.

@gcolvin
Copy link
Contributor

gcolvin commented Sep 18, 2020

This is not yet an actionable proposal to change the Ethereum protocol, so it's not a Core EIP. If it were an Informational EIP I'd have no objections.

EIPS/eip-2982.md Outdated Show resolved Hide resolved
EIPS/eip-2982.md Show resolved Hide resolved
EIPS/eip-2982.md Show resolved Hide resolved
@djrtwo
Copy link
Contributor Author

djrtwo commented Sep 18, 2020

This is "informational" in that it is informing the community of the particular specification and deposit contract to be used to bootstrap the beacon chain consensus.

This is "core" in that the vast majority of the community sees the bootstrapping of the beacon chain as an extension of the core protocol, and plans for it to drive Ethereum's consensus (superseding PoW) in the relative near-term.

I don't particularly care where this falls between the two, but this EIP will lead to followup "core" EIPs sooner rather than later as the beacon chain solidifies and the community is ready for it to drive consensus.

@gcolvin
Copy link
Contributor

gcolvin commented Sep 19, 2020

This is "core" in that the vast majority of the community sees the bootstrapping of the beacon chain as an extension of the core protocol, and plans for it to drive Ethereum's consensus (superseding PoW) in the relative near-term.

All that seems to be needed from the mainchain for Phase 0 is the ability to run the Validator Contract. No changes to the existing protocol are required, so no Core EIP is required. Specifications for how the Beacon Chain can replace PoW would of course need to be Core EIPs.

I also share Micah's concern that this EIP risks being outdated by the more detailed specs it references. A less detailed Informational EIP could be more easily maintained in that respect, and perhaps be more accessible and useful for the wider community.


## Backwards Compatibility

Although this EIP does not introduce any immediate changes to the current Ethereum mainnet, this EIP lays the groundwork for future backwards incompatibilities through the introduction of the new eth2 consensus mechanism in which Ethereum will be integrated in subsequent phases. To secure this mechanism, users move ether into the beacon chain and additional ether is issued. This EIP is a commitment to this path being canonical, as well as directly informing the future and roadmap of Ethereum mainnet.
Copy link
Contributor

@gcolvin gcolvin Sep 19, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Although this EIP does not introduce any immediate changes to the current Ethereum mainnet, this EIP lays the groundwork for future backwards incompatibilities through the introduction of the new eth2 consensus mechanism in which Ethereum will be integrated in subsequent phases. To secure this mechanism, users move ether into the beacon chain and additional ether is issued. This EIP is a commitment to this path being canonical, as well as directly informing the future and roadmap of Ethereum mainnet.
Although this EIP does not introduce any immediate changes to the current Ethereum mainnet, this EIP lays the groundwork for future backwards incompatibilities through the introduction of the new eth2 consensus mechanism in which Ethereum can be integrated in subsequent phases. To secure this mechanism, users move ether into the beacon chain and additional ether is issued.

EIPs are specifications, not commitments.

EIPS/eip-2982.md Outdated Show resolved Hide resolved
EIPS/eip-2982.md Outdated Show resolved Hide resolved
EIPS/eip-2982.md Outdated
Comment on lines 7 to 8
type: Standards Track
category: Core
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
type: Standards Track
category: Core
type: Informational

We discussed a bit among some of the editors and it sounds like the weak consensus is that moving this to informational will unblock the primary concerns. I'll try to give this a real review once that is done, though Informational EIPs I'm not sure have many hard requirements.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you!

@djrtwo djrtwo mentioned this pull request Sep 28, 2020
7 tasks
EIPS/eip-2982.md Outdated Show resolved Hide resolved

## Abstract

This EIP specifies Phase 0 of Serenity (eth2), a multi-phased upgrade to the consensus mechanism for Ethereum mainnet. In Phase 0, the existing PoW chain and mechanics are entirely unaffected, while a PoS chain -- the beacon chain -- is built in parallel to serve as the core of the upgraded consensus. In subsequent phases, the beacon chain is enhanced to support and secure the consensus of a number of parallel shard chains, ultimately incorporating current Ethereum mainnet as one of those shards.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This EIP specifies Phase 0 of Serenity (eth2), a multi-phased upgrade to the consensus mechanism for Ethereum mainnet. In Phase 0, the existing PoW chain and mechanics are entirely unaffected, while a PoS chain -- the beacon chain -- is built in parallel to serve as the core of the upgraded consensus. In subsequent phases, the beacon chain is enhanced to support and secure the consensus of a number of parallel shard chains, ultimately incorporating current Ethereum mainnet as one of those shards.
This EIP specifies Phase 0 of Serenity (eth2), a proposed multi-phased upgrade to the consensus mechanism for Ethereum mainnet. In Phase 0, the existing PoW chain and mechanics are entirely unaffected, while a PoS chain -- the beacon chain -- is built in parallel to serve as the core of the upgraded consensus. In subsequent phases, the beacon chain is enhanced to support and secure the consensus of a number of parallel shard chains, ultimately incorporating current Ethereum mainnet as one of those shards.

EIPS/eip-2982.md Show resolved Hide resolved

As the Ethereum network and the applications built upon it have seen increasing usage over the past 5 years, blocks have become regularly full and the gas price market continues to climb. Simple increases to the block gas-limit of the current Ethereum chain are unable to account for the increase in demand of the system without inducing an unsustainably high resource burden (in the form of bandwidth, computational, and disk resources) on consumer nodes. To retain decentralization while scaling up the Ethereum network, another path must be taken.

To provide more scale to Ethereum, while not inducing a restrictively high burden on both consumer and consensus nodes, eth2 introduces a "sharded" solution in which a number of blockchain shards -- each of similar capacity to Ethereum mainnet today -- run in parallel under a unified consensus mechanism. The core consensus (the beacon chain) and a small number of these shards can be processed via a single consumer machine, while the aggregate of the system provides much higher capacity.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To provide more scale to Ethereum, while not inducing a restrictively high burden on both consumer and consensus nodes, eth2 introduces a "sharded" solution in which a number of blockchain shards -- each of similar capacity to Ethereum mainnet today -- run in parallel under a unified consensus mechanism. The core consensus (the beacon chain) and a small number of these shards can be processed via a single consumer machine, while the aggregate of the system provides much higher capacity.
To provide more scale to Ethereum, while not inducing a restrictively high burden on both consumer and consensus nodes, eth2 proposes a "sharded" solution in which a number of blockchain shards -- each of similar capacity to Ethereum mainnet today -- run in parallel under a unified consensus mechanism. The core consensus (the beacon chain) and a small number of these shards can be processed via a single consumer machine, while the aggregate of the system provides much higher capacity.

EIPS/eip-2982.md Outdated Show resolved Hide resolved
EIPS/eip-2982.md Outdated Show resolved Hide resolved

See the [Ethereum wiki proof-of-stake FAQ](https://eth.wiki/en/concepts/proof-of-stake-faqs) for an excellent introduction and discussion of proof-of-stake consensus.

## Specification
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general, the Specification section looks to be more detailed than necessary for an overview, and thus prone to be outdated by the specs it references.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would still like to see improvements here, but no hurry, and no specific suggestions.

EIPS/eip-2982.md Show resolved Hide resolved
EIPS/eip-2982.md Outdated

## Rationale

Ethereum blocks are consistently full due to increasingly high demand for decentralized applications. Ever since the first serious spikes in adoption in 2017 (cryptokitties), the Ethereum community has consistently and vocally demanded scaling solutions.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've long been skeptical of assertions about what the Ethereum community demands, and about how those demands should translate into protocol changes. I just don't see the necessary governance.

EIPS/eip-2982.md Outdated

## Security Considerations

Eth2 is a major overhaul of the Ethereum's core consensus from PoW to a sharded PoS. There are inherent risks in this migration but there is a deep canon of research literature analyzing security and trade-offs. _The following only represents a high level selection of the resources available:_
Copy link
Contributor

@gcolvin gcolvin Sep 29, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Eth2 is a major overhaul of the Ethereum's core consensus from PoW to a sharded PoS. There are inherent risks in this migration but there is a deep canon of research literature analyzing security and trade-offs. _The following only represents a high level selection of the resources available:_
Eth2 would be a major overhaul of the Ethereum's core consensus from PoW to a sharded PoS. There are inherent risks in this migration but there is an extensive research literature analyzing security and trade-offs. _The following only represents a high level selection of the resources available:_

More discussion of the risks would be helpful here. And "canon" I think more often refers to scriptures.

Copy link
Contributor

@gcolvin gcolvin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've made a number of suggestions, most fairly small. My general logic in asking for these changes is that this is an Informational EIP offered in the form of a technical proposal. As such I want to keep it to technical information, not history or commitments to future action. Especially, commitments as to what the Eth1 core developers will do in the future.

@gcolvin
Copy link
Contributor

gcolvin commented Oct 7, 2020

@MicahZoltu @djrtwo Are you satisfied that this is ready to merge? I am. (Or at least I think I am - Github doesn't make it entirely clear to me that all my suggestions were resolved, but they appear to be.)

Copy link
Member

@lightclient lightclient left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to merge from my end.

@MicahZoltu
Copy link
Contributor

I'm against Informational EIPs so consider me abstained for the purpose of merging or not. My fight against Informational EIPs isn't appropriate on individual EIPs, so at the moment my policy is to just not merge them, but also not block them (since at the moment they are a valid EIP).

@gcolvin
Copy link
Contributor

gcolvin commented Oct 8, 2020

@MicahZoltu Although github will let me merge this for some reason it would be cleaner if you and @djrtwo resolve he changes you requested in your review. Supposedly PRs can't be merged until you approve.

And yes, we can take up the war on Informational EIPs later. I'm fine with them, but want to tighten up our standards.

@MicahZoltu
Copy link
Contributor

@gcolvin As long as there is at least one editor approval, you can merge without your super-admin powers. 😃 For example, I can merge this right now despite there being a change request review. That being said, if you are uncomfortable merging while there is a red mark on the PR I can convert my review to a comment. I have a mild preference to leave it as a red mark just because I do think that this shouldn't live in this repository and I would like that to be documented as such.

@gcolvin gcolvin merged commit 930e456 into ethereum:master Oct 8, 2020
@gcolvin
Copy link
Contributor

gcolvin commented Oct 8, 2020

@MicahZoltu Point taken. Merged.

tkstanczak pushed a commit to tkstanczak/EIPs that referenced this pull request Nov 7, 2020
* add phase 0 eip

* add discussions-to link for phase 0 eip

* phase 0 eip spelling fix

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>

* fix lighthouse link

Co-authored-by: Koh Wei Jie <weijiekoh@users.noreply.github.com>

* address PR comments

* clean up backwards compatible discussion

* minor clarification on initial punitive param selection

* address PR feedback

Co-authored-by: vbuterin <v@buterin.com>
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
Co-authored-by: Koh Wei Jie <weijiekoh@users.noreply.github.com>
Arachnid pushed a commit to Arachnid/EIPs that referenced this pull request Mar 6, 2021
* add phase 0 eip

* add discussions-to link for phase 0 eip

* phase 0 eip spelling fix

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>

* Update EIPS/eip-X.md

Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>

* fix lighthouse link

Co-authored-by: Koh Wei Jie <weijiekoh@users.noreply.github.com>

* address PR comments

* clean up backwards compatible discussion

* minor clarification on initial punitive param selection

* address PR feedback

Co-authored-by: vbuterin <v@buterin.com>
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
Co-authored-by: Koh Wei Jie <weijiekoh@users.noreply.github.com>
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

Successfully merging this pull request may close these issues.

None yet