Skip to content

Commit

Permalink
Merge branch 'main' into patch-3
Browse files Browse the repository at this point in the history
  • Loading branch information
taxmeifyoucan authored Apr 29, 2024
2 parents 2cd67a5 + 6791d00 commit 4affef6
Show file tree
Hide file tree
Showing 173 changed files with 20,171 additions and 121 deletions.
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/wiki-content-request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: Wiki content
about: Request a new content missing in the wiki
title: ''
labels: 'feature'
assignees: ''
---

## What content is missing?

## Related content in the wiki

## Other relevant resources

26 changes: 26 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## Wiki PR Checklist

Thank you for contributing to the Protocol Wiki! Before you open a PR, make sure to read [information for contributors](https://epf.wiki/#/contributing) and take a look at following checklist:

- [ ] Describe your changes, substitute this text with the information
- [ ] If you are touching an existing piece of content, ask the original creator for review
- [ ] If you need feedback for your content from wider community, share the PR in our Discord
- [ ] Review changes to ensure there are no typos, see instructions bellow

<!--
ℹ️ Checking for typos locally
1. Install [aspell](https://www.gnu.org/software/aspell/) for your platform.
2. Navigate to the project root and run:
```
for f in **/*.md ; do echo $f ; aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case list < $f | sort | uniq -c ; done
```
ℹ️ Fixing typos
1. Fix typos: Open the relevant files and fix any identified typos.
2. Update wordlist: If a flagged word is actually a project-specific term add it to `wordlist.txt` in the project root.
Each word should be listed on a separate line.
* 🚧 Remember:
* When adding new words it must NOT have any spaces or special characters within or around it.
* \`wordlist\` is NOT case sensitive.
* Use backticks to quote code variables so as to not bloat the \`wordlist\`.
-->
16 changes: 16 additions & 0 deletions .github/workflows/md-lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Markdown linter

on:
pull_request:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DavidAnson/markdownlint-cli2-action@v15
continue-on-error: true
with:
globs: |
docs/wiki/*.md
89 changes: 89 additions & 0 deletions .github/workflows/spell-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: 🥢 Spell check

on:
pull_request:
branches:
- main

jobs:
typo_check:
name: 🥢 Spell check
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
env:
TYPOS: ""

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 2

- name: Install aspell
run: sudo apt-get update && sudo apt-get install -y aspell

- name: Find and check typos in Markdown files
id: find_typos
run: |
echo "Checking for typos..."
# https://unix.stackexchange.com/a/9500
IFS=$'\n'
set -f
for file in $(find . -name "*.md" ); do
output="$(aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case list <$file)"
echo "$output"
# Exit if aspell has errors
if [ $? -ne 0 ]; then
exit 1
fi
if [[ -n "$output" ]]; then
# Format output.
output=$(echo "$output" | sed 's/^/ 1. /')
TYPOS+="- 📄 $file:"
TYPOS+=$'\n'
TYPOS+="$output"
TYPOS+=$'\n'
fi
done
{
echo 'TYPOS<<EOF'
echo "$TYPOS"
echo EOF
} >> "$GITHUB_ENV"
- name: Comment on pull request
if: env.TYPOS != ''
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const author = '${{github.event.pull_request.user.login}}';
const typos = `${{ env.TYPOS }}`;
const body = `
Hi @${author},
Following typos were found in the pull request:
${typos}
## ℹ️ Here's how to fix them:
- **Fix typos:** Open the relevant files and fix any identified typos.
- **Update wordlist:** If a flagged word is actually a project-specific term add it to \`wordlist.txt\` in the project root.
Each word should be listed on a separate line. [Learn more.](http://aspell.net/man-html/Format-of-the-Personal-and-Replacement-Dictionaries.html)
- **🚧 Remember:**
- When adding new words it MUST NOT have any spaces or special characters within or around it.
- \`wordlist\` is NOT case sensitive.
- Use backticks to quote code variables so as to not bloat the \`wordlist\`.
`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: body
});
core.setFailed('🥢 Spell check: Typos found in docs. Please fix them.');
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@
**/.vscode
**/.vscode?
**/.obsidian
**/.obsidian?
**/.obsidian?
**/.idea
**/.idea?
1 change: 1 addition & 0 deletions docs/CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
epf.wiki
2 changes: 1 addition & 1 deletion docs/_footer.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
Wiki created by <a href="https://twitter.com/joshdavislight">Josh Davis</a> and <a href="https://twitter.com/TMIYChao">Mário Havel</a> from Protocol Support, maintained by EPFsg community. <a rel="license" href="https://github.com/eth-protocol-fellows/protocol-studies/blob/main/LICENSE"><img alt="CC License" style="border-width:0" src="https://licensebuttons.net/l/by-sa/4.0/88x31.png" /></a><br/> This work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International.</a>.
EPF Wiki initiated by EF Protocol Support and maintained by EPFsg community. <a rel="license" href="https://github.com/eth-protocol-fellows/protocol-studies/blob/main/LICENSE"><img alt="CC License" style="border-width:0" src="https://licensebuttons.net/l/by-sa/4.0/88x31.png" /></a><br/> This work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International.</a>.
2 changes: 1 addition & 1 deletion docs/_navbar.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
* [Home](readme.md)
* [Study Group](study-group.md)
* [Study Group](/eps/intro.md)
* [Contribute](contributing.md)
93 changes: 52 additions & 41 deletions docs/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,76 @@
- [Week 1](/eps/week1.md)
- [Week 2](/eps/week2.md)
- [Week 3](/eps/week3.md)
- [Week 4](/eps/week4.md)
- [Week 5](/eps/week5.md)
- [Node Workshop](/eps/nodes_workshop.md)
- [Week 6 | Dev](/eps/week6-dev.md)
- [Week 6 | Research](/eps/week6-research.md)
- [Week 7 | Dev](/eps/week7-dev.md)
- [Week 7 | Research](/eps/week7-research.md)
- [Week 8 | Dev](/eps/week8-dev.md)
- [Week 8 | Research](/eps/week8-research.md)
- [Week 9 | Dev](/eps/week9-dev.md)
- [Week 9 | Research](/eps/week9-research.md)
- [Week 10 | Dev](/eps/week10-dev.md)
- [Week 10 | Research](/eps/week10-research.md)
- [Contributing](contributing.md)
- **Protocol Wiki**
- The Protocol
- [Overview](/wiki/protocol/overview.md)
- [History](/wiki/protocol/history.md)
- [Coordination](/wiki/protocol/pm.md)
- [Data Structures](/wiki/protocol/data-structures.md)
- [CS Resources]
- [Architecture](/wiki/protocol/architecture.md)
- [Design rationale](/wiki/protocol/design-rationale.md)
- [Evolution](/wiki/protocol/history.md)
- Execution Layer
- [EL Clients](/wiki/EL/el-clients.md)
- [EL Specs](/wiki/EL/el-specs.md)
- Client architecture
- [EVM]
- [Transaction]
- [DevP2P]
- [MPT]
- [JSON-RPC]
- [Client architecture](/wiki/EL/el-architecture.md)
- [EL Clients](/wiki/EL/el-clients.md)
- [Besu](/wiki/EL/clients/besu.md)
- [Reth](/wiki/EL/clients/reth.md)
- [EVM](/wiki/EL/evm.md)
- [Precompiled Contracts](/wiki/EL/precompiled-contracts.md)
- [Data Structures](/wiki/EL/data-structures.md)
- [Transaction anatomy](/wiki/EL/transaction.md)
- [JSON-RPC](/wiki/EL/JSON-RPC.md)
- [DevP2P](/wiki/EL/devp2p.md)
- [RLP Serialization](/docs/wiki/EL/RLP.md)
- Consensus Layer
- [CL Clients](/wiki/CL/cl-clients.md)
- [Overview](/wiki/CL/overview.md)
- [CL Specs](/wiki/CL/cl-specs.md)
- [Proof-of-Stake]
- [Beacon API]
- [Networking](/wiki/CL/cl-networking.md)
- Client architecture
- [Client architecture](/wiki/CL/client-architecture.md)
- [CL Clients](/wiki/CL/cl-clients.md)
- [Beacon API](/wiki/CL/beacon-api.md)
- [CL Networking](/wiki/CL/cl-networking.md)
- Development
- [Core development](/wiki/dev/core-development.md)
- [Network upgrades](/wiki/dev/upgrades.md)
- [Coordination](/wiki/dev/pm.md)
- [Dev Resources](/wiki/dev/cs-resources.md)
- Testing and security
- [Testing overview](/wiki/testing/overview.md)
- [Incidents](/wiki/testing/incidents.md)
- [hive](/wiki/testing/hive.md)
- Formal Verification
- Research
- [Roadmap overview](/wiki/research/roadmap.md)
- Scaling
- Blobs
- Sharding
- Statelessness
- Purge
- MEV
- PBS
- Censorship
- Proof of Stake
- Upgrades
- SSF
- SSLE
- [Light Clients](/wiki/research/light-clients.md)
- Privacy
- AA
- ASE
- EOF
- Portal Network
- [Scaling](/wiki/research/scaling/scaling.md)
- [Core Changes](/wiki/research/scaling/core-changes/core-changes.md)
- [EIP-4844](/wiki/research/scaling/core-changes/eip-4844.md)
- [MEV](/wiki/research/PBS/mev.md)
- [MEV-boost](/wiki/research/PBS/mev-boost.md)
- [PBS](/wiki/research/PBS/pbs.md)
- [ePBS](/wiki/research/PBS/ePBS.md)
- [ePBS Design Specs](/wiki/research/PBS/ePBS-Specs.md)
- [PTC](/wiki/research/PBS/PTC.md)
- [PEPC](/wiki/research/PBS/PEPC.md)
- [TBHL](/wiki/research/PBS/TBHL.md)
- Preconfirmations
- [Preconfirmations](/wiki/research/Preconfirmations/Preconfirmations.md)
- [Based Sequencing with Preconfs](/wiki/research/Preconfirmations/BasedSequencingPreconfs.md)
- [Cryptography](/wiki/Cryptography/intro.md)
- [ECDSA](/wiki/Cryptography/ecdsa.md)
- [ECDSA](/wiki/Cryptography/ecdsa.md)
- [Keccak256](/wiki/Cryptography/keccak256.md)
- BLS
- [Commitments]
- Polynomials
- Commitment schemes
- ZK
- [KZG](/docs/wiki/Cryptography/KZG.md)
- [Post-Quantum Cryptography](/wiki/Cryptography/post-quantum-cryptography.md)
- [Protocol Fellowship](/wiki/epf.md)

