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 23, 2024
2 parents a106ecf + 332c9f1 commit 33404ac
Show file tree
Hide file tree
Showing 35 changed files with 1,560 additions and 125 deletions.
30 changes: 18 additions & 12 deletions docs/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,33 +16,35 @@
- [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]
- Execution Layer
- [EL Clients](/wiki/EL/el-clients.md)
- [EL Specs](/wiki/EL/el-specs.md)
- Client architecture
- [EVM](/wiki/EL/evm.md)
- [Precompiled Contracts](/wiki/EL/precompiled-contracts.md)
- [Transaction](/wiki/EL/transaction.md)
- [DevP2P]
- [Transaction anatomy](/wiki/EL/transaction.md)
- [JSON-RPC](/wiki/EL/JSON-RPC.md)
- [Data Structures](/wiki/EL/data-structures.md)
- [DevP2P]
- [Precompiled Contracts](/wiki/EL/precompiled-contracts.md)
- [Consensus Layer](/wiki/CL/overview.md)
- [CL Clients](/wiki/CL/cl-clients.md)
- [CL Specs](/wiki/CL/cl-specs.md)
- Client architecture
- [Proof-of-Stake]
- [Beacon API]
- [Networking](/wiki/CL/cl-networking.md)
- Client architecture
- Development
- [Core development](/wiki/dev/core-development.md)
- [Network upgrades](/wiki/dev/upgrades.md)
- [Coordination](/wiki/protocol/pm.md)
- [CS Resources]
- Testing and security
- [Testing overview](/wiki/testing/overview.md)
- [Incidents](/wiki/testing/incidents.md)
Expand All @@ -53,7 +55,6 @@
- [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)
- Sharding
- Statelessness
- Purge
- [MEV](/wiki/research/PBS/mev.md)
Expand All @@ -65,7 +66,7 @@
- [PEPC](/wiki/research/PBS/PEPC.md)
- [TBHL](/wiki/research/PBS/TBHL.md)
- Proof of Stake
- [Upgrades](/docs/wiki/research/Beacon%20Chain%20Upgrades.md)
- [Upgrades](/docs/wiki/research/cl-upgrades.md)
- SSF
- SSLE
- [Light Clients](/wiki/research/light-clients.md)
Expand All @@ -74,18 +75,23 @@
- ASE
- EOF
- Portal Network
- 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
- [Post-Quantum Cryptography](/wiki/Cryptography/post-quantum-cryptography.md)
- [Protocol Fellowship](/wiki/epf.md)

