From d3aae50fbf2643402fa962a3c72dec1efa92031b Mon Sep 17 00:00:00 2001 From: bader y Date: Wed, 15 Nov 2023 11:01:16 -0500 Subject: [PATCH] Build Section Reorg - "Polkadot Developer Portal" (#5332) * start refactor * add description * structure + new pages * moved lots of stuff around * specifiy light clients * clean up portal layout * little more scaffolding * fill out more pages * add todos * Remove ss58 page * add generated index page * minor edits to grammar * minor grammar edits * minor grammar edits --------- Co-authored-by: filippoweb3 --- docs/build/build-dapp.md | 67 +++++++++++ docs/build/build-data.md | 4 +- docs/build/build-guide.md | 112 ++++++------------ ...ld-substrate.md => build-light-clients.md} | 10 +- docs/build/build-network-overview.md | 53 +++++++++ docs/build/build-protocol-info.md | 74 +++++------- docs/build/build-ss58-registry.md | 15 --- docs/general/polkadot-direction.md | 2 +- docs/general/staking-dashboard.md | 2 +- docs/general/web3-and-polkadot.md | 2 +- kusama-guide/sidebars.js | 2 +- polkadot-wiki/docusaurus.config.js | 2 +- polkadot-wiki/sidebars.js | 71 ++++++++--- polkadot-wiki/src/pages/index.js | 2 +- 14 files changed, 245 insertions(+), 173 deletions(-) create mode 100644 docs/build/build-dapp.md rename docs/build/{build-substrate.md => build-light-clients.md} (97%) create mode 100644 docs/build/build-network-overview.md delete mode 100644 docs/build/build-ss58-registry.md diff --git a/docs/build/build-dapp.md b/docs/build/build-dapp.md new file mode 100644 index 000000000000..7f79e3b8bafa --- /dev/null +++ b/docs/build/build-dapp.md @@ -0,0 +1,67 @@ +--- +id: build-dapp +title: Building dApps +sidebar_label: Building dApps +description: An overview about building dApps on Polkadot +keywords: [data, index, query, explorer, dashboard, dapp, uapp, app, frontend, client] +slug: ../build-dapp +--- + +import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; + +As with any blockchain, building decentralized applications (dApps) is a huge part of how a +developer can build on Polkadot. Within the ecosystem, you also hear the term "Unstoppable App", or +uApp. While the naming isn't too important, what is important is building resilient applications +using decentralized technology. + +As an application developer, you can compose your front-end apps in a few different ways. Because +Polkadot and its parachains are all built using Substraste; you can often use the same SDK to +communicate with Polkadot, a parachain, or any other Substrate-based chain. + +:::note Substrate-based chains use an SS58 encoding for their address formats. + +Please see the [SS58 registry](https://github.com/paritytech/ss58-registry/) to see which +[chain corresponds to a given prefix](https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json), +and which prefixes are available. + +::: + +## SDKS & Libraries + +If one aims to develop a **dApp** (Decentralized App) or **uApp** (Unstoppable App), the Polkadot +ecosystem contains various SDKs to tap into the relay chain and parachains. There are several +languages already supported - +[see the tooling page for a detailed overview of different SDKs and libraries that are available.](./build-tools-index.md) + +## Frameworks & Toolkits + +For front-end applications, several options exist for interfacing with Substrate-based chains +(parachains, relay chains, etc.) and smart contracts. These often will interact with the RPC of a +Substrate node: + + + + + Promise and RxJS APIs around Polkadot and Substrate-based chains via RPC +calls. It is dynamically generated based on what the Substrate runtime provides regarding metadata. +Full documentation & examples +available here. + + Query and submit extrinsics (transactions) to a Substrate node via RPC using +Rust. Also referred to as Rust Parity. Full documentation & examples +available here. + + React hooks library for ink! smart contracts that abstract the +functionality of polkadot.js. Full documentation & examples +available here. + +ink!athon is a starter kit for full-stack dApp development with ink! smart +contracts and a React-based frontend in one place. With convenient helper scripts and a +pre-configured project setup, you can quickly scaffold any dApp. Live example & full documentation +available here. + +Polkadot Cloud hosts a library of assets, ranging from data sources, +graphical elements, to fully functional components, for app developers to plug and play into their +codebases.  Learn more here. + + diff --git a/docs/build/build-data.md b/docs/build/build-data.md index 0b7143ca6cd6..815efa9ef29b 100644 --- a/docs/build/build-data.md +++ b/docs/build/build-data.md @@ -1,7 +1,7 @@ --- id: build-data -title: Data Analytics -sidebar_label: Data +title: Explorer, Data, & Indexing Tools +sidebar_label: Explorer, Data, & Indexing Tools description: An overview about building with data analytics keywords: [data, index, query, explorer, dashboard] slug: ../build-data diff --git a/docs/build/build-guide.md b/docs/build/build-guide.md index 23cd1f819fab..7e297a20f6d6 100644 --- a/docs/build/build-guide.md +++ b/docs/build/build-guide.md @@ -1,15 +1,16 @@ --- id: build-guide -title: Builders Starter's Guide -sidebar_label: Builders Starter's Guide +title: Polkadot Developer Portal +sidebar_label: Polkadot Developer Portal description: Start building with Polkadot/Kusama. keywords: [build, how to build, develop, parachain, smart contract] slug: ../build-guide --- -import Tabs from "@theme/Tabs"; +import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; import DocCardList from +'@theme/DocCardList'; -import TabItem from "@theme/TabItem"; + {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }} is a blockchain protocol with two goals: providing **shared security** among all connected parachains and allowing all connected @@ -24,14 +25,13 @@ with {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}. It will exp between a [parachain](../learn/learn-parachains.md) and a smart contract in deciding which best fits your architectural needs. -This build guide provides four different tracks: +This build guide provides three different tracks: -1. [Building Parachains](#building-parachains) -2. [Building a Pallet](#building-a-pallet) -3. [Developing Smart Contracts](#developing-smart-contracts) -4. [Developing a dApp](#developing-a-dappuapp) +1. [Protocol Development - Blockchain & Parachain Development](#building-parachains) +2. [Developing Smart Contracts](#developing-smart-contracts) +3. [Developing a dApp](#developing-a-dappuapp) -:::info +:::tip Keep reading to find out more, or visit each respective track Keep in mind that these tracks are merely suggestive, and there are many ways to utilize {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}, Substrate, and their various @@ -40,10 +40,6 @@ developmental components. For more inspiration, look at the ::: -Before diving into any one of these tracks, it is encouraged to read about -{{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }} and its networks in order to gain -context about the application you could make. - ## Development Ecosystem Overview ```mermaid @@ -88,33 +84,11 @@ Before diving into the various paths, one can take in developing on {{ polkadot: Polkadot :polkadot }}, it's important to realize and know key terms that make up the following sections. Even before considering what kind of application you want to build, it's prudent to understand what {{ polkadot: Polkadot :polkadot }} _is_ and how {{ kusama: Kusama :kusama }} -relates to it, and how what each developmental component can do for you within the Polkadot -ecosystem. - -### Polkadot Ecosystem Networks - -- Mainnet: **Polkadot** -- Canary network: **Kusama** - - [Kusama](https://kusama.network/) is a value-bearing canary network that gets features before - Polkadot does. _Expect Chaos_. -- Official testnets: - - **Westend** - Functionality equal to the current Polkadot mainnet, with possible next-generation - testing of features from time to time that will eventually migrate onto Polkadot. Perma-testnet - (is not reset back to genesis block). - - **Canvas** - Wasm-based Smart Contract enabled testnet, primarily for [`ink!`](https://use.ink/) - development. - - **Rococo** - Parachains and XCM testnet. Occasionally reset (started over again with a new - genesis block). - -{{ polkadot: Polkadot mainnet has been running since May 2020 :polkadot }}{{ kusama: Kusama mainnet has been -running since August 2019 :kusama }} and has [implementations in various programming languages](../learn/learn-implementations.md) -ranging from Rust to JavaScript. The leading implementation is built in Rust and uses the Substrate framework. - -Tooling is rapidly evolving to interact with the network; there are many ways to get started! - -But before you jump head-first into the code, you should consider the _kind_ of decentralized -application you want to make and understand the different paradigms available to developers who want -to build on {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}. +relates to it, and what each developmental component can do for you within the Polkadot ecosystem. + +Before diving into any one of these tracks, it is encouraged to read about +{{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }} and its networks in order to gain +context about the application you could make. ## Building Parachains @@ -129,7 +103,7 @@ protocols. Parachains connect to a relay chain using the :::info Throughout this document, you will encounter the term **runtime** or **STF (State Transition -Function)**. Both refer to the same concept, as they define how exactly a particular system, i.e., a +Function)**. Both refer to the same concept, as they define how a particular system, i.e., a blockchain, should deal with state changes externally and internally. Both of these terms are used extensively in {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}, and by association, Substrate contexts. @@ -162,7 +136,7 @@ benefits of building a parachain without the cost drawback. Polkadot is built using the [Substrate](https://substrate.io/) framework. [Substrate](https://substrate.io/) is a highly configurable and dynamic framework for building blockchains. At a lower level, Substrate provides a set of tools and libraries ranging from -[block production, finality gadgets, to peer-to-peer networking](https://docs.substrate.io/reference/rust-api/). +[block production, finality gadgets to peer-to-peer networking](https://docs.substrate.io/reference/rust-api/). Both Polkadot and Kusama, as well as most parachains, are built using Substrate. In essence, Substrate can break down a blockchain's development process by providing crucial @@ -192,7 +166,7 @@ of web3. :::note Although most parachains utilize FRAME and Substrate to build runtime/STFs for connecting to the -relay chain, it is not contingent. Building a parachain using other tools is possible, so long as +relay chain, it is not contingent. Building a parachain using other tools is possible, as long as they follow the [Parachains Protocol](../learn/learn-parachains-protocol.md). As a general rule of thumb, Substrate provides the means for this to become possible through @@ -209,15 +183,15 @@ chain follows the Parachain Protocol. :::info -_Cumulus clouds are shaped sort of like dots; together, they form a system that is intricate, -beautiful, and functional._ +_Cumulus clouds are shaped like dots; together, they form an intricate, beautiful and functional +system._ ::: For most developers, the best place to start is to get familiar with Substrate independently, followed by FRAME, with Cumulus as the final step to understanding the entire parachain building -process. This way, one can view how various paradigms are applied and make decisions on integrating -or utilizing Substrate for their particular use case. +process. This way, one can view how various paradigms are applied and decide on integrating or +utilizing Substrate for their particular use case. Please see the [parachain development guide](build-parachains.md) for how to get started on building a parachain or parathread. @@ -225,14 +199,14 @@ a parachain or parathread. #### Parachains Benefits Parachains contain their own runtime/STF logic and benefit from the shared security and the -cross-chain messaging provided by the {{ polkadot: Polkadot :polkadot }} relay chain. Parachains +cross-consensus messaging provided by the {{ polkadot: Polkadot :polkadot }} relay chain. Parachains permit high flexibility and customization but require more effort to create and maintain over time. A production-grade parachain is typically more involved to create due to the complexity involved in blockchain networks' technical and economic aspects. Parachains grant the creators more space to build the monetary system and other chain aspects from the ground up. They will allow for a more concise and efficient execution of complex logic than a -smart contract platform could offer. Parachains also offer more flexibility in the form of +smart contract platform could offer. Parachains also provide more flexibility in the form of governance and can perform complete upgrades in a less controversial way than the current process of hard forks. @@ -245,21 +219,21 @@ Some examples of features you can have on a parachain or parathread: - A governance mechanism that could manage a DAO that is responsible for allocating your on-chain treasury. -## Building a Pallet +### Building a Pallet While parachains are highly customizable, they are often complex to develop. If you wish to get familiar with FRAME and Substrate, a good place to start is by building a pallet in a development environment. A pallet is a fully customizable module that allows you to implement layer one logic -with relatively minimal development time on a basic level while still allowing the possibility of -building advanced functionality into your custom chain. +with relatively minimal development time on a fundamental level while still allowing the possibility +of building advanced functionality into your custom chain. To learn how to build a pallet, follow the [Substrate documentation](https://docs.substrate.io/tutorials/build-application-logic/). ## Developing Smart Contracts -Smart contracts are another option that enables for an often simpler developer experience. Below is -a quick comparison of how building a smart contract compares to building a parachain: +Smart contracts are another option that enables an often simpler developer experience. Below is a +quick comparison of how building a smart contract compares to building a parachain: | | Parachains | Smart Contracts | | ----------------------- | ---------- | --------------- | @@ -324,29 +298,9 @@ ecosystem contains various SDKs to tap into the relay chain and parachains. For front-end applications, several options exist for interfacing with Substrate-based chains (parachains, relay chains, etc.) and smart contracts. These often will interact with the RPC of a -Substrate node: - - - - - Promise and RxJS APIs around Polkadot and Substrate based chains via RPC -calls. It is dynamically generated based on what the Substrate runtime provides in terms of -metadata. Full documentation & examples -available here. - - Query and submit extrinsics (transactions) to a Substrate node via RPC using -Rust. Also referred to as Rust Parity. Full documentation & examples -available here. - - React hooks library for ink! smart contracts that abstract the -functionality of polkadot.js. Full documentation & examples -available here. - -ink!athon is a starterkit for full-stack dApp development with ink! smart -contracts and a React-based frontend in one place. With convenient helper scripts and a -pre-configured project setup, it lets you scaffold any dApp quickly. Live example & full -documentation available here. +Substrate node. - +[Please visit the full documentation for developing dApps and other general client-side development resources.](build-dapp) -For a full list of tools please take a look here: [Tools, APIs and Languages](build-open-source.md) +For a complete list of tools, please take a look here: +[Tools, APIs, and Languages](build-open-source.md) diff --git a/docs/build/build-substrate.md b/docs/build/build-light-clients.md similarity index 97% rename from docs/build/build-substrate.md rename to docs/build/build-light-clients.md index ebb92e5a8cf7..853095183d72 100644 --- a/docs/build/build-substrate.md +++ b/docs/build/build-light-clients.md @@ -1,10 +1,10 @@ --- -id: build-substrate -title: Substrate Connect -sidebar_label: Substrate Connect -description: Information about Substrate Connect. +id: build-light-clients +title: Using Light Clients +sidebar_label: Using Light Clients +description: Information about light client options. keywords: [build, substrate, substrate connect, light client] -slug: ../build-substrate +slug: ../build-light-clients --- ## Blockchain User Interfaces are still Centralized diff --git a/docs/build/build-network-overview.md b/docs/build/build-network-overview.md new file mode 100644 index 000000000000..466689c62b87 --- /dev/null +++ b/docs/build/build-network-overview.md @@ -0,0 +1,53 @@ +--- +id: build-network-overview +title: Networks Overview +sidebar_label: Networks Overview +description: An overview of the different networks on Polkadot +keywords: [data, index, query, explorer, dashboard, dapp, uapp, app, frontend, client] +slug: ../build-network-overview +--- + +While Polkadot itself is the mainnet, there are several networks that can cater to different +development or application-driven contexts. + +## Polkadot Ecosystem Networks + +- Mainnet: **Polkadot** +- Canary network: **Kusama** + - [Kusama](https://kusama.network/) is a value-bearing canary network that gets features before + Polkadot does. _Expect Chaos_. +- Official testnets: + - **Westend** - Functionality equal to the current Polkadot mainnet, with possible next-generation + testing of features from time to time that will eventually migrate onto Polkadot. Perma-testnet + (is not reset back to genesis block). + - **Rococo** - Parachains and XCM testnet. Occasionally reset (started over again with a new + genesis block). + - **Contracts** - Wasm-based Smart Contract enabled parachain testnet on Rococo, primarily for + [`ink!`](https://use.ink/) development. + +{{ polkadot: Polkadot mainnet has been running since May 2020 :polkadot }}{{ kusama: Kusama mainnet has been +running since August 2019 :kusama }} and has [implementations in various programming languages](../learn/learn-implementations.md) +ranging from Rust to JavaScript. The leading implementation is built in Rust and uses the Substrate framework. + +Tooling is rapidly evolving to interact with the network; there are many ways to get started! + +But before you jump head-first into the code, you should consider the _kind_ of decentralized +application you want to make and understand the different paradigms available to developers who want +to build on {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}. + +## Interfacing - PolkadotJS + +PolkadotJS is the most widely used developer tool in the Polkadot ecosystem. It provides a web app +to interact with various parachains, nodes, and their RPCs, as well as a Javascript API for use +within front-end contexts. You can view more on PolkadotJS and its resources +[here](https://polkadot.js.org/). + +For other programmatic ways of interacting with these networks (including PolkadotJS), please view +the [Node Interactions page](./build-node-interaction.md). + +## Testnet Faucets + +Almost all tesnets either have a web-based interface for getting test currency or a Matrix room +which you can post `!drip
` + +[See here for all available faucets and how to obtain testnet tokens.](../learn/learn-DOT.md#obtaining-testnet-tokens) diff --git a/docs/build/build-protocol-info.md b/docs/build/build-protocol-info.md index f23215397b1b..61a089eb533a 100644 --- a/docs/build/build-protocol-info.md +++ b/docs/build/build-protocol-info.md @@ -44,6 +44,8 @@ Polkadot (and Substrate) use the SS58 address format. This is a broad "meta-form handle many different cryptographic schemes and chains. It has much in common with Bitcoin's Base58Check format such as a version prefix, a hash-based checksum suffix, and base-58 encoding. + + See the [SS58 page](https://docs.substrate.io/main-docs/fundamentals/accounts-addresses-keys/#address-encoding-and-chain-specific-addresses) in the Substrate documentation for encoding information and a more comprehensive list of network @@ -153,6 +155,8 @@ More info: ## Extrinsics and Events + + ### Block Format A Polkadot block consists of a block header and a block body. The block body is made up of @@ -178,9 +182,12 @@ about the block. Additional details on the process are outlined ### Extrinsics -An extrinsic is a [SCALE encoded](https://docs.substrate.io/reference/scale-codec/) array consisting -of a `version number`, `signature`, and varying `data` types indicating the resulting runtime -function to be called, including the parameters required for that function to be executed. +An extrinsic is a +[SCALE encoded](https://github.com/paritytech/parity-scale-codec#parity-scale-codec) array +consisting of a `version number`, `signature`, and varying `data` types indicating the resulting +runtime function to be called, including the parameters required for that function to be executed. + + Extrinsics constitute information from the outside world and take on three forms: @@ -257,10 +264,13 @@ transactions are identical, and both valid. | 1 | 0x02 | Account B | 4 | Transfer 7 DOT to A | Account A created (nonce = 0) | | 2 | 0x01 | Account A | 0 | Transfer 5 DOT to B | Successful transaction | -In addition, not every extrinsic in a Substrate-based chain comes from an account as a -public/private key pair; Substrate, rather, has the concept of dispatch “origin”, which could be -created from a public key account, but could also form from other means such as governance. These -origins do not have a nonce associated with them the way that an account does. For example, +In addition, not every extrinsic in a Substrate-based chain comes from an account as a "pure" +public/private key pair. The concept of dispatch +[“Origin”](../learn/learn-account-abstraction.md#origin-abstraction-in-polkadot), which could +represent different contexts for a particular, signed extrinsic. + +For example, the origin could befrom a public key account, but could also represent a collective. +These origins do not have a nonce associated with them the way that an account does. For example, governance might dispatch the same call with the same arguments multiple times, like “increase the validator set by 10%.” This dispatch information (and therefore its hash) would be the same, and the hash would be a reliable representative of the call, but its execution would have different effects @@ -295,61 +305,31 @@ Polkadot uses weight-based fees that, unlike gas, are charged _pre-dispatch._ Us Parity's integration tools should allow you to deal with decoded data. If you'd like to bypass them and interact directly with the chain data or implement your own codec, Polkadot encodes block and -transaction data using the [SCALE codec](https://docs.substrate.io/reference/scale-codec/). +transaction data using the +[SCALE codec](https://github.com/paritytech/parity-scale-codec#parity-scale-codec). ## Runtime Upgrades [Runtime upgrades](../learn/learn-runtime-upgrades.md) allow Polkadot to change the logic of the -chain without the need for a hard fork. A hard fork would require node operators to manually upgrade -their nodes to the latest runtime version. In a distributed system, this is a complex process to -coordinate and communicate. Polkadot can upgrade without a hard fork. The existing runtime logic is -followed to update the Wasm runtime stored on the blockchain to a new version. The upgrade is then -included in the blockchain itself, meaning that all the nodes on the network execute it. - -Generally there is no need to upgrade your nodes manually before the runtime upgrade as they will -automatically start to follow the new logic of the chain. Nodes only need to be updated when the -runtime requires new host functions or there is a change in networking or consensus. +chain without the need for a hard fork. You can find a guide for how to properly perform a runtime +upgrade here. -Transactions constructed for a given runtime version will not work on later versions. Therefore, a -transaction constructed based on a runtime version will not be valid in later runtime versions. If -you don't think you can submit a transaction before the upgrade, it is better to wait and construct -it after the upgrade takes place. +### Runtime Versioning -Although upgrading your nodes is generally not necessary to follow an upgrade, we recommend -following the Polkadot releases and upgrading in a timely manner, especially for high priority or -critical releases. + -### Transaction Version Upgrades +There are a number of fields that are a part of the overall +[`RuntimeVersion`](https://paritytech.github.io/polkadot-sdk/master/frame/runtime/apis/struct.RuntimeVersion.html#). Apart the `runtime_version` there is also the `transaction_version` which denotes how to correctly encode/decode calls for a given runtime (useful for hardware wallets). The reason `transaction_version` is separate from `runtime_version` is that it explicitly notes that the call interface is broken/not compatible. -The `transaction_version` is updated in the cases mentioned in the -[Substrate docs](https://paritytech.github.io/substrate/master/sp_version/struct.RuntimeVersion.html#structfield.transaction_version). -So when a new transaction version is introduced (during a runtime upgrade), it indicates a breaking -change to transaction serialization. In that case, any custom application/tool that constructs & -signs transactions should also be updated in order to be compatible with the new transaction -version. It is the responsibility of the maintainers of the custom application/tool to keep up with -the `transaction_version` updates. However, if you do not want to keep monitoring these changes -yourself, you can also use the [txwrapper-core](https://github.com/paritytech/txwrapper-core) tool -that handles these breaking changes for you and allows you to construct transactions using the -function names and chain metadata. - ## Smart Contracts -The Polkadot Relay Chain does not support smart contracts. - -## Other Networks - -Besides running a private network, Polkadot has two other networks where you could test -infrastructure prior to deploying to the Polkadot mainnet. - -**Kusama Canary Network:** Kusama is Polkadot's cutting-edge cousin. Many risky features are -deployed to Kusama prior to making their way into Polkadot. - -**Westend Testnet:** Westend is Polkadot's testnet and uses the Polkadot runtime. +The Polkadot Relay Chain does not support smart contracts, but a number of its parachains do, +[see here for more.](./build-smart-contracts.md) ## Other F.A.Q. diff --git a/docs/build/build-ss58-registry.md b/docs/build/build-ss58-registry.md deleted file mode 100644 index 7a0ee0b75430..000000000000 --- a/docs/build/build-ss58-registry.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: build-ss58-registry -title: SS58 Registry -sidebar_label: SS58 Registry -description: Information about SS58 encoding. -slug: ../build-ss58-registry ---- - -:::note Substrate-based chains use an SS58 encoding for their address formats. - -Please see the [SS58 registry](https://github.com/paritytech/ss58-registry/) to see which -[chain corresponds to a given prefix](https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json), -and which prefixes are available. - -::: diff --git a/docs/general/polkadot-direction.md b/docs/general/polkadot-direction.md index 8c46fccb2f8c..fa21dc711b49 100644 --- a/docs/general/polkadot-direction.md +++ b/docs/general/polkadot-direction.md @@ -240,7 +240,7 @@ are breakable and prone to cyber-attacks. Polkadot is basing its resilience on d - **Preponderance of light-client usage:** Centralized RPC servers are common but susceptible to attack and not trustless decentralized entry points to using blockchain-based applications. Light client usage on Polkadot is possible through - [Smoldot](../build/build-substrate.md#how-to-use-substrate-connect). + [Smoldot](../build/build-light-clients.md#how-to-use-substrate-connect). - **Zero-Knowledge (ZK) Primitives:** They can have a problematic effect on censorship and centralization as having a big state transition function boiled down to a single proof of correct execution is not currently a scaling solution to build resilient systems. However, a library of diff --git a/docs/general/staking-dashboard.md b/docs/general/staking-dashboard.md index a5b4d7d90d12..8867f57f4389 100644 --- a/docs/general/staking-dashboard.md +++ b/docs/general/staking-dashboard.md @@ -323,4 +323,4 @@ The Support pages are: Under Network, you can connect to either Polkadot, Kusama, or Westend through public RPC nodes or light clients for a true Web3 experience. For more information about light clients, see -[this page](../build/build-substrate.md#replacing-rpc-node-reliance-with-light-clients). +[this page](../build/build-light-clients.md#replacing-rpc-node-reliance-with-light-clients). diff --git a/docs/general/web3-and-polkadot.md b/docs/general/web3-and-polkadot.md index a85af2c7070b..aa68ac8952b8 100644 --- a/docs/general/web3-and-polkadot.md +++ b/docs/general/web3-and-polkadot.md @@ -205,7 +205,7 @@ synchronize (_warp sync_ in case of Polkadot) with a full node to obtain (Merkle the latest chain state, and hence can trustlessly verify any response by full node against the commitment. In this way, we can always verify that the data we see is the truth, which is done automatically by the light client. Polkadot has a browser-embedded light client -[Substrate connect](../build/build-substrate.md) that uses the +[Substrate connect](../build/build-light-clients.md) that uses the [smoldot](https://github.com/smol-dot/smoldot) codebase. Most web3 applications today access blockchain data through a centralized RPC server. diff --git a/kusama-guide/sidebars.js b/kusama-guide/sidebars.js index 40f03328bc4e..5cda737df419 100644 --- a/kusama-guide/sidebars.js +++ b/kusama-guide/sidebars.js @@ -120,7 +120,7 @@ module.exports = { "build/build-smart-contracts", "build/build-oracle", "build/build-data", - "build/build-substrate", + "build/build-light-clients", "build/build-ss58-registry", ], }, diff --git a/polkadot-wiki/docusaurus.config.js b/polkadot-wiki/docusaurus.config.js index 44646015d4ba..f38be0922ab7 100644 --- a/polkadot-wiki/docusaurus.config.js +++ b/polkadot-wiki/docusaurus.config.js @@ -226,7 +226,7 @@ module.exports = { position: "right", }, { - to: "docs/build-index", + to: "docs/build-guide", label: "Build", position: "right", }, diff --git a/polkadot-wiki/sidebars.js b/polkadot-wiki/sidebars.js index 27812d171fbb..0c6409f6eaa8 100644 --- a/polkadot-wiki/sidebars.js +++ b/polkadot-wiki/sidebars.js @@ -622,44 +622,77 @@ module.exports = { { type: "category", label: "Build", + link: { + type: 'doc', + id: "build/build-guide" + }, items: [ - "build/build-index", { type: "category", - label: "Development Guide", + label: "Client-side Development", + link: { + type: 'generated-index', + title: "Client-side Development", + description: "Learn about different options for building client-side apps on Polkadot.", + slug: '/build-client-index', + }, items: [ - "build/build-guide", - "build/build-parachains", + "build/build-dapp", + "build/build-oracle", + "build/build-light-clients", "build/build-storage", - "build/build-smart-contracts", - "build/build-oracle", - "build/build-data", - "build/build-substrate", - "build/build-ss58-registry", - "build/build-hrmp-channels", + "build/build-transaction-construction", + "build/build-node-interaction", ], }, + "build/build-smart-contracts", { type: "category", - label: "Integration Guide", + label: "Protocol Development", + link: { + type: 'generated-index', + title: "Protocol & Parachain Development", + description: "Learn how to get started with building parachains, solo-chains, and other aspects of protocol development.", + slug: '/build-protocol-index', + }, items: [ - "build/build-integration", "build/build-protocol-info", + "build/build-parachains", "build/build-integrate-assets", - "build/build-node-management", - "build/build-node-interaction", - "build/build-transaction-construction", + "build/build-hrmp-channels" ], }, { type: "category", - label: "Tools", - items: ["build/build-tools-index", "build/build-open-source"], + label: "Development Networks & Node Management", + link: { + type: 'generated-index', + title: "Development Networks & Node Management", + description: "Learn how to get started with building parachains, solo-chains, and other aspects of protocol development.", + slug: '/build-network-index', + }, + items: [ + "build/build-network-overview", + "build/build-integration", + "build/build-node-management", + ], }, + { type: "category", - label: "Resources", - items: ["build/build-hackathon"], + label: "Tooling", + link: { + type: 'doc', + id: "build/build-tools-index" + }, + items: [ + "build/build-data", + "build/build-open-source", + ], + }, + { + type: "doc", + id: "build/build-hackathon", }, ], }, diff --git a/polkadot-wiki/src/pages/index.js b/polkadot-wiki/src/pages/index.js index 028f22aef7dd..a2b1e9a5030a 100644 --- a/polkadot-wiki/src/pages/index.js +++ b/polkadot-wiki/src/pages/index.js @@ -81,7 +81,7 @@ function HomeNav() {

- +