mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-22 11:25:42 +00:00
Update to latest substrate-master and polkadot v0.3 (#195)
* Rebuild runtime * Remove invalid value from chainspec (#68) * service: use grandpa block import for locally sealed aura blocks (#85) * bump version to v0.3.1 * Update lock file. * limit number of transactions when building blocks (#91) * Update to latest Substrate * Bump to 0.3.2 * Actually bump. * v0.3.2 (#98) * bump substrate version * fix polkadot-collator * point to alexander-backports of substrate * bump version * cli: fix node shutdown (#100) * update to latest substrate, change to v0.3.4 * update to latest substrate, bump version to 0.3.5 * v0.3.6 * try to build on every v0.3 commit and update alexander-backports * bump to v0.3.7 * bump to 0.3.8 * Bump to 0.3.9: network and pruning improvements * Bump to 0.3.10: reduce network bandwidth usage * Use libp2p-kad 0.3.2 (#122) * Bump libp2p-identify to 0.3.1 (#123) * Bump to 0.3.12 (#127) * Update Substrate again (#128) * update substrate and bump version to v0.3.13 * bump version to v0.3.14: fix --reserved-nodes * add a manually curated grandpa module (#136) * updating v0.3 to use substrate v0.10 (#146) * updating to latest substrate v0.10 * better handling of outer poll * nit * fix tests * remove comment * reduce indentation * use self.poll * bring oneshot into scope * spaces * wrap * remove match * wrap * Update primitives/Cargo.toml Co-Authored-By: gterzian <2792687+gterzian@users.noreply.github.com> * Update runtime/wasm/Cargo.toml Co-Authored-By: gterzian <2792687+gterzian@users.noreply.github.com> * Update runtime/wasm/Cargo.toml Co-Authored-By: gterzian <2792687+gterzian@users.noreply.github.com> * Update test-parachains/adder/collator/src/main.rs Co-Authored-By: gterzian <2792687+gterzian@users.noreply.github.com> * indent * add paranthese * config: fix wrong ip for alexander bootnode (#161) * fix curated-grandpa and rebuild wasm (#162) * [v0.3] Integrates new gossip system into Polkadot (#166) * new gossip validation in network * integrate new gossip into service * network: guard validation network future under exit signal (#168) * bump version to v0.3.15: substrate v0.10 * [v0.3] update to substrate master (#175) * update to substrate master * fix test * service: fix telemetry endpoints on alexander chainspec (#169) (#178) * Update v0.3 to latest Substrate master (#177) * update substrate v0.3 to latest master * bump spec version * update to latest master: remove fees module * update runtime blobs * bump version to 0.3.16 * replace sr25519 accountid with anysigner * bump version to v0.3.17 * Some PoC-3 GRANDPA tweaks (#181) * call on_finalise after triggering curated_grandpa change * make grandpa rounds shorter for faster finalization * use authorities when calculating duty roster (#185) * [v0.3] Update to substrate master (#183) * update to latest substrate master * bump version to 0.3.18 * update to latest substrate master * bump spec version * update runtime wasm blobs * remove current_offline_slash from chain spec * update to substrate master: bump version to v0.3.19 (#188) * update to substrate master: bump version to v0.3.19 libp2p network improvements * network: replace NodeIndex with PeerId * network: fix tests * polkadot v0.3.20 (#190) * update to substrate master: bump version to 0.3.20 * runtime: add offchain worker trait * runtime: rebuild wasm blobs * bump spec version (#191) * Fix compilation * Update version to 0.4.0 * Switch to use `polkadot-master` branch from substrate * Remove unused struct * Remove `grandpa::SyncedAuthorities` from `OnSessionChange`
This commit is contained in:
committed by
Robert Habermeier
parent
5606afd886
commit
7e2714f843
@@ -19,20 +19,20 @@
|
||||
use rstd::prelude::*;
|
||||
use sr_io::{keccak_256, secp256k1_ecdsa_recover};
|
||||
use srml_support::{StorageValue, StorageMap};
|
||||
use srml_support::traits::{Currency, ArithmeticType};
|
||||
use srml_support::traits::Currency;
|
||||
use system::ensure_signed;
|
||||
use codec::Encode;
|
||||
#[cfg(feature = "std")]
|
||||
use sr_primitives::traits::Zero;
|
||||
use system;
|
||||
|
||||
type BalanceOf<T> = <<T as Trait>::Currency as ArithmeticType>::Type;
|
||||
type BalanceOf<T> = <<T as Trait>::Currency as Currency<<T as system::Trait>::AccountId>>::Balance;
|
||||
|
||||
/// Configuration trait.
|
||||
pub trait Trait: system::Trait {
|
||||
/// The overarching event type.
|
||||
type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
|
||||
type Currency: ArithmeticType + Currency<Self::AccountId, Balance=BalanceOf<Self>>;
|
||||
type Currency: Currency<Self::AccountId>;
|
||||
}
|
||||
|
||||
type EthereumAddress = [u8; 20];
|
||||
@@ -59,7 +59,6 @@ impl EcdsaSignature {
|
||||
}
|
||||
}
|
||||
|
||||
/// An event in this module.
|
||||
decl_event!(
|
||||
pub enum Event<T> where
|
||||
B = BalanceOf<T>,
|
||||
@@ -135,7 +134,7 @@ decl_module! {
|
||||
*t -= balance_due
|
||||
});
|
||||
|
||||
T::Currency::increase_free_balance_creating(&sender, balance_due);
|
||||
T::Currency::deposit_creating(&sender, balance_due);
|
||||
|
||||
// Let's deposit an event to let the outside world know this happened.
|
||||
Self::deposit_event(RawEvent::Claimed(sender, signer, balance_due));
|
||||
@@ -186,6 +185,9 @@ mod tests {
|
||||
type OnFreeBalanceZero = ();
|
||||
type OnNewAccount = ();
|
||||
type Event = ();
|
||||
type TransactionPayment = ();
|
||||
type DustRemoval = ();
|
||||
type TransferPayment = ();
|
||||
}
|
||||
impl Trait for Test {
|
||||
type Event = ();
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
// Copyright 2017 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/>.
|
||||
|
||||
//! A module for manually curated GRANDPA set.
|
||||
|
||||
use {grandpa, system};
|
||||
use codec::Decode;
|
||||
use sr_primitives::traits::{As, Hash as HashT, BlakeTwo256, Zero};
|
||||
use rstd::prelude::*;
|
||||
|
||||
pub trait Trait: grandpa::Trait {}
|
||||
|
||||
decl_storage! {
|
||||
trait Store for Module<T: Trait> as CuratedGrandpa {
|
||||
/// How often to shuffle the GRANDPA sets.
|
||||
///
|
||||
/// 0 means never.
|
||||
pub ShufflePeriod get(shuffle_period) config(shuffle_period): T::BlockNumber;
|
||||
}
|
||||
}
|
||||
|
||||
decl_module! {
|
||||
/// curated GRANDPA set.
|
||||
pub struct Module<T: Trait> for enum Call where origin: T::Origin {
|
||||
/// Changes the GRANDPA voter set.
|
||||
fn set_voters(origin, voters: Vec<(T::SessionKey, u64)>) {
|
||||
system::ensure_root(origin)?;
|
||||
grandpa::Module::<T>::schedule_change(voters, T::BlockNumber::zero(), None)?;
|
||||
}
|
||||
|
||||
fn on_finalise(block_number: T::BlockNumber) {
|
||||
// every so often shuffle the voters and issue a change.
|
||||
let shuffle_period: u64 = Self::shuffle_period().as_();
|
||||
if shuffle_period == 0 { return }
|
||||
|
||||
if block_number.as_() % shuffle_period == 0 {
|
||||
let mut seed = system::Module::<T>::random_seed().as_ref().to_vec();
|
||||
seed.extend(b"grandpa_shuffling");
|
||||
let mut seed = BlakeTwo256::hash(&seed);
|
||||
|
||||
let mut voters = grandpa::Module::<T>::grandpa_authorities();
|
||||
let voter_count = voters.len();
|
||||
|
||||
if voter_count == 0 { return }
|
||||
|
||||
for i in 0..(voter_count - 1) {
|
||||
// 4 bytes of entropy used per cycle, 32 bytes entropy per hash
|
||||
let offset = (i * 4 % 32) as usize;
|
||||
|
||||
// number of roles remaining to select from.
|
||||
let remaining = (voter_count - i) as usize;
|
||||
|
||||
// 8 32-bit ints per 256-bit seed.
|
||||
let voter_index = u32::decode(&mut &seed[offset..offset + 4]).expect("using 4 bytes for a 32-bit quantity") as usize % remaining;
|
||||
|
||||
if offset == 28 {
|
||||
// into the last 4 bytes - rehash to gather new entropy
|
||||
seed = BlakeTwo256::hash(seed.as_ref());
|
||||
}
|
||||
|
||||
// exchange last item with randomly chosen first.
|
||||
voters.swap(remaining - 1, voter_index);
|
||||
}
|
||||
|
||||
// finalisation order is undefined, so grandpa's on_finalise might
|
||||
// have already been called. calling it again is OK though.
|
||||
let _ = grandpa::Module::<T>::schedule_change(voters, T::BlockNumber::zero(), None);
|
||||
grandpa::Module::<T>::on_finalise(block_number);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+29
-22
@@ -37,6 +37,7 @@ extern crate parity_codec as codec;
|
||||
extern crate substrate_consensus_aura_primitives as consensus_aura;
|
||||
extern crate substrate_primitives;
|
||||
extern crate substrate_inherents as inherents;
|
||||
extern crate substrate_offchain_primitives as offchain_primitives;
|
||||
#[macro_use]
|
||||
extern crate substrate_client as client;
|
||||
|
||||
@@ -62,7 +63,6 @@ extern crate srml_sudo as sudo;
|
||||
extern crate srml_system as system;
|
||||
extern crate srml_timestamp as timestamp;
|
||||
extern crate srml_treasury as treasury;
|
||||
extern crate srml_fees as fees;
|
||||
|
||||
extern crate polkadot_primitives as primitives;
|
||||
|
||||
@@ -72,14 +72,15 @@ extern crate substrate_keyring as keyring;
|
||||
#[cfg(test)]
|
||||
extern crate substrate_trie;
|
||||
|
||||
mod curated_grandpa;
|
||||
mod parachains;
|
||||
mod claims;
|
||||
|
||||
use rstd::prelude::*;
|
||||
use substrate_primitives::u32_trait::{_2, _4};
|
||||
use primitives::{
|
||||
AccountId, AccountIndex, Balance, BlockNumber, Hash, Nonce, SessionKey, SessionSignature,
|
||||
Signature, parachain,
|
||||
AccountId, AccountIndex, Balance, BlockNumber, Hash, Nonce, SessionKey, Signature,
|
||||
parachain, SessionSignature,
|
||||
};
|
||||
use client::{
|
||||
block_builder::api::{self as block_builder_api, InherentData, CheckInherentsResult},
|
||||
@@ -115,8 +116,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
|
||||
spec_name: create_runtime_str!("polkadot"),
|
||||
impl_name: create_runtime_str!("parity-polkadot"),
|
||||
authoring_version: 1,
|
||||
spec_version: 107,
|
||||
impl_version: 1,
|
||||
spec_version: 108,
|
||||
impl_version: 0,
|
||||
apis: RUNTIME_API_VERSIONS,
|
||||
};
|
||||
|
||||
@@ -159,6 +160,9 @@ impl balances::Trait for Runtime {
|
||||
type OnFreeBalanceZero = Staking;
|
||||
type OnNewAccount = Indices;
|
||||
type Event = Event;
|
||||
type TransactionPayment = ();
|
||||
type DustRemoval = ();
|
||||
type TransferPayment = ();
|
||||
}
|
||||
|
||||
impl consensus::Trait for Runtime {
|
||||
@@ -177,24 +181,28 @@ impl timestamp::Trait for Runtime {
|
||||
|
||||
impl session::Trait for Runtime {
|
||||
type ConvertAccountIdToSessionKey = ();
|
||||
type OnSessionChange = (Staking, grandpa::SyncedAuthorities<Runtime>);
|
||||
type OnSessionChange = Staking;
|
||||
type Event = Event;
|
||||
}
|
||||
|
||||
impl staking::Trait for Runtime {
|
||||
type Currency = Balances;
|
||||
type OnRewardMinted = Treasury;
|
||||
type Event = Event;
|
||||
type Currency = balances::Module<Self>;
|
||||
type Slash = ();
|
||||
type Reward = ();
|
||||
}
|
||||
|
||||
impl democracy::Trait for Runtime {
|
||||
type Currency = Balances;
|
||||
type Currency = balances::Module<Self>;
|
||||
type Proposal = Call;
|
||||
type Event = Event;
|
||||
}
|
||||
|
||||
impl council::Trait for Runtime {
|
||||
type Event = Event;
|
||||
type BadPresentation = ();
|
||||
type BadReaper = ();
|
||||
}
|
||||
|
||||
impl council::voting::Trait for Runtime {
|
||||
@@ -208,10 +216,12 @@ impl council::motions::Trait for Runtime {
|
||||
}
|
||||
|
||||
impl treasury::Trait for Runtime {
|
||||
type Currency = Balances;
|
||||
type Currency = balances::Module<Self>;
|
||||
type ApproveOrigin = council_motions::EnsureMembers<_4>;
|
||||
type RejectOrigin = council_motions::EnsureMembers<_2>;
|
||||
type Event = Event;
|
||||
type MintedForSpending = ();
|
||||
type ProposalRejection = ();
|
||||
}
|
||||
|
||||
impl grandpa::Trait for Runtime {
|
||||
@@ -222,21 +232,13 @@ impl grandpa::Trait for Runtime {
|
||||
|
||||
impl parachains::Trait for Runtime {}
|
||||
|
||||
impl curated_grandpa::Trait for Runtime { }
|
||||
|
||||
impl sudo::Trait for Runtime {
|
||||
type Event = Event;
|
||||
type Proposal = Call;
|
||||
}
|
||||
|
||||
impl claims::Trait for Runtime {
|
||||
type Event = Event;
|
||||
type Currency = Balances;
|
||||
}
|
||||
|
||||
impl fees::Trait for Runtime {
|
||||
type Event = Event;
|
||||
type TransferAsset = Balances;
|
||||
}
|
||||
|
||||
construct_runtime!(
|
||||
pub enum Runtime with Log(InternalLog: DigestItem<Hash, SessionKey, SessionSignature>) where
|
||||
Block = Block,
|
||||
@@ -254,6 +256,7 @@ construct_runtime!(
|
||||
Staking: staking,
|
||||
Democracy: democracy,
|
||||
Grandpa: grandpa::{Module, Call, Storage, Config<T>, Log(), Event<T>},
|
||||
CuratedGrandpa: curated_grandpa::{Module, Call, Config<T>, Storage},
|
||||
Council: council::{Module, Call, Storage, Event<T>},
|
||||
CouncilVoting: council_voting,
|
||||
CouncilMotions: council_motions::{Module, Call, Storage, Event<T>, Origin},
|
||||
@@ -261,8 +264,6 @@ construct_runtime!(
|
||||
Treasury: treasury,
|
||||
Parachains: parachains::{Module, Call, Storage, Config<T>, Inherent},
|
||||
Sudo: sudo,
|
||||
Claims: claims,
|
||||
Fees: fees::{Module, Storage, Config<T>, Event<T>},
|
||||
}
|
||||
);
|
||||
|
||||
@@ -281,7 +282,7 @@ pub type UncheckedExtrinsic = generic::UncheckedMortalCompactExtrinsic<Address,
|
||||
/// Extrinsic type that has already been checked.
|
||||
pub type CheckedExtrinsic = generic::CheckedExtrinsic<AccountId, Nonce, Call>;
|
||||
/// Executive: handles dispatch to the various modules.
|
||||
pub type Executive = executive::Executive<Runtime, Block, system::ChainContext<Runtime>, Fees, AllModules>;
|
||||
pub type Executive = executive::Executive<Runtime, Block, system::ChainContext<Runtime>, Balances, AllModules>;
|
||||
|
||||
impl_runtime_apis! {
|
||||
impl client_api::Core<Block> for Runtime {
|
||||
@@ -336,6 +337,12 @@ impl_runtime_apis! {
|
||||
}
|
||||
}
|
||||
|
||||
impl offchain_primitives::OffchainWorkerApi<Block> for Runtime {
|
||||
fn offchain_worker(number: sr_primitives::traits::NumberFor<Block>) {
|
||||
Executive::offchain_worker(number)
|
||||
}
|
||||
}
|
||||
|
||||
impl parachain::ParachainHost<Block> for Runtime {
|
||||
fn validators() -> Vec<parachain::ValidatorId> {
|
||||
Consensus::authorities() // only possible as long as parachain validator crypto === aura crypto
|
||||
|
||||
@@ -478,8 +478,8 @@ mod tests {
|
||||
#[derive(Clone, Eq, PartialEq)]
|
||||
pub struct Test;
|
||||
impl consensus::Trait for Test {
|
||||
type SessionKey = SessionKey;
|
||||
type InherentOfflineReport = ();
|
||||
type SessionKey = SessionKey;
|
||||
type Log = ::Log;
|
||||
}
|
||||
impl system::Trait for Test {
|
||||
@@ -555,8 +555,8 @@ mod tests {
|
||||
let candidate_hash = candidate.candidate.hash();
|
||||
|
||||
let authorities = ::Consensus::authorities();
|
||||
let extract_key = |public: &SessionKey| {
|
||||
AuthorityKeyring::from_public(public).unwrap()
|
||||
let extract_key = |public: SessionKey| {
|
||||
AuthorityKeyring::from_raw_public(public.0).unwrap()
|
||||
};
|
||||
|
||||
let validation_entries = duty_roster.validator_duty.iter()
|
||||
@@ -566,7 +566,7 @@ mod tests {
|
||||
if duty != Chain::Parachain(candidate.parachain_index()) { continue }
|
||||
vote_implicit = !vote_implicit;
|
||||
|
||||
let key = extract_key(&authorities[idx]);
|
||||
let key = extract_key(authorities[idx].clone());
|
||||
|
||||
let statement = if vote_implicit {
|
||||
Statement::Candidate(candidate.candidate.clone())
|
||||
@@ -694,7 +694,8 @@ mod tests {
|
||||
egress_queue_roots: vec![],
|
||||
fees: 0,
|
||||
block_data_hash: Default::default(),
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
assert!(Parachains::dispatch(Call::set_heads(vec![candidate]), Origin::INHERENT).is_err());
|
||||
|
||||
Reference in New Issue
Block a user