Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Documentation] Updated the new contributor learning guide #305

Merged
merged 8 commits into from
Oct 24, 2022
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 64 additions & 18 deletions docs/learning/README.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,69 @@
# Learning Pocket
# Learning Pocket <!-- omit in toc -->

_This is a live document on how to get ramped up on all the knowledge you need to contribute to the Pocket Protocol._

- [Where to Start?](#where-to-start)
- [Technical Foundation](#technical-foundation)
- [Github Development](#github-development)
- [Golang](#golang)
- [Technical References](#technical-references)
- [Pocket Specific](#pocket-specific)
- [Consensus](#consensus)
- [Merkle Trees](#merkle-trees)
- [Ethereum](#ethereum)
- [Cryptography](#cryptography)
- [P2P](#p2p)
- [Blogs](#blogs)
- [Blogs - Specific Articles](#blogs---specific-articles)
- [Blogs - General Subscription Suggestions](#blogs---general-subscription-suggestions)
- [Non-suggested reads](#non-suggested-reads)

## Where to Start?

This is a general set of steps we have found to help new core team members onboard to Protocol development.

1. Watch our [2022 Infracon presentation on v1](https://www.youtube.com/watch?v=NJoZyzQuJVc) to get a general idea of how everything works.
2. Run a LocalNet by following the instructions [here](https://github.com/pokt-network/pocket/blob/main/docs/development/README.md).
1. Watch our [2022 Infracon presentation on v1](https://www.youtube.com/watch?v=NJoZyzQuJVc) to get a general idea of how everything works.
Olshansk marked this conversation as resolved.
Show resolved Hide resolved
2. Run a **LocalNet** by following the [development guide](https://github.com/pokt-network/pocket/blob/main/docs/development/README.md).
Olshansk marked this conversation as resolved.
Show resolved Hide resolved

**Pro tip**: Did you know there are a bunch of `make` commands? Run `make` from the root repo to see what’s available.
_TIP: Run `make` from the root repo to see the different commands available._
Olshansk marked this conversation as resolved.
Show resolved Hide resolved

3. Get an understanding of the the V1 spec summaries by reading about the 4 modules [here](https://docs.pokt.network/home/learn/future).
4. If you’re interested in the _OG v0 Pocket whitepaper_, check out [this link](https://pocket-network-assets.s3-us-west-2.amazonaws.com/pdfs/Pocket-Network-Whitepaper-v0.3.0.pdf).
5. Over time, **and not all at once**, you can start making your way through and updating the V1 specs: https://github.com/pokt-network/pocket-network-protocol.
3. Get an understanding of the the V1 spec summaries by reading about the [4 modules in our docs](https://docs.pokt.network/home/learn/future).
4. **Optional**: If you’re interested, you can view the [_OG v0 Pocket whitepaper_](https://pocket-network-assets.s3-us-west-2.amazonaws.com/pdfs/Pocket-Network-Whitepaper-v0.3.0.pdf).
5. Over time, **and not all at once**, you can start making your way through and updating the [V1 specifications](https://github.com/pokt-network/pocket-network-protocol).

**Tip**: We hope to publish it with V1 benchmarks on arxiv one day, so this is your change to contribute 🙂
_TIP: We hope to publish it with V1 benchmarks on arxiv one day, so this is your change to contribute 🙂_

5.1 **Optional**: If you're a core team member or heavily involved in the project, reach out to the team about getting access to the V1 specification research documents.
<!-- For internal use only. If you're external and are reading this, reach out to the team.
These decks from October 2021 might also help:
- [Utility](https://docs.google.com/presentation/d/1NU0PnegtBm5ioLu0VQMiluWT4usHnavDKrGvS3p8QdM/edit)
- [Persistence](https://docs.google.com/presentation/d/1qDA-pRMT1KV9byUAU49bvd_5seaILPAh6i3vA7j5l8o/edit)
- [P2p](https://docs.google.com/presentation/d/1CLeAcGJbM_iP76vnCoHreU1chB9vFWIYWAwQHa-MPbc/edit)
- [Consensus](https://docs.google.com/presentation/d/18CtSxxLLHY1N7HEJtja633mVF1_a9blaE2fe2-WgGAo/edit)
These decks from October 2021 might also help:
- [Utility](https://docs.google.com/presentation/d/1NU0PnegtBm5ioLu0VQMiluWT4usHnavDKrGvS3p8QdM/edit)
- [Persistence](https://docs.google.com/presentation/d/1qDA-pRMT1KV9byUAU49bvd_5seaILPAh6i3vA7j5l8o/edit)
- [P2p](https://docs.google.com/presentation/d/1CLeAcGJbM_iP76vnCoHreU1chB9vFWIYWAwQHa-MPbc/edit)
- [Consensus](https://docs.google.com/presentation/d/18CtSxxLLHY1N7HEJtja633mVF1_a9blaE2fe2-WgGAo/edit)
-->

6. To start getting acquainted with the code, look at the [README on the shared architecture](https://github.com/pokt-network/pocket/tree/main/shared).

7. Want to get a sense of all the open issues and tickets? [Check out this page](https://github.com/orgs/pokt-network/projects/142/views/12) or ask for a starter task in the [#v1-dev](https://discord.com/channels/553741558869131266/986789914379186226) discord channel if you don’t have one.
6. Start getting acquainted with the code structure by looking at the [docs on the shared architecture](https://github.com/pokt-network/pocket/tree/main/shared).
7. View our [V1 Roadmap](https://github.com/pokt-network/pocket/blob/main/docs/roadmap/README.md).
8. Get a sense of all the open issues and tickets [in out Github project](https://github.com/orgs/pokt-network/projects/142/views/12).
9. If you don't already have a starter task, pick one from [Dework](https://app.dework.xyz/pokt-network), our [open issues](https://github.com/pokt-network/pocket/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) or ask the team in the [#v1-dev](https://discord.com/channels/553741558869131266/986789914379186226) discord channel.

8. Jump on a call and pair code!
10. Jump on a call and pair code!

- If you need a walk-through of the code and some pointers before getting started, **jump on a call!**
- If you need to take your time to understand the problem and the code first, do so, and then **jump on a call!**
- If you don't need help, **when you’re about 33% of the way done**, show your draft work and get some feedback, so **jump on a call!**
- Just leave a message in the [#v1-dev](https://discord.com/channels/553741558869131266/986789914379186226) discord channel and someone from the core team will respond.

## Technical Foundation
Olshansk marked this conversation as resolved.
Show resolved Hide resolved

### Github Development

If you're not familiar with the Github workflow, you can reference the [First Contributions](https://github.com/firstcontributions/first-contributions) repository.

### Golang

If you're not familiar with Go, consider taking [The Way To Go](https://www.educative.io/courses/the-way-to-go) course on educative.io

## Technical References
Olshansk marked this conversation as resolved.
Show resolved Hide resolved

_We're trying not to make this a link dump, so please only add more references if it was actually helpful in clarifying your understanding._
Expand Down Expand Up @@ -98,8 +126,15 @@ This is a general set of technical links and recommended reading our team has fo
- [How Schnorr signatures may improve Bitcoin](https://medium.com/cryptoadvance/how-schnorr-signatures-may-improve-bitcoin-91655bcb4744)
- A gentle introduction to Schnorr signatures

### P2P

- [Eclipsing Ethereum Peers with False Friends](https://arxiv.org/pdf/1908.10141.pdf)
- A detailed explanation of how Kademlia (DHT for P2P networks) works, accompanying a deep dive into peer management and peer discovery in Geth, with the goal of outlining several attack vectors and their countermeasures.

### Blogs

#### Blogs - Specific Articles
Olshansk marked this conversation as resolved.
Show resolved Hide resolved

- [Aptos engineering blog](https://aptoslabs.medium.com/)
- [The Evolution of State Sync](https://medium.com/aptoslabs/the-evolution-of-state-sync-the-path-to-100k-transactions-per-second-with-sub-second-latency-at-52e25a2c6f10)
- [Olshansky's blog](https://olshansky.substack.com/)
Expand All @@ -108,9 +143,20 @@ This is a general set of technical links and recommended reading our team has fo
- [5P;1R - Bitcoin's Elliptic Curve Cryptography](https://olshansky.substack.com/p/5p1r-bitcoins-elliptic-curve-cryptography)
- [5P;1R - Jellyfish Merkle Tree](https://olshansky.substack.com/p/5p1r-jellyfish-merkle-tree)

#### General Blogs
#### Blogs - General Subscription Suggestions
Olshansk marked this conversation as resolved.
Show resolved Hide resolved

- [Pocket Network Blog](https://www.blog.pokt.network/)
- [OG Pocket Network Blog](https://medium.com/@POKTnetwork)
- [Vitalik's blog](https://vitalik.ca/categories/blockchains.html)
- [Mike's blog](https://morourke.org/)
- [Joachim Neu](https://www.jneu.net/)
- See the articles under the **Technical reports** section

## Non-suggested reads

The papers in this list were read by our team and would not be recommended to become more productive to contributing to Pocket.

We do not consider them bad, but time is limited so it is important to focus on what will bring the most learning value.

- [Blockchains Meet Distributed Hash Tables: Decoupling Validation from State Storage](https://arxiv.org/abs/1904.01935)
- An "extended abstract" of how Authenticated Data Structures (i.e. Merkle Trees) could be _"sharded"_ across nodes using Distributed Hash Tables (DHTs) to reduce the state required to be maintained and synched by each node.