Skip to content

Commit

Permalink
Wiki update Jul 24, 1.0.2
Browse files Browse the repository at this point in the history
* Add study group info (#298)

* ✨ feat: Prehistory of Ethereum (#226)

* ✨ feat: p2p computing

* ✨ feat: Overview: Bitcoin

* ✨ feat: Overview: Ethereum world comptuer

* ✨ feat: Overview: Applications

* 🥢 nit:

* nit

Co-authored-by: Mário Havel <61149543+taxmeifyoucan@users.noreply.github.com>

* ✨ feat: Revised intro

* ✨ feat: Internet

* ✨ feat: Map of ARPANET

* ✨ feat: Unix

* ✨ feat: fin

* 🥢 nit: intro

* ✨ feat: Documentary GNU/Linux, Crypto Anarchy

---------

Co-authored-by: rahul <raxhvl@users.noreply.github.com>
Co-authored-by: Mário Havel <61149543+taxmeifyoucan@users.noreply.github.com>

* Add files via upload (#302)

* Create content for scourge under the staking economics track (#300)

* change title lowercase to uppercase

* create content for scourge under the staking economics track

* remove extra space in reference

* add words to wordlist

* reordered the numbering and removed unsed content

* MEV-track and staking economics track in the same table

removed the added tablea header: MEV-track and staking economics track can be in the same table

* reordered the staking economics table content

---------

Co-authored-by: DanGoron <97026899+gorondan@users.noreply.github.com>

* Design rationale for DHT (#304)

* design rationale for DHT

* Apply suggestions from code review

Co-authored-by: Mário Havel <61149543+taxmeifyoucan@users.noreply.github.com>

---------

Co-authored-by: Mário Havel <61149543+taxmeifyoucan@users.noreply.github.com>

---------

Co-authored-by: rahul <10168946+raxhvl@users.noreply.github.com>
Co-authored-by: rahul <raxhvl@users.noreply.github.com>
Co-authored-by: Rory Arredondo <93159440+arredr2@users.noreply.github.com>
Co-authored-by: Glory Agatevure <agatevureglory@gmail.com>
Co-authored-by: DanGoron <97026899+gorondan@users.noreply.github.com>
Co-authored-by: Chirag Parmar <chiragparmar12209@gmail.com>
  • Loading branch information
7 people authored Jul 24, 2024
1 parent 0783a54 commit ef0b759
Show file tree
Hide file tree
Showing 30 changed files with 440 additions and 47 deletions.
1 change: 1 addition & 0 deletions docs/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
- [Contributing](contributing.md)
- **Protocol Wiki**
- The Protocol
- [Prehistory](/wiki/protocol/prehistory.md)
- [Architecture](/wiki/protocol/architecture.md)
- [Design rationale](/wiki/protocol/design-rationale.md)
- [Evolution](/wiki/protocol/history.md)
Expand Down
Binary file modified docs/images/space-core-devs.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 16 additions & 1 deletion docs/wiki/protocol/design-rationale.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,22 @@ Latest Message Driven Greediest Heaviest Observed Sub-Tree (LMD-GHOST) is a *for

![LMD-GHOST-Algorithm](./img/lmt-ghost.png)

Gasper is full Proof-of-stake protocol that serves as an idealized abstraction of the Ethereum implementation. It combines Casper FFG and LMD-GHOST to drive the consensus mechanism for the Eth2.
Gasper is full Proof-of-stake protocol that serves as an idealized abstraction of the Ethereum implementation. It combines Casper FFG and LMD-GHOST to drive the consensus mechanism for the Eth2.

### Using a DHT

![P2P Networks Comparison](./img/p2p-nets-comp.png)

The main benefit of DHTs is that lookups only generate logarithmic communication overhead in the network. This makes them suitable to find (query) content in a p2p network. But an immediate question arises, why do we need to *find* content in Ethereum if most nodes are interested in the same content, the latest block? The tip of the chain is always the same based on consensus slot which has only one block to be gossiped. A DHT is used in protocols like [bittorrent](https://www.bittorrent.org/beps/bep_0005.html) and IPFS which store a wide range of content and users try to *find* the content they are interested in. DHT is used in Ethereum networking to find to find different peers, not blocks.

The discovery protocol in the networking layer of Ethereum uses, discv5, a [kademlia based DHT](https://github.com/ethereum/devp2p/blob/master/discv5/discv5.md) to store [ENR records](https://github.com/ethereum/devp2p/blob/master/enr.md). ENR records contain routing information (of the internet layer) to establish connections between peer. Peers joining the network use *bootstrap* nodes to relay lookup queries for its own `node_id` in the DHT. In the process they discover ENR records of other peers which help them populate their routing table. Routinely, peers also look up random `node_id`s to enumerate the network i.e. find all peers.

Blocks in Ethereum network are distributed using gossip protocol of the p2p stack. After discovering peers through an underlying DHT, peers use an overlay network ([gossipsub](https://github.com/libp2p/specs/blob/f25d0c22e5ef045c8c050bc91c297468de35f720/pubsub/gossipsub/gossipsub-v1.0.md)) to disseminate the block throughout the network. The overlay network creates its own routing table with routing information to establish connection AND overlay specific information(topics subscribed, fanout etc.) This overlay network is indeed an unstructured network.

DHT goes the extra step to join an unstructured network over simply connecting to peers ([friends-to-friends model](https://en.wikipedia.org/wiki/Friend-to-friend) or PEX) and directly downloading/gossiping the required content directly.
Why go through an extra step of DHT to later join an unstructured network? From the perspective of bootstrapping, kademlia provides a global view whereas f2f networks, inherently, can only provide a local view of the network. Informally, a DHT provides public and non-localized (arguably, slightly more decentralized too) mechanism for nodes to join a network. This hybrid approach of using a structured network(DHT) to bootstrap into an unstructured network, is observed in bittorrent's [Peer Exchange(PEX)](https://www.bittorrent.org/beps/bep_0011.html) protocol as well. [Unstructured networks](https://en.wikipedia.org/wiki/Peer-to-peer#Unstructured_networks) are preferred as overlays because they are robust in high-churn networks.

Over everything else, the biggest benefit of structured networks like kademlia DHT is their [simplicity](https://github.com/ethereum/devp2p/blob/master/discv5/discv5-rationale.md#why-kademlia) in design.

# References

Expand Down
Binary file added docs/wiki/protocol/img/overview/alan-turing.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/wiki/protocol/img/overview/david-chaum.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/wiki/protocol/img/overview/digicash.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/wiki/protocol/img/overview/namecoin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/wiki/protocol/img/p2p-nets-comp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file removed docs/wiki/protocol/overview.md
Empty file.
319 changes: 319 additions & 0 deletions docs/wiki/protocol/prehistory.md

Large diffs are not rendered by default.

113 changes: 67 additions & 46 deletions docs/wiki/research/roadmap.md

Large diffs are not rendered by default.

37 changes: 37 additions & 0 deletions wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ APIs
APS
Arbitrum
Aritra
Arixon
ARPANET
ary
ASE
Ashish
Expand Down Expand Up @@ -197,6 +199,7 @@ disambiguated
Discordo
discv
distro
DNS
docsify
dogecoin
Domothy
Expand Down Expand Up @@ -439,6 +442,7 @@ Mana
Manas
Mário
mathbb
Maximalism
mdbx
MDBX
MDS
Expand Down Expand Up @@ -477,6 +481,8 @@ MVE
mvepbs
MVI
Nagu
Nakamoto
Namecoin
namespace
namespaces
Nand
Expand Down Expand Up @@ -624,6 +630,7 @@ RPCs
RSA
RSA's
runtime
Satoshi
Satisfiability
scalability
scalable
Expand Down Expand Up @@ -695,6 +702,7 @@ Substate
subtrees
Summa
systemd
Szabo
Takenobu
Tani
tbhl
Expand Down Expand Up @@ -782,10 +790,39 @@ XORed
xy
Yan
Yellowpaper
Yoni
Yoichi
Zaverucha
zk
zkEVMs
ZKSNARK
ZKSNARKs
Zksync
Postel's
RLPx
TCP
Zipfian
Adi
Adleman
Alisie
Arvind
Banksy
Chaum
codebreakers
cryptology
cryptonative
Cypherpunk's
cryptosystems
Dai
DigiCash
GPL
Kahn
Merkle’s
Mihai
reusability
Rivest
Satoshi's
Shamir
surveilling
Taleb
Zimmermann

0 comments on commit ef0b759

Please sign in to comment.