referrerpolicy=no-referrer-when-downgrade

polkadot_sdk_docs/reference_docs/
metadata.rs

1//! # Metadata
2//!
3//! The existence of metadata in polkadot-sdk goes back to the (forkless) upgrade-ability of all
4//! Substrate-based blockchains, which is achieved through
5//! [`crate::reference_docs::wasm_meta_protocol`]. You can learn more about the details of how to
6//! deal with these upgrades in [`crate::reference_docs::frame_runtime_upgrades_and_migrations`].
7//!
8//! Another consequence of upgrade-ability is that as a UI, wallet, or generally an offchain entity,
9//! it is hard to know the types internal to the runtime, specifically in light of the fact that
10//! they can change at any point in time.
11//!
12//! This is why all Substrate-based runtimes must expose a [`sp_api::Metadata`] api, which mandates
13//! the runtime to return a description of itself. The return type of this api is `Vec<u8>`, meaning
14//! that it is up to the runtime developer to decide on the format of this.
15//!
16//! All [`crate::polkadot_sdk::frame_runtime`] based runtimes expose a specific metadata language,
17//! maintained in <https://github.com/paritytech/frame-metadata> which is adopted in the Polkadot
18//! ecosystem.
19//!
20//! ## Metadata Explorers:
21//!
22//! A few noteworthy tools that inspect the (FRAME-based) metadata of a chain:
23//!
24//! - <https://wiki.polkadot.network/docs/metadata>
25//! - <https://paritytech.github.io/subxt-explorer/>