- **Wiki Info**
Expand Down
20 changes: 11 additions & 9 deletions docs/contributing.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
# Contribute to the Protocol Wiki

The Protocol Wiki is an open and collaborative project. Whether you are part of the [Study Group](study-group.md) or not, we welcome your contributions! Help us to build the documentation and improve availability of learning resources on Ethereum core R&D.
The Protocol Wiki is an open and collaborative project. Whether you are part of the [Study Group](/eps/intro.md) or not, we welcome your contributions! Help us to build the documentation and improve availability of learning resources on Ethereum core R&D.

*We are not aiming to rewrite other existing Ethereum documentation* but rather create a cohesive collection of technical resources for aspiring core developers and researchers.

When creating contributions, consider whether it doesn't exist in another form elsewhere. Use it and reference it in your text but do not copy its content. Focus on adding it into a big picture, connecting it with related topics.

Write contributions based on what you learned about the protocol along the way, what experience you gathered and missing pieces that slowed you down. Consider it as explaining to your peers, reflect on your own journey as a core developer/reseacher.
Write contributions based on what you learned about the protocol along the way, what experience you gathered and missing pieces that slowed you down. Consider it as explaining to your peers, reflect on your own journey as a core developer/researcher.

## Contributing

Before you start with editing, please read the code of conduct, following guide and make yourself familiar with the overall wiki structure.

