Skip to content

Commit

Permalink
Merge pull request #13 from eth-protocol-fellows/main
Browse files Browse the repository at this point in the history
Update week1
  • Loading branch information
taxmeifyoucan authored Feb 15, 2024
2 parents ffa6aac + 891a781 commit 99e9b08
Show file tree
Hide file tree
Showing 9 changed files with 149 additions and 8 deletions.
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. <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>.
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>.
4 changes: 2 additions & 2 deletions docs/assets/css/theme.css
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ body .docsify-pagination-container {
}

/* Dark mode colours for use with Simple light + dark theme (uncomment to use) */
@media (prefers-color-scheme: dark) {
/* @media (prefers-color-scheme: dark) { */
/*
:root {
--link-color: #1BA1EE!important;
Expand Down Expand Up @@ -550,4 +550,4 @@ body .docsify-pagination-container {
--pagination-title-color: #1BA1EE!important;
}
}
*/
*/
2 changes: 1 addition & 1 deletion docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ Install docsify, clone the repository and host it locally.

```
npm i docsify-cli -g
git clone https://github.com/eth-protocol-fellows/protocol-wiki.git
git clone https://github.com/eth-protocol-fellows/protocol-studies.git
cd protocol-wiki/docs
docsify serve docs
```
Expand Down
28 changes: 28 additions & 0 deletions docs/eps/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,31 @@ Study group participants will collaboratively develop a comprehensive wiki, serv

While this program is designed to act as a precursor to the Ethereum Protocol Fellowship, the study group is for anyone that is interested in learning more about the inner workings of the Ethereum Protocol. Those that have some general knowledge or use of Ethereum and/or blockchains as well as those that have some computer science, technical, or developer experience will get the most from this program.

## Important links

- Discord server: https://discord.gg/dqNM9zN5
- Weekly calls: https://meet.ethquokkaops.io/EPFsg
- EPF mailing list: https://groups.google.com/a/ethereum.org/g/protocol-fellowship-group

## Calls troubleshooting

For our weekly meetings, we are using a selfhosted FOSS platform Jitsi. Even though we are doing our best, some people might experience problems during these calls, here are few tips on troubleshooting:

- Restart your browser and rejoin
- Try a different browser (especially if you are using a Chromium based, try Firefox and vice versa)
- Use the [mobile Jitsi app](https://jitsi.org/downloads/) instead of desktop (you just need to point it to our domain)
- Check your network and firewall settings, make sure your browser allows WebRTC
- Use Jitsi [community forum](https://community.jitsi.org/) to search for specific issue or report your problem

## FAQ

- **Will I learn to develop applications on the Ethereum blockchain?**
- No. This program is not focused on Solidity or development of decentralized applications.
- **When does it start and is the duration?**
- Program will start in Februray 2024 and continue for 10 weeks, finishing by end of April.
- **Am I automatically accepted to EPF after attending EPFsg**
- No. The study group is a great way to prepare for EPF but it doesn't guarantee anyting. However, EPF is a permissionless program so you can always participate.
- **Where is the study group located?**
- As all core Ethereum teams, EPFsg is distributed around the globe. We will do our best to accomodate call times for the program participants.
- **Do I need to apply and be accepted?**
- The program is fully open, anyone can participate. We only ask you to submit a [form](https://forms.gle/7TqmryC217EPwgqr9) to let us know about your preferences but it doesn't have any effect on your participation.
7 changes: 6 additions & 1 deletion docs/eps/week0.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,9 @@ 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 detailed learning resources will be provided during the program.
These are just general suggestions of domain knowledge you will need. More detailed learning resources will be provided during the program.

## Helpful Resources to get you started
- [Intro to Cryptography](https://summerofprotocols.com/wp-content/uploads/2023/12/53-BEIKO-001-2023-12-13.pdf)
[Merkle trees](https://youtu.be/V6gLY-1G4Mc?si=W1ncsNYUSHjm5U4y), [in Bitcoin](https://www.youtube.com/watch?v=bBC-nXj3Ng4)
- [Networking & p2p](https://youtu.be/ie-qRQIQT4I?si=eYKzMbn7PGk-Il9M), [in Bittorrent](https://www.youtube.com/watch?v=xH00ikD1oDo)
103 changes: 102 additions & 1 deletion docs/eps/week1.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,105 @@
# Week 1

The first week of the study group is dedicated to general introduction to the protocol and R&D ecosystem.
The first week of the study group is dedicated to a general introduction to the protocol and R&D ecosystem.

Come to see the presentation by Mário Havel on [Monday, February 19, 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/feb-12-2024/4pm). The recording will be shared here.

## Pre-reading

This is an introductory talk which doesn't assume a lot of prior knowledge. Here are a few introductory materials to get you started:
- [Inevitable Ethereum - World Computer](https://inevitableeth.com/home/ethereum/world-computer)
- [Ethereum in 30 minutes](https://www.youtube.com/watch?v=UihMqcj-cqc)
- [Ethereum.org docs](https://ethereum.org/what-is-ethereum)

Check out resources within the following text and additional reading. They will be explained in the week 1 presentation.

## Prehistory and Philosophy

To understand Ethereum design, we need to learn about predecessors and the culture it builds upon. The modern cryptocurrency ecosystem stands on decades of work by computer scientists, cryptographers and activists.

Starting all the way back in the 1960s, UNIX is an operating system and philosophy that redifined the entire paradigm of computation. This is the paradigm we have been using for over 50 years and has never really changed. Its fundamental concept of modularity is important to Ethereum design and open collaborative environment of Bell Labs is similar to Ethereum core development today.

> Check this documentary with Dennis Ritchie and Ken Thompson, which perfectly captures spirit and ideas behind UNIX: https://yewtu.be/watch?v=tc4ROCJYbm0
The Free Software movement is fundamental to Ethereum and all cryptocurrencies. The open, independent and collaborative development culture of Ethereum is strongly rooted in FOSS (Free and Open Source Software). Ethereum needs to be transparently implemented in software that gives full freedom to its users. Using any FOSS can empower every user and developer but it's necessary for security, neutrality and trustless nature of Ethereum.

> To understand its importance, watch this talk by Richard Stallman, the founder of Free Software and GNU project:
> - https://yewtu.be/watch?v=Ag1AKIl_2GM
> - More reading: https://www.gnu.org/philosophy/free-sw.html, *The Cathedral and the Bazaar* book: http://www.catb.org/~esr/writings/cathedral-bazaar/
The invention of [asymmetric cryptography](https://www-ee.stanford.edu/~hellman/publications/24.pdf) marks the birth of a new paradigm for cryptography applications. Later, the rise of cryptography in computation for general public enabled everyone to utilize tools for digital privacy, secure communication and fundamentaly transformed cybersecurity. While nation states did not have a framework for these new concepts, [Crypto Wars](https://en.wikipedia.org/wiki/Crypto_Wars) resulted in activist movements advocating and building cryptography tools. Ultimately, these were people inventing tools and ideas which became fundamental building blocks of modern cryptocurrencies.

> Get inspiration from early Cypherpunks who envisioned an independent digital realm built on trustless and borderless technologies:
> - https://activism.net/cypherpunk/manifesto.html
> - https://activism.net/cypherpunk/crypto-anarchy.html
> - https://www.eff.org/cyberspace-independence
## Ethereum Protocol Design

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. Current specifications and changes are tracked in the community process of [EIPs](https://eips.ethereum.org) and implemented in Python as:

- [Execution specs](https://github.com/ethereum/execution-specs)
- [Consensus specs](https://github.com/ethereum/execution-specs)

The protocol changes over time, with each network upgrade bringing new improvements. Despite its constant changes, the architecture evolution reflects certain fundamental principles. These can be summarized as follows:

- Simplicity, Universality, Modularity, Non-discrimination, Agility

These core tenets have always led the Ethereum development and should be considered with every decision on design change. In addition to this, it manages growing complexity but encapsulating it and/or sandwiching it. The current network architecture is the result of many iterations of [network upgrade history](https://ethereum.org/history).

> Read more about Ethereum design principles in [the archive](https://web.archive.org/web/20220815014507mp_/https://ethereumbuilders.gitbooks.io/guide/content/en/design_philosophy.html) and consider rewriting it for [this wiki](/wiki/protocol/design-rationale.md)
Ethereum continues evolving to address the latest research, new and always present challenges. To maintain security and decentralization, blockchain technology has certain limits, mainly its scalability. Because Ethereum needs to always adhere to its principles, it motivates us to find clever for these problems rather than accepting trade-offs.

The current research and development is summarized by the [roadmap](https://twitter.com/VitalikButerin/status/1741190491578810445/photo/1) overview, however cannot be fully accurate. There is no single path for Ethereum R&D, the [roadmap](https://ethroadmap.com/) only sums up its current landscape. The core ecosystem is an always growing [infinite garden](https://ethereum.foundation/infinitegarden). However, with more and more progress, Ethereum might slowly approach its ossification.

> Simplified overview of the current Ethereum design can be found documentation on [node architecture](https://ethereum.org/developers/docs/nodes-and-clients/node-architecture) and in the week 1 presentation
## Implementations and Development

Everything mentioned above - the ideas, design and specifications comes down to the actual application here, in its implementation. An implementation of the execution layer (EL) or consensus layer (CL) is called a *client*. A computer running this client and connecting to the network is called a *node*. A node is therefore an a pair of EL and CL clients actively participating in the network.

Since Ethereum is formally specified, it can be implemented in different ways in any language. This results in a variety of implementations throughout the years with some already deprecated and some just being developed. The current list of production ready implementations can be found in the [docs on Nodes and clients](https://ethereum.org/en/developers/docs/nodes-and-clients#execution-clients) and week 1 presentation.

> This strategy is called [client diversity](https://ethereum.org/developers/docs/nodes-and-clients/client-diversity). Ethereum does not rely on a single 'official' implementation but users can choose any client and be sure it does the job. If an issue occurs within a single client implementation, it doesn't affect the rest of the network.
### Testing

With regular changes and multiple client implementations, testing is fundamental to the network security. There are a variety of testing tools and scenarios which are all heavily utilized before any network upgrade.

Tests are generated based on specifications and create various scenarios. Some are testing clients individualy, some are simulating a testnet with all client pairs. There are different testing tools used for different parts of development cycles and parts of clients. This includes state transition testing, fuzzing, shadow forks, RPC tests, client unit tests and CI/CD, etc.

> Here is a short list of repositories dedicated to testing:
> - https://github.com/ethereum/tests
> - https://github.com/ethereum/retesteth
> - https://github.cosm/ethereum/execution-spec-tests
> - https://github.com/ethereum/hive
> - https://github.com/kurtosis-tech/kurtosis
> - https://github.com/MariusVanDerWijden/FuzzyVM
> - https://github.com/lightclient/rpctestgen
### Coordination

The Ethereum development is very different to a traditional, corporate kind of, projects. First of all, it's all open and public, anybody can review it or contribute. And second, there are many different teams working on different parts. All together, there are around 20 different teams from various organizations working on Ethereum.

Unlike in proprietary tech, Ethereum developers are not competing but rather working together. With the complexity always growing, there are basically no people who would be experts in all of Ethereum. Instead, people develop expertise in specific domains and collaborate with others. This is possible thanks to the modularity of Ethereum and allows developers to focus on challenges they personally prefer.

> The traditional development cycle for new features or changes is `Idea - Research - Development - Testing - Adoption`. However, problems might arise at any moment of this cycle resulting in iterating again from the beginning.
To be able to ship network upgrades and agree on the current development focus, there needs to be a certain coordination. All of it is also public and can be followed by anyone interested in learning about the core protocol. The coordination mainly happens via regular calls which are scheduled in the [PM repo](https://github.com/ethereum/pm). There are different kinds of developer calls with the biggest one being All Core Devs (ACD). This is where representatives of all involved teams come to discuss the current development of the consensus or execution layer.

The ideas and proposed changes from the community are coordinated using [EIP process](https://eips.ethereum.org/EIPS/eip-1). Additionally, there are a few discussion forums. The biggest one discussing core upgrades is https://ethresear.ch. Another forum which is connected to the EIP process and serves for discussion about specific proposals is [Ethereum Magicians](https://ethereum-magicians.org/).
Lots of important discussion is also happening on the R&D Discord server (ping us in EPFsg discord to get an invite) and in client team groups. There are also offsites or workshops where many core developers meet in person to speed up the process face to face.

## Additional reading and exercises

To test your knowledge about the very basics of Ethereum, try a quiz:
https://ethereum.org/quizzes

Learn more about the roadmap:
https://ethereum.org/roadmap

To explore various parts of the Ethereum protocol, check out what people have been working on within EPF:
https://github.com/eth-protocol-fellows/cohort-three/tree/master/projects
https://github.com/eth-protocol-fellows/cohort-four/tree/master/projects

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

The protocol wiki is a collection of technical resources about the Ethereum protocol. This includes information about the core protocol theory, client development and ongoing research. It's not intented for smart contract or other high level development.

> :warning: Protocol Wiki is under contruction, [join us](study-group.md) and [contribute](contributing.md).
> :warning: Protocol Wiki is under contruction, [join us](/eps/intro.md) and [contribute](contributing.md).
![](https://raw.githubusercontent.com/eth-protocol-fellows/protocol-studies/wiki-pages/docs/images/epfsg_hero.jpg)

Expand Down
5 changes: 5 additions & 0 deletions docs/wiki/Cryptography/intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Cryptography

Cryptography researchers craft the weapons or implements of change that developers use. They use advanced algebra to exploit the hard limits set by the universe on reality and craft cryptographic schemas that obey certain properties. They are in a sense reality-hackers. They hack reality to create systems that obey objective properties due to the underlying mathematics.

https://summerofprotocols.com/wp-content/uploads/2023/12/53-BEIKO-001-2023-12-13.pdf
4 changes: 3 additions & 1 deletion docs/wiki/EL/el-clients.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Execution Layer Implementations

Resources covering all current and historical execution clients. Overview of client unique features of each client, architecture, guides and resources.
Resources covering all current and historical execution clients. Overview of client unique features of each client, architecture, guides and resources.

https://ethereum.stackexchange.com/questions/268/ethereum-block-architecture

0 comments on commit 99e9b08

Please sign in to comment.