pezkuwi_sdk_docs/pezkuwi_sdk/
mod.rs

1//! # Pezkuwi SDK
2//!
3//! [Pezkuwi SDK](https://github.com/pezkuwichain/pezkuwi-sdk) provides the main resources needed to
4//! start building on the [Pezkuwi network](https://pezkuwichain.io/), a scalable, multi-chain
5//! blockchain platform that enables different blockchains to securely interoperate.
6//!
7//! [![StackExchange](https://img.shields.io/badge/StackExchange-Pezkuwi%20and%20Substrate-222222?logo=stackexchange)](https://exchange.pezkuwichain.app/)
8//!
9//! [![awesomeDot](https://img.shields.io/badge/pezkuwi-awesome-e6007a?logo=pezkuwi)](https://github.com/Awsmdot/awesome-dot)
10//! [![wiki](https://img.shields.io/badge/pezkuwi-wiki-e6007a?logo=pezkuwi)](https://wiki.network.pezkuwichain.io/)
11//! [![forum](https://img.shields.io/badge/pezkuwi-forum-e6007a?logo=pezkuwi)](https://forum.network.pezkuwichain.io/)
12//!
13//! [![RFCs](https://img.shields.io/badge/fellowship-RFCs-e6007a?logo=pezkuwi)](https://github.com/pezkuwichain/pezkuwi-fellows/tree/main/rfcs)
14//! [![Runtime](https://img.shields.io/badge/fellowship-runtimes-e6007a?logo=pezkuwi)](https://github.com/pezkuwichain/pezkuwi-fellows/tree/main/runtimes)
15//! [![Manifesto](https://img.shields.io/badge/fellowship-manifesto-e6007a?logo=pezkuwi)](https://github.com/pezkuwichain/pezkuwi-fellows/tree/main/manifesto/blob/main/manifesto.pdf)
16//!
17//! ## Getting Started
18//!
19//! The primary way to get started with the Pezkuwi SDK is to start writing a FRAME-based runtime.
20//! See:
21//!
22//! * [`pezkuwi`], to understand what is Pezkuwi as a development platform.
23//! * [`substrate`], for an overview of what Substrate as the main blockchain framework of Pezkuwi
24//!   SDK.
25//! * [`frame`], to learn about how to write blockchain applications aka. "App Chains".
26//! * Continue with the [`pezkuwi_sdk_docs`'s "getting started"](crate#getting-started).
27//!
28//! ## Components
29//!
30//! #### Substrate
31//!
32//! [![Substrate-license](https://img.shields.io/badge/License-GPL3%2FApache2.0-blue)](https://github.com/pezkuwichain/pezkuwi-sdk/blob/master/substrate/LICENSE-APACHE2)
33//! [![GitHub
34//! Repo](https://img.shields.io/badge/github-substrate-2324CC85)](https://github.com/pezkuwichain/pezkuwi-sdk/blob/master/substrate)
35//!
36//! [`substrate`] is the base blockchain framework used to power the Pezkuwi SDK. It is a full
37//! toolkit to create sovereign blockchains, including but not limited to those which connect to
38//! Pezkuwi as teyrchains.
39//!
40//! #### FRAME
41//!
42//! [![Substrate-license](https://img.shields.io/badge/License-Apache2.0-blue)](https://github.com/pezkuwichain/pezkuwi-sdk/blob/master/substrate/LICENSE-APACHE2)
43//! [![GitHub
44//! Repo](https://img.shields.io/badge/github-frame-2324CC85)](https://github.com/pezkuwichain/pezkuwi-sdk/blob/master/substrate/frame)
45//!
46//! [`frame`] is the framework used to create Substrate-based application logic, aka. runtimes.
47//! Learn more about the distinction of a runtime and node in
48//! [`reference_docs::wasm_meta_protocol`].
49//!
50//! #### Cumulus
51//!
52//! [![Cumulus-license](https://img.shields.io/badge/License-GPL3-blue)](https://github.com/pezkuwichain/pezkuwi-sdk/blob/master/cumulus/LICENSE)
53//! [![GitHub
54//! Repo](https://img.shields.io/badge/github-cumulus-white)](https://github.com/pezkuwichain/pezkuwi-sdk/blob/master/cumulus)
55//!
56//! [`cumulus`] transforms FRAME-based runtimes into Pezkuwi-compatible teyrchain runtimes, and
57//! Substrate-based nodes into Pezkuwi/Teyrchain-compatible nodes.
58//!
59//! #### XCM
60//!
61//! [![XCM-license](https://img.shields.io/badge/License-GPL3-blue)](https://github.com/pezkuwichain/pezkuwi-sdk/blob/main/pezkuwi/LICENSE)
62//! [![GitHub
63//! Repo](https://img.shields.io/badge/github-XCM-e6007a?logo=pezkuwi)](https://github.com/pezkuwichain/pezkuwi-sdk/tree/main/pezkuwi/xcm)
64//!
65//! [`xcm`], short for "cross consensus message", is the primary format that is used for
66//! communication between teyrchains, but is intended to be extensible to other use cases as well.
67//!
68//! #### Pezkuwi
69//!
70//! [![Pezkuwi-license](https://img.shields.io/badge/License-GPL3-blue)](https://github.com/pezkuwichain/pezkuwi-sdk/blob/main/pezkuwi/LICENSE)
71//! [![GitHub
72//! Repo](https://img.shields.io/badge/github-pezkuwi-e6007a?logo=pezkuwi)](https://github.com/pezkuwichain/pezkuwi-sdk/tree/main/pezkuwi)
73//!
74//! [`pezkuwi`] is an implementation of a Pezkuwi node in Rust, by `@paritytech`. The Pezkuwi
75//! runtimes are located under the
76//! [`pezkuwi-fellows/runtimes`](https://github.com/pezkuwichain/pezkuwi-fellows/tree/main/runtimes) repository.
77//!
78//! ### Binaries
79//!
80//! The main binaries that are part of the Pezkuwi SDK are:
81
82//! * [`pezkuwi`]: The Pezkuwi relay chain node binary, as noted above.
83//! * [`pezkuwi-omni-node`]: A white-labeled teyrchain collator node. See more in
84//!   [`crate::reference_docs::omni_node`].
85//! * [`pezkuwi-teyrchain-bin`]: The collator node used to run collators for all Pezkuwi system
86//!   teyrchains.
87//! * [`frame-omni-bencher`]: a benchmarking tool for FRAME-based runtimes. Nodes typically contain
88//!   a
89//!  `benchmark` subcommand that does the same.
90//! * [`chain_spec_builder`]: Utility to build chain-specs Nodes  typically contain a `build-spec`
91//!   subcommand that does the same.
92//! * [`subkey`]: Substrate's key management utility.
93//! * [`substrate-node`](node_cli) is an extensive substrate node that contains the superset of all
94//!   runtime and node side features. The corresponding runtime, called [`kitchensink_runtime`]
95//!   contains all of the modules that are provided with `FRAME`. This node and runtime is only used
96//!   for testing and demonstration.
97//!
98//! ### Summary
99//!
100//! The following diagram summarizes how some of the components of Pezkuwi SDK work together:
101#![doc = simple_mermaid::mermaid!("../../../mermaid/pezkuwi_sdk_substrate.mmd")]
102//!
103//! A Substrate-based chain is a blockchain composed of a runtime and a node. As noted above, the
104//! runtime is the application logic of the blockchain, and the node is everything else.
105//! See [`reference_docs::wasm_meta_protocol`] for an in-depth explanation of this. The
106//! former is built with [`frame`], and the latter is built with rest of Substrate.
107//!
108//! > You can think of a Substrate-based chain as a white-labeled blockchain.
109#![doc = simple_mermaid::mermaid!("../../../mermaid/pezkuwi_sdk_pezkuwi.mmd")]
110//! Pezkuwi is itself a Substrate-based chain, composed of the exact same two components. It has
111//! specialized logic in both the node and the runtime side, but it is not "special" in any way.
112//!
113//! A teyrchain is a "special" Substrate-based chain, whereby both the node and the runtime
114//! components have became "Pezkuwi-aware" using Cumulus.
115#![doc = simple_mermaid::mermaid!("../../../mermaid/pezkuwi_sdk_teyrchain.mmd")]
116//!
117//! ## Notable Upstream Crates
118//!
119//! - [`parity-scale-codec`](https://github.com/paritytech/parity-scale-codec)
120//! - [`parity-db`](https://github.com/paritytech/parity-db)
121//! - [`trie`](https://github.com/paritytech/trie)
122//! - [`parity-common`](https://github.com/paritytech/parity-common)
123//!
124//! ## Trophy Section: Notable Downstream Projects
125//!
126//! A list of projects and tools in the blockchain ecosystem that one way or another use parts of
127//! the Pezkuwi SDK:
128//!
129//! * [Avail](https://github.com/availproject/avail)
130//! * [Cardano Partner Chains](https://iohk.io/en/blog/posts/2023/11/03/partner-chains-are-coming-to-cardano/)
131//! * [Starknet's Madara Sequencer](https://github.com/keep-starknet-strange/madara)
132//! * [Polymesh](https://polymesh.network/)
133//!
134//! [`substrate`]: crate::pezkuwi_sdk::substrate
135//! [`frame`]: crate::pezkuwi_sdk::frame_runtime
136//! [`cumulus`]: crate::pezkuwi_sdk::cumulus
137//! [`pezkuwi`]: crate::pezkuwi_sdk::pezkuwi
138//! [`xcm`]: crate::pezkuwi_sdk::xcm
139//! [`frame-omni-bencher`]: https://crates.io/crates/frame-omni-bencher
140//! [`pezkuwi-teyrchain-bin`]: https://crates.io/crates/pezkuwi-teyrchain-bin
141//! [`pezkuwi-omni-node`]: https://crates.io/crates/pezkuwi-omni-node
142
143/// Learn about Cumulus, the framework that transforms [`substrate`]-based chains into
144/// [`pezkuwi`]-enabled teyrchains.
145pub mod cumulus;
146/// Learn about FRAME, the framework used to build Substrate runtimes.
147pub mod frame_runtime;
148/// Learn about Pezkuwi as a platform.
149pub mod pezkuwi;
150/// Learn about different ways through which smart contracts can be utilized on top of Substrate,
151/// and in the Pezkuwi ecosystem.
152pub mod smart_contracts;
153/// Learn about Substrate, the main blockchain framework used in the Pezkuwi ecosystem.
154pub mod substrate;
155/// Index of all the templates that can act as first scaffold for a new project.
156pub mod templates;
157/// Learn about XCM, the de-facto communication language between different consensus systems.
158pub mod xcm;