The wiki source is hosted in github repository at [github.com/eth-protocol-fellows/protocol-studies](https://github.com/eth-protocol-fellows/protocol-studies). Mirrored at //TODO

> The wiki is served from `wiki-pages` branch. When contributing, open a PR to `main` branch (repo default branch). After a while, all updates are collectively upstreamed to `wiki-pages` to update the website.
> The wiki is served from `wiki-pages` branch which is regularly updated from `main`. When contributing, open a PR to a branch related to the change or `main` for smaller quick fixes. PRs from other branches are reviewed before merging to `main` and collected updates are then pushed to update the `wiki-pages`.
You can explore existing issues or open a new one for missing content, suggest improving existing content or wiki frontend features. If you identify missing or unfinished content, feel free to open a PR.
Explore existing issues or open a new one for missing content, suggest improving existing content or wiki frontend features. If you identify missing or unfinished content, feel free to open a PR. First, check existing PRs or branches to make sure your work is not redundant.

We are not aiming to recreate other existing wikis. If the same content is well explained elsewhere, just link it and provide additional context.

### What does(n't) belong here

The scope of this wiki is limited to technical resources of the Ethereum core protocol infrastracture. This means its specifications, implementations, testing, research or related tooling.
The scope of this wiki is limited to technical resources of the Ethereum core protocol infrastructure. This means its specifications, implementations, testing, research or related tooling.

It **does not** cover onchain protocols/dapps, layer 2s/rollups or any other tools which are not dependencies of core infrastracture. In other words, stuff which would be covered by EIPs, not ERCs.
It **does not** cover onchain protocols/dapps, layer 2s/rollups or any other tools which are not dependencies of core infrastructure. In other words, stuff which would be covered by EIPs, not ERCs.

### Structure and collaboration

The wiki is supposed to cover all important parts of Ethereum core protocol and its development. The protocol architecture and related topics is reflected in the wiki format. The whole wiki lives under `/docs/wiki` and the [sidebar](_sidebar.md) defines the main documentation structure.
The wiki is supposed to cover all important parts of Ethereum core protocol and its development. The protocol architecture and related topics is reflected in the wiki format. The whole wiki lives under `/docs/wiki` and the `/docs/_sidebar.md` defines the main documentation structure.
High level areas are abstracted to directories which include all subtopics. Focus your contributions to wiki itself. Week pages in `eps` directory are meant for weekly presentations information, not main place for resources.

For contributors, we recommend focusing on specific topics contained in corresponding documents. It's best to own a single topic and work out all the details. Create a new document and add the topic to the sidebar if it's not there yet. Join the [discord server](https://discord.gg/epfsg), let others know what you are working on in the group channel and collaborate with other contributors writing about related topics. If you are working with multiple people on a significant piece of content, you can have a dedicated branch in the repo for easier coordination.
Expand Down Expand Up @@ -68,11 +68,13 @@ The audience of this wiki is technical and the content should reflect that. Ther
- Highlight keywords to support scanning and skimming through the article
- Provide visualizations to explain the topic better
- When using acronyms or a technical jargon, make sure to introduce it first
- Ethereum is changing fast, write the content to be as much future proof as possible
- Don't use LLMs to generate the text
- We don't accept texts fully generated by AI, however we recommend using it to fix grammar or phrasing
- Consider creating a hands on guides or tutorials
- Consider creating tutorials and hands-on guides documenting technical steps
- Add recommended reading at the top, point to topics which are dependencies of yours
- For mathematical notations, you can use Katex
- You can use mermaid diagrams for visualizations

Goal is to produce a credible neutral text which is formal, well-structured, and maintains a clear progression of ideas. The content should be purely technical and shouldn't waste space on introducing high level/well known concepts. Introductory topics are necessary and can use comparisons, historical anecdotes, and concrete examples to make complex concepts more accessible.

Expand All @@ -81,7 +83,7 @@ Goal is to produce a credible neutral text which is formal, well-structured, and

The wiki uses American English over British spelling. Terminology, capitalization and nomenclature should match across all pages. Use [Ethereum.org guide](https://ethereum.org/contributing/style-guide/content-standardization) for the reference.

Usage of images and visualizations is encouraged. If you are using an image created by a third party, make sure its licence allows it and provide link to the original. For creating your own visualizations, we suggest [excalidraw.com](https://github.com/excalidraw/excalidraw).
Usage of images and visualizations is encouraged. If you are using an image created by a third party, make sure its license allows it and provide link to the original. For creating your own visualizations, we suggest [excalidraw.com](https://github.com/excalidraw/excalidraw).

Feel free to use [emojis](https://docsify.js.org/#/emoji?id=emoji) or [icons](https://icongr.am/fontawesome) where it fits, for example in blockquotes.

Expand Down
Loading

0 comments on commit 4affef6

Please sign in to comment.