-
Notifications
You must be signed in to change notification settings - Fork 5.3k
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
Add EIP-5976: Handbook for EIP Authors #5976
Closed
Closed
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
a25099f
Create a new informational EIP for author new opcode
xinbenlv 399a8c4
Draft
xinbenlv e0d0d63
Draft
xinbenlv 1b7ef1b
Draft
xinbenlv cff28dc
Draft
xinbenlv c389b7f
Draft
xinbenlv 8cef683
Update EIPS/eip-5976.md
xinbenlv b4aa6bd
Update EIPS/eip-5976.md
xinbenlv 9a5bc6f
Update EIPS/eip-5976.md
xinbenlv 702236a
Clarifications
Pandapip1 4ebca58
Allow ERCs to span across interface
Pandapip1 c3aae4d
Merge
xinbenlv 8983733
Merge branch 'main' into inst
xinbenlv f1baebe
Update
xinbenlv a2c48a8
Update EIPS/eip-5976.md
xinbenlv d2a109b
Update EIPS/eip-5976.md
xinbenlv a329b57
Change heading title & make wording clearer
Pandapip1 66a9dcc
Add this EIP to unchecked
Pandapip1 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
--- | ||
eip: 5976 | ||
title: EIP Author Handbook | ||
description: Handy reference for EIP authors with specific suggestions of best practice | ||
author: Zainan Victor Zhou (@xinbenlv) | ||
discussions-to: https://ethereum-magicians.org/t/informational-eip-author-handbook/11754 | ||
status: Draft | ||
type: Informational | ||
created: 2022-11-15 | ||
--- | ||
|
||
## Abstract | ||
|
||
A handy reference for EIP authors with specific suggestions of best practices for different kinds of EIPs. | ||
|
||
## Specification | ||
|
||
Pandapip1 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
### Scoping | ||
|
||
1. Standard track EIPs are divided in 4 categories: Core, Network, Interface, and ERC (Application). A new EIP should only address one category, although ERCs may occasionally make Interface-category changes (a good example is [EIP-3668](./eip-3668.md). | ||
|
||
### Identifying Related and Competing EIPs | ||
|
||
1. Authors of new EIPs should familiarize themselves with related EIPs. | ||
2. EIPs must mention strict dependencies on other EIPs in the Specification section and and `requires` field in the EIP preamble. | ||
3. EIPs should mention how existing EIPs could cause unexpected interactions. | ||
4. EIPs should describe, in the Motivation section, how the EIP compares to competing EIPs (with a focus on how the EIP addresses different areas or uses than existing EIPs). In addition, EIPs should describe, in the Rationale section, how design decisions compare to competing EIPs. | ||
|
||
### The EIP Process | ||
|
||
1. EIPs should move to Review once a significant amount of discussion has occurred and consensus has been reached, either by edits to the EIP or the creation of a new competing EIP. It is recommended that this discussion occur on FEM and/or be linked in the FEM discussion. | ||
2. Non-core EIPs should move to last call when two or more independently-built compliant implementations have been created. Core EIPs should move to last call when they are proposed for a fork. Make sure to have it thoroughly proofread by at least one author and one non-author, as major mistakes (as with [EIP-712](./eip-712.md) and [EIP-1363](./eip-1363.md)) might not be possible to correct once the EIP moves to final. | ||
3. Non-core EIPs should move to final as soon as their last call deadline is reached, as long as there remains no contentious discssion. | ||
|
||
### ERC EIPs | ||
|
||
#### Worthiness of ERC EIPs | ||
|
||
1. New ERC EIPs is RECOMMENDED to justify its "worthiness" by providing in its Rationale section: | ||
|
||
- A _massive pre-standardized adoptions_, e.g [EIP-721 Non-Fungible Token](./eip-721.md). | ||
- A _strong potential demand as seen elsewhere_, but couldn't yet be achieved on EVM due to lacking API consensus [EIP-137 Ethereum Domain Name Service](./eip-137.md). | ||
- A _novel use cases backed_ by interested future adopters., e.g. [EIP-4337](./eip-4337.md). | ||
|
||
### Core EIPs | ||
|
||
#### When requiring a hard-fork | ||
|
||
1. A new EIP requiring a hard-fork is RECOMMENDED to explicitly declare a place-holding number as a named parameter and recommend implementing clients to use such name as controlling parameter prior to rollout. | ||
|
||
#### When adding a new EVM instruction | ||
|
||
For a new EIP that adds a new EVM Opcode/Instruction: | ||
|
||
|
||
- Its `type` MUST be `Standards Track` and its `category` MUST be `Core`. | ||
- It MUST specify a mnemonic (such as `BASEFEE` for [EIP-3198](./eip-3198.md)). | ||
- It MUST specify a placeholder opcode number, which MUST be clearly indicated as subject to change until the EIP nears finalization. When reviewing the opcode number, authors MUST check other instruction-adding EIPs to avoid picking a conflicting opcode. | ||
- It MUST specify a gas cost. It MUST justify its gas cost choice in its Rationale section. | ||
|
||
## Copyright | ||
|
||
Copyright and related rights waived via [CC0](../LICENSE.md). |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rationale and Security Considerations were suggested to be removed by Editor as deemed not applicable to this type of EIP. This will need a manual merge
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should add this to:
EIPs/.github/workflows/ci.yml
Line 119 in cf35f4c