mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 05:51:02 +00:00
Kill the light client, CHTs and change tries. (#10080)
* Remove light client, change tries and CHTs * Update tests * fmt * Restore changes_root * Fixed benches * Cargo fmt * fmt * fmt
This commit is contained in:
@@ -151,7 +151,7 @@ impl<T: Config> Pallet<T> {
|
||||
fn change_authorities(new: WeakBoundedVec<T::AuthorityId, T::MaxAuthorities>) {
|
||||
<Authorities<T>>::put(&new);
|
||||
|
||||
let log: DigestItem<T::Hash> = DigestItem::Consensus(
|
||||
let log = DigestItem::Consensus(
|
||||
AURA_ENGINE_ID,
|
||||
ConsensusLog::AuthoritiesChange(new.into_inner()).encode(),
|
||||
);
|
||||
@@ -222,7 +222,7 @@ impl<T: Config> OneSessionHandler<T::AccountId> for Pallet<T> {
|
||||
}
|
||||
|
||||
fn on_disabled(i: u32) {
|
||||
let log: DigestItem<T::Hash> = DigestItem::Consensus(
|
||||
let log = DigestItem::Consensus(
|
||||
AURA_ENGINE_ID,
|
||||
ConsensusLog::<T::AuthorityId>::OnDisabled(i as AuthorityIndex).encode(),
|
||||
);
|
||||
|
||||
@@ -633,7 +633,7 @@ impl<T: Config> Pallet<T> {
|
||||
}
|
||||
|
||||
fn deposit_consensus<U: Encode>(new: U) {
|
||||
let log: DigestItem<T::Hash> = DigestItem::Consensus(BABE_ENGINE_ID, new.encode());
|
||||
let log = DigestItem::Consensus(BABE_ENGINE_ID, new.encode());
|
||||
<frame_system::Pallet<T>>::deposit_log(log.into())
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ fn init_block(block: u64) {
|
||||
BeefyMmr::on_initialize(block);
|
||||
}
|
||||
|
||||
pub fn beefy_log(log: ConsensusLog<BeefyId>) -> DigestItem<H256> {
|
||||
pub fn beefy_log(log: ConsensusLog<BeefyId>) -> DigestItem {
|
||||
DigestItem::Consensus(BEEFY_ENGINE_ID, log.encode())
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ impl<T: Config> Pallet<T> {
|
||||
let next_id = Self::validator_set_id() + 1u64;
|
||||
<ValidatorSetId<T>>::put(next_id);
|
||||
|
||||
let log: DigestItem<T::Hash> = DigestItem::Consensus(
|
||||
let log = DigestItem::Consensus(
|
||||
BEEFY_ENGINE_ID,
|
||||
ConsensusLog::AuthoritiesChange(ValidatorSet { validators: new, id: next_id })
|
||||
.encode(),
|
||||
@@ -163,7 +163,7 @@ impl<T: Config> OneSessionHandler<T::AccountId> for Pallet<T> {
|
||||
}
|
||||
|
||||
fn on_disabled(i: u32) {
|
||||
let log: DigestItem<T::Hash> = DigestItem::Consensus(
|
||||
let log = DigestItem::Consensus(
|
||||
BEEFY_ENGINE_ID,
|
||||
ConsensusLog::<T::BeefyId>::OnDisabled(i as AuthorityIndex).encode(),
|
||||
);
|
||||
|
||||
@@ -20,7 +20,6 @@ use std::vec;
|
||||
use beefy_primitives::ValidatorSet;
|
||||
use codec::Encode;
|
||||
|
||||
use sp_core::H256;
|
||||
use sp_runtime::DigestItem;
|
||||
|
||||
use frame_support::traits::OnInitialize;
|
||||
@@ -32,7 +31,7 @@ fn init_block(block: u64) {
|
||||
Session::on_initialize(block);
|
||||
}
|
||||
|
||||
pub fn beefy_log(log: ConsensusLog<BeefyId>) -> DigestItem<H256> {
|
||||
pub fn beefy_log(log: ConsensusLog<BeefyId>) -> DigestItem {
|
||||
DigestItem::Consensus(BEEFY_ENGINE_ID, log.encode())
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +125,6 @@ use frame_support::{
|
||||
},
|
||||
weights::{DispatchClass, DispatchInfo, GetDispatchInfo},
|
||||
};
|
||||
use frame_system::DigestOf;
|
||||
use sp_runtime::{
|
||||
generic::Digest,
|
||||
traits::{
|
||||
@@ -281,8 +280,8 @@ where
|
||||
Self::initialize_block_impl(header.number(), header.parent_hash(), &digests);
|
||||
}
|
||||
|
||||
fn extract_pre_digest(header: &System::Header) -> DigestOf<System> {
|
||||
let mut digest = <DigestOf<System>>::default();
|
||||
fn extract_pre_digest(header: &System::Header) -> Digest {
|
||||
let mut digest = <Digest>::default();
|
||||
header.digest().logs().iter().for_each(|d| {
|
||||
if d.as_pre_runtime().is_some() {
|
||||
digest.push(d.clone())
|
||||
@@ -294,7 +293,7 @@ where
|
||||
fn initialize_block_impl(
|
||||
block_number: &System::BlockNumber,
|
||||
parent_hash: &System::Hash,
|
||||
digest: &Digest<System::Hash>,
|
||||
digest: &Digest,
|
||||
) {
|
||||
let mut weight = 0;
|
||||
if Self::runtime_upgraded() {
|
||||
|
||||
@@ -508,7 +508,7 @@ impl<T: Config> Pallet<T> {
|
||||
|
||||
/// Deposit one of this module's logs.
|
||||
fn deposit_log(log: ConsensusLog<T::BlockNumber>) {
|
||||
let log: DigestItem<T::Hash> = DigestItem::Consensus(GRANDPA_ENGINE_ID, log.encode());
|
||||
let log = DigestItem::Consensus(GRANDPA_ENGINE_ID, log.encode());
|
||||
<frame_system::Pallet<T>>::deposit_log(log.into());
|
||||
}
|
||||
|
||||
|
||||
@@ -254,7 +254,7 @@ impl Config for Test {
|
||||
type MaxAuthorities = MaxAuthorities;
|
||||
}
|
||||
|
||||
pub fn grandpa_log(log: ConsensusLog<u64>) -> DigestItem<H256> {
|
||||
pub fn grandpa_log(log: ConsensusLog<u64>) -> DigestItem {
|
||||
DigestItem::Consensus(GRANDPA_ENGINE_ID, log.encode())
|
||||
}
|
||||
|
||||
|
||||
@@ -1223,7 +1223,7 @@ mod private {
|
||||
pub trait Sealed {}
|
||||
|
||||
impl<T: Encode> Sealed for Vec<T> {}
|
||||
impl<Hash: Encode> Sealed for Digest<Hash> {}
|
||||
impl Sealed for Digest {}
|
||||
impl<T, S> Sealed for BoundedVec<T, S> {}
|
||||
impl<T, S> Sealed for WeakBoundedVec<T, S> {}
|
||||
impl<K, V, S> Sealed for bounded_btree_map::BoundedBTreeMap<K, V, S> {}
|
||||
@@ -1263,7 +1263,7 @@ impl<T: Encode> StorageDecodeLength for Vec<T> {}
|
||||
/// We abuse the fact that SCALE does not put any marker into the encoding, i.e. we only encode the
|
||||
/// internal vec and we can append to this vec. We have a test that ensures that if the `Digest`
|
||||
/// format ever changes, we need to remove this here.
|
||||
impl<Hash: Encode> StorageAppend<DigestItem<Hash>> for Digest<Hash> {}
|
||||
impl StorageAppend<DigestItem> for Digest {}
|
||||
|
||||
/// Marker trait that is implemented for types that support the `storage::append` api with a limit
|
||||
/// on the number of element.
|
||||
@@ -1484,8 +1484,8 @@ mod test {
|
||||
fn digest_storage_append_works_as_expected() {
|
||||
TestExternalities::default().execute_with(|| {
|
||||
struct Storage;
|
||||
impl generator::StorageValue<Digest<u32>> for Storage {
|
||||
type Query = Digest<u32>;
|
||||
impl generator::StorageValue<Digest> for Storage {
|
||||
type Query = Digest;
|
||||
|
||||
fn module_prefix() -> &'static [u8] {
|
||||
b"MyModule"
|
||||
@@ -1495,23 +1495,20 @@ mod test {
|
||||
b"Storage"
|
||||
}
|
||||
|
||||
fn from_optional_value_to_query(v: Option<Digest<u32>>) -> Self::Query {
|
||||
fn from_optional_value_to_query(v: Option<Digest>) -> Self::Query {
|
||||
v.unwrap()
|
||||
}
|
||||
|
||||
fn from_query_to_optional_value(v: Self::Query) -> Option<Digest<u32>> {
|
||||
fn from_query_to_optional_value(v: Self::Query) -> Option<Digest> {
|
||||
Some(v)
|
||||
}
|
||||
}
|
||||
|
||||
Storage::append(DigestItem::ChangesTrieRoot(1));
|
||||
Storage::append(DigestItem::Other(Vec::new()));
|
||||
|
||||
let value = unhashed::get_raw(&Storage::storage_value_final_key()).unwrap();
|
||||
|
||||
let expected = Digest {
|
||||
logs: vec![DigestItem::ChangesTrieRoot(1), DigestItem::Other(Vec::new())],
|
||||
};
|
||||
let expected = Digest { logs: vec![DigestItem::Other(Vec::new())] };
|
||||
assert_eq!(Digest::decode(&mut &value[..]).unwrap(), expected);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
use codec::Encode;
|
||||
use frame_benchmarking::{benchmarks, whitelisted_caller};
|
||||
use frame_support::{storage, traits::Get, weights::DispatchClass};
|
||||
use frame_system::{Call, DigestItemOf, Pallet as System, RawOrigin};
|
||||
use sp_core::{storage::well_known_keys, ChangesTrieConfiguration};
|
||||
use frame_system::{Call, Pallet as System, RawOrigin};
|
||||
use sp_core::storage::well_known_keys;
|
||||
use sp_runtime::traits::Hash;
|
||||
use sp_std::{prelude::*, vec};
|
||||
|
||||
@@ -62,23 +62,6 @@ benchmarks! {
|
||||
assert_eq!(current_code.len(), 4_000_000 as usize);
|
||||
}
|
||||
|
||||
set_changes_trie_config {
|
||||
let d = 1000;
|
||||
|
||||
let digest_item = DigestItemOf::<T>::Other(vec![]);
|
||||
|
||||
for i in 0 .. d {
|
||||
System::<T>::deposit_log(digest_item.clone());
|
||||
}
|
||||
let changes_trie_config = ChangesTrieConfiguration {
|
||||
digest_interval: d,
|
||||
digest_levels: d,
|
||||
};
|
||||
}: _(RawOrigin::Root, Some(changes_trie_config))
|
||||
verify {
|
||||
assert_eq!(System::<T>::digest().logs.len(), (d + 1) as usize)
|
||||
}
|
||||
|
||||
#[skip_meta]
|
||||
set_storage {
|
||||
let i in 1 .. 1000;
|
||||
|
||||
@@ -95,7 +95,7 @@ use frame_support::{
|
||||
Parameter,
|
||||
};
|
||||
use scale_info::TypeInfo;
|
||||
use sp_core::{storage::well_known_keys, ChangesTrieConfiguration};
|
||||
use sp_core::storage::well_known_keys;
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
use frame_support::traits::GenesisBuild;
|
||||
@@ -405,37 +405,6 @@ pub mod pallet {
|
||||
Ok(().into())
|
||||
}
|
||||
|
||||
/// Set the new changes trie configuration.
|
||||
///
|
||||
/// # <weight>
|
||||
/// - `O(1)`
|
||||
/// - 1 storage write or delete (codec `O(1)`).
|
||||
/// - 1 call to `deposit_log`: Uses `append` API, so O(1)
|
||||
/// - Base Weight: 7.218 µs
|
||||
/// - DB Weight:
|
||||
/// - Writes: Changes Trie, System Digest
|
||||
/// # </weight>
|
||||
#[pallet::weight((T::SystemWeightInfo::set_changes_trie_config(), DispatchClass::Operational))]
|
||||
pub fn set_changes_trie_config(
|
||||
origin: OriginFor<T>,
|
||||
changes_trie_config: Option<ChangesTrieConfiguration>,
|
||||
) -> DispatchResultWithPostInfo {
|
||||
ensure_root(origin)?;
|
||||
match changes_trie_config.clone() {
|
||||
Some(changes_trie_config) => storage::unhashed::put_raw(
|
||||
well_known_keys::CHANGES_TRIE_CONFIG,
|
||||
&changes_trie_config.encode(),
|
||||
),
|
||||
None => storage::unhashed::kill(well_known_keys::CHANGES_TRIE_CONFIG),
|
||||
}
|
||||
|
||||
let log = generic::DigestItem::ChangesTrieSignal(
|
||||
generic::ChangesTrieSignal::NewConfiguration(changes_trie_config),
|
||||
);
|
||||
Self::deposit_log(log.into());
|
||||
Ok(().into())
|
||||
}
|
||||
|
||||
/// Set some items of storage.
|
||||
///
|
||||
/// # <weight>
|
||||
@@ -617,7 +586,7 @@ pub mod pallet {
|
||||
/// Digest of the current block, also part of the block header.
|
||||
#[pallet::storage]
|
||||
#[pallet::getter(fn digest)]
|
||||
pub(super) type Digest<T: Config> = StorageValue<_, DigestOf<T>, ValueQuery>;
|
||||
pub(super) type Digest<T: Config> = StorageValue<_, generic::Digest, ValueQuery>;
|
||||
|
||||
/// Events deposited for the current block.
|
||||
///
|
||||
@@ -666,7 +635,6 @@ pub mod pallet {
|
||||
|
||||
#[pallet::genesis_config]
|
||||
pub struct GenesisConfig {
|
||||
pub changes_trie_config: Option<ChangesTrieConfiguration>,
|
||||
#[serde(with = "sp_core::bytes")]
|
||||
pub code: Vec<u8>,
|
||||
}
|
||||
@@ -674,7 +642,7 @@ pub mod pallet {
|
||||
#[cfg(feature = "std")]
|
||||
impl Default for GenesisConfig {
|
||||
fn default() -> Self {
|
||||
Self { changes_trie_config: Default::default(), code: Default::default() }
|
||||
Self { code: Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -689,12 +657,6 @@ pub mod pallet {
|
||||
|
||||
sp_io::storage::set(well_known_keys::CODE, &self.code);
|
||||
sp_io::storage::set(well_known_keys::EXTRINSIC_INDEX, &0u32.encode());
|
||||
if let Some(ref changes_trie_config) = self.changes_trie_config {
|
||||
sp_io::storage::set(
|
||||
well_known_keys::CHANGES_TRIE_CONFIG,
|
||||
&changes_trie_config.encode(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -759,9 +721,6 @@ impl GenesisConfig {
|
||||
}
|
||||
}
|
||||
|
||||
pub type DigestOf<T> = generic::Digest<<T as Config>::Hash>;
|
||||
pub type DigestItemOf<T> = generic::DigestItem<<T as Config>::Hash>;
|
||||
|
||||
pub type Key = Vec<u8>;
|
||||
pub type KeyValue = (Vec<u8>, Vec<u8>);
|
||||
|
||||
@@ -1369,7 +1328,7 @@ impl<T: Config> Pallet<T> {
|
||||
pub fn initialize(
|
||||
number: &T::BlockNumber,
|
||||
parent_hash: &T::Hash,
|
||||
digest: &DigestOf<T>,
|
||||
digest: &generic::Digest,
|
||||
kind: InitKind,
|
||||
) {
|
||||
// populate environment
|
||||
@@ -1409,7 +1368,7 @@ impl<T: Config> Pallet<T> {
|
||||
// stay to be inspected by the client and will be cleared by `Self::initialize`.
|
||||
let number = <Number<T>>::get();
|
||||
let parent_hash = <ParentHash<T>>::get();
|
||||
let mut digest = <Digest<T>>::get();
|
||||
let digest = <Digest<T>>::get();
|
||||
|
||||
let extrinsics = (0..ExtrinsicCount::<T>::take().unwrap_or_default())
|
||||
.map(ExtrinsicData::<T>::take)
|
||||
@@ -1427,17 +1386,6 @@ impl<T: Config> Pallet<T> {
|
||||
|
||||
let storage_root = T::Hash::decode(&mut &sp_io::storage::root()[..])
|
||||
.expect("Node is configured to use the same hash; qed");
|
||||
let storage_changes_root = sp_io::storage::changes_root(&parent_hash.encode());
|
||||
|
||||
// we can't compute changes trie root earlier && put it to the Digest
|
||||
// because it will include all currently existing temporaries.
|
||||
if let Some(storage_changes_root) = storage_changes_root {
|
||||
let item = generic::DigestItem::ChangesTrieRoot(
|
||||
T::Hash::decode(&mut &storage_changes_root[..])
|
||||
.expect("Node is configured to use the same hash; qed"),
|
||||
);
|
||||
digest.push(item);
|
||||
}
|
||||
|
||||
<T::Header as traits::Header>::new(
|
||||
number,
|
||||
@@ -1454,7 +1402,7 @@ impl<T: Config> Pallet<T> {
|
||||
/// - `O(1)`
|
||||
/// - 1 storage write (codec `O(1)`)
|
||||
/// # </weight>
|
||||
pub fn deposit_log(item: DigestItemOf<T>) {
|
||||
pub fn deposit_log(item: generic::DigestItem) {
|
||||
<Digest<T>>::append(item);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user