-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Metadata V15: Expose API to fetch metadata for version #13287
Metadata V15: Expose API to fetch metadata for version #13287
Conversation
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
bot rebase |
Rebased |
bot rebase |
Rebased |
primitives/api/src/lib.rs
Outdated
/// Returns the supported versions of metadata. | ||
/// | ||
/// This can be used to call `metadata_at_version`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/// Returns the supported versions of metadata. | |
/// | |
/// This can be used to call `metadata_at_version`. | |
/// Returns the available metadata versions. |
Nit; Just because "This can be used to call.." felt a bit unclear :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would keep "supported". Feels more clear on what this is about.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not an expert in this area but it looks good to me!
frame/support/procedural/src/construct_runtime/expand/metadata.rs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, but we should forward the selection of the supported metadata to the metadata crate. See my comments for more information.
primitives/api/src/lib.rs
Outdated
/// Returns the supported versions of metadata. | ||
/// | ||
/// This can be used to call `metadata_at_version`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would keep "supported". Feels more clear on what this is about.
frame/support/procedural/src/construct_runtime/expand/metadata.rs
Outdated
Show resolved
Hide resolved
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
bot merge |
Error: "Check reviews" status is not passing for paritytech/polkadot#6655 |
bot merge |
Error: "Check reviews" status is not passing for paritytech/polkadot#6655 |
Cc @jacogr |
bot merge |
) * impl_runtime_apis: Generate getters for `metadata_at` functions Signed-off-by: Alexandru Vasile <[email protected]> * runtime: Implement new `Metadata` runtime trait Signed-off-by: Alexandru Vasile <[email protected]> * runtime: Move `metadata_at` functions to construct_runtime macro Signed-off-by: Alexandru Vasile <[email protected]> * contruct_runtime: Use `OpaqueMetadata` from hidden imports Signed-off-by: Alexandru Vasile <[email protected]> * Adjust testing Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Add tests for the new API Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Adjust metdata naming Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Expose `metadata-v14` feature flag Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Expose metadata only under feature flags Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Expose v14 metadata by default Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Expose metadata feature for testing Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Test metadata under different feature flags Signed-off-by: Alexandru Vasile <[email protected]> * Update primitives/api/src/lib.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/src/lib.rs Co-authored-by: Bastian Köcher <[email protected]> * client/tests: Adjust testing to reflect trait Metadata change Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata-ir: Add intermediate representation types for metadata Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata-ir: Convert metadata to V14 Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata-ir: Add API to convert metadata to multiple versions Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata-ir: Expose V14 under feature flag Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Adjust to metadata IR Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: More adjustments Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Guard v14 details under feature flag Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Adjust testing Signed-off-by: Alexandru Vasile <[email protected]> * CI: Ensure `quick-benchmarks` uses `metadata-v14` Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Use `metadata-v14` for benchmarks Signed-off-by: Alexandru Vasile <[email protected]> * Adjust cargo fmt Signed-off-by: Alexandru Vasile <[email protected]> * kitchensink-runtime: Add feature flag for `metadata-v14` Signed-off-by: Alexandru Vasile <[email protected]> * frame/support/test: Adjust testing Signed-off-by: Alexandru Vasile <[email protected]> * frame/support/test: Check crates locally Signed-off-by: Alexandru Vasile <[email protected]> * Activate metadata-v14 for pallets Signed-off-by: Alexandru Vasile <[email protected]> * Remove metadata-v14 feature flag Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata_ir: Move `api.rs` to `mod.rs` Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Handle latest metadata conversion via IR Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Add constant for metadata version 14 Signed-off-by: Alexandru Vasile <[email protected]> * frame/support/test: Fix merge conflict Signed-off-by: Alexandru Vasile <[email protected]> * Update frame/support/Cargo.toml Co-authored-by: Bastian Köcher <[email protected]> * Update frame/support/src/metadata_ir/mod.rs Co-authored-by: Bastian Köcher <[email protected]> * Update frame/support/test/Cargo.toml Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/src/lib.rs Co-authored-by: Bastian Köcher <[email protected]> * frame/metadata: Collect pallet documentation for MetadataIR Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Check pallet documentation is propagated to MetadataIR Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Improve documentation Signed-off-by: Alexandru Vasile <[email protected]> --------- Signed-off-by: Alexandru Vasile <[email protected]> Co-authored-by: parity-processbot <> Co-authored-by: Bastian Köcher <[email protected]>
This pull request has been mentioned on Polkadot Forum. There might be relevant details there: https://forum.polkadot.network/t/stablising-v15-metadata/2819/1 |
) * impl_runtime_apis: Generate getters for `metadata_at` functions Signed-off-by: Alexandru Vasile <[email protected]> * runtime: Implement new `Metadata` runtime trait Signed-off-by: Alexandru Vasile <[email protected]> * runtime: Move `metadata_at` functions to construct_runtime macro Signed-off-by: Alexandru Vasile <[email protected]> * contruct_runtime: Use `OpaqueMetadata` from hidden imports Signed-off-by: Alexandru Vasile <[email protected]> * Adjust testing Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Add tests for the new API Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Adjust metdata naming Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Expose `metadata-v14` feature flag Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Expose metadata only under feature flags Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Expose v14 metadata by default Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Expose metadata feature for testing Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Test metadata under different feature flags Signed-off-by: Alexandru Vasile <[email protected]> * Update primitives/api/src/lib.rs Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/src/lib.rs Co-authored-by: Bastian Köcher <[email protected]> * client/tests: Adjust testing to reflect trait Metadata change Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata-ir: Add intermediate representation types for metadata Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata-ir: Convert metadata to V14 Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata-ir: Add API to convert metadata to multiple versions Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata-ir: Expose V14 under feature flag Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Adjust to metadata IR Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: More adjustments Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Guard v14 details under feature flag Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Adjust testing Signed-off-by: Alexandru Vasile <[email protected]> * CI: Ensure `quick-benchmarks` uses `metadata-v14` Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Use `metadata-v14` for benchmarks Signed-off-by: Alexandru Vasile <[email protected]> * Adjust cargo fmt Signed-off-by: Alexandru Vasile <[email protected]> * kitchensink-runtime: Add feature flag for `metadata-v14` Signed-off-by: Alexandru Vasile <[email protected]> * frame/support/test: Adjust testing Signed-off-by: Alexandru Vasile <[email protected]> * frame/support/test: Check crates locally Signed-off-by: Alexandru Vasile <[email protected]> * Activate metadata-v14 for pallets Signed-off-by: Alexandru Vasile <[email protected]> * Remove metadata-v14 feature flag Signed-off-by: Alexandru Vasile <[email protected]> * frame/metadata_ir: Move `api.rs` to `mod.rs` Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Handle latest metadata conversion via IR Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Add constant for metadata version 14 Signed-off-by: Alexandru Vasile <[email protected]> * frame/support/test: Fix merge conflict Signed-off-by: Alexandru Vasile <[email protected]> * Update frame/support/Cargo.toml Co-authored-by: Bastian Köcher <[email protected]> * Update frame/support/src/metadata_ir/mod.rs Co-authored-by: Bastian Köcher <[email protected]> * Update frame/support/test/Cargo.toml Co-authored-by: Bastian Köcher <[email protected]> * Update primitives/api/src/lib.rs Co-authored-by: Bastian Köcher <[email protected]> * frame/metadata: Collect pallet documentation for MetadataIR Signed-off-by: Alexandru Vasile <[email protected]> * frame/tests: Check pallet documentation is propagated to MetadataIR Signed-off-by: Alexandru Vasile <[email protected]> * frame/support: Improve documentation Signed-off-by: Alexandru Vasile <[email protected]> --------- Signed-off-by: Alexandru Vasile <[email protected]> Co-authored-by: parity-processbot <> Co-authored-by: Bastian Köcher <[email protected]>
This PR extends the
Metadata
API to fetch the metadata at a given provided version.It lays the foundation for keeping the metadata V14 around and exposing the V15 for early adopters before making a major breaking change.
The runtime API comes with 2 new functions:
metadata_at_version
- Fetch the metadata at a given versionmetadata_versions
- List the supported versions bymetadata_at_version
At the current moment, substrate only supports V14.
Soon, the V15 will be exposed as
unstable
under theu32::max
value.Users could then fetch the v15 metadata, allowing for an appropriate time to migrate their use cases.
Part of: #12939.
polkadot companion: paritytech/polkadot#6655
cumulus companion: paritytech/cumulus#2155
CC: @paritytech/tools-team