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?
- 🤫 Secret Zone
- 🏗️ Technical Foundation
- 📚 Technical References
- ❌ Non-suggested reads
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.
-
Watch some of our V1 video presentation to help you understand the core building components Pocket V1 (curtesy of @Olshansk) (1.5 hours)
-
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 runmake
from to see all the available commands.
-
Get an understanding of the V1 spec summaries by reading about the 4 modules in our docs. (2-4 hours)
- This will get you understand the spec foundations for Pocket V1
- Utility
- Consensus
- P2P
- Persistence-
-
Optional: Go through Otto's Pocket Guide presentations to understand how Pocket V0 works.
-
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
-
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.
-
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!
-
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.
-
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
-
Get acquainted with our GitHub Wiki which automatically mirrors all of the READMEs we have in the codebase. (5 mins)
-
View our V1 Roadmap. (10 mins)
- This will give you insight into our development & release timelines
-
Get a sense of all the open issues and tickets in out Github project. (1 hour)
-
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)
-
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.
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.
- What's the hook 🪝(45minutes)
- Protocol Hour Notes(♾️)
If you're not familiar with the Github workflow, you can reference the First Contributions repository.
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:
- Effective Go by the official Gopher community
- Practical Go by Dave Cheney
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 🤓
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.
-
- This is the OG Pocket whitepaper if you want to go down memory lane
-
Pocket easy-to-learn Documents
- This is the best starting point for anyone who is non-technical or very new to the project
-
Relay Mining: Verifiable Multi-Tenant Distributed Rate Limiting
-
First Pocket Network V1 Presentations: The original presentations for Pocket V1 presented at the Mexico 2021 offsite
-
- Contains everything from Infracon presentations, to contributor hour calls, etc...
- Hotstuff whitepaper
- The original hotstuff whitepaper does a great job at explaining the algorithm on which HotPOKT is built
- Attacks on BFT Algorithms
- Covers various attacks on different BFT algorithms
- Lessons from hotstuff
- A 2023 review and lookback on HotStuff consensus
- LazyLedger: A Distributed Data Availability Ledger With Client-Side Smart Contracts
- The original Celestia whitepaper focused on data availability sampling and light clients
- Jellyfish Merkle Tree
- An easy-to-read paper on JMT's that contains a good amount of background of how Merkle Trees work
- Verkle Trees
- Verkle Tree Whitepaper
- The Verkle Tree whitepaper provides a good background on Merkle trees and some details on polynomial commitments
- Vitalik's Verkle Tree Review
- Vitalik's analysis dives deeper into the math behind Verkle Trees with an alternative
- Verkle Trees EIP
- A few notes from Vitalik on how Verkle Trees could be implemented in Ethereum
- Verkle trie for Eth1 state
- A few notes on how Verkle Trees can be use to make Ethereum Stateless
- Verkle Tree Whitepaper
- Cosmos Discussion about Storage and IAVL
- This is a Github discussion between various Cosmos contributors of why and how to deprecate IAVL and goes into an intensive discussion of Merkle Tree alternatives
- State commitment and storage review
- This research report was a result of the discussion above and goes in depth into state commitments and storage alternatives
- Plasma Core Merkle Sum Tree
- A good reference to understand some of the underlying cryptography in V0's proof/claim lifecycle 9934927 (Add a couple more helpful links)
- Vitalik
- Vitalik's Blog on Polynomial Commitments
- A technical and gentle introduction to polynomial commitments by Vitalik from 2021
- Vitalik's Blog on Merkle Proofs
- A technical and gentle introduction to Merkle Proofs by Vitalik from 2021
- Vitalik's Blog on Polynomial Commitments
- Indexed Merkle Trees
- Some problems identified by the Aztec team on using sparse Merkle trees for nullifier and their solution
- Why you should probably never sort your Merkle tree's leaves
- Vulnerabilities and performance issues that come with sorting Merkle tree leaves
- Discussions
- Tendermint Discussion around a rollback tool for state
- Paths toward single-slot finality
- An ethereum-pov explanation on the difficulty of having large validator networks
- A note on data availability and erasure coding
- A read 2018 that kicked off discussions related to Data Availability, leading to what Celestia is today as well as related work in the Ethereum ecosystem
- EigenLyaer; the re-staking protocol
- Espresso Systems
- https://hackmd.io/@EspressoSystems/EspressoSequencer https://hackmd.io/@EspressoSystems/SharedSequencing
- RollUps aren't real
- Anoma Whitepaper
- This whitepaper is a bit dense but introduces a great way of thinking about the building blocks of decentralized applications and blockchains focused on security and intent. It always provides a great historical background on both Bitcoin and Ethereum.
- This is the whitepaper is the foundation of "Intenet Driven Design" which has started to become a popular in 2023
- Threshold signatures presentation
- A great presentation by Alin Tomescu (founding engineer) that builds intuition around threshold signatures, signature aggregation, etc
- ECDSA is not that bad: two-party signing without Schnorr or BLS
- A gentle introduction to BLS aggregation
- How Schnorr signatures may improve Bitcoin
- A gentle introduction to Schnorr signatures
- Eclipsing Ethereum Peers with False Friends
- 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.
- A Brief Overview of Kademlia, and its use in various decentralized platforms
- Short article from 2019 about some kademlia extensions Storj implemented (published in 2007) to prevent Sybil and Eclipse attacks.
- Pocket Network Blog
- OG Pocket Network Blog
- Mike's blog; yours truly
- Vitalik's blog; hopefully Vitalik needs no introduction if you're reading this
- Alin Tomescu; Alin the is one of the founding engineers at Aptos Labs
- Joachim Neu; focus on the articles under the Technical reports section
- Decentralized Thoughts by Ittai Ibrahim; The best blog about everything consensus blockchain related by one of the leading researchers in the field (the RSS feed is available here)
- Polymer Labs; polymer has very easy to digest and easy to read blogs on IBC and interoperability
- Julia Evans' blog
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
- 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.