Skip to content

Commit

Permalink
Merge pull request #2 from CocDap/feat/polkadot-sdk-roadmap
Browse files Browse the repository at this point in the history
feat: Add Polkadot SDK roadmap
  • Loading branch information
terrancrypt authored Jul 20, 2024
2 parents 5829a98 + 946a2d2 commit 75966af
Show file tree
Hide file tree
Showing 18 changed files with 363 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/data/roadmaps/polkadot-sdk/content/1-1-1-why-substrate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Why Substrate?


1. **Modular and Flexible Framework**:
Substrate is a highly modular and flexible framework that lets you build a blockchain by selecting and customizing the infrastructure components that best fit your project.

2. **Upgradable State Transition Logic**:
- Substrate is designed to be upgradeable. The state transition logic, known as the Substrate runtime, is a self-contained WebAssembly object.
- You can change this runtime completely whenever you need to introduce new features or update existing ones.

3. **OpenSource and Community**:
- Substrate is an open-source project, with all libraries and tools available under open-source licensing.
- Substrate also has a large, active, and supportive builder community contributing to the ecosystem.

4. **Cross-Consensus Messaging (XCM)**:
Substrate supports cross-consensus messaging (XCM), allowing different systems to communicate with each other.



18 changes: 18 additions & 0 deletions src/data/roadmaps/polkadot-sdk/content/1-1-what-is-substrate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

# What is Substrate?

- Substrate (PolkadotSDK) is an SDK using Rust libraries to help build custom blockchains with modular components. Substrate provides default blockchain infrastructure components, allowing developers to focus on application logic


## There are two directions for chain development
- These blockchains can operate independently (Standalone Chain/ Permissionless Chain)
- Benefiting from Polkadot's shared security( Parachain)



Resources:

- [@official@Substrate Documentation](https://docs.substrate.io/learn/welcome-to-substrate/)

- [@official@Substrate Documentation](https://docs.substrate.io/quick-start/substrate-at-a-glance/)

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

# Blockchain Basic

Resources:
- [@official@Blockchain Basic](https://docs.substrate.io/learn/blockchain-basics/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

# Client and Runtime Architecture

Resources:
- [@official@Client and Runtime](https://docs.substrate.io/learn/architecture/)
- [@official@Runtime Development](https://docs.substrate.io/learn/runtime-development/)
20 changes: 20 additions & 0 deletions src/data/roadmaps/polkadot-sdk/content/1-2-3-consensus.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@

# Consensus

Resources:
1. AURA
- [@article@AURA Consensus](https://openethereum.github.io/Aura.html)
- [@official@AURA Consensus](https://docs.substrate.io/learn/consensus/)

2. BABE
- [@official@BABE Consensus](https://docs.substrate.io/learn/consensus/)
- [@official@BABE Consensus](https://polkadot.network/blog/polkadot-consensus-part-3-babe/)
- [@official@BABE Consensus](https://spec.polkadot.network/sect-block-production)

3. GRANDPA

- [@official@GRANDPA Consensus](https://docs.substrate.io/learn/consensus/)
- [@official@GRANDPA Consensus](https://spec.polkadot.network/sect-finality)
- [@official@GRANDPA Consensus](https://wiki.polkadot.network/docs/learn-consensus#finality-gadget-grandpa)


Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

# Substrate Node Architecture
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

# What is frame pallet?


- FRAME provides modular, extensible components that enhance the flexibility of the Substrate SDK for various use cases. It includes Rust-based programs and libraries that simplify developing application-specific logic.

- Most functionalities in FRAME are delivered through plug-in modules called pallets, which can be added and configured to meet specific requirements.

## #[pallet]
The #[pallet] macro is required to declare a pallet.This attribute macro is an attribute of the pallet module (`mod pallet`).

Within the pallet module, the #[pallet] macro serves as an entry point for additional #[pallet::*] macros that describe the attributes used to identify the specific items the pallet requires

## #[pallet::config]

The [`#[pallet::config]`](https://paritytech.github.io/substrate/master/frame_support/attr.pallet.html#config-trait-palletconfig-mandatory) macro is required to define the generic data types that the pallet uses.

This macro provides the constants that are part of the system-level [`Config` trait](https://paritytech.github.io/substrate/master/frame_system/pallet/trait.Config.html) for the pallet


## #[pallet::event]

The #[pallet::event] macro allows you to define event types for a pallet

## #[pallet::error]

The #[pallet::error] macro allows you to define the error types that can be returned from the function calls dispatched to the runtime. The error information is included in the runtime metadata

## #[pallet::storage]
The #[pallet::storage] macro enables you to define abstract storage inside runtime storage and to set metadata for that storage. This attribute macro can be used multiple times.

## #[pallet::call]

The #[pallet::call] is required to implement the functions that can be dispatched to the runtime for a pallet

## #[pallet::hooks]

The #[pallet::hooks] macro lets you declare optional hooks for specific logic during the block-making process. Using this macro, you can implement the Hooks trait to execute code at key points, such as when a block is initialized or finalized, or during runtime upgrades



Resources:
- [@official@FRAME](https://docs.substrate.io/reference/frame-pallets/)

33 changes: 33 additions & 0 deletions src/data/roadmaps/polkadot-sdk/content/1-3-2-rust-libraries.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@

# Rust Libraries


## Core Client

Libraries that enable a Substrate node to handle its network responsibilities, including consensus and block execution, are Rust crates prefixed with `sc_`

[@official@sc_](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client)

## Core FRAME

The libraries for building runtime logic and encoding/decoding information in Substrate are Rust crates prefixed with `frame_`

- [@official@frame_](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/system)
- [@official@frame_](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/support)
- [@official@frame_](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/benchmarking)
- [@official@frame_](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/executive)

## Primitives
At the core of the Substrate architecture are primitive libraries that manage underlying operations and facilitate communication between core client services and the runtime. These libraries are Rust crates prefixed with `sp_`

[@official@sp_](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/primitives)


## Pallets

In the Substrate SDK, pallets are modular components that provide specific functionality to a blockchain. They are like plug-in modules that can be added, configured, and reused to build custom blockchains

[@official@pallets](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame)

Resoures:
[@official@Rust Libraries](https://docs.substrate.io/learn/rust-basics/)
3 changes: 3 additions & 0 deletions src/data/roadmaps/polkadot-sdk/content/1-3-FRAME.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

# FRAME

Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@

# Substrate Development Tool

## Polkadot JS Explorer
Provides a view and interaction with blockchain node from a browser

Resoures:
[@official@polkadotjs-explorer](https://polkadot.js.org/apps/#/explorer)

## Polkadot JS API
This library offers a streamlined wrapper for all methods exposed by a Polkadot/Substrate network client and defines all node-exposed types

Resoures:
- [@official@polkadotjs-api](https://github.com/polkadot-js/api)
- [@official@polkadotjs-api](https://polkadot.js.org/docs/)


## Substrate API Sidecar
REST service simplifying interaction with blockchain nodes built on Substrate's FRAME framework

Resources:
- [@official@substrate-api-sidecar](https://github.com/paritytech/substrate-api-sidecar)


## Pop CLI
The CLI tool is likely designed to simplify interactions with Substrate-based blockchain networks

- Querying blockchain data
- Sending transactions
- Interacting with smart contracts (if applicable)
- Managing keys and accounts
- Create template

Resources:
- [@official@pop-cli](https://github.com/r0gue-io/pop-cli)


Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

# Parachain Architecture

Resoures:

- [@official@parachain-architecture](https://wiki.polkadot.network/docs/learn-parachains)
28 changes: 28 additions & 0 deletions src/data/roadmaps/polkadot-sdk/content/2-1-2-parachain-pallet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

# Parachain Pallets

Prebuilt pallets offering features tailored for blockchains intended to connect to a relay chain

## Provides AURA consensus for parachains

- [@official@aura-ext](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/pallets/aura-ext)

## Manages collators in a parachain

- [@official@collector-selection](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/pallets/collator-selection)

## Implements a message queue for receiving messages from the relay chain

- [@official@dmp-queue](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/pallets/dmp-queue)

## Provides basic functionality for cumulus-based parachains

- [@official@parachain-system](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/pallets/parachain-system)

## Adds support for cross-chain message passing (XCMP) to a parachain

- [@official@xcm](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/pallets/xcm)

## Enables the XCMP transport layer to handle both incoming and outgoing message sending and dispatch, queuing, signalling

- [@official@xcmp-queue](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/pallets/xcmp-queue)
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@


# Relaychain and Parachain

## Run Relay chain and Parachain

- [@official@run-relay-chain](https://docs.substrate.io/tutorials/build-a-parachain/prepare-a-local-relay-chain/)
- [@official@run-parachain](https://docs.substrate.io/tutorials/build-a-parachain/connect-a-local-parachain/)
- [@official@register-slot](https://docs.substrate.io/tutorials/build-a-parachain/acquire-a-testnet-slot/)

## Transfer Assets Relay ↔ Parachain

- [@official@open-channel](https://docs.substrate.io/tutorials/build-a-parachain/open-message-passing-channels/)
- [@official@transfer-assets](https://docs.substrate.io/tutorials/build-a-parachain/transfer-assets-with-xcm/)

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Cross-chain Messaging

The Cross-Consensus Message Format (XCM) serves as both a messaging format and a language used for communication between different consensus systems


Resources:
- [@official@xcm](https://wiki.polkadot.network/docs/learn-xcm)
10 changes: 10 additions & 0 deletions src/data/roadmaps/polkadot-sdk/content/2-1-develop-a-parachain.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@


# Develop a Parachain

These are libraries and tools designed specifically for connecting blockchains to Polkadot, referred to as parachains

Resoures:

- [@official@parachain](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus)

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Cumulus Development Tool

## Zombienet

Zombienet aims to serve as a testing framework for Substrate-based blockchains. It offers a straightforward CLI tool for spawning and testing ephemeral networks. Tests can include assertions on on-chain storage, metrics, logs, and custom JavaScript scripts that interact with the chain.

- [@official@zombienet](https://github.com/paritytech/zombienet)



## XCM Simulator

- [@official@xcm-simulator-github](https://github.com/paritytech/polkadot/tree/master/xcm/xcm-simulator)
- [@official@xcm-simulator](https://wiki.polkadot.network/docs/learn/xcm/quickstart-simulator)
86 changes: 86 additions & 0 deletions src/data/roadmaps/polkadot-sdk/polkadot-sdk.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
[
{
"phase_id": "1",
"phase_name": "Substrate",
"topics": [
{
"topic_id": "1-1-what-is-substrate",
"topic_name": "What is Substrate?",
"subtopics": [
{
"subtopic_id": "1-1-1-why-substrate",
"subtopic_name": "Why Substrate?"
}
]
},
{
"topic_id": "1-2-substrate-node-architecture",
"topic_name": "Substrate Node Architecture",
"subtopics": [
{
"subtopic_id": "1-2-1-blockchain-basic",
"subtopic_name": "Blockchain Basic"
},
{
"subtopic_id": "1-2-2-client-and-runtime-architecture",
"subtopic_name": "Client And Runtime Architecture"
},
{
"subtopic_id": "1-2-3-consensus",
"subtopic_name": "Consensus"
}
]
},
{
"topic_id": "1-3-FRAME",
"topic_name": "FRAME Runtime",
"subtopics": [
{
"subtopic_id": "1-3-1-what-is-frame-pallet",
"subtopic_name": "What is FRAME pallet?"
},
{
"subtopic_id": "1-3-2-rust-libraries",
"subtopic_name": "Rust Libraries"
}
]
},
{
"topic_id": "1-4-substrate-development-tool",
"topic_name": "Substrate Development Tool"
}
]
},
{
"phase_id": "2",
"phase_name": "Cumulus",
"topics": [
{
"topic_id": "2-1-develop-a-parachain",
"topic_name": "Develop a parachain",
"subtopics": [
{
"subtopic_id": "2-1-1parachain-architecture",
"subtopic_name": "Parachain Architecture"
},
{
"subtopic_id": "2-1-2-parachain-pallet",
"subtopic_name": "Parachain Pallet"
},
{
"subtopic_id": "2-1-3-relaychain-and-parachain",
"subtopic_name": "Relaychain and Parachain"
},
{
"subtopic_id": "2-1-4-cross-chain-message",
"subtopic_name": "Cross-chain Message"
}
]
},
{
"topic_id": "2-2-cumulus-development-tool",
"topic_name": "Cumulus Development Tool"
}
]
}
]
10 changes: 10 additions & 0 deletions src/data/roadmaps/polkadot-sdk/polkadot-sdk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: "Polkadot SDK Roadmap"
briefTitle: "Polkadot SDK"
description: "The Polkadot SDK is a modular library for building Layer-1 blockchains, enabling developers to create application-specific chains while abstracting away the complexities of low-level architecture."
tags: ["protocol"]
order: 1
isHidden: false
github: "https://github.com/paritytech/polkadot-sdk"
documentationLink: "https://docs.substrate.io/"
---

0 comments on commit 75966af

Please sign in to comment.