mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 14:01:02 +00:00
Introduce Parathreads (runtime) (#341)
* Rest of parathread draft implementation, parachain permissioning. * Update Substrate * Update Substrate again * Integrate weight/fee stuff. * Council * Build fixes * More fixes * Minor additions * fix some small errors * Revert "fix some small errors" This reverts commit 4fb52c82adfdaf3af98edfe36b280133bcd4f9d3. * Merge fix. * do_swap -> on_swap * Update depdendency to polkadot-master * Fix more merge problems * Some patching of errors * Fix storage closure * Actually fix storage. It builds! * Tests run... but not successfully. * Add `run_to_block` to get parachains active to start * More `run_to_block` * Fix build * Queue up changes to threads * Move registration test * Fix regsiter/deregister test * Retry queue. * Minor refactor * Refactor to avoid heavy storage items * Make tests pass * remove para on deregister, add events * Remove println * Fix register/deregister parathread test * fix merge * Parathread can be activated test * Test auction * Add `Debtors` storage item I considered putting the debtor information in `ParaInfo`, but it did not make sense to me since this information only applies to parathreads, not `paras` in general. * remove comment code * Some new tests * Fixes for removing threads when scheduled. Tests. * Test progression of threads. * Test that reschedule queuing works properly. * Make test slightly more interesting * whitespace * Swap works properly. * Update locks * Build * Rename can_swap * Add test for funds to be correctly returned after a swap Swap does not seem to have logic which correctly swaps the debtor account to the new parathread. * Make tests consistant * Add check that `PendingSwap` is cleaned up * Update runtime/src/parachains.rs Co-Authored-By: Robert Habermeier <rphmeier@gmail.com> * Update runtime/src/registrar.rs Co-Authored-By: Robert Habermeier <rphmeier@gmail.com> * Some fixes/suggestions from review * Docs * Apply suggestions from code review Co-Authored-By: Robert Habermeier <rphmeier@gmail.com> Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com> * Update network/src/gossip.rs Co-Authored-By: Robert Habermeier <rphmeier@gmail.com> * Rename OnSwap * Add missing `]` * Rejig ordering semantics, making everything a bit slower but correct. * Some Fixes to Parathread Compile (#470) * Some Fixes * Fix queue_upward_messages * Change back to const * Build fixes * Fix tests
This commit is contained in:
@@ -11,6 +11,7 @@ wasmi = { version = "0.4.3", optional = true }
|
||||
derive_more = { version = "0.14", optional = true }
|
||||
serde = { version = "1.0", default-features = false, features = [ "derive" ] }
|
||||
rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", branch = "polkadot-master", default-features = false }
|
||||
substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master", default-features = false }
|
||||
lazy_static = { version = "1.3.0", optional = true }
|
||||
parking_lot = { version = "0.7.1", optional = true }
|
||||
log = { version = "0.4.6", optional = true }
|
||||
@@ -33,6 +34,7 @@ std = [
|
||||
"serde/std",
|
||||
"rstd/std",
|
||||
"shared_memory",
|
||||
"substrate-primitives/std",
|
||||
"lazy_static",
|
||||
"parking_lot",
|
||||
"log"
|
||||
|
||||
@@ -54,6 +54,7 @@ pub mod wasm_api;
|
||||
use rstd::vec::Vec;
|
||||
|
||||
use codec::{Encode, Decode};
|
||||
use substrate_primitives::TypeId;
|
||||
|
||||
/// Validation parameters for evaluating the parachain validity function.
|
||||
// TODO: balance downloads (https://github.com/paritytech/polkadot/issues/220)
|
||||
@@ -82,6 +83,16 @@ pub struct ValidationResult {
|
||||
#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize, Debug))]
|
||||
pub struct Id(u32);
|
||||
|
||||
impl TypeId for Id {
|
||||
const TYPE_ID: [u8; 4] = *b"para";
|
||||
}
|
||||
|
||||
/// Type for determining the active set of parachains.
|
||||
pub trait ActiveThreads {
|
||||
/// Return the current ordered set of `Id`s of active parathreads.
|
||||
fn active_threads() -> Vec<Id>;
|
||||
}
|
||||
|
||||
impl codec::CompactAs for Id {
|
||||
type As = u32;
|
||||
fn encode_as(&self) -> &u32 {
|
||||
@@ -105,11 +116,19 @@ impl From<u32> for Id {
|
||||
fn from(x: u32) -> Self { Id(x) }
|
||||
}
|
||||
|
||||
const USER_INDEX_START: u32 = 1000;
|
||||
|
||||
/// The ID of the first user (non-system) parachain.
|
||||
pub const LOWEST_USER_ID: Id = Id(USER_INDEX_START);
|
||||
|
||||
impl Id {
|
||||
/// Convert this Id into its inner representation.
|
||||
pub fn into_inner(self) -> u32 {
|
||||
self.0
|
||||
}
|
||||
|
||||
/// Returns `true` if this parachain runs with system-level privileges.
|
||||
pub fn is_system(&self) -> bool { self.0 < USER_INDEX_START }
|
||||
}
|
||||
|
||||
// TODO: Remove all of this, move sr-primitives::AccountIdConversion to own crate and and use that.
|
||||
@@ -191,6 +210,9 @@ pub enum ParachainDispatchOrigin {
|
||||
/// As the special `Origin::Parachain(ParaId)`. This is good when interacting with parachain-
|
||||
/// aware modules which need to succinctly verify that the origin is a parachain.
|
||||
Parachain,
|
||||
/// As the simple, superuser `Origin::Root`. This can only be done on specially permissioned
|
||||
/// parachains.
|
||||
Root,
|
||||
}
|
||||
|
||||
impl rstd::convert::TryFrom<u8> for ParachainDispatchOrigin {
|
||||
|
||||
Reference in New Issue
Block a user