mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 17:01:09 +00:00
Minimal parachain framework part 1 (#113)
* dynamic inclusion threshold calculator * collators interface * collation helpers * initial proposal-creation future * create proposer when asked to propose * remove local_availability duty * statement table tracks includable parachain count * beginnings of timing future * finish proposal logic * remove stray println * extract shared table to separate module * change ordering * includability tracking * fix doc * initial changes to parachains module * initialise dummy block before API calls * give polkadot control over round proposer based on random seed * propose only after enough candidates * flesh out parachains module a bit more * set_heads * actually introduce set_heads to runtime * update block_builder to accept parachains * split block validity errors from real errors in evaluation * update WASM runtimes * polkadot-api methods for parachains additions * delay evaluation until candidates are ready * comments * fix dynamic inclusion with zero initial * test for includability tracker * wasm validation of parachain candidates * move primitives to primitives crate * remove runtime-std dependency from codec * adjust doc * polkadot-parachain-primitives * kill legacy polkadot-validator crate * basic-add test chain * test for basic_add parachain * move to test-chains dir * use wasm-build * new wasm directory layout * reorganize a bit more * Fix for rh-minimal-parachain (#141) * Remove extern "C" We already encountered such behavior (bug?) in pwasm-std, I believe. * Fix `panic_fmt` signature by adding `_col` Wrong `panic_fmt` signature can inhibit some optimizations in LTO mode. * Add linker flags and use wasm-gc in build script Pass --import-memory to LLD to emit wasm binary with imported memory. Also use wasm-gc instead of wasm-build. * Fix effective_max. I'm not sure why it was the way it was actually. * Recompile wasm. * Fix indent * more basic_add tests * validate parachain WASM * produce statements on receiving statements * tests for reactive statement production * fix build * add OOM lang item to runtime-io * use dynamic_inclusion when evaluating as well * fix update_includable_count * remove dead code * grumbles * actually defer round_proposer logic * update wasm * address a few more grumbles * grumbles * update WASM checkins * remove dependency on tokio-timer
This commit is contained in:
committed by
GitHub
parent
24d7d38c62
commit
27aafb0a04
@@ -38,8 +38,8 @@ use primitives::traits::RefInto;
|
||||
use substrate_primitives::bft::MisbehaviorReport;
|
||||
|
||||
|
||||
pub const AUTHORITY_AT: &'static[u8] = b":auth:";
|
||||
pub const AUTHORITY_COUNT: &'static[u8] = b":auth:len";
|
||||
pub const AUTHORITY_AT: &'static [u8] = b":auth:";
|
||||
pub const AUTHORITY_COUNT: &'static [u8] = b":auth:len";
|
||||
|
||||
struct AuthorityStorageVec<S: codec::Slicable + Default>(rstd::marker::PhantomData<S>);
|
||||
impl<S: codec::Slicable + Default> StorageVec for AuthorityStorageVec<S> {
|
||||
|
||||
@@ -160,8 +160,8 @@ impl<T: Trait> Module<T> {
|
||||
/// Set the random seed to something in particular. Can be used as an alternative to
|
||||
/// `initialise` for tests that don't need to bother with the other environment entries.
|
||||
#[cfg(any(feature = "std", test))]
|
||||
pub fn set_random_seed(n: T::Hash) {
|
||||
<RandomSeed<T>>::put(n);
|
||||
pub fn set_random_seed(seed: T::Hash) {
|
||||
<RandomSeed<T>>::put(seed);
|
||||
}
|
||||
|
||||
/// Increment a particular account's nonce by 1.
|
||||
|
||||
@@ -37,6 +37,9 @@ use runtime_support::{StorageValue, Parameter};
|
||||
use runtime_primitives::traits::{HasPublicAux, Executable, MaybeEmpty};
|
||||
|
||||
pub trait Trait: HasPublicAux + system::Trait {
|
||||
// the position of the required timestamp-set extrinsic.
|
||||
const SET_POSITION: u32;
|
||||
|
||||
type Value: Parameter + Default;
|
||||
}
|
||||
|
||||
@@ -64,7 +67,11 @@ impl<T: Trait> Module<T> {
|
||||
fn set(aux: &T::PublicAux, now: T::Value) {
|
||||
assert!(aux.is_empty());
|
||||
assert!(!<Self as Store>::DidUpdate::exists(), "Timestamp must be updated only once in the block");
|
||||
assert!(<system::Module<T>>::extrinsic_index() == 0, "Timestamp must be first extrinsic in the block");
|
||||
assert!(
|
||||
<system::Module<T>>::extrinsic_index() == T::SET_POSITION,
|
||||
"Timestamp extrinsic must be at position {} in the block",
|
||||
T::SET_POSITION
|
||||
);
|
||||
<Self as Store>::Now::put(now);
|
||||
<Self as Store>::DidUpdate::put(true);
|
||||
}
|
||||
@@ -119,6 +126,7 @@ mod tests {
|
||||
type Header = Header;
|
||||
}
|
||||
impl Trait for Test {
|
||||
const SET_POSITION: u32 = 0;
|
||||
type Value = u64;
|
||||
}
|
||||
type Timestamp = Module<Test>;
|
||||
|
||||
Reference in New Issue
Block a user