Skip to content

Commit

Permalink
Merge pull request #151 from eth-protocol-fellows/main
Browse files Browse the repository at this point in the history
Wiki pages update, Apr 5
  • Loading branch information
taxmeifyoucan authored Apr 5, 2024
2 parents d1fdf5d + 623bc0b commit a9541c7
Show file tree
Hide file tree
Showing 19 changed files with 123 additions and 72 deletions.
19 changes: 14 additions & 5 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
# Checklist
## Wiki PR Checklist

- [ ] Review changes to ensure there are no typos.
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 list < $f | sort | uniq -c ; done
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 and must not have any spaces or special characters before or after it.
-->
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
26 changes: 20 additions & 6 deletions .github/workflows/spell-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 2
Expand All @@ -29,9 +29,19 @@ jobs:
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 list <$file | sed 's/^/ 1. /')"
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"
Expand All @@ -46,7 +56,7 @@ jobs:
- name: Comment on pull request
if: env.TYPOS != ''
uses: actions/github-script@v4
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
Expand All @@ -62,14 +72,18 @@ jobs:
## ℹ️ 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 and must not have any spaces or special characters before or after it. [Learn more.](http://aspell.net/man-html/Format-of-the-Personal-and-Replacement-Dictionaries.html)
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.issues.createComment({
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.');
core.setFailed('🥢 Spell check: Typos found in docs. Please fix them.');
1 change: 1 addition & 0 deletions docs/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
- [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
3 changes: 2 additions & 1 deletion docs/contributing.md
Original file line number Diff line number Diff line change
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 Down
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: 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
1 change: 0 additions & 1 deletion docs/eps/week7-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ Week 7 development track is an insight into Ethereum execution layer client code

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).


<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 Down
17 changes: 10 additions & 7 deletions docs/eps/week7-research.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Study Group Week 7 | Verkle Trees

Week 7 research talk will be focused on verkle trees, an important domain of current development and research aiming to replace the MPT.
Week 7 research talk is focused on verkle trees, an important domain of current research and development aiming to replace the MPT and enable statelessness.

This presentation will have 3 speakers! We will host [Guillaume](https://twitter.com/gballet/), [Ignacio](https://twitter.com/ignaciohagopian) and [Josh](https://twitter.com/rudolf6_) on [Wednesday, April 3, 3PM UTC](https://savvytime.com/converter/utc-to-germany-berlin-united-kingdom-london-china-shanghai-ny-new-york-city-japan-tokyo-australia-sydney-india-delhi-argentina-buenos-aires/apr-1-2024/3pm). (note that this is 1 hour sooner than the default time)
Watch the talk by [Guillaume](https://twitter.com/gballet/), [Ignacio](https://twitter.com/ignaciohagopian) and [Josh](https://twitter.com/rudolf6_) on StreamEth or Youtube. Slides are [available here](https://github.com/eth-protocol-fellows/protocol-studies/blob/main/docs/eps/presentations/week7-research.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/H_M9bjwtMhU?si=9OurujpFiwUEuNdA" 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 @@ -17,12 +17,15 @@ Additionally, you can read and get ready by studying the following resources:

## Outline

- MPT and the Verge
- Design and cryptography
- The Verge, motivation and benefits
- Verkle cryptography
- Data structures
- Gas pricing
- Transitioning the state tree to verkle
- Current state and challanges
- Current state and challenges
- Questions from audience

## Additional reading and exercises

- Overview of many various resources https://verkle.info
- Checkout [verkle implementers calls](https://github.com/ethereum/pm/issues/977)
- Checkout [verkle implementers calls](https://github.com/ethereum/pm/issues/977)
35 changes: 35 additions & 0 deletions docs/eps/week8-dev.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Study Group Week 8 | Consensus client architecture

The Week 8 research track provides an look into Ethereum consensus layer client codebase, explaining its architecture and functions.

Join the presentation by [Paul Harris](https://twitter.com/rolfyone) from Consensys Teku on [Wednesday, April 8, 7PM UTC](https://savvytime.com/converter/utc-to-germany-berlin-united-kingdom-london-china-shanghai-ny-new-york-city-japan-tokyo-australia-sydney-india-delhi-argentina-buenos-aires/apr-1-2024/3pm). (Note that this is 3 hours later than the default time)

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.

## Pre-reading

Before starting with the week 8 development content, make yourself familiar with resources in previous weeks, especially week 3 resources on consensus layer.

Paul will dive into Teku, consensus client implementation in Java. You should have at least basic knowledge of the language syntax.

[Consensus-specs](https://github.com/ethereum/consensus-specs/) is executable, and a passing knowledge of python may be beneficial, but it's a fairly easy language to reason about at the level the specs are written.

Additionally, you can get ready by studying the following resources:

- [Post-Merge Ethereum Client Architecture by Adrian Sutton](https://www.youtube.com/watch?v=6d4pkhL37Ao)
- [Teku Architecture, 2020](https://www.youtube.com/watch?v=1PHZHpVPLk4)
- [Teku docs](https://docs.teku.consensys.io/)

## Outline

- Teku CL client
- Brief introduction into our rest api's, declarative framework
- A look at development process EIP -> spec -> code
- Examples of EIP-7251 (maxEB)

## Additional reading and exercises

- [Teku code conventions for contributors](https://wiki.hyperledger.org/display/BESU/Coding+Conventions)
- [Teku and the Merge, PEEPanEIP#83](https://www.youtube.com/watch?v=YTWaZ-NBpbM)
- [EIP 7251 - Max EB](https://github.com/ethereum/consensus-specs/tree/dev/specs/_features/eip7251)
- [Beacon-api](https://github.com/ethereum/beacon-APIs)
2 changes: 1 addition & 1 deletion docs/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The protocol wiki is a collection of technical resources about the Ethereum prot

Ethereum Protocol Fellowship Study Group (EPFsg) is an open study program for anyone interested in learning about internals of the protocol.

Learn more about EPS in its [announcement blog](https://blog.ethereum.org/2024/02/07/epf-study-group). Join the community in our [Discord server](https://discord.gg/epfsg).
Learn more about EPS in its [announcement blog](https://blog.ethereum.org/2024/02/07/epf-study-group). Join the community in our [Discord server](https://discord.com/invite/addwpQbhpq).

## Contributing

Expand Down
2 changes: 1 addition & 1 deletion docs/wiki/protocol/history.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

This page highlights important technical changes in the history of Ethereum protocol.

Usefull links: [Overview from Ethereum.org](https://ethereum.org/en/history) and [Meta EIPs from Ethereum.org](https://eips.ethereum.org/meta)
Useful links: [Overview from Ethereum.org](https://ethereum.org/en/history) and [Meta EIPs from Ethereum.org](https://eips.ethereum.org/meta)

## Homestead

Expand Down
Binary file added notes/Week 5 EPFsg Ethereum Roadmap Overview.pdf
Binary file not shown.
Binary file added notes/Week 6 EPFsg Dev Track - EL CL Specs.pdf
Binary file not shown.
Binary file not shown.
24 changes: 12 additions & 12 deletions notes/steven_notes/weekly_updates_1.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,23 +26,23 @@ The primary resource I utilized this week was the [Eth2 Book on Consensus Prelim

A particularly helpful resource was the blog [Engine API: A Visual Guide](https://hackmd.io/@danielrachi/engine_api#Block-Building). I explore the Prysm codebase with this blog and below are some annotated insights into the source code:

- **prycm client initialization flow: prysm/cmd/beacon-chain/main.go**
- **prysm client initialization flow: prysm/cmd/beacon-chain/main.go**
1. app.New() // cli application/instance
2. parseFlags
3. app.before(ctx)
4. app.Action(ctx)
3. `app.before(ctx)`
4. `app.Action(ctx)`
- node.New() // register every required services
- startNode(ctx, cancel)
- `startNode(ctx, cancel)`
- beacon, err := node.New(...) // beacon node handles the lifecycle of entire system
- beacon.Start()
- beacon.services.StartAll() // initialized each service in order of registration
- p2p
- initialsync
- initialSync
- backfill
- attestations
- blockchain
- ...
5. app.After(ctx)
5. `app.After(ctx)`

- **engine api interface: /prysm/beacon-chain/execution/engine_client.go**
```
Expand All @@ -58,8 +58,8 @@ type EngineCaller interface {
```

- **validator lifetime**
1. receive block from other validators: **/prysm/beacon-chain/blockcain/receive_block.go**
1. extract excution payload
1. receive block from other validators: **/prysm/beacon-chain/blockchain/receive_block.go**
1. extract execution payload
2. **s.validateExecutionOnBlock**: call engine_newPayload
3. **s.postBlockProcess**: call engine_engine_forkchoiceUpdated
2. propose block: **/prysm/beacon-chain/rpc/prysm/v1alpha1/validator/proposer.go**
Expand All @@ -71,21 +71,21 @@ type EngineCaller interface {
**RoadMap**
For reference: [Ethereum Roadmap](https://ethereum.org/en/roadmap/)

The roadmap aims at bringing four benifits for users:
The roadmap aims at bringing four benefits for users:
- Cheaper transactions(Done partially)
- Proto-Danksharding (Done recently in EIP-4844)
- Danksharding
- Dencentralizing rollups
- Decentralizing rollups
- Extra security (need to finalize a specification and start building prototypes)
- Single slot finality
- DVT
- Proposer-builder sepration
- Proposer-builder separation
- Secret leader election
- Better user experience
- Account abstraction(EIP-4337)
- Nodes for everyone
- Verkle tree
- Statelessness(weak statelessness preferred but rely on Verkle tree and Proposer-builder sepration)
- Statelessness(weak statelessness preferred but rely on Verkle tree and Proposer-builder separation)
- Data expiry(portal network is an option)
- Future proofing (still in the research phase)
- Quantum resistance
Expand Down
Loading

0 comments on commit a9541c7

Please sign in to comment.