Skip to content

Commit

Permalink
Merge branch 'main' into pbs
Browse files Browse the repository at this point in the history
  • Loading branch information
taxmeifyoucan authored Apr 9, 2024
2 parents be25567 + 61ffc33 commit f3ff538
Show file tree
Hide file tree
Showing 44 changed files with 935 additions and 62 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\`.
-->
14 changes: 14 additions & 0 deletions .github/workflows/md-lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
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.');
3 changes: 2 additions & 1 deletion docs/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
- [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)
- [Contributing](contributing.md)
- **Protocol Wiki**
- The Protocol
Expand Down
11 changes: 6 additions & 5 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The Protocol Wiki is an open and collaborative project. Whether you are part of

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

Expand All @@ -22,9 +22,9 @@ We are not aiming to recreate other existing wikis. If the same content is well

### 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

Expand Down Expand Up @@ -68,9 +68,10 @@ 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

Expand All @@ -81,7 +82,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
18 changes: 6 additions & 12 deletions docs/eps/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,7 @@ The second part of the program offers two distinct tracks focused on development

Talks and calls are announced week in advance based on the schedule above. Recordings of all talks can be found on [Youtube](https://www.youtube.com/@ethprotocolfellows) or [StreamEth](https://streameth.org/archive?organization=ethereum_protocol_fellowship) archive.

Apart of these, there are less regular, ad-hoc hangout calls for informal chats and getting to know each other. Join the Discord group to get notified about all the events.

### Streams and recordings

Talks and calls are announced week in advance based on the schedule above. Recordings of all talks can be found on [Youtube](https://www.youtube.com/@ethprotocolfellows) or [StreamEth](https://streameth.org/archive?organization=ethereum_protocol_fellowship) archive.

Apart of these, there are less regular, ad-hoc hangout calls for informal chats and getting to know each other. Join the Discord group to get notified about all the events.
Apart from weekly lectures, there are less regular, ad-hoc hangout calls for informal chats and calls for wiki contributors working the content. Join the Discord group to get notified about all of these events.

## Participate

Expand All @@ -70,11 +64,11 @@ While this program is designed to act as a precursor to the Ethereum Protocol Fe

## Important links

- Discord server: https://discord.gg/addwpQbhpq
- Weekly talks stream: https://streameth.org/65cf97e702e803dbd57d823f/epf_study_group,
- Sessions calendar: https://calendar.google.com/calendar/u/0?cid=ZXBmc3R1ZHlncm91cEBnbWFpbC5jb20 ([ics format](https://calendar.google.com/calendar/ical/epfstudygroup%40gmail.com/public/basic.ics))

- EPF mailing list: https://groups.google.com/a/ethereum.org/g/protocol-fellowship-group
- [Discord server](https://discord.gg/addwpQbhpq)
- [Weekly talks on StreamEth](https://streameth.org/65cf97e702e803dbd57d823f/epf_study_group)
- [Youtube](https://www.youtube.com/@ethprotocolfellows)
- [Sessions calendar](https://calendar.google.com/calendar/u/0?cid=ZXBmc3R1ZHlncm91cEBnbWFpbC5jb20)
- [EPF mailing list](https://groups.google.com/a/ethereum.org/g/protocol-fellowship-group)

## Calls troubleshooting

Expand Down
2 changes: 1 addition & 1 deletion docs/eps/nodes_workshop.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Watch the recording of the workshop by [Mario](https://twitter.com/TMIYChao) on

[recording](https://www.youtube.com/embed/KxXowOZ2DLs?si=yLpNoczrUmxj4kE4 ':include :type=iframe width=100% height=560 frameborder="0" allow="fullscreen" allowfullscreen encrypted-media gyroscope picture-in-picture web-share')

Make sure to prepare your enviroment and learn basics necessary to understand the process:
Make sure to prepare your environment and learn basics necessary to understand the process:

## Prerequisites

Expand Down
Binary file added docs/eps/presentations/week7-dev.pdf
Binary file not shown.
Binary file added docs/eps/presentations/week7-research.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/eps/week0.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Before the program, you should be familiar with some general concepts from Ether
- From a user perspective
- As a dapp developer

These are just general suggestions of domain knowledge you will need. More introductory learning resources can be found in [week 1](week1.md).
These are just general suggestions of domain knowledge you will need. More introductory learning resources can be found in [week 1](/eps/week1.md).

### Helpful resources to get you started

Expand Down
2 changes: 1 addition & 1 deletion docs/eps/week2.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Before starting with week 2 content, make yourself familiar with resources in [w

Additionally, you should read through the following documents to prepare for the presentation:
* [Nodes and clients](https://ethereum.org/developers/docs/nodes-and-clients)
* [Ethereum: mechanics](https://cs251.stanford.edu/lectures/lecture7.pdf) (a lecture based on these slides is also available on YouTube: [An Overview of the Ethereum Excecution Layer - Dan Boneh](https://www.youtube.com/watch?v=7sxBjSfmROc))
* [Ethereum: mechanics](https://cs251.stanford.edu/lectures/lecture7.pdf) (a lecture based on these slides is also available on YouTube: [An Overview of the Ethereum Execution Layer - Dan Boneh](https://www.youtube.com/watch?v=7sxBjSfmROc))

## Outline

Expand Down
2 changes: 2 additions & 0 deletions docs/eps/week3.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Watch the presentation on overview of the CL with Alex Stokes on [StreamEth](htt

[recording](https://streameth.org/embed/?playbackId=66a30awapcuiok0z&vod=true&streamId=&playerName=Consensus+Layer+Overview+%7C+Alex+Stokes+%7C+Week+3 ':include :type=iframe width=100% height=520 frameborder="0" allow="fullscreen" allowfullscreen')

For written summary of week 2 presentation, check the [notes](https://github.com/eth-protocol-fellows/protocol-studies/files/14850973/Week.3.EPFsg.Consensus.Layer.Overview.pdf)

For archive of the discussion during the talk, check [this thread](https://discord.com/channels/1205546645496795137/1214219045205835776/1214219052969492541) in our Discord server.

## Pre-reading
Expand Down
2 changes: 2 additions & 0 deletions docs/eps/week4.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ Watch the presentation on Ethereum core testing infrastracture on [Youtube](http

[recording](https://www.youtube.com/embed/PQVW5dJ8J0c?si=fv5ww4_6zInGXpjO ':include :type=iframe width=100% height=560 frameborder="0" allow="fullscreen" allowfullscreen encrypted-media gyroscope picture-in-picture web-share')

For written summary of week 2 presentation, check the [notes](https://github.com/eth-protocol-fellows/protocol-studies/files/14850974/Week.4.EPFsg.Test.Security.Overview.pdf)

For archive of the discussion during the talk, check [this thread](https://discord.com/channels/1205546645496795137/1216771776810455160/1216771782040621118) in our Discord server.

## Pre-reading
Expand Down
2 changes: 1 addition & 1 deletion docs/eps/week6-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Additionally, you can read and get ready by studying the following resources:
## Additional reading and exercises

- Following instructions from Hsiao-Wei's talk, write and run your own pyspec program
- As an excercise for EL specs, follow Sam's demo on adding an opcode and add your own
- As an exercise for EL specs, follow Sam's demo on adding an opcode and add your own
- https://ethereum.org/en/developers/tutorials/yellow-paper-evm/
- Vitalik Buterin’s Annotated spec: https://github.com/ethereum/annotated-spec
- Ben Edgington’s Upgrading Ethereum Book: https://eth2book.info
4 changes: 2 additions & 2 deletions docs/eps/week6-research.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Week 6 research track is going to be a dive into data availability sampling and danksharding.

Watch the presentations by [Dankrad](https://twitter.com/dankrad) on StreamEth or Youtube. Slides are [available here](https://github.com/eth-protocol-fellows/protocol-studies/blob/main/docs/eps/presentations/week6_research.pdf).
Watch the presentation by [Dankrad](https://twitter.com/dankrad) on StreamEth or Youtube. Slides are [available here](https://github.com/eth-protocol-fellows/protocol-studies/blob/main/docs/eps/presentations/week6_research.pdf).

<iframe width="560" height="315" src="https://www.youtube.com/embed/ro2AGRkLC2s?si=IaNwL7OXl5tQvqOM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

Expand All @@ -24,7 +24,7 @@ Additionally, you can read and get ready by studying the following resources:
## Additional reading and exercises

- [Foundations of Data Availability Sampling](https://www.youtube.com/watch?v=KUNE3kR1kwU)
- [Desing choices in DAS](https://www.youtube.com/watch?v=Al7Jns8bCO4)
- [Design choices in DAS](https://www.youtube.com/watch?v=Al7Jns8bCO4)
- [Danksharding workshop, Devcon Bogota](https://www.youtube.com/watch?v=8L2C6RDMV9Q)
- [Fraud and DA proofs paper](https://arxiv.org/abs/1809.09044)
- [WIP DAS proposal](https://hackmd.io/@vbuterin/das)
8 changes: 4 additions & 4 deletions docs/eps/week7-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

Week 7 development track is an insight into Ethereum execution layer client codebase, explaining its architecture and highlighting novel approaches.

The presentation will be given by [Dragan](https://twitter.com/rakitadragan) who will dive into reth client codebase. Join the talk on [Monday, Aprol 1, 4PM UTC](https://savvytime.com/converter/utc-to-germany-berlin-united-kingdom-london-ny-new-york-city-ca-san-francisco-china-shanghai-japan-tokyo-australia-sydney/april-01-2024/4pm).
Watch the presentation recording by [Dragan](https://twitter.com/rakitadragan) on StreamEth or Youtube. Slides are [available here](https://github.com/eth-protocol-fellows/protocol-studies/blob/main/docs/eps/presentations/week7-dev.pdf).

The talk will be streamed live on [StreamEth](https://streameth.org/65cf97e702e803dbd57d823f/epf_study_group) and [Youtube](https://www.youtube.com/@ethprotocolfellows/streams), links will be provided before the call in the [Discord server](https://discord.gg/addwpQbhpq). Discord also serves for the discussion and questions during the stream.
<iframe width="560" height="315" src="https://www.youtube.com/embed/ibcsc5cv-vc?si=mTR7ReFUZo3vFtJD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## Pre-reading

Expand All @@ -25,5 +25,5 @@ Additionally, you can read and get ready by studying the following resources:

## Additional reading and exercises

- Erigon is a fork of geth which pioneered the design approached implemented by reth. Kind of a middle ground between geth and reth, tt's a great source of resources about novel execution client designs
- As an excercise, run reth and set different `DEBUG` options to explore how various client componantes operate on lower level
- Erigon is a fork of geth which pioneered the design approached implemented by reth. Kind of a middle ground between geth and reth, it's a great source of resources about novel execution client designs
- As an exercise, run reth and set different `DEBUG` options to explore how various client components operate on lower level
Loading

0 comments on commit f3ff538

Please sign in to comment.