Skip to content

Learning Readme

user_name edited this page Aug 7, 2023 · 4 revisions

Learning Pocket

IMPORTANT NOTE TO THE READER: This document aims to be the "single source that links out to everything", so it is unlikely you will ever have the time to read everything in here. It is intended to be a reference for you to come back to when you need to learn something new. PLEASE update it with additional resources you find helpful along the way. You can ask GPokT for help if you need it.

🏁 Where to Start?

IMPORTANT: If you are reading this, understand that if something looks incomplete, confusing or wrong, it most likely is. Don't be afraid to openly ask questions & submit a PR to change it!

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

  1. Watch some of our V1 video presentation to help you understand the core building components Pocket V1 (curtesy of @Olshansk) (1.5 hours)

  2. Run a LocalNet by following the development guide. (1-3 hours)

    • This will get you set up to start contributing
    • Reach out to the core team in the #v1-dev discord channel if you hit any issues
    • TIP: Once you clone the Github repo, you can cd pocket and run make from to see all the available commands.
  3. Get an understanding of the V1 spec summaries by reading about the 4 modules in our docs. (2-4 hours)

  4. Optional: Go through Otto's Pocket Guide presentations to understand how Pocket V0 works.

    • Volume 1: The Claim and Proof lifecycle
    • Volume 2: Block, Chains and Staking
    • Volume 3: For The Builders and Hackers I - History Lesson
    • Volume 4: For The Builders and Hackers II - History Lesson Continued
  5. Optional: If you’re interested, you can view the OG v0 Pocket whitepaper. (3-5 hours)

    • This can provide both valuable and interesting historical context into Pocket
  6. Optional: If you’re interested, you can view the V0 Claim & Proof Lifecycle specifications. (2-4 hours)

    • It is a proprietary algorithm that you are unlikely to ever need to touch/modify, but it is fun & interesting to reason about and understand.
  7. Find all of our documentation on the Github Wiki.

    • The wiki mirrors all of the READMEs in our codebase so it's easy to find and navigate!
  8. Eventually: Over time, and not all at once, you can start making your way through and updating the V1 specifications. (15-30 hours)

    • Treat these specifications as guidelines and not sources of truth. If you are reading this, you will likely modify them at some point.
    • Mastering these concepts won't be easy but will make you an expert on Pocket V1
    • TIP: We hope to publish it with V1 benchmarks on arxiv one day, so this is your chance to contribute 🙂
    • 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.
  9. Start getting acquainted with the code structure by looking at the docs on the shared architecture. (1 hour)

  • This will help you understand the code architecture of Pocket V1
  1. Get acquainted with our GitHub Wiki which automatically mirrors all of the READMEs we have in the codebase. (5 mins)

  2. View our V1 Roadmap. (10 mins)

    • This will give you insight into our development & release timelines
  3. Get a sense of all the open issues and tickets in out Github project. (1 hour)

  4. If you don't already have a starter task, pick one from Dework, our open issues or ask the team in the #v1-dev discord channel. (1 hour)

  5. Jump on a call and pair code! (∞ and beyond)

  • 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 discord channel and someone from the core team will respond.

🤫 Secret Zone

We aim to make all our documentation and resources public, but it takes more time and effort to maintain and share. The resources in this section are internal to the Pocket Team, but if you believe it'll bring you value in contributing to the project, reach out to some of the maintainer.

🏗️ Technical Foundation

Github Development

If you're not familiar with the Github workflow, you can reference the First Contributions repository.

Golang

A great starting point to learn both the basics, idioms and some advanced parts of go is The Way To Go course on educative.io.

Afterwards, two great references you can constantly refer to are:

Mermaid

We used Mermaid as our text-to-diagram framework to embed visuals alongside all of our visualisations. It makes the documentation easier to understand and maintain. As explained in this comment, you can use mermaid.live to work on them in your browser or install an extension in your editor of choice; which should probably be VSCode 🤓

📚 Technical References

NOTE: 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. Don't treat these as must reads but as a signal for good sources to learn. If there was something that really helped clarify your understanding, please do include it!

This is a general set of technical links and recommended reading our team has found useful to review and study for core technical concepts.

Pocket Specific

Consensus

🌲 Trees

Persistence

Ethereum

Rollups & Sequencers Sequencers

Cryptography

P2P

Blogs

Specific Article Recommendations

General Subscription Recommendations

❌ 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.

Clone this wiki locally