Contracts Add new version for marking new stable API (#3415)

Add a `ApiVersion` constant to the pallet-contracts Config to
communicate with developers the current state of the host functions
exposed by the pallet
This commit is contained in:
PG Herveou
2024-02-23 14:10:06 +01:00
committed by GitHub
parent 64050cf347
commit f2645eec12
6 changed files with 31 additions and 0 deletions
@@ -72,5 +72,6 @@ impl Config for Runtime {
type RuntimeHoldReason = RuntimeHoldReason;
type Debug = ();
type Environment = ();
type ApiVersion = ();
type Xcm = pallet_xcm::Pallet<Self>;
}
+9
View File
@@ -0,0 +1,9 @@
title: "[pallet-contracts] Add APIVersion to the config."
doc:
- audience: Runtime Dev
description: |
Add `APIVersion` to the config to communicate the state of the Host functions exposed by the pallet.
crates:
- name: pallet-contracts
+1
View File
@@ -1367,6 +1367,7 @@ impl pallet_contracts::Config for Runtime {
type CodeHashLockupDepositPercent = CodeHashLockupDepositPercent;
type Debug = ();
type Environment = ();
type ApiVersion = ();
type Xcm = ();
}
@@ -94,5 +94,6 @@ impl pallet_contracts::Config for Runtime {
type WeightPrice = Self;
type Debug = ();
type Environment = ();
type ApiVersion = ();
type Xcm = pallet_xcm::Pallet<Self>;
}
+18
View File
@@ -214,6 +214,18 @@ pub struct Environment<T: Config> {
block_number: EnvironmentType<BlockNumberFor<T>>,
}
/// Defines the current version of the HostFn APIs.
/// This is used to communicate the available APIs in pallet-contracts.
///
/// The version is bumped any time a new HostFn is added or stabilized.
#[derive(Encode, Decode, TypeInfo)]
pub struct ApiVersion(u16);
impl Default for ApiVersion {
fn default() -> Self {
Self(1)
}
}
#[frame_support::pallet]
pub mod pallet {
use super::*;
@@ -402,6 +414,12 @@ pub mod pallet {
#[pallet::constant]
type Environment: Get<Environment<Self>>;
/// The version of the HostFn APIs that are available in the runtime.
///
/// Only valid value is `()`.
#[pallet::constant]
type ApiVersion: Get<ApiVersion>;
/// A type that exposes XCM APIs, allowing contracts to interact with other parachains, and
/// execute XCM programs.
type Xcm: xcm_builder::Controller<
+1
View File
@@ -465,6 +465,7 @@ impl Config for Test {
type MaxDelegateDependencies = MaxDelegateDependencies;
type Debug = TestDebug;
type Environment = ();
type ApiVersion = ();
type Xcm = ();
}