Add staging runtime api (#5048)

* Move `trait ParachainHost` to a separate version independent module

`trait ParachainHost` is no longer part of a specific primitives
version. Instead there is a single trait for stable and staging api
versions. The trait contains stable AND staging methods. The latter are
explicitly marked as unstable.

* Fix `use` primitives

`polkadot_primitives::v2` becomes `polkadot_primitives::runtime_api`

* Staging API declaration and stubs

Introduces the concept for 'staging functions' in runtime API. These
functions are still in testing and they are meant to be used only
within test networks (Westend).
They coexist with the stable calls for technical reasons - maintaining
different runtime APIs for different networks is hard to implement.

Check the doc comments in source files for more details how the staging
API should be used.

* Add new staging method - get_session_disputes()

Add `staging_get_session_disputes` to `ParachainHost` as the first
method of the staging API.

* Hide vstaging runtime api implementations  behind feature flag

* Fix test runtime

* fn staging_get_session_disputes() is renamed to fn staging_get_disputes()
This commit is contained in:
Tsvetomir Dimitrov
2022-04-12 18:47:46 +03:00
committed by GitHub
parent 04f5a15be4
commit fd020c07e5
21 changed files with 295 additions and 143 deletions
@@ -21,3 +21,5 @@
//! to a v2 would be done.
pub mod v2;
#[cfg(feature = "vstaging")]
pub mod vstaging;
@@ -0,0 +1,27 @@
// Copyright 2017-2022 Parity Technologies (UK) Ltd.
// This file is part of Polkadot.
// Polkadot is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Polkadot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.
// Put implementations of functions from staging API here.
use crate::disputes;
use primitives::v2::{CandidateHash, DisputeState, SessionIndex};
use sp_std::prelude::*;
/// Implementation for `get_session_disputes` function from the runtime API
pub fn get_session_disputes<T: disputes::Config>(
) -> Vec<(SessionIndex, CandidateHash, DisputeState<T::BlockNumber>)> {
<disputes::Pallet<T>>::disputes()
}