- **Wiki Info**
- [GitHub Repository](https://github.com/eth-protocol-fellows/protocol-studies)

<form action="https://epf.wiki/#/eps/intro" target="_blank">
<input type="submit" value="Join the protocol" style="cursor: pointer;margin-top:12px;padding:8px;background-color:#FFFFFF;border:1px solid #0374B5;border-radius:.25rem;color:#0374B5;display:inline-block;text-align:center;text-decoration:none;width:250px;-webkit-text-size-adjust:none;mso-hide:all;" />
</form>
</form>
5 changes: 3 additions & 2 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ Before you start with editing, please read the code of conduct, following guide

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.

Expand Down Expand Up @@ -74,6 +74,7 @@ The audience of this wiki is technical and the content should reflect that. Ther
- 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 Down
2 changes: 1 addition & 1 deletion docs/eps/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ The second part of the program offers two distinct tracks focused on development
| April 3 | Verkle trees | [Josh Rudolf](https://github.com/jrudolf) | Research |
| April 8 | Consensus client architecture | [Paul Harris](https://github.com/rolfyone) | Development |
| April 10 | MEV and censorship | [Barnabe Monnot](https://github.com/barnabemonnot) | Research |
| April 15 | Devops and testing | [Paritosh](https://github.com/parithosh) | Development |
| April 15 | Devops and testing | [Parithosh](https://github.com/parithosh) | Development |
| April 17 | Purge and Portal Network | [Piper Merriam](https://github.com/pipermerriam) | Research |
| April 22 | Cryptographic precompiles | | Development |
| April 24 | SSF and PoS Upgrades | [Francesco D’Amato](https://github.com/fradamt) | Research |
Expand Down
Binary file added docs/eps/presentations/week9-dev.pdf
Binary file not shown.
2 changes: 2 additions & 0 deletions docs/eps/week1.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ The invention of [asymmetric cryptography](https://www-ee.stanford.edu/~hellman/
## Ethereum Protocol Design

The actual prehistory of the protocol, early ideas and inspiration for technical decisions in Ethereum are well documented in [V's blog](https://vitalik.eth.limo/general/2017/09/14/prehistory.html).

Originally outlined in its [Whitepaper](https://ethereum.org/whitepaper#ethereum-whitepaper), Ethereum draws inspiration from Bitcoin and its background (explained above) to create a general blockchain based computation platform. The design was technically specified in [Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf) and evolved over time. Changes are tracked in the community process of [EIPs](https://eips.ethereum.org) and current specification is implemented in Python as:

- [Execution specs](https://github.com/ethereum/execution-specs)
Expand Down
34 changes: 34 additions & 0 deletions docs/eps/week10-dev.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Study Group Week 10 | Precompiles

Week 10 dev talk is diving into EVM precompiles and their integration in execution clients.

Join the presentation by [Danno Ferrin](https://twitter.com/shemnon), on [Monday, April 22, 4PM 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-22-2024/4pm).

## Links
- Watch the talk on [StreamEth](https://streameth.org/65cf97e702e803dbd57d823f/epf_study_group) and [Youtube](https://www.youtube.com/watch?v=daiMhkt0XTw)
- [Presentation from the talk.](https://hackmd.io/@shemnon/precompiles)
- [Discussion thread on Discord: Week 10D: Precompiles](https://discord.com/channels/1205546645496795137/1231990093506678785).

## Pre-reading

Before starting with the week 10 development content, make yourself familiar with resources in previous weeks, especially week 2 and week 8. You should have understanding of the execution client architecture and EVM.

The talk will use examples from Besu, a Java implementation of execution client. At least basic understanding of Java syntax is recommended.

Additionally, you can get ready by studying the following resources:
- [Exploring Precompiled Contracts on Ethereum: A Deep Dive](https://lucasmartincalderon.medium.com/exploring-precompiled-contracts-on-ethereum-a-deep-dive-4e9f9682e0aa)
- [Precompiles documentation by evm.codes](https://www.evm.codes/precompiled)

## Outline

- EVM Precompiles
- How they are integrated
- Which precompiles exist
- How L2s and L1s use them
- Challanges of creating precompiles

## Additional reading and exercises

- [EVM Precompiled and System Contract Catalog](https://github.com/shemnon/precompiles/)
- [RollCall breakout on precompiles](https://www.youtube.com/watch?v=tg01COfxi_M)
- [Custom RPCs and Precompiles for Hyperledger Besu](https://www.youtube.com/watch?v=djL5nczlYFw)
27 changes: 27 additions & 0 deletions docs/eps/week10-research.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Study Group Week 10 | Consensus upgrades

Week 10 research talk will cover variety of Beacon Chain upgrades currently researched, analyzed and considered for inclusion.

Join the presentation by [](https://twitter.com/), on [Wednesday, April 24, 4PM 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-24-2024/4pm).

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 10 development content, make yourself familiar with resources in previous weeks, especially week 3 and week 5. You should have understanding of Beacon Chain and current consensus research topics.

Additionally, you can get ready by studying the following resources:
- [A simple single slot finality](https://ethresear.ch/t/a-simple-single-slot-finality-protocol/14920)

## Outline

- Single Slot Finality
- MaxEB
- Inclusion lists
- PeerDAS
- SSLE

## Additional reading and exercises

- [Paths toward single-slot finality, 2022](https://notes.ethereum.org/@vbuterin/single_slot_finality)
- [Notes on SSF, Lincoln Murr](https://publish.obsidian.md/single-slot-finality/Welcome+to+My+Research!)
3 changes: 2 additions & 1 deletion docs/eps/week3.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ 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 written summary of week 3 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.

Expand Down Expand Up @@ -40,5 +40,6 @@ Additionally, you can read and get ready by studying the following resources:
- [Slashing scenario explanation by Dankrad Feist](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html)
- [Beacon Chain design mistakes by Justin Drake](https://www.youtube.com/watch?v=10Ym34y3Eoo)
- [Casper and Consensus from Devcon 3](https://archive.devcon.org/archive/watch/3/casper-and-consensus/?tab=YouTube)
- [Anatomy of a slot](https://www.youtube.com/watch?v=EswDO0kL_O0)

After learning about both EL and CL, run a client pair. Spin a pair of one execution and consensus client, read their logs to learn how they operate.
2 changes: 1 addition & 1 deletion docs/eps/week4.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ 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 written summary of week 4 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.

Expand Down
4 changes: 2 additions & 2 deletions docs/eps/week5.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Before starting with the week 5 content, make yourself familiar with resources i
Additionally, you can read and get ready by studying the following resources:

- https://ethereum.org/en/roadmap/
- https://notes.ethereum.org/@domothy/roadmap
- https://domothy.com/roadmap/
- https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum
- https://ethereum.org/en/community/research/#active-areas-of-ethereum-research
- https://domothy.com/blobspace/
Expand Down Expand Up @@ -61,4 +61,4 @@ Additionally, you can read and get ready by studying the following resources:
- https://scroll.io/blog/kzg
- [Ethereum data structures](https://arxiv.org/pdf/2108.05513.pdf)
- https://ethresear.ch/t/execution-tickets/17944
- https://notes.ethereum.org/@ipsilon/evm-object-format-overview
- https://notes.ethereum.org/@ipsilon/evm-object-format-overview
2 changes: 1 addition & 1 deletion docs/eps/week7-research.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Before starting with the week 7 development content, make yourself familiar with

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

- [Data structures in Ethereum](/wiki/protocol/data-structures.md)
- [Data structures in Ethereum](/wiki/EL/data-structures.md)
- [Guillaume Ballet - The Verge](https://www.youtube.com/watch?v=F1Ne19Vew6w)

## Outline
Expand Down
9 changes: 6 additions & 3 deletions docs/eps/week9-dev.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Study Group Week 9 | Local testing and prototyping

This research talk is dedicated to testing and prototyping forks locally, it discusses the current state and ideas being worked on.
This development talk is dedicated to testing and prototyping forks locally, it discusses the current state and ideas being worked on.

Join the presentation by [Parithosh](https://twitter.com/parithosh_j), the Ethereum testnet guru from EF Devops on [Wednesday, April 15, 4PM 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-15-2024/4pm).
Watch the presentation by [Parithosh](https://twitter.com/parithosh_j) on StreamETH channel or Youtube. Slides are [available here](https://github.com/eth-protocol-fellows/protocol-studies/blob/main/docs/eps/presentations/week9-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/Enf8006zKLI?si=hJe4xFqiY81C0DwQ" 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 Expand Up @@ -39,3 +39,6 @@ Additionally, you can get ready by studying the following resources:
- [Attacknet: Chaos engineering on Ethereum](https://ethpandaops.io/posts/attacknet-introduction/)
- [Verkle devnets](https://github.com/ethpandaops/verkle-devnets)
- [Kurtosis](https://github.com/kurtosis-tech/kurtosis)
- Follow exercises proposed by Pari in the talk
- Modify a client with a custom log message and run it using Kurtosis
- Deploy some of the tolling, connect to your own node on any network
51 changes: 51 additions & 0 deletions docs/eps/week9-research.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Study Group Week 9 | Purge and Portal Network

Week 9 research talk is focused on history expiry and dives into Portal Network, an overlay network for light clients enabling alternative access to current and historical data.

Watch the presentation by [Piper Merriam](https://twitter.com/parithosh_j), on [StreamEth](https://streameth.org/65cf97e702e803dbd57d823f/epf_study_group) and [Youtube](https://www.youtube.com/@ethprotocolfellows/streams).

<iframe width="560" height="315" src="https://www.youtube.com/embed/GxNrGyQB-3Q?si=gRPhA35dNYPEGDeZ" 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

Before starting with the week 9 research content, make yourself familiar with resources in previous weeks, especially week 5 presentation on roadmap. You should understand the execution client database structure, the difference between ancient and current data.

Additionally, you can get ready by studying the following resources:
- [Statelessness and history expiry, Ethereum.org](https://ethereum.org/en/roadmap/statelessness/)
- [Portal Network web](https://www.ethportal.net/)
- [EL Data structure](https://epf.wiki/#/wiki/EL/data-structures)

## Outline

- History expiry in Ethereum execution clients
- Portal Network

## Additional reading and exercises

- EIP-4444
- https://eips.ethereum.org/EIPS/eip-4444
- SELFDESTRUCT Removal EIPS (many are stale)
- https://eips.ethereum.org/EIPS/eip-6049
- https://eips.ethereum.org/EIPS/eip-6780
- https://eips.ethereum.org/EIPS/eip-2936
- https://eips.ethereum.org/EIPS/eip-4758
- https://eips.ethereum.org/EIPS/eip-4760
- https://eips.ethereum.org/EIPS/eip-6046
- https://eips.ethereum.org/EIPS/eip-6190
- EOF things: https://hackmd.io/@shemnon/mega-eof-scoping
- LOG reform
- https://eips.ethereum.org/EIPS/eip-7668
- https://github.com/ethereum/EIPs/pull/8368
- Address Space Extension
- https://github.com/ethereum/EIPs/pull/8385
- https://ethereum-magicians.org/t/thoughts-on-address-space-extension-ase/6779
- https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485
- https://notes.ethereum.org/@ipsilon/address-space-extension-exploration
- State Expiry
- https://notes.ethereum.org/@vbuterin/verkle_and_state_expiry_proposal
- https://medium.com/@chaisomsri96/statelessness-series-part1-state-expiry-history-expiry-2bbd5835b329 (did not fully vet this article)
- https://notes.ethereum.org/@vbuterin/state_expiry_eip
- https://hackmd.io/@vbuterin/state_expiry_paths
- General Stateless Roadmap Things
- https://ethereum.org/en/roadmap/statelessness/
- [The Portal Network, EthZurich 2023](https://www.youtube.com/watch?v=8MUii5W2sMc)
Loading

0 comments on commit 33404ac

Please sign in to comment.