M1: Pocket PoS (Proof of Stake)
No due date
63% complete
Origin Document
This is the first milestone taken from the V1 Roadmap.
Goals
- Cosmos SDK (i.e Tendermint) equivalent for a proof-of-stake blockchain custom-built for Pocket
- Basic LocalNet development environment
Deliverables
Client / Interface
- Keybase - MVP functionality to interact with keys (e.g. import, create, export, etc...)
- CLI - MVP to interact…
Origin Document
This is the first milestone taken from the V1 Roadmap.
Goals
- Cosmos SDK (i.e Tendermint) equivalent for a proof-of-stake blockchain custom-built for Pocket
- Basic LocalNet development environment
Deliverables
Client / Interface
- Keybase - MVP functionality to interact with keys (e.g. import, create, export, etc...)
- CLI - MVP to interact with a PoS blockchain (e.g. send, stake, unstake, set param, etc...)
- RPC - MVP to receive and process commands from the CLI
Tooling
- LocalNet infrastructure - enable local development
- Logging infrastructure - standardized logging with basic visibility into telemetry
Utility
- PoS Logic - for each protocol level actor (stake, unstake, pause, unpause, jail, etc…)
- Account logic - send & receive funds
Utility - Validator rewards
- Slashing & jailing for unsigned blocks
- Slashing & jailing for double signing blocks
- Reward Validators for producing a block
Consensus
Consensus - BFT
- HotPOKT - Hotstuff implementation w/ pacemaker module
- Safety & liveness - tests and logging for visibility
- Validation - replica block validation
Consensus - Leader election
- Primary - VRF leader selection
- Secondary - Round robin leader selection
- Validators voting power proportional to stake_tokens/total_stake_tokens
Consensus - State Sync
- Block-by-block - MVP implementation of a state sync w/ block replay
- Snapshot - basic sync from a prior snapshot
- Node types - validators, other protocol actors, and full nodes
P2P
P2P - RainTree
- MVP RainTree implementation
- Addressbook management
- Direct P2P message sending
- Message gossip
P2P - Networking
- Basic network communication (retry, send, receive, etc…)
- Network security (TLS, etc…)
- Networking issues debugging & functionality
P2P - Configuration
- Peer discovery
- Dynamic peer addition / removal
Persistence
Persistence - State Storage
- Postgres infrastructure
- SQL - logic & implementation for basic PoS read/write operations
Persistence - State Commitment
- Commitment for Postgres based state storage
- State hash - Merkle tree-based implementation for state storage
- Block store - key-value block store
Block Production (cross-module)
- Mempool reaping
- Tx de-duplication
- Tx Indexing
- Tx validation
- Block production
Non-goals
- Pocket-specific utility
- Devnet infrastructure
- Extensive E2E automated testing