-
Notifications
You must be signed in to change notification settings - Fork 105
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #13 from eth-protocol-fellows/main
Update week1
- Loading branch information
Showing
9 changed files
with
149 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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>. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |