diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 1a840172..ec026dcb 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -6,6 +6,7 @@ - [Week 1](/eps/week1.md) - [Week 2](/eps/week2.md) - [Week 3](/eps/week3.md) + - [Week 4](/eps/week4.md) - [Contributing](contributing.md) - **Protocol Wiki** - The Protocol @@ -23,7 +24,7 @@ - [DevP2P] - [MPT] - [JSON-RPC] -- Consensus Layer +- [Consensus Layer](/wiki/CL/overview.md) - [CL Clients](/wiki/CL/cl-clients.md) - [CL Specs](/wiki/CL/cl-specs.md) - [Proof-of-Stake] diff --git a/docs/eps/week2.md b/docs/eps/week2.md index 451fa24c..22a2c816 100644 --- a/docs/eps/week2.md +++ b/docs/eps/week2.md @@ -56,13 +56,14 @@ Additionally, you should read through the following documents to prepare for the ### JSON-RPC * the "interface" to ethereum - * the vision is that all clients provide the exact same API and users can run any client the choose and have perfect integration with all tooling + * the vision is that all clients provide the exact same API and users can run any client they choose and have perfect integration with all tooling * not quite there, but we are fairly close * review main RPC methods ## Additional reading and exercises - https://www.evm.codes/ +- https://ethervm.io/ - https://github.com/ethereum/go-ethereum - https://github.com/ethereum/consensus-specs - https://github.com/ethereum/execution-specs diff --git a/docs/eps/week3.md b/docs/eps/week3.md index 404468be..2cea4991 100644 --- a/docs/eps/week3.md +++ b/docs/eps/week3.md @@ -17,11 +17,23 @@ Additionally, you can read get ready by reading following resources: ## Outline -## Additional reading and exercises +- Blockchain enables creating a digital scarcity but it needs security which ensures its integrity +- Distributed networks deal with Byzantine fault tolerance (BFT) +- Bitcoin first solved the BFT with PoW +- Ethereum moves to proof-of-stake, switching from exogenous signal for Sybil protection to endogenous in the system +- Uses BFT majority to determine the state of the chain + - Byzantine faults can be observed by the protocol and stake can be `slashed` + - The fork choice rule summarized in LMD-GHOST + - It ensures liveness thanks to Casper +- Provides more cryptoeconomic security +## Additional reading and exercises + - [Gasper paper](https://arxiv.org/pdf/2003.03052.pdf) +- [Bitwise LMD GHOST: An efficient CBC Casper fork choice rule](https://medium.com/@aditya.asgaonkar/bitwise-lmd-ghost-an-efficient-cbc-casper-fork-choice-rule-6db924e57d1f) - [Eth2book, annotated spec](https://eth2book.info/) - [Stuff you should know about PoS by Domothy](https://domothy.com/proof-of-stake/) - [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) 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. diff --git a/docs/eps/week4.md b/docs/eps/week4.md new file mode 100644 index 00000000..62c2fd4f --- /dev/null +++ b/docs/eps/week4.md @@ -0,0 +1,34 @@ +# Study Group Week 4 | Testing and Security + +Week 4 is diving into the testing tools and practices necessary to keep the network secure. + +Join the presentation by [Mario Vega](https://github.com/marioevz) on [Monday, March 11, 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/mar-11-2024/4pm). + +The link to stream will be provided here and announced in [Discord group](https://discord.gg/epfsg). + +## Pre-reading + +Before starting with the week 4 content, make yourself familiar with resources in [week 3](/eps/week3.md). + +Additionally, you can read get ready by reading following resources: + +- https://ethereum-tests.readthedocs.io/en/latest/ +- https://ethereum.github.io/execution-spec-tests + +## Outline + +- https://github.com/ethereum/execution-spec-tests +- https://github.com/ethereum/hive +- https://github.com/ethereum/tests +- https://github.com/ethereum/retesteth +- https://github.com/lightclient/rpctestgen +- https://github.com/marioevz/eth_tools +- https://github.com/kurtosis-tech/kurtosis +- https://github.com/MariusVanDerWijden/FuzzyVM +- https://github.com/MariusVanDerWijden/tx-fuzz + +## Additional reading and exercises + +- [Quest for the Best Tests, a Retrospective on #TestingTheMerge by Pari](https://archive.devcon.org/archive/watch/6/quest-for-the-best-tests-a-retrospective-on-testingthemerge/?tab=YouTube) +- [Killing ETH - Finding Consensus Issues on Layer 1 by Marius](https://archive.devcon.org/archive/watch/6/killing-eth-finding-consensus-issues-on-layer-1/?tab=YouTube) +- [Dencun testing](https://www.youtube.com/watch?v=88tZticGbTo) diff --git a/docs/wiki/CL/overview.md b/docs/wiki/CL/overview.md new file mode 100644 index 00000000..611799f4 --- /dev/null +++ b/docs/wiki/CL/overview.md @@ -0,0 +1,16 @@ +# Consensus layer + +The Ethereum consensus layer defines the mechanism for nodes to agree on the network's state. This layer currently employs Proof-of-Stake (PoS), a crypto-economic system. PoS encourages honest behavior by requiring validators to lock ETH. These validators are responsible for proposing new blocks, validating existing ones, and processing transactions. The protocol enforces rewards and penalties to ensure validator integrity and deter malicious activity. + +Validator selection, block voting, and fork resolution are governed by [consensus specification](/wiki/CL/cl-specs.md). In case of competing blocks, the "heaviest" chain, determined by validator support weighted by staked ETH, prevails. + +Ethereum consensus layer addresses the fundamental challenge of Byzantine fault tolerance in distributed computing. Similar to the Byzantine Generals Problem, geographically dispersed nodes in the blockchain network must agree on transaction validity despite potential communication issues or malicious actors. + +Ethereum uses a consensus mechanism known as Gasper that combines [Casper proof-of-stake](https://arxiv.org/abs/1710.09437) with the [GHOST fork-choice](https://arxiv.org/abs/2003.03052). + +## Resources + +- Vitalik Buterin et al., [Gasper: Combining GHOST and Casper.](https://arxiv.org/pdf/2003.03052.pdf) +- Martin Kleppmann, [Distributed Systems.](https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB) +- Leslie Lamport et al., [The Byzantine Generals Problem.](https://lamport.azurewebsites.net/pubs/byz.pdf) +- Austin Griffith, [Byzantine Generals - ETH.BUILD.](https://www.youtube.com/watch?v=c7yvOlwBPoQ) diff --git a/docs/wiki/dev/core-development.md b/docs/wiki/dev/core-development.md index f4b853a9..8d709e42 100644 --- a/docs/wiki/dev/core-development.md +++ b/docs/wiki/dev/core-development.md @@ -7,3 +7,4 @@ What is it like to work in FOSS? https://lkml.iu.edu/hypermail/linux/kernel/2401.3/04208.html https://www.youtube.com/watch?v=R-Xr1JRF6bY https://www.coindesk.com/consensus-magazine/2023/02/22/a-day-in-the-life-of-a-dev-ethereums-justin-florentine/ +https://protocol-guild.readthedocs.io/en/latest/ diff --git a/notes/mario.md b/notes/mario.md new file mode 100644 index 00000000..2186a473 --- /dev/null +++ b/notes/mario.md @@ -0,0 +1,11 @@ +# Hangout call #1 + +On Thursday, March 7 we are having our first EPFsg hangout. Looking forward to finally speak to folks from the group. + +Use this folder to create your own notes during the call, collect resources and share them with others. + +The call is informal but will be divided to main parts: + +- Breakout rooms +- Wiki work in progress +- Free chat diff --git a/notes/your-name notes.md b/notes/your-name notes.md new file mode 100644 index 00000000..e69de29b