Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Please review [EIP-1](https://eips.ethereum.org/1/) for proposal guidelines.

For workspace bootstrap and direct `build-eips` commands, run
`./scripts/dev-setup` from the repo root. See
<https://github.com/eips-wg/preprocessor#workspace-bootstrap> for setup
details; the generated `WORKSPACE.md` contains the full command and
configuration reference.

<!-- RATIONALE FOR THIS FILE: IT IS DISPLAYED WHEN YOU CREATE AN ISSUE OR MAKE A PR -->
2 changes: 1 addition & 1 deletion .github/actions/build-eips/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,4 @@ runs:
echo "stdout<<EOF" >> "$GITHUB_OUTPUT"
trap write_eof EXIT
export PATH="${ZOLA_PATH}:${PATH}"
"$BUILD_EIPS" --staging $BUILD_EIPS_ARGS | awk '{ print; if ($0 == "EOF") exit 1 }' | tee -a "$GITHUB_OUTPUT"
"$BUILD_EIPS" $BUILD_EIPS_ARGS | awk '{ print; if ($0 == "EOF") exit 1 }' | tee -a "$GITHUB_OUTPUT"
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
- name: EIPs Build (Check)
uses: ./.github/actions/build-eips
with:
args: check --format github
args: editorial check --against-upstream --format github

markdownlint:
if: github.event.pull_request.base.repo.owner.login == 'ethereum' || github.event.pull_request.base.repo.owner.login == 'eips-wg'
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,7 @@ jobs:
- name: EIPs Build (Build)
uses: ./.github/actions/build-eips
with:
# Disable eipw lints because there will never be any changed files
# between this checkout and `master` because, well, we just checked
# out `master`.
args: build --no-lint
args: build

- name: Upload Artifact
id: artifact
Expand Down
13 changes: 13 additions & 0 deletions Build.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name = "ERCs"

[locations.ERCs]
repository = "https://github.com/eips-wg/ERCs.git"
base-url = "https://eips-wg.github.io/ERCs/"

[locations.EIPs]
repository = "https://github.com/eips-wg/EIPs.git"
base-url = "https://eips-wg.github.io/EIPs/"

[theme]
repository = "https://github.com/eips-wg/theme.git"
commit = "0ddac35da36d311a8401c6cfb79c9991f78b647d"
215 changes: 185 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,213 @@
> [!IMPORTANT]
> Please direct application-level proposals (ERCs) to [`ethereum/ERCs`] and all
> other proposals (EIPs) to [`ethereum/EIPs`].
> Please direct application-level proposals (ERCs) to [`ethereum/ERCs`] and all other proposals (EIPs) to [`ethereum/EIPs`].

# Ethereum Request for Comments (ERCs)

The ERC project standardizes and provides high-quality documentation for
the Ethereum application layer. This repository tracks past and ongoing
improvements to the Ethereum application ecosystem in the form of Ethereum
Request for Comments (ERCs). [EIP-1] governs how ERCs are published.
The ERC project standardizes and provides high-quality documentation for the Ethereum application layer. This repository tracks past and ongoing improvements to the Ethereum application ecosystem in the form of Ethereum Request for Comments (ERCs). [EIP-1] governs how ERCs are published.

## Contributing

> [!WARNING]
> Before you write an ERC, ideas MUST be thoroughly discussed on
> [Ethereum Magicians][ethmag] or [Ethereum Research][ethres]. Once consensus
> is reached, thoroughly read and review [EIP-1], which describes the EIP
> process.
> Before you write an ERC, ideas MUST be thoroughly discussed on [Ethereum Magicians][ethmag] or [Ethereum Research][ethres]. Once consensus is reached, thoroughly read and review [EIP-1], which describes the EIP process.

To create a new proposal, **copy** the [Proposal Template][template] into the
[`contents`] directory and rename it to `99999.md` (or `99999/index.md` if you
have additional assets). The template has more detailed instructions.
To create a new proposal, **copy** the [Proposal Template][template] into the [`contents`] directory and rename it to `99999.md` (or `99999/index.md` if you have additional assets). The template has more detailed instructions.

This repository is for documenting standards and not for help implementing
them. These types of inquiries should be directed to the
[Ethereum Stack Exchange][ethex]. For specific questions and concerns regarding
EIPs, it's best to comment on the relevant discussion thread of the EIP denoted
by the `discussions-to` tag in the EIP's preamble.
This repository is for documenting standards and not for help implementing them. These types of inquiries should be directed to the [Ethereum Stack Exchange][ethex]. For specific questions and concerns regarding EIPs, it's best to comment on the relevant discussion thread of the EIP denoted by the `discussions-to` tag in the EIP's preamble.

If you would like to become an EIP Editor, please read [EIP-5069].

### Validation and Auto-merging

All pull requests in this repository must pass checks before they can be
automatically merged:
All pull requests in this repository must pass checks before they can be automatically merged:

- [eip-review-bot] determines when PRs can be automatically merged [^1]
- EIP-1 rules are enforced using [`eipw`] [^2]
- Markdown best practices are checked using [markdownlint] [^2]
- `build-eips` runs targeted proposal validation and site checks for changed proposal files [^2]

### Building Locally
Before opening or updating a pull request, run the same CI-style command locally as described in [Editorial Validation](#editorial-validation): `build-eips editorial check --against-upstream --format github`.

It is possible to run the above checks and preview how proposals will render
using [`build-eips`]. See its documentation for more details.
## Local Workflows

The ERCs repo uses the shared `build-eips` multi-repo workspace for local site builds, live previews, and editorial validation. The setup script bootstraps the surrounding workspace so, with just a few commands, you can:

* run targeted `eipw` editorial checks for proposals before opening or updating pull requests
* build and serve the ERCs site with the local theme repo and sibling proposal repos like EIPs
* include tracked local edits without committing them first
* render only selected proposals to save time when a full site build is unnecessary
* diagnose missing workspace pieces with `build-eips doctor`

Run the commands below from this ERCs repo. From the workspace root, use `-C ERCs` before the command.

### Minimum Requirements

Local workspace commands require these tools on `PATH`:

* Git
* `build-eips`
* Zola 0.22.1

Git must be installed separately. The setup script locates or installs `build-eips` and Zola, adds locally installed tool directories to `PATH` for the current shell session, and prints guidance for making those `PATH` changes permanent.

### Bootstrap The Workspace

Run the setup script once from this repo.

Linux and macOS:

```sh
./scripts/dev-setup
```

Windows PowerShell:

```powershell
.\scripts\dev-setup.ps1
```

The setup script initializes the workspace one directory above this repo, runs `build-eips doctor`, and prints the next local commands.

After setup, the generated workspace guide is available at `../WORKSPACE.md`. Use that file for the full command reference and workspace details.

After setup, the workspace has this layout:

```text
EIPs-project/
├── .build-eips.toml
├── WORKSPACE.md
├── .local-build/
├── EIPs/
├── ERCs/
└── theme/
```

### Build And Serve Locally

Build the full static site, then preview that built output:

```bash
build-eips build
build-eips preview
```

`preview` serves the last output written by `build`. Run `build` again before `preview` when you want to inspect fresh output.

Use `serve` when you want a live development server that livereloads changes instead of a reusable build output:

```bash
build-eips serve
```

`serve` runs a fresh temporary site build each time it is invoked (without using `build`), starts a local development server, and watches tracked local edits. Its output cannot be reused by `preview`.

Use `check` to quickly validate whether the site will build cleanly without producing the full built site:

```bash
build-eips check
```

By default, `check`, `build`, and `serve` use the local workspace in dirty mode, which includes tracked working-tree edits from this repo. `preview` serves the last output written by `build`. Use `--clean` when you want to ignore tracked local proposal edits for one command:

```bash
build-eips check --clean
build-eips build --clean
build-eips serve --clean
```

For parity workflows, remote-sibling modes, source overrides, side-by-side build roots, and detailed dirty-mode behavior, see `../WORKSPACE.md`.

### Local Settings

Local build settings live in `../.build-eips.toml`, which the setup script generates. Use that workspace file to change the local server address or local site URL:

```toml
[server]
host = "127.0.0.1"
port = 1111

[site]
base_url = "http://127.0.0.1:1111"
```

`serve` and `preview` use `[server]` for the local bind address. `build` and `serve` use `[site].base_url` when generating links.

CLI flags such as `--host`, `--port`, and `--base-url` override the workspace config for one run:

```bash
build-eips serve --host 0.0.0.0 --port 3000 --base-url http://127.0.0.1:3000
```

### Render Specific Proposals Only

Full local `build` and `serve` runs can take time because they process every proposal file. When you want to quickly test a single proposal or a specific batch, add a list of desired proposal numbers to the workspace `.build-eips.toml`:

```toml
[render]
only = [555, 678]
```

Add one or more proposal numbers in `[render].only`, separated by commas. It's empty by default, but whenever it is populated, the regular `build` and `serve` commands render only those proposal pages. Links and references to excluded proposals are rewritten to the canonical public site.

Use CLI `--only` when you want a one-run target list; it also overrides any proposals in `[render].only` for that run:

```bash
build-eips serve --only 555
build-eips build --only 555
build-eips build --only 555 678
```

Multiple proposal numbers in the CLI are space-separated; no commas.

### Editorial Validation

Use editorial commands to validate proposal files before opening or updating a pull request.

- `editorial lint` runs targeted `eipw` proposal-rule checks.
- `editorial check` runs `editorial lint`, then checks that the selected proposal changes will not prevent the full site from building cleanly.

Check one or more specific proposals by number:

```bash
build-eips editorial check 1
build-eips editorial check 1 123
```

For the closest match to PR CI, use `editorial check` against the proposal files changed versus upstream:

```bash
build-eips editorial check --against-upstream --format github
```

Both commands accept the same selector modes:

* proposal numbers or repo-relative proposal paths for explicit targets
* `--working-tree` for tracked dirty proposal files
* `--against-upstream` for proposal files changed versus the upstream merge-base
* `--batch <path>` for a repeatable target list

They also accept `eipw` options such as `--format github`.

Use a batch file when you want to lint or check the same proposal set repeatedly. A batch file is a plain text file with one proposal number per line:

```txt
1
7949
```

```bash
build-eips editorial lint --batch ../editor-batch.txt
build-eips editorial check --batch ../editor-batch.txt
```

### Full Workspace Reference

For parity workflows, remote-sibling modes, source overrides, side-by-side build roots, and detailed dirty-mode behavior, see `../WORKSPACE.md`.

## Preferred Citation Format

The canonical URL for an EIP that has achieved draft status at any point is at
<https://eips.ethereum.org/>. For example, the canonical URL for EIP-1 is
<https://eips.ethereum.org/1/>.
The canonical URL for an EIP that has achieved draft status at any point is at <https://eips.ethereum.org/>. For example, the canonical URL for EIP-1 is <https://eips.ethereum.org/1/>.

Consider any document not published at <https://eips.ethereum.org/> as a
working paper. Additionally, consider published EIPs with a status of "draft",
"review", or "last call" to be incomplete drafts, and note that their
specification is likely to be subject to change.
Consider any document not published at <https://eips.ethereum.org/> as a working paper. Additionally, consider published EIPs with a status of "draft", "review", or "last call" to be incomplete drafts, and note that their specification is likely to be subject to change.

[^1]: <https://github.com/ethereum/EIPs/blob/master/.github/workflows/auto-review-bot.yml>
[^2]: <https://github.com/ethereum/EIPs/blob/master/.github/workflows/ci.yml>
Expand Down
42 changes: 20 additions & 22 deletions content/_index.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,29 @@
---
title: Home
extra:
homepage_badges:
- href: https://discord.gg/Nz6rtfJ8Cu
image: https://dcbadge.limes.pink/api/server/Nz6rtfJ8Cu?style=flat
alt: Badge for EIP Editor Discord channel
- href: https://discord.gg/EVTQ9crVgQ
image: https://dcbadge.limes.pink/api/server/EVTQ9crVgQ?style=flat
alt: Badge for Ethereum R&D Discord channel
- href: https://discord.gg/mRzPXmmYEA
image: https://dcbadge.limes.pink/api/server/mRzPXmmYEA?style=flat
alt: Badge for Ethereum Wallets Discord channel
- href: https://discord.gg/9FxN6CfaQR
image: https://dcbadge.limes.pink/api/server/9FxN6CfaQR?style=flat
alt: Badge for ERCRef Discord channel
- href: ./atom.xml
image: https://img.shields.io/badge/rss-Everything-red.svg
alt: RSS feed for everything
- href: ./status/last-call/atom.xml
image: https://img.shields.io/badge/rss-Last%20Calls-red.svg
alt: RSS feed for last calls
---

# EIPs & ERCs

[![Badge for EIP Editor Discord channel][badge-discord-ech]][discord-ech]
[![Badge for Ethereum R&D Discord channel][badge-discord-rd]][discord-rd]
[![Badge for Ethereum Wallets Discord channel][badge-discord-wallet]][discord-wallet]
[![RSS Feed for Everything][badge-rss-all]][rss-all]
[![RSS Feed for Last Call][badge-rss-last-call]][rss-last-call]

<!-- TODO: Recreate email alerts -->

Ethereum Improvement Proposals (EIPs) describe standards for the Ethereum
Expand Down Expand Up @@ -107,22 +121,6 @@ Informational EIPs do not necessarily represent Ethereum community consensus or
a recommendation, so users and implementers are free to ignore Informational
EIPs or follow their advice.


[discord-ech]: https://discord.gg/Nz6rtfJ8Cu
[badge-discord-ech]: https://dcbadge.limes.pink/api/server/Nz6rtfJ8Cu?style=flat

[discord-rd]: https://discord.gg/EVTQ9crVgQ
[badge-discord-rd]: https://dcbadge.limes.pink/api/server/EVTQ9crVgQ?style=flat

[discord-wallet]: https://discord.gg/mRzPXmmYEA
[badge-discord-wallet]: https://dcbadge.limes.pink/api/server/mRzPXmmYEA?style=flat

[rss-all]: ./atom.xml
[badge-rss-all]: https://img.shields.io/badge/rss-Everything-red.svg

[rss-last-call]: ./status/last-call/atom.xml
[badge-rss-last-call]: https://img.shields.io/badge/rss-Last%20Calls-red.svg

[ethpm]: https://github.com/ethereum/pm/

[template]: https://github.com/ethereum/EIPs/blob/master/docs/template.md?plain=1
Expand Down
Loading
Loading