diff --git a/client/dump/Cargo.toml b/client/dump/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..7f079820aff8d235ba974e12630f522f45745c33
--- /dev/null
+++ b/client/dump/Cargo.toml
@@ -0,0 +1,153 @@
+[package]
+authors = ['cgeek <cem.moreau@gmail.com>']
+description = 'Duniter client dumper of Storage'
+edition = '2021'
+homepage = 'https://duniter.org'
+license = 'AGPL-3.0'
+name = 'dc-dump'
+readme = 'README.md'
+repository = 'https://git.duniter.org/nodes/rust/duniter-v2s'
+version = '1.0.0'
+
+[features]
+default = ['std']
+std = [
+    'codec/std',
+    'common-runtime/std',
+    'frame-executive/std',
+    'frame-support/std',
+    'frame-system-rpc-runtime-api/std',
+    'frame-system/std',
+    "frame-try-runtime/std",
+    'log/std',
+    'pallet-atomic-swap/std',
+    'pallet-authority-discovery/std',
+    'pallet-authority-members/std',
+    'pallet-babe/std',
+    'pallet-balances/std',
+    'pallet-certification/std',
+    'pallet-collective/std',
+    'pallet-duniter-test-parameters/std',
+    'pallet-duniter-account/std',
+    'pallet-duniter-wot/std',
+    'pallet-grandpa/std',
+    'pallet-identity/std',
+    'pallet-membership/std',
+    'pallet-oneshot-account/std',
+    'pallet-provide-randomness/std',
+    'pallet-im-online/std',
+    'pallet-multisig/std',
+    "pallet-offences/std",
+    'pallet-preimage/std',
+    'pallet-proxy/std',
+    "pallet-scheduler/std",
+    'pallet-session/std',
+    'pallet-sudo/std',
+    'pallet-universal-dividend/std',
+    'pallet-upgrade-origin/std',
+    'pallet-timestamp/std',
+    'pallet-transaction-payment-rpc-runtime-api/std',
+    'pallet-transaction-payment/std',
+    'pallet-treasury/std',
+    'pallet-utility/std',
+    "serde/std",
+    "serde_derive",
+    'sp-api/std',
+    'sp-arithmetic/std',
+    'sp-authority-discovery/std',
+    'sp-block-builder/std',
+    'sp-consensus-babe/std',
+    'sp-core/std',
+    'sp-inherents/std',
+    'sp-offchain/std',
+    'sp-membership/std',
+    'sp-runtime/std',
+    'sp-session/std',
+    'sp-std/std',
+    'sp-transaction-pool/std',
+    'sp-version/std',
+]
+
+[dependencies]
+# local
+common-runtime = { path = "../../runtime/common", default-features = false }
+pallet-authority-members = { path = '../../pallets/authority-members', default-features = false }
+pallet-certification = { path = '../../pallets/certification', default-features = false }
+pallet-duniter-test-parameters = { path = '../../pallets/duniter-test-parameters', default-features = false }
+pallet-duniter-account = { path = '../../pallets/duniter-account', default-features = false }
+pallet-duniter-wot = { path = '../../pallets/duniter-wot', default-features = false }
+pallet-identity = { path = '../../pallets/identity', default-features = false }
+pallet-membership = { path = '../../pallets/membership', default-features = false }
+pallet-offences = { path = '../../pallets/offences', default-features = false }
+pallet-oneshot-account = { path = '../../pallets/oneshot-account', default-features = false }
+pallet-provide-randomness = { path = '../../pallets/provide-randomness', default-features = false }
+pallet-universal-dividend = { path = '../../pallets/universal-dividend', default-features = false }
+pallet-session-benchmarking = { path = '../../pallets/session-benchmarking', default-features = false }
+pallet-upgrade-origin = { path = '../../pallets/upgrade-origin', default-features = false }
+sp-membership = { path = '../../primitives/membership', default-features = false }
+
+# crates.io
+codec = { package = "parity-scale-codec", version = "3.1.5", features = ["derive"], default-features = false }
+log = { version = "0.4.17", default-features = false }
+hex-literal = { version = '0.3.1', optional = true }
+scale-info = { version = "2.1.1", default-features = false, features = ["derive"] }
+serde = { version = "1.0.101", default-features = false }
+serde_derive = { version = "1.0.101", optional = true }
+
+# substrate
+frame-try-runtime = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false, optional = true }
+frame-executive = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+frame-support = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+frame-system = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+frame-system-rpc-runtime-api = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false}
+pallet-atomic-swap = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-authority-discovery = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-authorship = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-babe = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-balances = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-collective = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-grandpa = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-im-online = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-multisig = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-preimage = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-proxy = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-scheduler = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-session = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-sudo = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-timestamp = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-transaction-payment = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-transaction-payment-rpc-runtime-api = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-treasury = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+pallet-utility = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-api = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-arithmetic = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-authority-discovery = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-block-builder = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-consensus-babe = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-core = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-inherents = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-offchain = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-runtime = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-session = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-std = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-transaction-pool = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+sp-version = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32', default-features = false }
+
+# Other
+bytes = { version = "1.1.0", default-features = false }
+pretty_assertions = "1.2.1"
+maplit = "1.0.2"
+sp-consensus-vrf = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32' }
+sp-finality-grandpa = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32' }
+sp-io = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32' }
+sp-keyring = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32' }
+sp-storage = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32' }
+serde_json = "1.0.99"
+strum = "0.25.0"
+strum_macros = "0.25.0"
+gdev-runtime = { path = "../../runtime/gdev" }
+
+### DOC ###
+
+[package.metadata.docs.rs]
+targets = ['x86_64-unknown-linux-gnu']
diff --git a/client/dump/src/assert.rs b/client/dump/src/assert.rs
new file mode 100644
index 0000000000000000000000000000000000000000..3c59295e5f7c492608fd2903d6487f0b1e56ecb8
--- /dev/null
+++ b/client/dump/src/assert.rs
@@ -0,0 +1,52 @@
+use crate::checker::Checker;
+use bytes::Bytes;
+use codec::Decode;
+use common_runtime::entities::IdtyData;
+use common_runtime::{AccountId, BlockNumber};
+use frame_support::metadata::StorageEntryType;
+use frame_support::storage::{KeyPrefixIterator, PrefixIterator};
+use frame_support::{Blake2_128Concat, ReversibleStorageHasher, Twox64Concat};
+use log::info;
+use pallet_identity::IdtyValue;
+use pretty_assertions::assert_eq;
+use scale_info::form::PortableForm;
+use std::fs;
+use std::string::FromUtf8Error;
+
+pub fn compare_with_storage(tested: Vec<Checker>, expected_file: String) {
+    let in_file = format!("tests/{}", expected_file.clone());
+    let out_file = format!("tests/{}.actual", expected_file.clone());
+    let expected_str = fs::read_to_string(in_file).expect(
+        format!(
+            "file {} must exist in tests/{}",
+            expected_file.clone().as_str(),
+            std::env::current_dir().unwrap().display()
+        )
+        .as_str(),
+    );
+    let mut actual = String::new();
+    for t in tested.into_iter() {
+        let dotted_name = t.to_dotted_form();
+        let (single, map) = t.into_values();
+        if let Some(kvs) = map {
+            actual.push_str(format!("{} = [\n", dotted_name.clone()).as_str());
+            for kv in kvs {
+                actual.push_str(format!("\t{} = {:?}\n", kv.0, kv.1).as_str());
+            }
+            actual.push_str("]\n");
+        } else if let Some(v) = single {
+            actual.push_str(format!("{} = {:?}\n", dotted_name.clone(), v).as_str());
+        } else {
+            actual.push_str(format!("{} = <unreadable>\n", dotted_name.clone()).as_str());
+        }
+    }
+    if expected_str.clone() != actual.clone() {
+        fs::write(out_file, actual.clone()).expect("should be able to store actual storage dump");
+    }
+    assert_eq!(expected_str, actual);
+}
+
+fn read_storage(t: &Checker) -> Option<Bytes> {
+    let key = t.get_prefix();
+    sp_io::storage::get(key.as_slice())
+}
diff --git a/client/dump/src/checker.rs b/client/dump/src/checker.rs
new file mode 100644
index 0000000000000000000000000000000000000000..561aeeb96ed463048bd54298da2f2827bf7ab26e
--- /dev/null
+++ b/client/dump/src/checker.rs
@@ -0,0 +1,74 @@
+use crate::key::Key;
+use bytes::Bytes;
+use codec::Decode;
+use frame_support::metadata::StorageEntryMetadata;
+use frame_support::storage::PrefixIterator;
+use scale_info::form::PortableForm;
+use std::collections::BTreeMap;
+use std::fmt::Debug;
+
+/// A concrete Checker for any type `T` to be read from storage.
+pub struct Checker {
+    pallet_name: String,
+    storage_name: String,
+    single_value: Option<Box<dyn Debug>>,
+    map_key_values: Option<BTreeMap<Box<String>, Box<dyn Debug>>>,
+}
+
+impl Checker {
+    pub fn new(
+        pallet_name: &str,
+        storage_name: &str,
+        single_value: Option<Box<dyn Debug>>,
+        map_key_values: Option<BTreeMap<Box<String>, Box<dyn Debug>>>,
+    ) -> Checker {
+        Checker {
+            pallet_name: pallet_name.into(),
+            storage_name: storage_name.into(),
+            single_value,
+            map_key_values,
+        }
+    }
+}
+
+impl Checker {
+    pub fn default(pallet_name: &str, storage_name: &str) -> Box<Checker> {
+        Box::new(Checker {
+            pallet_name: pallet_name.into(),
+            storage_name: storage_name.into(),
+            single_value: None,
+            map_key_values: None,
+        })
+    }
+}
+
+/// What is expected to make a storage check
+impl Checker {
+    pub fn pallet_name(&self) -> String {
+        self.pallet_name.clone()
+    }
+
+    pub fn storage_name(&self) -> String {
+        self.storage_name.clone()
+    }
+
+    pub fn to_dotted_form(&self) -> String {
+        format!("{}.{}", self.pallet_name, self.storage_name)
+    }
+
+    pub fn into_values(
+        self,
+    ) -> (
+        Option<Box<dyn Debug>>,
+        Option<BTreeMap<Box<String>, Box<dyn Debug>>>,
+    ) {
+        (self.single_value, self.map_key_values)
+    }
+
+    pub fn get_prefix(&self) -> [u8; 32] {
+        frame_support::storage::storage_prefix(
+            self.pallet_name().as_bytes(),
+            self.storage_name().as_bytes(),
+        )
+    }
+}
diff --git a/client/dump/src/iterative.rs b/client/dump/src/iterative.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7642c4ccb19e4d3d8c5d12b462301c76dfa115a9
--- /dev/null
+++ b/client/dump/src/iterative.rs
@@ -0,0 +1,145 @@
+use crate::assert::compare_with_storage;
+use crate::checker::Checker;
+use crate::key::Key;
+use crate::runtime::extract_storage_entries_normalized;
+use codec::{Decode, Error};
+use common_runtime::entities::IdtyData;
+use frame_support::instances::{Instance1, Instance2};
+use frame_support::metadata::{RuntimeMetadata, StorageEntryType};
+use frame_support::storage::storage_prefix;
+use gdev_runtime::opaque::SessionKeys;
+use gdev_runtime::Runtime;
+use maplit::btreemap;
+use pallet_identity::{IdtyStatus, IdtyValue};
+use pallet_universal_dividend::FirstEligibleUd;
+use pretty_assertions::assert_eq;
+use scale_info::form::PortableForm;
+use sp_api::{AsTrieBackend, StateBackend};
+use sp_consensus_babe::{AuthorityId, BabeAuthorityWeight};
+use sp_core::bounded::WeakBoundedVec;
+use sp_core::{map, sr25519};
+use sp_io::TestExternalities;
+use sp_runtime::RuntimeString;
+use std::collections::HashMap;
+use std::fmt::{format, Debug};
+use std::fs::metadata;
+use std::iter::Map;
+use std::marker::PhantomData;
+use std::ops::Add;
+use std::str::FromStr;
+
+/// A struct to ease the testing of extrinsics' impact on the Storage, using the following techniques:
+///
+/// - always check *all keys and values of the current state in the Storage* (`test_storage()`)
+/// - first define a starting state (`new()` or `new_default()`)
+///
+/// Useful for extrinsic testing where we start from a known Storage state, and just want to check
+/// the differences after we applied some extrinsics.
+pub struct StorageChecker<T> {
+    get_metadata: fn() -> RuntimeMetadata,
+    phantom: PhantomData<T>,
+}
+
+impl<T> StorageChecker<T>
+where
+    T: frame_system::Config,
+    <T as frame_system::Config>::AccountId: std::hash::Hash,
+    T: pallet_babe::Config,
+    T: pallet_im_online::Config,
+    T: pallet_certification::Config<Instance1>,
+    T: pallet_certification::Config<Instance2>,
+    T: pallet_universal_dividend::Config,
+    T: pallet_authorship::Config,
+    T: pallet_duniter_test_parameters::Config,
+    T: pallet_authority_members::Config,
+    T: pallet_session::Config,
+    T: pallet_balances::Config,
+    T: pallet_provide_randomness::Config,
+    T: pallet_treasury::Config,
+    T: pallet_identity::Config,
+    T: pallet_offences::Config,
+    T: pallet_scheduler::Config,
+    T: pallet_oneshot_account::Config,
+    T: pallet_atomic_swap::Config,
+    T: pallet_proxy::Config,
+    T: pallet_multisig::Config,
+    T: pallet_duniter_account::Config,
+    <T as pallet_identity::Config>::IdtyIndex: std::hash::Hash,
+    <T as pallet_identity::Config>::IdtyData: std::fmt::Debug,
+    <T as pallet_authority_members::Config>::MemberId: std::hash::Hash,
+    <T as pallet_session::Config>::ValidatorId: std::hash::Hash,
+{
+    pub fn new_default(get_metadata: fn() -> RuntimeMetadata) -> StorageChecker<T> {
+        StorageChecker {
+            get_metadata,
+            phantom: PhantomData,
+        }
+    }
+
+    /// Test our currently expected state against the real state in the Storage.
+    /// **Must be tested under an externalities-provided environment.**
+    /// `expected_keys_count` is the number of storage items that we expect to find in the Runtime.
+    pub fn test_storage(&self, expected_keys_count: u32, expected_file: &str) {
+        self.expect_storage(
+            self.get_metadata,
+            expected_keys_count,
+            expected_file.to_string(),
+        );
+    }
+
+    /// Test static keys of Substrate
+    pub fn test_well_known_keys(&self, externalities: &mut TestExternalities) {
+        let binding = externalities.as_backend();
+        let backend = binding.as_trie_backend();
+        let keys_in_trie = backend.keys(&[]);
+        let mut well_known: Vec<String> = vec![];
+        for x in &keys_in_trie {
+            if let Ok(v) = String::from_utf8(x.clone()) {
+                well_known.push(format!("{}", v));
+            }
+        }
+        assert_eq!(well_known[0], ":code");
+        // TODO: assert_eq!(well_known[1], ":extrinsic_index");
+        // TODO: assert_eq!(well_known[2], ":grandpa_authorities");
+        // assert_eq!(well_known.len(), 1);
+    }
+
+    /// Explores the Runtime to retrive all storage entries (pallet.storage_name) and compare the values
+    /// against our expected values in golden testing format.
+    fn expect_storage(
+        &self,
+        get_metadata: fn() -> RuntimeMetadata,
+        expected_keys_count: u32,
+        expected_file: String,
+    ) {
+        // Golden testing part
+        let meta = get_metadata();
+        let mut entries_count = 0u32;
+        // Explore the Runtime to fetch the storage entries
+        let mut tested: Vec<Checker> = extract_storage_entries_normalized(&meta)
+            .unwrap()
+            .into_iter()
+            .map(|se| {
+                entries_count = entries_count.add(1);
+                let e = format!("{}.{}", se.pallet_name, se.storage_name);
+                if let Ok(key) = Key::try_from(e.clone()) {
+                    // Specific
+                    key.to_checker::<T>()
+                } else {
+                    panic!(
+                        "{}.{} must implement TryFrom",
+                        se.pallet_name.as_str(),
+                        se.storage_name.as_str()
+                    );
+                }
+            })
+            .collect();
+        tested.sort_by_key(|c| c.to_dotted_form());
+        let tested_len = *(&tested.len()) as u32;
+        // The golden comparison
+        compare_with_storage(tested, expected_file);
+        // Check the quantities
+        assert_eq!(expected_keys_count, entries_count);
+        assert_eq!(expected_keys_count, tested_len);
+    }
+}
diff --git a/client/dump/src/key.rs b/client/dump/src/key.rs
new file mode 100644
index 0000000000000000000000000000000000000000..02f047fefb8cc99ff2e7cf8c70bf9e7db9740766
--- /dev/null
+++ b/client/dump/src/key.rs
@@ -0,0 +1,1176 @@
+use crate::checker::Checker;
+use crate::private::*;
+use bytes::Bytes;
+use codec::{Decode, Error, FullCodec};
+use common_runtime::entities::IdtyData;
+use common_runtime::{AccountId, BlockNumber, IdtyIndex};
+use frame_support::instances::{Instance1, Instance2};
+use frame_support::metadata::RuntimeMetadata;
+use frame_support::storage::{storage_prefix, KeyPrefixIterator, PrefixIterator};
+use frame_support::traits::schedule::v3::TaskName;
+use frame_support::traits::{Currency, Len, WrapperOpaque};
+use frame_support::{
+    Blake2_128Concat, Hashable, Identity, ReversibleStorageHasher, StorageHasher, Twox64Concat,
+};
+use frame_system::{AccountInfo, ConsumedWeight, EventRecord, Phase};
+use gdev_runtime::opaque::SessionKeys;
+use gdev_runtime::Runtime;
+use maplit::btreemap;
+use pallet_authority_members::MemberData;
+use pallet_balances::{AccountData, ReserveData};
+use pallet_certification::IdtyCertMeta;
+use pallet_collective::Votes;
+use pallet_grandpa::BoundedAuthorityList;
+use pallet_identity::{IdtyName, IdtyValue};
+use pallet_im_online::{AuthIndex, ValidatorId};
+use pallet_offences::Config;
+use pallet_preimage::RequestStatus;
+use pallet_provide_randomness::RequestId;
+use pallet_scheduler::{ScheduledOf, TaskAddress};
+use pretty_assertions::assert_eq;
+use sp_api::{AsTrieBackend, StateBackend};
+use sp_arithmetic::traits::UniqueSaturatedInto;
+use sp_consensus_babe::digests::{NextConfigDescriptor, PreDigest};
+use sp_consensus_babe::{AuthorityId, BabeAuthorityWeight, BabeEpochConfiguration};
+use sp_consensus_vrf::schnorrkel;
+use sp_core::bounded::{BoundedVec, WeakBoundedVec};
+use sp_core::crypto::{AccountId32, KeyTypeId};
+use sp_core::{ConstU32, Get, TypedGet};
+use sp_finality_grandpa::SetId;
+use sp_io::TestExternalities;
+use sp_runtime::{generic, RuntimeString};
+use sp_std::map;
+use std::collections::{BTreeMap, HashMap};
+use std::fmt::{format, Debug, Formatter};
+use std::iter::Map;
+use std::ops::Add;
+use std::ptr::read;
+use std::str::FromStr;
+use std::string::FromUtf8Error;
+
+/// A convenient enum to represent the expected Storage keys for GDev.
+/// For each key we can fetch the storage without static typing notation.
+#[derive(strum_macros::EnumString)]
+pub enum Key {
+    SystemNumber,
+    SystemParentHash,
+    SystemLastRuntimeUpgrade,
+    SystemUpgradedToU32RefCount,
+    SystemUpgradedToTripleRefCount,
+    SystemAccount,
+    SystemBlockHash,
+    SystemExtrinsicData,
+    SystemEventTopics,
+    SystemAllExtrinsicsLen,
+    SystemExtrinsicCount,
+    SystemBlockWeight,
+    SystemDigest,
+    SystemEvents,
+    SystemEventCount,
+    SystemExecutionPhase,
+    SudoKey,
+    UniversalDividendCurrentUd,
+    UniversalDividendCurrentUdIndex,
+    UniversalDividendMonetaryMass,
+    UniversalDividendNextReeval,
+    UniversalDividendPastReevals,
+    IdentityCounterForIdentities,
+    IdentityNextIdtyIndex,
+    IdentityIdentitiesNames,
+    IdentityIdentities,
+    MembershipCounterForMembership,
+    SmithMembershipCounterForMembership,
+    ProvideRandomnessNexEpochHookIn,
+    ProvideRandomnessRequestsReadyAtEpoch,
+    ProvideRandomnessRequestsIds,
+    ProvideRandomnessCounterForRequestsIds,
+    ProvideRandomnessRequestIdProvider,
+    ProvideRandomnessRequestsReadyAtNextBlock,
+    TransactionPaymentNextFeeMultiplier,
+    TransactionPaymentStorageVersion,
+    AuthorshipAuthor,
+    AuthorshipUncles,
+    AuthorshipDidSetUncles,
+    BabeInitialized,
+    BabeAuthorities,
+    BabeNextAuthorities,
+    BabeAuthorVrfRandomness,
+    BabeCurrentSlot,
+    BabeEpochConfig,
+    BabeEpochIndex,
+    BabeEpochStart,
+    BabeGenesisSlot,
+    BabeLateness,
+    BabeNextEpochConfig,
+    BabeNextRandomness,
+    BabePendingEpochConfigChange,
+    BabeRandomness,
+    BabeSegmentIndex,
+    ParametersParametersStorage,
+    AuthorityMembersAuthoritiesCounter,
+    AuthorityMembersOnlineAuthorities,
+    AuthorityMembersOutgoingAuthorities,
+    AuthorityMembersIncomingAuthorities,
+    AuthorityMembersBlackList,
+    SessionCurrentIndex,
+    SessionDisabledValidators,
+    SessionKeyOwner,
+    SessionNextKeys,
+    SessionQueuedChanged,
+    SessionQueuedKeys,
+    SessionValidators,
+    ImOnlineKeys,
+    ImOnlineHeartbeatAfter,
+    AccountPendingRandomIdAssignments,
+    AccountPendingNewAccounts,
+    SchedulerAgenda,
+    SchedulerIncompleteSince,
+    SchedulerLookup,
+    BabeUnderConstruction,
+    BalancesAccount,
+    BalancesLocks,
+    BalancesReserves,
+    BalancesStorageVersion,
+    BalancesTotalIssuance,
+    OneshotAccountOneshotAccounts,
+    AuthorityMembersAccountIdOf,
+    AuthorityMembersMembers,
+    AuthorityMembersMembersExpireOn,
+    AuthorityMembersMustRotateKeysBefore,
+    OffencesReports,
+    OffencesConcurrentReportsIndex,
+    GrandpaCurrentSetId,
+    GrandpaSetIdSession,
+    GrandpaNextForced,
+    GrandpaPendingChange,
+    GrandpaStalled,
+    GrandpaState,
+    ImOnlineReceivedHeartbeats,
+    ImOnlineAuthoredBlocks,
+    PreimageStatusFor,
+    PreimagePreimageFor,
+    TechnicalCommitteeProposalOf,
+    TechnicalCommitteeVoting,
+    TechnicalCommitteeProposals,
+    TechnicalCommitteeMembers,
+    TechnicalCommitteePrime,
+    TechnicalCommitteeProposalCount,
+    IdentityIdentityIndexOf,
+    IdentityIdentitiesRemovableOn,
+    MembershipMembership,
+    MembershipMembershipsExpireOn,
+    MembershipPendingMembership,
+    MembershipPendingMembershipsExpireOn,
+    CertStorageIdtyCertMeta,
+    CertCertsByReceiver,
+    CertStorageCertsRemovableOn,
+    SmithMembershipMembership,
+    SmithMembershipMembershipsExpireOn,
+    SmithMembershipPendingMembership,
+    SmithMembershipPendingMembershipsExpireOn,
+    SmithCertStorageIdtyCertMeta,
+    SmithCertCertsByReceiver,
+    SmithCertStorageCertsRemovableOn,
+    AtomicSwapPendingSwaps,
+    MultisigMultisigs,
+    ProxyProxies,
+    ProxyAnnouncements,
+    TreasuryProposals,
+    TreasuryProposalCount,
+    TreasuryApprovals,
+    TimestampDidUpdate,
+    TimestampNow,
+}
+
+trait RuntimeCompliant: frame_system::Config {}
+
+impl Key {
+    pub fn to_checker<T>(self) -> Checker
+    where
+        T: frame_system::Config,
+        <T as frame_system::Config>::AccountId: std::hash::Hash,
+        T: pallet_babe::Config,
+        T: pallet_im_online::Config,
+        T: pallet_certification::Config<Instance1>,
+        T: pallet_certification::Config<Instance2>,
+        T: pallet_universal_dividend::Config,
+        T: pallet_authorship::Config,
+        T: pallet_duniter_test_parameters::Config,
+        T: pallet_authority_members::Config,
+        T: pallet_session::Config,
+        T: pallet_balances::Config,
+        T: pallet_provide_randomness::Config,
+        T: pallet_treasury::Config,
+        T: pallet_identity::Config,
+        T: pallet_offences::Config,
+        T: pallet_scheduler::Config,
+        T: pallet_oneshot_account::Config,
+        T: pallet_atomic_swap::Config,
+        T: pallet_proxy::Config,
+        T: pallet_multisig::Config,
+        T: pallet_duniter_account::Config,
+        <T as pallet_identity::Config>::IdtyIndex: std::hash::Hash,
+        <T as pallet_identity::Config>::IdtyData: std::fmt::Debug,
+        <T as pallet_authority_members::Config>::MemberId: std::hash::Hash,
+        <T as pallet_session::Config>::ValidatorId: std::hash::Hash,
+    {
+        let k = self.name();
+        let single_value = self.to_value::<T>();
+        let map_key_values = self.to_map_value::<T>();
+        Checker::new(
+            k.pallet.as_str(),
+            k.storage.as_str(),
+            single_value,
+            map_key_values,
+        )
+    }
+
+    /// Provides the KeyName of a known Storage Key
+    pub(crate) fn name(&self) -> KeyName {
+        match self {
+            Key::SystemNumber => KeyName::new("System", "Number"),
+            Key::SystemParentHash => KeyName::new("System", "ParentHash"),
+            Key::SystemLastRuntimeUpgrade => KeyName::new("System", "LastRuntimeUpgrade"),
+            Key::SystemUpgradedToU32RefCount => KeyName::new("System", "UpgradedToU32RefCount"),
+            Key::SystemUpgradedToTripleRefCount => {
+                KeyName::new("System", "UpgradedToTripleRefCount")
+            }
+            Key::SystemAccount => KeyName::new("System", "Account"),
+            Key::SystemBlockHash => KeyName::new("System", "BlockHash"),
+            Key::SystemExtrinsicData => KeyName::new("System", "ExtrinsicData"),
+            Key::SystemEventTopics => KeyName::new("System", "EventTopics"),
+            Key::SystemAllExtrinsicsLen => KeyName::new("System", "AllExtrinsicsLen"),
+            Key::SystemExtrinsicCount => KeyName::new("System", "ExtrinsicCount"),
+            Key::SystemBlockWeight => KeyName::new("System", "BlockWeight"),
+            Key::SystemDigest => KeyName::new("System", "Digest"),
+            Key::SystemEvents => KeyName::new("System", "Events"),
+            Key::SystemEventCount => KeyName::new("System", "EventCount"),
+            Key::SystemExecutionPhase => KeyName::new("System", "ExecutionPhase"),
+            Key::SudoKey => KeyName::new("Sudo", "Key"),
+            Key::UniversalDividendCurrentUd => KeyName::new("UniversalDividend", "CurrentUd"),
+            Key::UniversalDividendCurrentUdIndex => {
+                KeyName::new("UniversalDividend", "CurrentUdIndex")
+            }
+            Key::UniversalDividendMonetaryMass => KeyName::new("UniversalDividend", "MonetaryMass"),
+            Key::UniversalDividendNextReeval => KeyName::new("UniversalDividend", "NextReeval"),
+            Key::UniversalDividendPastReevals => KeyName::new("UniversalDividend", "PastReevals"),
+            Key::IdentityCounterForIdentities => KeyName::new("Identity", "CounterForIdentities"),
+            Key::IdentityNextIdtyIndex => KeyName::new("Identity", "NextIdtyIndex"),
+            Key::IdentityIdentities => KeyName::new("Identity", "Identities"),
+            Key::IdentityIdentitiesNames => KeyName::new("Identity", "IdentitiesNames"),
+            Key::MembershipCounterForMembership => {
+                KeyName::new("Membership", "CounterForMembership")
+            }
+            Key::SmithMembershipCounterForMembership => {
+                KeyName::new("SmithMembership", "CounterForMembership")
+            }
+            Key::ProvideRandomnessNexEpochHookIn => {
+                KeyName::new("ProvideRandomness", "NexEpochHookIn")
+            }
+            Key::ProvideRandomnessCounterForRequestsIds => {
+                KeyName::new("ProvideRandomness", "CounterForRequestsIds")
+            }
+            Key::ProvideRandomnessRequestIdProvider => {
+                KeyName::new("ProvideRandomness", "RequestIdProvider")
+            }
+            Key::ProvideRandomnessRequestsReadyAtNextBlock => {
+                KeyName::new("ProvideRandomness", "RequestsReadyAtNextBlock")
+            }
+            Key::TransactionPaymentNextFeeMultiplier => {
+                KeyName::new("TransactionPayment", "NextFeeMultiplier")
+            }
+            Key::TransactionPaymentStorageVersion => {
+                KeyName::new("TransactionPayment", "StorageVersion")
+            }
+            Key::AuthorshipAuthor => KeyName::new("Authorship", "Author"),
+            Key::AuthorshipUncles => KeyName::new("Authorship", "Uncles"),
+            Key::AuthorshipDidSetUncles => KeyName::new("Authorship", "DidSetUncles"),
+            Key::BabeInitialized => KeyName::new("Babe", "Initialized"),
+            Key::BabeAuthorities => KeyName::new("Babe", "Authorities"),
+            Key::BabeNextAuthorities => KeyName::new("Babe", "NextAuthorities"),
+            Key::BabeAuthorVrfRandomness => KeyName::new("Babe", "AuthorVrfRandomness"),
+            Key::BabeCurrentSlot => KeyName::new("Babe", "CurrentSlot"),
+            Key::BabeEpochConfig => KeyName::new("Babe", "EpochConfig"),
+            Key::BabeEpochIndex => KeyName::new("Babe", "EpochIndex"),
+            Key::BabeEpochStart => KeyName::new("Babe", "EpochStart"),
+            Key::BabeGenesisSlot => KeyName::new("Babe", "GenesisSlot"),
+            Key::BabeLateness => KeyName::new("Babe", "Lateness"),
+            Key::BabeNextEpochConfig => KeyName::new("Babe", "NextEpochConfig"),
+            Key::BabeNextRandomness => KeyName::new("Babe", "NextRandomness"),
+            Key::BabePendingEpochConfigChange => KeyName::new("Babe", "PendingEpochConfigChange"),
+            Key::BabeRandomness => KeyName::new("Babe", "Randomness"),
+            Key::BabeSegmentIndex => KeyName::new("Babe", "SegmentIndex"),
+            Key::ParametersParametersStorage => KeyName::new("Parameters", "ParametersStorage"),
+            Key::AuthorityMembersAuthoritiesCounter => {
+                KeyName::new("AuthorityMembers", "AuthoritiesCounter")
+            }
+            Key::AuthorityMembersOnlineAuthorities => {
+                KeyName::new("AuthorityMembers", "OnlineAuthorities")
+            }
+            Key::AuthorityMembersOutgoingAuthorities => {
+                KeyName::new("AuthorityMembers", "OutgoingAuthorities")
+            }
+            Key::AuthorityMembersIncomingAuthorities => {
+                KeyName::new("AuthorityMembers", "IncomingAuthorities")
+            }
+            Key::AuthorityMembersBlackList => KeyName::new("AuthorityMembers", "BlackList"),
+            Key::SessionCurrentIndex => KeyName::new("Session", "CurrentIndex"),
+            Key::SessionDisabledValidators => KeyName::new("Session", "DisabledValidators"),
+            Key::SessionKeyOwner => KeyName::new("Session", "KeyOwner"),
+            Key::SessionNextKeys => KeyName::new("Session", "NextKeys"),
+            Key::SessionQueuedChanged => KeyName::new("Session", "QueuedChanged"),
+            Key::SessionQueuedKeys => KeyName::new("Session", "QueuedKeys"),
+            Key::SessionValidators => KeyName::new("Session", "Validators"),
+            Key::ImOnlineKeys => KeyName::new("ImOnline", "Keys"),
+            Key::ImOnlineHeartbeatAfter => KeyName::new("ImOnline", "HeartbeatAfter"),
+            Key::AccountPendingRandomIdAssignments => {
+                KeyName::new("Account", "PendingRandomIdAssignments")
+            }
+            Key::AccountPendingNewAccounts => KeyName::new("Account", "PendingNewAccounts"),
+            Key::SchedulerAgenda => KeyName::new("Scheduler", "Agenda"),
+            Key::SchedulerIncompleteSince => KeyName::new("Scheduler", "IncompleteSince"),
+            Key::SchedulerLookup => KeyName::new("Scheduler", "Lookup"),
+            Key::BabeUnderConstruction => KeyName::new("Babe", "UnderConstruction"),
+            Key::BalancesAccount => KeyName::new("Balances", "Account"),
+            Key::BalancesLocks => KeyName::new("Balances", "Locks"),
+            Key::BalancesReserves => KeyName::new("Balances", "Reserves"),
+            Key::BalancesStorageVersion => KeyName::new("Balances", "StorageVersion"),
+            Key::BalancesTotalIssuance => KeyName::new("Balances", "TotalIssuance"),
+            Key::OneshotAccountOneshotAccounts => KeyName::new("OneshotAccount", "OneshotAccounts"),
+            Key::AuthorityMembersAccountIdOf => KeyName::new("AuthorityMembers", "AccountIdOf"),
+            Key::AuthorityMembersMembers => KeyName::new("AuthorityMembers", "Members"),
+            Key::AuthorityMembersMembersExpireOn => {
+                KeyName::new("AuthorityMembersMembers", "ExpireOn")
+            }
+            Key::AuthorityMembersMustRotateKeysBefore => {
+                KeyName::new("AuthorityMembers", "MustRotateKeysBefore")
+            }
+            Key::OffencesReports => KeyName::new("Offences", "Reports"),
+            Key::OffencesConcurrentReportsIndex => {
+                KeyName::new("Offences", "ConcurrentReportsIndex")
+            }
+            Key::GrandpaCurrentSetId => KeyName::new("Grandpa", "CurrentSetId"),
+            Key::GrandpaSetIdSession => KeyName::new("Grandpa", "SetIdSession"),
+            Key::GrandpaNextForced => KeyName::new("Grandpa", "NextForced"),
+            Key::GrandpaPendingChange => KeyName::new("Grandpa", "PendingChange"),
+            Key::GrandpaStalled => KeyName::new("Grandpa", "Stalled"),
+            Key::GrandpaState => KeyName::new("Grandpa", "State"),
+            Key::ImOnlineReceivedHeartbeats => KeyName::new("ImOnline", "ReceivedHeartbeats"),
+            Key::ImOnlineAuthoredBlocks => KeyName::new("ImOnline", "AuthoredBlocks"),
+            Key::PreimageStatusFor => KeyName::new("Preimage", "StatusFor"),
+            Key::PreimagePreimageFor => KeyName::new("Preimage", "PreimageFor"),
+            Key::TechnicalCommitteeProposalOf => KeyName::new("TechnicalCommittee", "ProposalOf"),
+            Key::TechnicalCommitteeVoting => KeyName::new("TechnicalCommittee", "Voting"),
+            Key::TechnicalCommitteeProposals => KeyName::new("TechnicalCommittee", "Proposals"),
+            Key::TechnicalCommitteeMembers => KeyName::new("TechnicalCommittee", "Members"),
+            Key::TechnicalCommitteePrime => KeyName::new("TechnicalCommittee", "Prime"),
+            Key::TechnicalCommitteeProposalCount => {
+                KeyName::new("TechnicalCommittee", "ProposalCount")
+            }
+            Key::IdentityIdentityIndexOf => KeyName::new("Identity", "IdentityIndexOf"),
+            Key::IdentityIdentitiesRemovableOn => KeyName::new("Identity", "IdentitiesRemovableOn"),
+            Key::MembershipMembership => KeyName::new("Membership", "Membership"),
+            Key::MembershipMembershipsExpireOn => KeyName::new("Membership", "MembershipsExpireOn"),
+            Key::MembershipPendingMembership => KeyName::new("Membership", "PendingMembership"),
+            Key::MembershipPendingMembershipsExpireOn => {
+                KeyName::new("Membership", "PendingMembershipsExpireOn")
+            }
+            Key::CertStorageIdtyCertMeta => KeyName::new("Cert", "StorageIdtyCertMeta"),
+            Key::CertCertsByReceiver => KeyName::new("Cert", "CertsByReceiver"),
+            Key::CertStorageCertsRemovableOn => KeyName::new("Cert", "StorageCertsRemovableOn"),
+            Key::SmithMembershipMembership => KeyName::new("SmithMembership", "Membership"),
+            Key::SmithMembershipMembershipsExpireOn => {
+                KeyName::new("SmithMembership", "MembershipsExpireOn")
+            }
+            Key::SmithMembershipPendingMembership => {
+                KeyName::new("SmithMembership", "PendingMembership")
+            }
+            Key::SmithMembershipPendingMembershipsExpireOn => {
+                KeyName::new("SmithMembership", "PendingMembershipsExpireOn")
+            }
+            Key::SmithCertStorageIdtyCertMeta => KeyName::new("SmithCert", "StorageIdtyCertMeta"),
+            Key::SmithCertCertsByReceiver => KeyName::new("SmithCertCert", "sByReceiver"),
+            Key::SmithCertStorageCertsRemovableOn => {
+                KeyName::new("SmithCert", "StorageCertsRemovableOn")
+            }
+            Key::AtomicSwapPendingSwaps => KeyName::new("AtomicSwap", "PendingSwaps"),
+            Key::MultisigMultisigs => KeyName::new("Multisig", "Multisigs"),
+            Key::ProvideRandomnessRequestsReadyAtEpoch => {
+                KeyName::new("ProvideRandomness", "RequestsReadyAtEpoch")
+            }
+            Key::ProvideRandomnessRequestsIds => KeyName::new("ProvideRandomness", "RequestsIds"),
+            Key::ProxyProxies => KeyName::new("Proxy", "Proxies"),
+            Key::ProxyAnnouncements => KeyName::new("Proxy", "Announcements"),
+            Key::TreasuryProposals => KeyName::new("Treasury", "Proposals"),
+            Key::TreasuryProposalCount => KeyName::new("Treasury", "ProposalCount"),
+            Key::TreasuryApprovals => KeyName::new("Treasury", "Approvals"),
+            Key::TimestampDidUpdate => KeyName::new("Timestamp", "DidUpdate"),
+            Key::TimestampNow => KeyName::new("Timestamp", "Now"),
+        }
+    }
+
+    pub fn to_value<T>(&self) -> Option<Box<dyn Debug>>
+    where
+        T: frame_system::Config,
+        T: pallet_babe::Config,
+        T: pallet_im_online::Config,
+        T: pallet_universal_dividend::Config,
+        T: pallet_authorship::Config,
+        T: pallet_duniter_test_parameters::Config,
+        T: pallet_authority_members::Config,
+        T: pallet_session::Config,
+        T: pallet_balances::Config,
+        T: pallet_provide_randomness::Config,
+        T: pallet_treasury::Config,
+        T: pallet_scheduler::Config,
+    {
+        match self {
+            // Maps
+            Key::SystemNumber => {
+                // Box::new(frame_system::Number::<T>::get())
+                self.read_storage::<<T as frame_system::Config>::BlockNumber>()
+            }
+            Key::SystemParentHash => {
+                // Box::new(frame_system::ParentHash::<T>::get())
+                self.read_storage::<<T as frame_system::Config>::Hash>()
+            }
+            Key::SystemLastRuntimeUpgrade => {
+                Some(Box::new(frame_system::LastRuntimeUpgrade::<T>::get()))
+            }
+            Key::SystemUpgradedToU32RefCount => {
+                // Box::new(frame_system::UpgradedToU32RefCount::<T>::get())
+                self.read_storage::<bool>()
+            }
+            Key::SystemUpgradedToTripleRefCount => {
+                // Box::new(frame_system::UpgradedToTripleRefCount::<T>::get())
+                self.read_storage::<bool>()
+            }
+            Key::SystemExtrinsicData => None,
+            Key::SystemEventTopics => None,
+            Key::SystemAccount => None,
+            Key::SystemBlockHash => None,
+            Key::SystemAllExtrinsicsLen => {
+                // Box::new(frame_system::AllExtrinsicsLen::<T>::get())
+                self.read_storage::<u32>()
+            }
+            Key::SystemExtrinsicCount => {
+                // Box::new(frame_system::ExtrinsicCount::<T>::get())
+                self.read_storage::<u32>()
+            }
+            Key::SystemBlockWeight => {
+                // Box::new(frame_system::BlockWeight::<T>::get())
+                self.read_storage::<ConsumedWeight>()
+            }
+            Key::SystemDigest => {
+                // Box::new(frame_system::Digest::<T>::get())
+                self.read_storage::<generic::Digest>()
+            }
+            Key::SystemEvents => {
+                // Box::new(frame_system::Events::<T>::get())
+                self.read_storage::<Vec<
+                    Box<
+                        EventRecord<
+                            <T as frame_system::Config>::RuntimeEvent,
+                            <T as frame_system::Config>::Hash,
+                        >,
+                    >,
+                >>()
+            }
+            Key::SystemEventCount => {
+                // Box::new(frame_system::EventCount::<T>::get())
+                self.read_storage::<u32>()
+            }
+            Key::SystemExecutionPhase => {
+                // Box::new(frame_system::ExecutionPhase::<T>::get())
+                self.read_storage::<Phase>()
+            }
+            Key::SudoKey => {
+                // Box::new(pallet_sudo::Key::<T>::get())
+                self.read_storage::<<T as frame_system::Config>::AccountId>()
+            }
+            Key::UniversalDividendCurrentUd => {
+                Some(Box::new(pallet_universal_dividend::CurrentUd::<T>::get()))
+            }
+            Key::UniversalDividendCurrentUdIndex => Some(Box::new(
+                pallet_universal_dividend::CurrentUdIndex::<T>::get(),
+            )),
+            Key::UniversalDividendMonetaryMass => {
+                Some(Box::new(pallet_universal_dividend::MonetaryMass::<T>::get()))
+            }
+            Key::UniversalDividendNextReeval => {
+                Some(Box::new(pallet_universal_dividend::NextReeval::<T>::get()))
+            }
+            Key::UniversalDividendPastReevals => {
+                Some(Box::new(pallet_universal_dividend::PastReevals::<T>::get()))
+            }
+            Key::IdentityCounterForIdentities => self.read_storage::<u32>(),
+            Key::IdentityNextIdtyIndex => {
+                // Box::new(pallet_identity::NextIdtyIndex::<T>::get())
+                self.read_storage::<u32>()
+            }
+            Key::IdentityIdentitiesNames => None,
+            Key::IdentityIdentities => None,
+            Key::MembershipCounterForMembership => self.read_storage::<u32>(),
+            Key::SmithMembershipCounterForMembership => self.read_storage::<u32>(),
+            Key::ProvideRandomnessNexEpochHookIn => {
+                // Box::new(pallet_provide_randomness::NexEpochHookIn::<T>::get())
+                self.read_storage::<u8>()
+            }
+            Key::ProvideRandomnessCounterForRequestsIds => self.read_storage::<u32>(),
+            Key::ProvideRandomnessRequestIdProvider => {
+                // Box::new(pallet_provide_randomness::RequestIdProvider::<T>::get())
+                self.read_storage::<RequestId>()
+            }
+            Key::ProvideRandomnessRequestsReadyAtNextBlock => Some(Box::new(
+                pallet_provide_randomness::RequestsReadyAtNextBlock::<T>::get(),
+            )),
+            Key::TransactionPaymentNextFeeMultiplier => {
+                Some(Box::new(pallet_transaction_payment::NextFeeMultiplier::<
+                    Runtime,
+                >::get()))
+            }
+            Key::TransactionPaymentStorageVersion => self.read_storage::<Releases>(),
+            Key::AuthorshipAuthor => {
+                // Box::new(pallet_authorship::Author::<T>::get())
+                self.read_storage::<Option<PreDigest>>()
+            }
+            Key::AuthorshipUncles => {
+                // Box::new(pallet_authorship::Uncles::<T>::get())
+                self.read_storage::<BoundedVec<
+                    UncleEntryItem<
+                        <T as frame_system::Config>::BlockNumber,
+                        <T as frame_system::Config>::Hash,
+                        <T as frame_system::Config>::AccountId,
+                    >,
+                    MaxUncleEntryItems<T>,
+                >>()
+            }
+            Key::AuthorshipDidSetUncles => {
+                // Box::new(pallet_authorship::DidSetUncles::<T>::get())
+                self.read_storage::<bool>()
+            }
+            Key::BabeInitialized => {
+                // Box::new(pallet_babe::Initialized::<T>::get())
+                self.read_storage::<Option<PreDigest>>()
+            }
+            Key::BabeAuthorities => Some(Box::new(pallet_babe::Authorities::<T>::get())),
+            Key::BabeNextAuthorities => {
+                // Box::new(pallet_babe::NextAuthorities::<T>::get())
+                self.read_storage::<WeakBoundedVec<
+                    (AuthorityId, BabeAuthorityWeight),
+                    <T as pallet_babe::Config>::MaxAuthorities,
+                >>()
+            }
+            Key::BabeAuthorVrfRandomness => {
+                // Box::new(pallet_babe::AuthorVrfRandomness::<T>::get())
+                self.read_storage::<Option<schnorrkel::Randomness>>()
+            }
+            Key::BabeCurrentSlot => Some(Box::new(pallet_babe::CurrentSlot::<T>::get())),
+            Key::BabeEpochConfig => {
+                // Box::new(pallet_babe::EpochConfig::<T>::get())
+                self.read_storage::<BabeEpochConfiguration>()
+            }
+            Key::BabeEpochIndex => Some(Box::new(pallet_babe::EpochIndex::<T>::get())),
+            Key::BabeEpochStart => {
+                // Box::new(pallet_babe::EpochStart::<T>::get())
+                self.read_storage::<(
+                    <T as frame_system::Config>::BlockNumber,
+                    <T as frame_system::Config>::BlockNumber,
+                )>()
+            }
+            Key::BabeGenesisSlot => Some(Box::new(pallet_babe::GenesisSlot::<T>::get())),
+            Key::BabeLateness => {
+                // Box::new(pallet_babe::Lateness::<T>::get())
+                self.read_storage::<<T as frame_system::Config>::BlockNumber>()
+            }
+            Key::BabeNextEpochConfig => {
+                // Box::new(pallet_babe::NextEpochConfig::<T>::get())
+                self.read_storage::<BabeEpochConfiguration>()
+            }
+            Key::BabeNextRandomness => {
+                // Box::new(pallet_babe::NextRandomness::<T>::get())
+                self.read_storage::<schnorrkel::Randomness>()
+            }
+            Key::BabePendingEpochConfigChange => {
+                // Box::new(pallet_babe::PendingEpochConfigChange::<T>::get())
+                self.read_storage::<NextConfigDescriptor>()
+            }
+            Key::BabeRandomness => Some(Box::new(pallet_babe::Randomness::<T>::get())),
+            Key::BabeSegmentIndex => {
+                // Box::new(pallet_babe::SegmentIndex::<T>::get())
+                self.read_storage::<u32>()
+            }
+            Key::ParametersParametersStorage => Some(Box::new(
+                pallet_duniter_test_parameters::ParametersStorage::<T>::get(),
+            )),
+            Key::AuthorityMembersAuthoritiesCounter => {
+                Some(Box::new(pallet_authority_members::AuthoritiesCounter::<
+                    Runtime,
+                >::get()))
+            }
+            Key::AuthorityMembersOnlineAuthorities => {
+                Some(Box::new(pallet_authority_members::OnlineAuthorities::<
+                    Runtime,
+                >::get()))
+            }
+            Key::AuthorityMembersOutgoingAuthorities => {
+                Some(Box::new(pallet_authority_members::OutgoingAuthorities::<
+                    Runtime,
+                >::get()))
+            }
+            Key::AuthorityMembersIncomingAuthorities => {
+                Some(Box::new(pallet_authority_members::IncomingAuthorities::<
+                    Runtime,
+                >::get()))
+            }
+            Key::AuthorityMembersBlackList => {
+                Some(Box::new(pallet_authority_members::BlackList::<T>::get()))
+            }
+            Key::SessionCurrentIndex => Some(Box::new(pallet_session::CurrentIndex::<T>::get())),
+            Key::SessionDisabledValidators => Some(Box::new(pallet_session::DisabledValidators::<
+                Runtime,
+            >::get())),
+            Key::SessionQueuedChanged => Some(Box::new(pallet_session::QueuedChanged::<T>::get())),
+            Key::SessionKeyOwner => None,
+            Key::SessionNextKeys => None,
+            Key::SessionQueuedKeys => Some(Box::new(pallet_session::QueuedKeys::<T>::get())),
+            Key::SessionValidators => Some(Box::new(pallet_session::Validators::<T>::get())),
+            Key::ImOnlineKeys => {
+                // Box::new(pallet_im_online::Keys::<T>::get())
+                self.read_storage::<WeakBoundedVec<
+                    <T as pallet_im_online::Config>::AuthorityId,
+                    <T as pallet_im_online::Config>::MaxKeys,
+                >>()
+            }
+            Key::ImOnlineHeartbeatAfter => {
+                // Box::new(pallet_im_online::HeartbeatAfter::<T>::get())
+                self.read_storage::<<T as frame_system::Config>::BlockNumber>()
+            }
+            Key::AccountPendingRandomIdAssignments => None,
+            Key::AccountPendingNewAccounts => None,
+            Key::SchedulerAgenda => None,
+            Key::SchedulerIncompleteSince => {
+                Some(Box::new(pallet_scheduler::IncompleteSince::<T>::get()))
+            }
+            Key::SchedulerLookup => None,
+            Key::BabeUnderConstruction => None,
+            Key::BalancesAccount => None,
+            Key::BalancesLocks => None,
+            Key::BalancesReserves => None,
+            Key::BalancesStorageVersion => {
+                // Box::new(pallet_balances::StorageVersion::<T>::get())
+                self.read_storage::<Releases>()
+            }
+            Key::BalancesTotalIssuance => {
+                Some(Box::new(pallet_balances::TotalIssuance::<T>::get()))
+            }
+            Key::OneshotAccountOneshotAccounts => None,
+            Key::AuthorityMembersAccountIdOf => None,
+            Key::AuthorityMembersMembers => None,
+            Key::AuthorityMembersMembersExpireOn => None,
+            Key::AuthorityMembersMustRotateKeysBefore => None,
+            Key::OffencesReports => None,
+            Key::OffencesConcurrentReportsIndex => None,
+            Key::GrandpaCurrentSetId => {
+                // Box::new(pallet_grandpa::CurrentSetId::<T>::get())
+                self.read_storage::<SetId>()
+            }
+            Key::GrandpaSetIdSession => None,
+            Key::GrandpaNextForced => {
+                // Box::new(pallet_grandpa::NextForced::<T>::get())
+                self.read_storage::<<T as frame_system::Config>::BlockNumber>()
+            }
+            Key::GrandpaPendingChange => {
+                // Box::new(pallet_grandpa::PendingChange::<T>::get())
+                self.read_storage::<StoredPendingChange<
+                    <T as frame_system::Config>::BlockNumber,
+                    MyConstU32<32>,
+                >>()
+            }
+            Key::GrandpaStalled => {
+                // Box::new(pallet_grandpa::Stalled::<T>::get())
+                self.read_storage::<(
+                    <T as frame_system::Config>::BlockNumber,
+                    <T as frame_system::Config>::BlockNumber,
+                )>()
+            }
+            Key::GrandpaState => {
+                // Box::new(pallet_grandpa::State::<T>::get())
+                self.read_storage::<StoredState<<T as frame_system::Config>::BlockNumber>>()
+            }
+            Key::ImOnlineReceivedHeartbeats => None,
+            Key::ImOnlineAuthoredBlocks => None,
+            Key::PreimageStatusFor => None,
+            Key::PreimagePreimageFor => None,
+            Key::TechnicalCommitteeProposalOf => None,
+            Key::TechnicalCommitteeVoting => None,
+            Key::TechnicalCommitteeProposals => Some(Box::new(pallet_collective::Proposals::<
+                Runtime,
+                Instance2,
+            >::get())),
+            Key::TechnicalCommitteeMembers => Some(Box::new(pallet_collective::Members::<
+                Runtime,
+                Instance2,
+            >::get())),
+            Key::TechnicalCommitteePrime => Some(Box::new(pallet_collective::Prime::<
+                Runtime,
+                Instance2,
+            >::get())),
+            Key::TechnicalCommitteeProposalCount => {
+                Some(Box::new(pallet_collective::ProposalCount::<
+                    Runtime,
+                    Instance2,
+                >::get()))
+            }
+            Key::IdentityIdentityIndexOf => None,
+            Key::IdentityIdentitiesRemovableOn => None,
+            Key::MembershipMembership => None,
+            Key::MembershipMembershipsExpireOn => None,
+            Key::MembershipPendingMembership => None,
+            Key::MembershipPendingMembershipsExpireOn => None,
+            Key::CertStorageIdtyCertMeta => None,
+            Key::CertCertsByReceiver => None,
+            Key::CertStorageCertsRemovableOn => None,
+            Key::SmithMembershipMembership => None,
+            Key::SmithMembershipMembershipsExpireOn => None,
+            Key::SmithMembershipPendingMembership => None,
+            Key::SmithMembershipPendingMembershipsExpireOn => None,
+            Key::SmithCertStorageIdtyCertMeta => None,
+            Key::SmithCertCertsByReceiver => None,
+            Key::SmithCertStorageCertsRemovableOn => None,
+            Key::AtomicSwapPendingSwaps => None,
+            Key::MultisigMultisigs => None,
+            Key::ProvideRandomnessRequestsReadyAtEpoch => None,
+            Key::ProvideRandomnessRequestsIds => None,
+            Key::ProxyProxies => None,
+            Key::ProxyAnnouncements => None,
+            Key::TreasuryProposals => None,
+            Key::TreasuryProposalCount => Some(Box::new(
+                pallet_treasury::Proposals::<T>::iter_keys().count(),
+            )),
+            Key::TreasuryApprovals => Some(Box::new(pallet_treasury::Approvals::<T>::get())),
+            Key::TimestampDidUpdate => {
+                // Box::new(pallet_timestamp::DidUpdate::<T>::iter_keys().count())
+                self.read_storage::<bool>()
+            }
+            Key::TimestampNow => Some(Box::new(pallet_timestamp::Now::<T>::get())),
+        }
+    }
+
+    pub fn to_map_value<T>(&self) -> Option<BTreeMap<Box<String>, Box<dyn Debug>>>
+    where
+        T: frame_system::Config,
+        <T as frame_system::Config>::AccountId: std::hash::Hash,
+        T: pallet_certification::Config<Instance1>,
+        T: pallet_certification::Config<Instance2>,
+        T: pallet_identity::Config,
+        T: pallet_session::Config,
+        T: pallet_scheduler::Config,
+        T: pallet_balances::Config,
+        T: pallet_oneshot_account::Config,
+        T: pallet_authority_members::Config,
+        T: pallet_offences::Config,
+        T: pallet_atomic_swap::Config,
+        T: pallet_treasury::Config,
+        T: pallet_proxy::Config,
+        T: pallet_multisig::Config,
+        T: pallet_im_online::Config,
+        T: pallet_provide_randomness::Config,
+        T: pallet_duniter_account::Config,
+        <T as pallet_identity::Config>::IdtyIndex: std::hash::Hash,
+        <T as pallet_identity::Config>::IdtyData: std::fmt::Debug,
+        <T as pallet_authority_members::Config>::MemberId: std::hash::Hash,
+        <T as pallet_session::Config>::ValidatorId: std::hash::Hash,
+    {
+        let data: Option<BTreeMap<Box<String>, Box<dyn Debug>>> = match self {
+            Key::SystemNumber => None,
+            Key::SystemParentHash => None,
+            Key::SystemLastRuntimeUpgrade => None,
+            Key::SystemUpgradedToU32RefCount => None,
+            Key::SystemUpgradedToTripleRefCount => None,
+            Key::SystemAccount => to_kv(frame_system::Account::<T>::iter().collect()),
+            Key::SystemBlockHash => to_kv(frame_system::BlockHash::<T>::iter().collect()),
+            Key::SystemExtrinsicData => {
+                self.read_map::<u32, Vec<u8>, Twox64Concat>()
+            }
+            Key::SystemEventTopics => self.read_map::<
+                <T as frame_system::Config>::Hash,
+                Vec<(<T as frame_system::Config>::BlockNumber, u32)>,
+                Blake2_128Concat,
+            >(),
+            Key::SystemAllExtrinsicsLen => None,
+            Key::SystemExtrinsicCount => None,
+            Key::SystemBlockWeight => None,
+            Key::SystemDigest => None,
+            Key::SystemEvents => None,
+            Key::SystemEventCount => None,
+            Key::SystemExecutionPhase => None,
+            Key::SudoKey => None,
+            Key::UniversalDividendCurrentUd => None,
+            Key::UniversalDividendCurrentUdIndex => None,
+            Key::UniversalDividendMonetaryMass => None,
+            Key::UniversalDividendNextReeval => None,
+            Key::UniversalDividendPastReevals => None,
+            Key::IdentityCounterForIdentities => None,
+            Key::IdentityNextIdtyIndex => None,
+            Key::IdentityIdentities => {
+                to_kv(pallet_identity::Identities::<T>::iter().collect())
+            }
+            Key::IdentityIdentitiesNames => to_kv(
+                pallet_identity::IdentitiesNames::<T>::iter()
+                    .map(|(k, v)| (String::from_utf8(k.0).unwrap(), v))
+                    .collect(),
+            ),
+            Key::MembershipCounterForMembership => None,
+            Key::SmithMembershipCounterForMembership => None,
+            Key::TransactionPaymentNextFeeMultiplier => None,
+            Key::TransactionPaymentStorageVersion => None,
+            Key::AuthorshipAuthor => None,
+            Key::AuthorshipUncles => None,
+            Key::AuthorshipDidSetUncles => None,
+            Key::BabeInitialized => None,
+            Key::BabeAuthorities => None,
+            Key::BabeNextAuthorities => None,
+            Key::BabeAuthorVrfRandomness => None,
+            Key::BabeCurrentSlot => None,
+            Key::BabeEpochConfig => None,
+            Key::BabeEpochIndex => None,
+            Key::BabeEpochStart => None,
+            Key::BabeGenesisSlot => None,
+            Key::BabeLateness => None,
+            Key::BabeNextEpochConfig => None,
+            Key::BabeNextRandomness => None,
+            Key::BabePendingEpochConfigChange => None,
+            Key::BabeRandomness => None,
+            Key::BabeSegmentIndex => None,
+            Key::ParametersParametersStorage => None,
+            Key::AuthorityMembersAuthoritiesCounter => None,
+            Key::AuthorityMembersOnlineAuthorities => None,
+            Key::AuthorityMembersOutgoingAuthorities => None,
+            Key::AuthorityMembersIncomingAuthorities => None,
+            Key::AuthorityMembersBlackList => None,
+            Key::SessionValidators => None,
+            Key::SessionQueuedKeys => None,
+            Key::SessionCurrentIndex => None,
+            Key::SessionDisabledValidators => None,
+            Key::SessionQueuedChanged => None,
+            Key::SessionKeyOwner => to_kv(pallet_session::KeyOwner::<T>::iter().collect()),
+            Key::SessionNextKeys => to_kv(pallet_session::NextKeys::<T>::iter().collect()),
+            Key::ImOnlineKeys => None,
+            Key::ImOnlineHeartbeatAfter => None,
+            Key::AccountPendingRandomIdAssignments => to_kv(
+                pallet_duniter_account::PendingRandomIdAssignments::<T>::iter().collect(),
+            ),
+            Key::AccountPendingNewAccounts => {
+                to_kv(pallet_duniter_account::PendingNewAccounts::<T>::iter().collect())
+            }
+            Key::SchedulerAgenda => to_kv(pallet_scheduler::Agenda::<T>::iter().collect()),
+            Key::SchedulerIncompleteSince => None,
+            Key::ProvideRandomnessNexEpochHookIn => None,
+            Key::ProvideRandomnessCounterForRequestsIds => None,
+            Key::ProvideRandomnessRequestIdProvider => None,
+            Key::ProvideRandomnessRequestsReadyAtNextBlock => None,
+            Key::ProvideRandomnessRequestsReadyAtEpoch => {
+                to_kv(pallet_provide_randomness::RequestsReadyAtEpoch::<T>::iter().collect())
+            }
+            Key::ProvideRandomnessRequestsIds => {
+                to_kv(pallet_provide_randomness::RequestsIds::<T>::iter().collect())
+            }
+            Key::SchedulerLookup => self.read_map::<
+                TaskName,
+                TaskAddress<<T as frame_system::Config>::BlockNumber>,
+                Twox64Concat,
+            >(),
+            Key::BabeUnderConstruction => self.read_map::<
+                u32,
+                BoundedVec<schnorrkel::Randomness, ConstU32<UNDER_CONSTRUCTION_SEGMENT_LENGTH>>,
+                Twox64Concat,
+            >(),
+            Key::BalancesAccount => to_kv(pallet_balances::Account::<T>::iter().collect()),
+            Key::BalancesLocks => to_kv(pallet_balances::Locks::<T>::iter().collect()),
+            Key::BalancesReserves => to_kv(pallet_balances::Reserves::<T>::iter().collect()),
+            Key::BalancesStorageVersion => None,
+            Key::BalancesTotalIssuance => None,
+            Key::OneshotAccountOneshotAccounts => {
+                to_kv(pallet_oneshot_account::OneshotAccounts::<T>::iter().collect())
+            }
+            Key::AuthorityMembersAccountIdOf => {
+                to_kv(pallet_authority_members::AccountIdOf::<T>::iter().collect())
+            }
+            Key::AuthorityMembersMembers => {
+                to_kv(pallet_authority_members::Members::<T>::iter().collect())
+            }
+            Key::AuthorityMembersMembersExpireOn => {
+                to_kv(pallet_authority_members::MembersExpireOn::<T>::iter().collect())
+            }
+            Key::AuthorityMembersMustRotateKeysBefore => {
+                to_kv(pallet_authority_members::MustRotateKeysBefore::<T>::iter().collect())
+            }
+            Key::OffencesReports => to_kv(pallet_offences::Reports::<T>::iter().collect()),
+            Key::OffencesConcurrentReportsIndex => to_kv(
+                pallet_offences::ConcurrentReportsIndex::<T>::iter()
+                    .map(to_simple_map)
+                    .collect(),
+            ),
+            Key::GrandpaCurrentSetId => None,
+            Key::GrandpaSetIdSession => self.read_map::<SetId, SessionIndex, Twox64Concat>(),
+            Key::GrandpaNextForced => None,
+            Key::GrandpaPendingChange => None,
+            Key::GrandpaStalled => None,
+            Key::GrandpaState => None,
+            Key::ImOnlineReceivedHeartbeats => self.read_double_map::<
+                SessionIndex,
+                AuthIndex,
+                CustomBoundedOpaqueNetworkState<Get32, Get32, Get32>,
+                Twox64Concat,
+                Twox64Concat,
+            >(),
+            Key::ImOnlineAuthoredBlocks => self.read_double_map::<
+                SessionIndex,
+                ValidatorId<T>,
+                u32,
+                Twox64Concat,
+                Twox64Concat,
+            >(),
+            Key::PreimageStatusFor => self.read_map::<
+                <T as frame_system::Config>::Hash,
+                RequestStatus<<T as frame_system::Config>::AccountId, BalanceOf<Runtime>>,
+                Identity,
+            >(),
+            Key::PreimagePreimageFor => self.read_map::<
+                (<T as frame_system::Config>::Hash, u32),
+                BoundedVec<u8, ConstU32<MAX_SIZE>>,
+                Identity,
+            >(),
+            Key::TechnicalCommitteeProposalOf => {
+                to_kv(pallet_collective::ProposalOf::<Runtime, Instance2>::iter().collect())
+            }
+            Key::TechnicalCommitteeVoting => {
+                to_kv(pallet_collective::Voting::<Runtime, Instance2>::iter().collect())
+            }
+            Key::TechnicalCommitteeProposals => None,
+            Key::TechnicalCommitteeMembers => None,
+            Key::TechnicalCommitteePrime => None,
+            Key::TechnicalCommitteeProposalCount => None,
+            Key::IdentityIdentityIndexOf => {
+                to_kv(pallet_identity::IdentityIndexOf::<T>::iter().collect())
+            }
+            Key::IdentityIdentitiesRemovableOn => {
+                to_kv(pallet_identity::IdentitiesRemovableOn::<T>::iter().collect())
+            }
+            Key::MembershipMembership => {
+                to_kv(pallet_membership::Membership::<Runtime, Instance1>::iter().collect())
+            }
+            Key::MembershipMembershipsExpireOn => to_kv(
+                pallet_membership::MembershipsExpireOn::<Runtime, Instance1>::iter().collect(),
+            ),
+            Key::MembershipPendingMembership => {
+                to_kv(pallet_membership::PendingMembership::<Runtime, Instance1>::iter().collect())
+            }
+            Key::MembershipPendingMembershipsExpireOn => to_kv(
+                pallet_membership::PendingMembershipsExpireOn::<Runtime, Instance1>::iter()
+                    .collect(),
+            ),
+            Key::CertStorageIdtyCertMeta => {
+                self.read_map::<
+                    <T as pallet_certification::Config<Instance1>>::IdtyIndex,
+                    IdtyCertMeta<<T as frame_system::Config>::BlockNumber>,
+                    Twox64Concat,
+                >()
+            }
+            Key::CertCertsByReceiver => {
+                to_kv(pallet_certification::CertsByReceiver::<Runtime, Instance1>::iter().collect())
+            }
+            Key::CertStorageCertsRemovableOn => to_kv(
+                pallet_certification::StorageCertsRemovableOn::<Runtime, Instance1>::iter()
+                    .collect(),
+            ),
+            Key::SmithMembershipMembership => {
+                to_kv(pallet_membership::Membership::<Runtime, Instance2>::iter().collect())
+            }
+            Key::SmithMembershipMembershipsExpireOn => to_kv(
+                pallet_membership::MembershipsExpireOn::<Runtime, Instance2>::iter().collect(),
+            ),
+            Key::SmithMembershipPendingMembership => {
+                to_kv(pallet_membership::PendingMembership::<Runtime, Instance2>::iter().collect())
+            }
+            Key::SmithMembershipPendingMembershipsExpireOn => to_kv(
+                pallet_membership::PendingMembershipsExpireOn::<Runtime, Instance2>::iter()
+                    .collect(),
+            ),
+            Key::SmithCertStorageIdtyCertMeta => {
+                self.read_map::<
+                    <T as pallet_certification::Config<Instance2>>::IdtyIndex,
+                    IdtyCertMeta<<T as frame_system::Config>::BlockNumber>,
+                    Twox64Concat,
+                >()
+            }
+            Key::SmithCertCertsByReceiver => {
+                to_kv(pallet_certification::CertsByReceiver::<Runtime, Instance2>::iter().collect())
+            }
+            Key::SmithCertStorageCertsRemovableOn => to_kv(
+                pallet_certification::StorageCertsRemovableOn::<Runtime, Instance2>::iter()
+                    .collect(),
+            ),
+            Key::AtomicSwapPendingSwaps => to_kv(
+                pallet_atomic_swap::PendingSwaps::<T>::iter()
+                    .map(to_simple_map)
+                    .collect(),
+            ),
+            Key::MultisigMultisigs => to_kv(
+                pallet_multisig::Multisigs::<T>::iter()
+                    .map(to_simple_map)
+                    .collect(),
+            ),
+            Key::ProxyProxies => to_kv(pallet_proxy::Proxies::<T>::iter().collect()),
+            Key::ProxyAnnouncements => {
+                to_kv(pallet_proxy::Announcements::<T>::iter().collect())
+            }
+            Key::TreasuryProposals => {
+                to_kv(pallet_treasury::Proposals::<T>::iter().collect())
+            }
+            Key::TreasuryProposalCount => None,
+            Key::TreasuryApprovals => None,
+            Key::TimestampDidUpdate => None,
+            Key::TimestampNow => None,
+        };
+        if let Some(c) = data {
+            return Some(c);
+        }
+        None
+    }
+
+    // TODO: remove Box
+    fn read_storage<T: Decode + Debug + 'static>(&self) -> Option<Box<dyn Debug>> {
+        let k = self.name();
+        let key = frame_support::storage::storage_prefix(k.pallet.as_bytes(), k.storage.as_bytes());
+        if let Some(v) = sp_io::storage::get(key.as_slice()) {
+            let v = T::decode(&mut &v[..]);
+            if let Ok(v) = v {
+                return Some(Box::new(Some(v)));
+            } else {
+                eprintln!("Error for {}.{}", k.pallet, k.storage);
+                v.unwrap();
+            }
+        }
+        Some(Box::new(None::<T>))
+    }
+
+    fn read_map<K, V, H>(&self) -> Option<BTreeMap<Box<String>, Box<dyn Debug>>>
+    where
+        K: FullCodec + Debug + 'static,
+        V: FullCodec + Debug + 'static,
+        H: StorageHasher + ReversibleStorageHasher,
+    {
+        let key_name = self.name();
+        let prefix: Vec<u8> = frame_support::storage::storage_prefix(
+            key_name.pallet.as_bytes(),
+            key_name.storage.as_bytes(),
+        )
+        .into();
+        let iterator: PrefixIterator<(Result<K, codec::Error>, Result<V, codec::Error>), ()> =
+            PrefixIterator::new(
+                prefix.clone(),
+                prefix,
+                |raw_key_without_prefix, mut raw_value| {
+                    let mut key_material = H::reverse(raw_key_without_prefix);
+                    let k: Result<K, codec::Error> = codec::Decode::decode(&mut key_material);
+                    let v: Result<V, codec::Error> = codec::Decode::decode(&mut raw_value);
+                    Ok((k, v))
+                },
+            );
+        let mut kvs: BTreeMap<Box<String>, Box<dyn Debug>> = btreemap![];
+        for (k, v) in iterator {
+            kvs.insert(Box::new(format!("{:?}", k.unwrap())), Box::new(v.unwrap()));
+        }
+        Some(kvs)
+    }
+
+    fn read_double_map<K1, K2, V, H1, H2>(&self) -> Option<BTreeMap<Box<String>, Box<dyn Debug>>>
+    where
+        K1: FullCodec + Debug + 'static,
+        K2: FullCodec + Debug + 'static,
+        V: FullCodec + Debug + 'static,
+        H1: StorageHasher + ReversibleStorageHasher,
+        H2: StorageHasher + ReversibleStorageHasher,
+    {
+        let key_name = self.name();
+        let prefix: Vec<u8> = frame_support::storage::storage_prefix(
+            key_name.pallet.as_bytes(),
+            key_name.storage.as_bytes(),
+        )
+        .into();
+        let iterator: PrefixIterator<(K1, K2, V)> = PrefixIterator::new(
+            prefix.clone(),
+            prefix,
+            |raw_key_without_prefix, mut raw_value| {
+                let mut k1_k2_material = H1::reverse(raw_key_without_prefix);
+                let k1 = K1::decode(&mut k1_k2_material).unwrap();
+                let mut k2_material = H2::reverse(k1_k2_material);
+                let k2 = K2::decode(&mut k2_material).unwrap();
+                let v = V::decode(&mut raw_value).unwrap();
+                Ok((k1, k2, v))
+            },
+        );
+        let mut kvs: BTreeMap<Box<String>, Box<dyn Debug>> = btreemap![];
+        for (k1, k2, v) in iterator {
+            kvs.insert(Box::new(format!("{:?} => {:?}", k1, k2)), Box::new(v));
+        }
+        Some(kvs)
+    }
+}
+
+fn to_simple_map<K1, K2, V>((k1, k2, v): (K1, K2, V)) -> (String, V)
+where
+    K1: Debug + 'static,
+    K2: Debug + 'static,
+    V: Debug + 'static,
+{
+    (format!("{:?} => {:?}", k1, k2), v)
+}
+
+fn to_kv<K: Debug + 'static, V: Debug + 'static>(
+    hm: HashMap<K, V>,
+) -> Option<BTreeMap<Box<String>, Box<dyn Debug>>> {
+    let mut res: BTreeMap<Box<String>, Box<dyn Debug>> = btreemap! {};
+    hm.into_iter().for_each(|(k, v)| {
+        res.insert(Box::new(format!("{:?}", k)), Box::new(v));
+    });
+    Some(res)
+}
+
+impl TryFrom<String> for Key {
+    type Error = String;
+    fn try_from(value: String) -> Result<Self, Self::Error> {
+        Key::from_str(value.clone().replace(".", "").as_str()).or(Err(format!(
+            "Storage key '{}' could not be parsed",
+            value.clone()
+        )
+        .to_string()))
+    }
+}
+
+fn get_prefix(t: &Checker) -> [u8; 32] {
+    frame_support::storage::storage_prefix(t.pallet_name().as_bytes(), t.storage_name().as_bytes())
+}
+
+/// Structured Key name.
+/// Composed of two fields which are the same used by Substrate #[pallet::storage] macro as described
+/// in [Substrate doc](https://docs.substrate.io/learn/state-transitions-and-storage/#storage-value-keys):
+/// - a pallet name
+/// - a storage name
+#[derive(Eq, Hash, PartialEq, Clone, Debug)]
+pub(crate) struct KeyName {
+    pallet: String,
+    storage: String,
+}
+
+/// Construtor
+impl KeyName {
+    fn new(pallet: &str, storage: &str) -> KeyName {
+        KeyName {
+            pallet: pallet.to_string(),
+            storage: storage.to_string(),
+        }
+    }
+}
diff --git a/client/dump/src/lib.rs b/client/dump/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..daf4ae8ef4ef54f3488feb5d31e2cf9653a17a0f
--- /dev/null
+++ b/client/dump/src/lib.rs
@@ -0,0 +1,25 @@
+pub mod assert;
+pub mod checker;
+pub mod iterative;
+pub mod key;
+mod private;
+pub mod runtime;
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::iterative::StorageChecker;
+    use sp_io::TestExternalities;
+
+    #[test]
+    fn simple_test() {
+        let mut externalities = TestExternalities::default();
+        let storage_checker = StorageChecker::<gdev_runtime::Runtime>::new_default(|| {
+            gdev_runtime::Runtime::metadata().1
+        });
+        externalities.execute_with(|| {
+            storage_checker.test_storage(128, "simple_test.expected.txt");
+        });
+        storage_checker.test_well_known_keys(&mut externalities);
+    }
+}
diff --git a/client/dump/src/private.rs b/client/dump/src/private.rs
new file mode 100644
index 0000000000000000000000000000000000000000..d16ae56ffe330effea19d3ed0457c974feec84df
--- /dev/null
+++ b/client/dump/src/private.rs
@@ -0,0 +1,131 @@
+use frame_support::traits::Currency;
+use sp_arithmetic::traits::UniqueSaturatedInto;
+use sp_core::bounded::WeakBoundedVec;
+use sp_core::{Get, TypedGet};
+
+/// Stuff required by golden testing but is private in the pallets.
+/// So it had to be copied here.
+
+pub type SessionIndex = u32;
+pub const UNDER_CONSTRUCTION_SEGMENT_LENGTH: u32 = 256;
+type ReportIdOf<T> = <T as frame_system::Config>::Hash;
+/// A binary blob which represents a SCALE codec-encoded `O::TimeSlot`.
+type OpaqueTimeSlot = Vec<u8>;
+pub type BalanceOf<T> = <<T as pallet_preimage::Config>::Currency as Currency<
+    <T as frame_system::Config>::AccountId,
+>>::Balance;
+/// Maximum size of preimage we can store is 4mb.
+pub const MAX_SIZE: u32 = 4 * 1024 * 1024;
+// #[derive(Debug)]
+// type Custom<P, M, A> = BoundedOpaqueNetworkState<P, M, A>;
+
+// impl Debug for BoundedOpaqueNetworkState<P, M, A> {
+//     fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
+//         todo!()
+//     }
+// }
+
+#[doc = "Const getter for a basic type."]
+#[derive(frame_support::RuntimeDebug, PartialEq, Clone)]
+pub struct MyConstU32<const T: u32>;
+impl<const T: u32> Get<u32> for MyConstU32<T> {
+    fn get() -> u32 {
+        T
+    }
+}
+impl<const T: u32> Get<Option<u32>> for MyConstU32<T> {
+    fn get() -> Option<u32> {
+        Some(T)
+    }
+}
+impl<const T: u32> TypedGet for MyConstU32<T> {
+    type Type = u32;
+    fn get() -> u32 {
+        T
+    }
+}
+pub type Get32 = MyConstU32<100>;
+
+#[derive(Debug, codec::Encode, codec::Decode, PartialEq, Clone)]
+pub struct CustomBoundedOpaqueNetworkState<
+    PeerIdEncodingLimit,
+    MultiAddrEncodingLimit,
+    AddressesLimit,
+> where
+    PeerIdEncodingLimit: Get<u32>,
+    MultiAddrEncodingLimit: Get<u32>,
+    AddressesLimit: Get<u32>,
+{
+    /// PeerId of the local node in SCALE encoded.
+    pub peer_id: WeakBoundedVec<u8, PeerIdEncodingLimit>,
+    /// List of addresses the node knows it can be reached as.
+    pub external_addresses:
+        WeakBoundedVec<WeakBoundedVec<u8, MultiAddrEncodingLimit>, AddressesLimit>,
+}
+
+#[derive(codec::Encode, codec::Decode, Clone, Copy, PartialEq, Eq, Debug)]
+pub enum Releases {
+    /// Original version of the pallet.
+    V1Ancient,
+    /// One that bumps the usage to FixedU128 from FixedI128.
+    V2,
+}
+
+#[derive(codec::Encode, codec::Decode, Debug)]
+pub struct StoredPendingChange<N, Limit: sp_core::Get<u32>> {
+    /// The block number this was scheduled at.
+    pub scheduled_at: N,
+    /// The delay in blocks until it will be applied.
+    pub delay: N,
+    /// The next authority set, weakly bounded in size by `Limit`.
+    pub next_authorities: pallet_grandpa::BoundedAuthorityList<Limit>,
+    /// If defined it means the change was forced and the given block number
+    /// indicates the median last finalized block when the change was signaled.
+    pub forced: Option<N>,
+}
+
+#[derive(codec::Decode, codec::Encode, Debug, PartialEq)]
+pub enum StoredState<N> {
+    /// The current authority set is live, and GRANDPA is enabled.
+    Live,
+    /// There is a pending pause event which will be enacted at the given block
+    /// height.
+    PendingPause {
+        /// Block at which the intention to pause was scheduled.
+        scheduled_at: N,
+        /// Number of blocks after which the change will be enacted.
+        delay: N,
+    },
+    /// The current GRANDPA authority set is paused.
+    Paused,
+    /// There is a pending resume event which will be enacted at the given block
+    /// height.
+    PendingResume {
+        /// Block at which the intention to resume was scheduled.
+        scheduled_at: N,
+        /// Number of blocks after which the change will be enacted.
+        delay: N,
+    },
+}
+
+#[derive(codec::Decode, codec::Encode, Debug, PartialEq)]
+pub enum UncleEntryItem<BlockNumber, Hash, Author> {
+    InclusionHeight(BlockNumber),
+    Uncle(Hash, Option<Author>),
+}
+
+const MAX_UNCLES: usize = 10;
+pub struct MaxUncleEntryItems<T>(core::marker::PhantomData<T>);
+impl<T: pallet_authorship::Config> Get<u32> for MaxUncleEntryItems<T> {
+    fn get() -> u32 {
+        // There can be at most `MAX_UNCLES` of `UncleEntryItem::Uncle` and
+        // one `UncleEntryItem::InclusionHeight` per one `UncleGenerations`,
+        // so this gives us `MAX_UNCLES + 1` entries per one generation.
+        //
+        // There can be one extra generation worth of uncles (e.g. even
+        // if `UncleGenerations` is zero the pallet will still hold
+        // one generation worth of uncles).
+        let max_generations: u32 = T::UncleGenerations::get().unique_saturated_into();
+        (MAX_UNCLES as u32 + 1) * (max_generations + 1)
+    }
+}
diff --git a/client/dump/src/runtime.rs b/client/dump/src/runtime.rs
new file mode 100644
index 0000000000000000000000000000000000000000..33628a0f6e492c979ea28ddb6ce7ac9d281a9542
--- /dev/null
+++ b/client/dump/src/runtime.rs
@@ -0,0 +1,37 @@
+use frame_support::metadata::{RuntimeMetadata, StorageEntryMetadata};
+use scale_info::form::PortableForm;
+
+pub fn extract_storage_entries_normalized(
+    meta: &RuntimeMetadata,
+) -> Result<Vec<StorageEntry>, String> {
+    if let RuntimeMetadata::V14(meta) = meta {
+        assert_eq!(35, meta.pallets.len());
+        Ok(meta
+            .pallets
+            .iter()
+            .filter(|p| p.storage.is_some())
+            .flat_map(|p| {
+                p.storage
+                    .clone()
+                    .unwrap()
+                    .entries
+                    .iter()
+                    .map(|e| (p.name.clone(), e.clone()))
+                    .collect::<Vec<_>>()
+            })
+            .map(|(pallet_name, metadata)| StorageEntry {
+                pallet_name,
+                storage_name: metadata.name.clone(),
+                metadata,
+            })
+            .collect::<Vec<_>>())
+    } else {
+        Err("Not a V14 RuntimeMetadata".into())
+    }
+}
+
+pub struct StorageEntry {
+    pub pallet_name: String,
+    pub storage_name: String,
+    pub metadata: StorageEntryMetadata<PortableForm>,
+}
diff --git a/client/dump/tests/simple_test.expected.txt b/client/dump/tests/simple_test.expected.txt
new file mode 100644
index 0000000000000000000000000000000000000000..208f4c2fd18544b7c2ba77a040b9515becb28c0c
--- /dev/null
+++ b/client/dump/tests/simple_test.expected.txt
@@ -0,0 +1,181 @@
+Account.PendingNewAccounts = [
+]
+Account.PendingRandomIdAssignments = [
+]
+AtomicSwap.PendingSwaps = [
+]
+AuthorityMembers.AccountIdOf = [
+]
+AuthorityMembers.AuthoritiesCounter = 0
+AuthorityMembers.BlackList = []
+AuthorityMembers.IncomingAuthorities = []
+AuthorityMembers.Members = [
+]
+AuthorityMembers.MustRotateKeysBefore = [
+]
+AuthorityMembers.OnlineAuthorities = []
+AuthorityMembers.OutgoingAuthorities = []
+AuthorityMembersMembers.ExpireOn = [
+]
+Authorship.Author = None
+Authorship.DidSetUncles = None
+Authorship.Uncles = None
+Babe.AuthorVrfRandomness = None
+Babe.Authorities = WeakBoundedVec([], 32)
+Babe.CurrentSlot = Slot(0)
+Babe.EpochConfig = None
+Babe.EpochIndex = 0
+Babe.EpochStart = None
+Babe.GenesisSlot = Slot(0)
+Babe.Initialized = None
+Babe.Lateness = None
+Babe.NextAuthorities = None
+Babe.NextEpochConfig = None
+Babe.NextRandomness = None
+Babe.PendingEpochConfigChange = None
+Babe.Randomness = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+Babe.SegmentIndex = None
+Babe.UnderConstruction = [
+]
+Balances.Account = [
+]
+Balances.Locks = [
+]
+Balances.Reserves = [
+]
+Balances.StorageVersion = None
+Balances.TotalIssuance = 0
+Cert.CertsByReceiver = [
+]
+Cert.StorageCertsRemovableOn = [
+]
+Cert.StorageIdtyCertMeta = [
+]
+Grandpa.CurrentSetId = None
+Grandpa.NextForced = None
+Grandpa.PendingChange = None
+Grandpa.SetIdSession = [
+]
+Grandpa.Stalled = None
+Grandpa.State = None
+Identity.CounterForIdentities = None
+Identity.Identities = [
+]
+Identity.IdentitiesNames = [
+]
+Identity.IdentitiesRemovableOn = [
+]
+Identity.IdentityIndexOf = [
+]
+Identity.NextIdtyIndex = None
+ImOnline.AuthoredBlocks = [
+]
+ImOnline.HeartbeatAfter = None
+ImOnline.Keys = None
+ImOnline.ReceivedHeartbeats = [
+]
+Membership.CounterForMembership = None
+Membership.Membership = [
+]
+Membership.MembershipsExpireOn = [
+]
+Membership.PendingMembership = [
+]
+Membership.PendingMembershipsExpireOn = [
+]
+Multisig.Multisigs = [
+]
+Offences.ConcurrentReportsIndex = [
+]
+Offences.Reports = [
+]
+OneshotAccount.OneshotAccounts = [
+]
+Parameters.ParametersStorage = Parameters { babe_epoch_duration: 0, cert_period: 0, cert_max_by_issuer: 0, cert_min_received_cert_to_issue_cert: 0, cert_validity_period: 0, idty_confirm_period: 0, idty_creation_period: 0, membership_period: 0, pending_membership_period: 0, ud_creation_period: 0, ud_reeval_period: 0, smith_cert_period: 0, smith_cert_max_by_issuer: 0, smith_cert_min_received_cert_to_issue_cert: 0, smith_cert_validity_period: 0, smith_membership_period: 0, smith_pending_membership_period: 0, smith_wot_first_cert_issuable_on: 0, smith_wot_min_cert_for_membership: 0, wot_first_cert_issuable_on: 0, wot_min_cert_for_create_idty_right: 0, wot_min_cert_for_membership: 0 }
+Preimage.PreimageFor = [
+]
+Preimage.StatusFor = [
+]
+ProvideRandomness.CounterForRequestsIds = None
+ProvideRandomness.NexEpochHookIn = None
+ProvideRandomness.RequestIdProvider = None
+ProvideRandomness.RequestsIds = [
+]
+ProvideRandomness.RequestsReadyAtEpoch = [
+]
+ProvideRandomness.RequestsReadyAtNextBlock = []
+Proxy.Announcements = [
+]
+Proxy.Proxies = [
+]
+Scheduler.Agenda = [
+]
+Scheduler.IncompleteSince = None
+Scheduler.Lookup = [
+]
+Session.CurrentIndex = 0
+Session.DisabledValidators = []
+Session.KeyOwner = [
+]
+Session.NextKeys = [
+]
+Session.QueuedChanged = false
+Session.QueuedKeys = []
+Session.Validators = []
+SmithCert.StorageCertsRemovableOn = [
+]
+SmithCert.StorageIdtyCertMeta = [
+]
+SmithCertCert.sByReceiver = [
+]
+SmithMembership.CounterForMembership = None
+SmithMembership.Membership = [
+]
+SmithMembership.MembershipsExpireOn = [
+]
+SmithMembership.PendingMembership = [
+]
+SmithMembership.PendingMembershipsExpireOn = [
+]
+Sudo.Key = None
+System.Account = [
+]
+System.AllExtrinsicsLen = None
+System.BlockHash = [
+]
+System.BlockWeight = None
+System.Digest = None
+System.EventCount = None
+System.EventTopics = [
+]
+System.Events = None
+System.ExecutionPhase = None
+System.ExtrinsicCount = None
+System.ExtrinsicData = [
+]
+System.LastRuntimeUpgrade = None
+System.Number = None
+System.ParentHash = None
+System.UpgradedToTripleRefCount = None
+System.UpgradedToU32RefCount = None
+TechnicalCommittee.Members = []
+TechnicalCommittee.Prime = None
+TechnicalCommittee.ProposalCount = 0
+TechnicalCommittee.ProposalOf = [
+]
+TechnicalCommittee.Proposals = BoundedVec([], 20)
+TechnicalCommittee.Voting = [
+]
+Timestamp.DidUpdate = None
+Timestamp.Now = 0
+TransactionPayment.NextFeeMultiplier = FixedU128(1.000000000000000000)
+TransactionPayment.StorageVersion = None
+Treasury.Approvals = BoundedVec([], 100)
+Treasury.ProposalCount = 0
+Treasury.Proposals = [
+]
+UniversalDividend.CurrentUd = 0
+UniversalDividend.CurrentUdIndex = 1
+UniversalDividend.MonetaryMass = 0
+UniversalDividend.NextReeval = 0
+UniversalDividend.PastReevals = BoundedVec([], 4)
diff --git a/runtime/gdev/Cargo.toml b/runtime/gdev/Cargo.toml
index 8c8fd77889789dff328a3647e5fb4565127594a6..1aedfed067dc3aa9157873d4413b2e4aeffba772 100644
--- a/runtime/gdev/Cargo.toml
+++ b/runtime/gdev/Cargo.toml
@@ -128,6 +128,7 @@ try-runtime = [
 ]
 
 [dev-dependencies]
+dc-dump = { path = "../../client/dump" }
 sp-consensus-vrf = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32' }
 sp-finality-grandpa = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32' }
 sp-io = { git = 'https://github.com/duniter/substrate', branch = 'duniter-substrate-v0.9.32' }
diff --git a/runtime/gdev/tests/integration_tests.rs b/runtime/gdev/tests/integration_tests.rs
index 22d1fb05626ce146ea8fde5e57fe23c0b0d0af4f..d3806c7c94c146cf84178639760e51a5f11ee02f 100644
--- a/runtime/gdev/tests/integration_tests.rs
+++ b/runtime/gdev/tests/integration_tests.rs
@@ -17,6 +17,7 @@
 mod common;
 
 use common::*;
+use dc_dump::iterative::StorageChecker;
 use frame_support::traits::{Get, PalletInfo, StorageInfo, StorageInfoTrait};
 use frame_support::{assert_noop, assert_ok};
 use frame_support::{StorageHasher, Twox128};
@@ -29,6 +30,36 @@ fn verify_treasury_account() {
     // println!("{}", Treasury::account_id());
 }
 
+#[test]
+fn values_storage_with_run_to_block() {
+    let mut externalities = ExtBuilder::new(1, 3, 4).build();
+    let storage_checker = StorageChecker::<Runtime>::new_default(|| Runtime::metadata().1);
+    externalities.execute_with(|| {
+        run_to_block(2);
+        storage_checker.test_storage(128, "values_storage_with_run_to_block.b.2.expected.txt");
+        run_to_block(3);
+        storage_checker.test_storage(128, "values_storage_with_run_to_block.b.3.expected.txt");
+
+        // alice create identity for Eve
+        assert_ok!(Identity::create_identity(
+            frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(),
+            AccountKeyring::Eve.to_account_id(),
+        ));
+        run_to_block(4);
+        storage_checker.test_storage(128, "values_storage_with_run_to_block.b.4.expected.txt");
+
+        // eve confirms her identity
+        assert_ok!(Identity::confirm_identity(
+            frame_system::RawOrigin::Signed(AccountKeyring::Eve.to_account_id()).into(),
+            "Eeeeeveeeee".into(),
+        ));
+
+        run_to_block(5);
+        storage_checker.test_storage(128, "values_storage_with_run_to_block.b.5.expected.txt");
+    });
+    storage_checker.test_well_known_keys(&mut externalities);
+}
+
 #[test]
 fn verify_pallet_prefixes() {
     let prefix = |pallet_name, storage_name| {
diff --git a/runtime/gdev/tests/values_storage_with_run_to_block.b.2.expected.txt b/runtime/gdev/tests/values_storage_with_run_to_block.b.2.expected.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5f27e0977c4832498decaba491f6259be0d566f7
--- /dev/null
+++ b/runtime/gdev/tests/values_storage_with_run_to_block.b.2.expected.txt
@@ -0,0 +1,244 @@
+Account.PendingNewAccounts = [
+]
+Account.PendingRandomIdAssignments = [
+]
+AtomicSwap.PendingSwaps = [
+]
+AuthorityMembers.AccountIdOf = [
+]
+AuthorityMembers.AuthoritiesCounter = 1
+AuthorityMembers.BlackList = []
+AuthorityMembers.IncomingAuthorities = []
+AuthorityMembers.Members = [
+	1 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) }
+	2 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) }
+	3 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) }
+]
+AuthorityMembers.MustRotateKeysBefore = [
+	1500 = [1]
+]
+AuthorityMembers.OnlineAuthorities = [1]
+AuthorityMembers.OutgoingAuthorities = []
+AuthorityMembersMembers.ExpireOn = [
+]
+Authorship.Author = None
+Authorship.DidSetUncles = Some(false)
+Authorship.Uncles = Some(BoundedVec([], 11))
+Babe.AuthorVrfRandomness = None
+Babe.Authorities = WeakBoundedVec([(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], 32)
+Babe.CurrentSlot = Slot(0)
+Babe.EpochConfig = None
+Babe.EpochIndex = 0
+Babe.EpochStart = None
+Babe.GenesisSlot = Slot(0)
+Babe.Initialized = Some(None)
+Babe.Lateness = None
+Babe.NextAuthorities = Some(WeakBoundedVec([(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], 32))
+Babe.NextEpochConfig = None
+Babe.NextRandomness = None
+Babe.PendingEpochConfigChange = None
+Babe.Randomness = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+Babe.SegmentIndex = None
+Babe.UnderConstruction = [
+]
+Balances.Account = [
+]
+Balances.Locks = [
+]
+Balances.Reserves = [
+]
+Balances.StorageVersion = None
+Balances.TotalIssuance = 0
+Cert.CertsByReceiver = [
+	1 = [(2, 10000), (3, 10000), (4, 10000)]
+	2 = [(1, 10000), (3, 10000), (4, 10000)]
+	3 = [(1, 10000), (2, 10000), (4, 10000)]
+	4 = [(1, 10000), (2, 10000), (3, 10000)]
+]
+Cert.StorageCertsRemovableOn = [
+	10000 = [(2, 1), (3, 1), (4, 1), (1, 2), (3, 2), (4, 2), (1, 3), (2, 3), (4, 3), (1, 4), (2, 4), (3, 4)]
+]
+Cert.StorageIdtyCertMeta = [
+	1 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	2 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	3 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	4 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+]
+Grandpa.CurrentSetId = None
+Grandpa.NextForced = None
+Grandpa.PendingChange = None
+Grandpa.SetIdSession = [
+	0 = 0
+]
+Grandpa.Stalled = None
+Grandpa.State = None
+Identity.CounterForIdentities = Some(4)
+Identity.Identities = [
+	1 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...), removable_on: 0, status: IdtyStatus::Validated }
+	2 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...), removable_on: 0, status: IdtyStatus::Validated }
+	3 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...), removable_on: 0, status: IdtyStatus::Validated }
+	4 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...), removable_on: 0, status: IdtyStatus::Validated }
+]
+Identity.IdentitiesNames = [
+	"Alice" = ()
+	"Bob" = ()
+	"Charlie" = ()
+	"Dave" = ()
+]
+Identity.IdentitiesRemovableOn = [
+]
+Identity.IdentityIndexOf = [
+	306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = 4
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = 2
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = 3
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = 1
+]
+Identity.NextIdtyIndex = Some(5)
+ImOnline.AuthoredBlocks = [
+]
+ImOnline.HeartbeatAfter = None
+ImOnline.Keys = Some(WeakBoundedVec([Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...))], 32))
+ImOnline.ReceivedHeartbeats = [
+]
+Membership.CounterForMembership = Some(4)
+Membership.Membership = [
+	1 = MembershipData { expire_on: 100 }
+	2 = MembershipData { expire_on: 100 }
+	3 = MembershipData { expire_on: 100 }
+	4 = MembershipData { expire_on: 100 }
+]
+Membership.MembershipsExpireOn = [
+	100 = [1, 2, 3, 4]
+]
+Membership.PendingMembership = [
+]
+Membership.PendingMembershipsExpireOn = [
+]
+Multisig.Multisigs = [
+]
+Offences.ConcurrentReportsIndex = [
+]
+Offences.Reports = [
+]
+OneshotAccount.OneshotAccounts = [
+]
+Parameters.ParametersStorage = Parameters { babe_epoch_duration: 25, cert_period: 15, cert_max_by_issuer: 10, cert_min_received_cert_to_issue_cert: 2, cert_validity_period: 10000, idty_confirm_period: 40, idty_creation_period: 50, membership_period: 100, pending_membership_period: 500, ud_creation_period: 10, ud_reeval_period: 200, smith_cert_period: 15, smith_cert_max_by_issuer: 8, smith_cert_min_received_cert_to_issue_cert: 2, smith_cert_validity_period: 1000, smith_membership_period: 1000, smith_pending_membership_period: 500, smith_wot_first_cert_issuable_on: 20, smith_wot_min_cert_for_membership: 2, wot_first_cert_issuable_on: 20, wot_min_cert_for_create_idty_right: 2, wot_min_cert_for_membership: 2 }
+Preimage.PreimageFor = [
+]
+Preimage.StatusFor = [
+]
+ProvideRandomness.CounterForRequestsIds = None
+ProvideRandomness.NexEpochHookIn = Some(5)
+ProvideRandomness.RequestIdProvider = None
+ProvideRandomness.RequestsIds = [
+]
+ProvideRandomness.RequestsReadyAtEpoch = [
+]
+ProvideRandomness.RequestsReadyAtNextBlock = []
+Proxy.Announcements = [
+]
+Proxy.Proxies = [
+]
+Scheduler.Agenda = [
+]
+Scheduler.IncompleteSince = None
+Scheduler.Lookup = [
+]
+Session.CurrentIndex = 0
+Session.DisabledValidators = []
+Session.KeyOwner = [
+	(KeyTypeId([103, 114, 97, 110]), [136, 220, 52, 23, 213, 5, 142, 196, 180, 80, 62, 12, 18, 234, 26, 10, 137, 190, 32, 15, 233, 137, 34, 66, 61, 67, 52, 1, 79, 166, 176, 238]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([103, 114, 97, 110]), [209, 124, 45, 120, 35, 235, 242, 96, 253, 19, 143, 45, 126, 39, 209, 20, 192, 20, 93, 150, 139, 95, 245, 0, 97, 37, 242, 65, 79, 173, 174, 105]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([103, 114, 97, 110]), [67, 150, 96, 179, 108, 108, 3, 175, 175, 202, 2, 123, 145, 11, 79, 236, 249, 152, 1, 131, 76, 98, 165, 230, 0, 111, 39, 217, 120, 222, 35, 79]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([105, 109, 111, 110]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([105, 109, 111, 110]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([105, 109, 111, 110]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([97, 117, 100, 105]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([97, 117, 100, 105]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([97, 117, 100, 105]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([98, 97, 98, 101]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([98, 97, 98, 101]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([98, 97, 98, 101]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+]
+Session.NextKeys = [
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = SessionKeys { grandpa: Public(d17c2d7823ebf260fd138f2d7e27d114c0145d968b5ff5006125f2414fadae69 (5GoNkf6W...)), babe: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)), im_online: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)), authority_discovery: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)) }
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = SessionKeys { grandpa: Public(439660b36c6c03afafca027b910b4fecf99801834c62a5e6006f27d978de234f (5DbKjhNL...)), babe: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)), im_online: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)), authority_discovery: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)) }
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = SessionKeys { grandpa: Public(88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee (5FA9nQDV...)), babe: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), im_online: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), authority_discovery: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)) }
+]
+Session.QueuedChanged = false
+Session.QueuedKeys = [(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...), SessionKeys { grandpa: Public(88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee (5FA9nQDV...)), babe: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), im_online: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), authority_discovery: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)) })]
+Session.Validators = [d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)]
+SmithCert.StorageCertsRemovableOn = [
+	1000 = [(2, 1), (3, 1), (1, 2), (3, 2), (1, 3), (2, 3)]
+]
+SmithCert.StorageIdtyCertMeta = [
+	1 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	2 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	3 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+]
+SmithCertCert.sByReceiver = [
+	1 = [(2, 1000), (3, 1000)]
+	2 = [(1, 1000), (3, 1000)]
+	3 = [(1, 1000), (2, 1000)]
+]
+SmithMembership.CounterForMembership = Some(3)
+SmithMembership.Membership = [
+	1 = MembershipData { expire_on: 1000 }
+	2 = MembershipData { expire_on: 1000 }
+	3 = MembershipData { expire_on: 1000 }
+]
+SmithMembership.MembershipsExpireOn = [
+	1000 = [1, 2, 3]
+]
+SmithMembership.PendingMembership = [
+]
+SmithMembership.PendingMembershipsExpireOn = [
+]
+Sudo.Key = None
+System.Account = [
+	306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: Some(0x0303030303030303030303030303030303030303030303030303030303030303), free: 0, reserved: 0, fee_frozen: 0 } }
+	6d6f646c70792f74727372790000000000000000000000000000000000000000 (5EYCAe5i...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 0, data: AccountData { random_id: None, free: 200, reserved: 0, fee_frozen: 0 } }
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0101010101010101010101010101010101010101010101010101010101010101), free: 0, reserved: 0, fee_frozen: 0 } }
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0202020202020202020202020202020202020202020202020202020202020202), free: 0, reserved: 0, fee_frozen: 0 } }
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0000000000000000000000000000000000000000000000000000000000000000), free: 0, reserved: 0, fee_frozen: 0 } }
+]
+System.AllExtrinsicsLen = None
+System.BlockHash = [
+	0 = 0x4545454545454545454545454545454545454545454545454545454545454545
+]
+System.BlockWeight = None
+System.Digest = None
+System.EventCount = None
+System.EventTopics = [
+]
+System.Events = None
+System.ExecutionPhase = None
+System.ExtrinsicCount = None
+System.ExtrinsicData = [
+]
+System.LastRuntimeUpgrade = Some(LastRuntimeUpgradeInfo { spec_version: 400, spec_name: RuntimeString::Owned("gdev") })
+System.Number = Some(2)
+System.ParentHash = Some(0x4545454545454545454545454545454545454545454545454545454545454545)
+System.UpgradedToTripleRefCount = Some(true)
+System.UpgradedToU32RefCount = Some(true)
+TechnicalCommittee.Members = []
+TechnicalCommittee.Prime = None
+TechnicalCommittee.ProposalCount = 0
+TechnicalCommittee.ProposalOf = [
+]
+TechnicalCommittee.Proposals = BoundedVec([], 20)
+TechnicalCommittee.Voting = [
+]
+Timestamp.DidUpdate = None
+Timestamp.Now = 0
+TransactionPayment.NextFeeMultiplier = FixedU128(0.000000000000000000)
+TransactionPayment.StorageVersion = None
+Treasury.Approvals = BoundedVec([], 100)
+Treasury.ProposalCount = 0
+Treasury.Proposals = [
+]
+UniversalDividend.CurrentUd = 1000
+UniversalDividend.CurrentUdIndex = 1
+UniversalDividend.MonetaryMass = 0
+UniversalDividend.NextReeval = 100
+UniversalDividend.PastReevals = BoundedVec([(1, 1000)], 4)
diff --git a/runtime/gdev/tests/values_storage_with_run_to_block.b.3.expected.txt b/runtime/gdev/tests/values_storage_with_run_to_block.b.3.expected.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b1509750ab0c99b8dc9ca9ef696c15adfb51ec6a
--- /dev/null
+++ b/runtime/gdev/tests/values_storage_with_run_to_block.b.3.expected.txt
@@ -0,0 +1,244 @@
+Account.PendingNewAccounts = [
+]
+Account.PendingRandomIdAssignments = [
+]
+AtomicSwap.PendingSwaps = [
+]
+AuthorityMembers.AccountIdOf = [
+]
+AuthorityMembers.AuthoritiesCounter = 1
+AuthorityMembers.BlackList = []
+AuthorityMembers.IncomingAuthorities = []
+AuthorityMembers.Members = [
+	1 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) }
+	2 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) }
+	3 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) }
+]
+AuthorityMembers.MustRotateKeysBefore = [
+	1500 = [1]
+]
+AuthorityMembers.OnlineAuthorities = [1]
+AuthorityMembers.OutgoingAuthorities = []
+AuthorityMembersMembers.ExpireOn = [
+]
+Authorship.Author = None
+Authorship.DidSetUncles = Some(false)
+Authorship.Uncles = Some(BoundedVec([], 11))
+Babe.AuthorVrfRandomness = None
+Babe.Authorities = WeakBoundedVec([(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], 32)
+Babe.CurrentSlot = Slot(0)
+Babe.EpochConfig = None
+Babe.EpochIndex = 0
+Babe.EpochStart = None
+Babe.GenesisSlot = Slot(0)
+Babe.Initialized = Some(None)
+Babe.Lateness = None
+Babe.NextAuthorities = Some(WeakBoundedVec([(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], 32))
+Babe.NextEpochConfig = None
+Babe.NextRandomness = None
+Babe.PendingEpochConfigChange = None
+Babe.Randomness = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+Babe.SegmentIndex = None
+Babe.UnderConstruction = [
+]
+Balances.Account = [
+]
+Balances.Locks = [
+]
+Balances.Reserves = [
+]
+Balances.StorageVersion = None
+Balances.TotalIssuance = 0
+Cert.CertsByReceiver = [
+	1 = [(2, 10000), (3, 10000), (4, 10000)]
+	2 = [(1, 10000), (3, 10000), (4, 10000)]
+	3 = [(1, 10000), (2, 10000), (4, 10000)]
+	4 = [(1, 10000), (2, 10000), (3, 10000)]
+]
+Cert.StorageCertsRemovableOn = [
+	10000 = [(2, 1), (3, 1), (4, 1), (1, 2), (3, 2), (4, 2), (1, 3), (2, 3), (4, 3), (1, 4), (2, 4), (3, 4)]
+]
+Cert.StorageIdtyCertMeta = [
+	1 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	2 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	3 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	4 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+]
+Grandpa.CurrentSetId = None
+Grandpa.NextForced = None
+Grandpa.PendingChange = None
+Grandpa.SetIdSession = [
+	0 = 0
+]
+Grandpa.Stalled = None
+Grandpa.State = None
+Identity.CounterForIdentities = Some(4)
+Identity.Identities = [
+	1 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...), removable_on: 0, status: IdtyStatus::Validated }
+	2 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...), removable_on: 0, status: IdtyStatus::Validated }
+	3 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...), removable_on: 0, status: IdtyStatus::Validated }
+	4 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...), removable_on: 0, status: IdtyStatus::Validated }
+]
+Identity.IdentitiesNames = [
+	"Alice" = ()
+	"Bob" = ()
+	"Charlie" = ()
+	"Dave" = ()
+]
+Identity.IdentitiesRemovableOn = [
+]
+Identity.IdentityIndexOf = [
+	306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = 4
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = 2
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = 3
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = 1
+]
+Identity.NextIdtyIndex = Some(5)
+ImOnline.AuthoredBlocks = [
+]
+ImOnline.HeartbeatAfter = None
+ImOnline.Keys = Some(WeakBoundedVec([Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...))], 32))
+ImOnline.ReceivedHeartbeats = [
+]
+Membership.CounterForMembership = Some(4)
+Membership.Membership = [
+	1 = MembershipData { expire_on: 100 }
+	2 = MembershipData { expire_on: 100 }
+	3 = MembershipData { expire_on: 100 }
+	4 = MembershipData { expire_on: 100 }
+]
+Membership.MembershipsExpireOn = [
+	100 = [1, 2, 3, 4]
+]
+Membership.PendingMembership = [
+]
+Membership.PendingMembershipsExpireOn = [
+]
+Multisig.Multisigs = [
+]
+Offences.ConcurrentReportsIndex = [
+]
+Offences.Reports = [
+]
+OneshotAccount.OneshotAccounts = [
+]
+Parameters.ParametersStorage = Parameters { babe_epoch_duration: 25, cert_period: 15, cert_max_by_issuer: 10, cert_min_received_cert_to_issue_cert: 2, cert_validity_period: 10000, idty_confirm_period: 40, idty_creation_period: 50, membership_period: 100, pending_membership_period: 500, ud_creation_period: 10, ud_reeval_period: 200, smith_cert_period: 15, smith_cert_max_by_issuer: 8, smith_cert_min_received_cert_to_issue_cert: 2, smith_cert_validity_period: 1000, smith_membership_period: 1000, smith_pending_membership_period: 500, smith_wot_first_cert_issuable_on: 20, smith_wot_min_cert_for_membership: 2, wot_first_cert_issuable_on: 20, wot_min_cert_for_create_idty_right: 2, wot_min_cert_for_membership: 2 }
+Preimage.PreimageFor = [
+]
+Preimage.StatusFor = [
+]
+ProvideRandomness.CounterForRequestsIds = None
+ProvideRandomness.NexEpochHookIn = Some(5)
+ProvideRandomness.RequestIdProvider = None
+ProvideRandomness.RequestsIds = [
+]
+ProvideRandomness.RequestsReadyAtEpoch = [
+]
+ProvideRandomness.RequestsReadyAtNextBlock = []
+Proxy.Announcements = [
+]
+Proxy.Proxies = [
+]
+Scheduler.Agenda = [
+]
+Scheduler.IncompleteSince = None
+Scheduler.Lookup = [
+]
+Session.CurrentIndex = 0
+Session.DisabledValidators = []
+Session.KeyOwner = [
+	(KeyTypeId([103, 114, 97, 110]), [136, 220, 52, 23, 213, 5, 142, 196, 180, 80, 62, 12, 18, 234, 26, 10, 137, 190, 32, 15, 233, 137, 34, 66, 61, 67, 52, 1, 79, 166, 176, 238]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([103, 114, 97, 110]), [209, 124, 45, 120, 35, 235, 242, 96, 253, 19, 143, 45, 126, 39, 209, 20, 192, 20, 93, 150, 139, 95, 245, 0, 97, 37, 242, 65, 79, 173, 174, 105]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([103, 114, 97, 110]), [67, 150, 96, 179, 108, 108, 3, 175, 175, 202, 2, 123, 145, 11, 79, 236, 249, 152, 1, 131, 76, 98, 165, 230, 0, 111, 39, 217, 120, 222, 35, 79]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([105, 109, 111, 110]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([105, 109, 111, 110]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([105, 109, 111, 110]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([97, 117, 100, 105]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([97, 117, 100, 105]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([97, 117, 100, 105]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([98, 97, 98, 101]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([98, 97, 98, 101]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([98, 97, 98, 101]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+]
+Session.NextKeys = [
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = SessionKeys { grandpa: Public(d17c2d7823ebf260fd138f2d7e27d114c0145d968b5ff5006125f2414fadae69 (5GoNkf6W...)), babe: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)), im_online: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)), authority_discovery: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)) }
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = SessionKeys { grandpa: Public(439660b36c6c03afafca027b910b4fecf99801834c62a5e6006f27d978de234f (5DbKjhNL...)), babe: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)), im_online: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)), authority_discovery: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)) }
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = SessionKeys { grandpa: Public(88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee (5FA9nQDV...)), babe: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), im_online: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), authority_discovery: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)) }
+]
+Session.QueuedChanged = false
+Session.QueuedKeys = [(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...), SessionKeys { grandpa: Public(88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee (5FA9nQDV...)), babe: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), im_online: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), authority_discovery: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)) })]
+Session.Validators = [d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)]
+SmithCert.StorageCertsRemovableOn = [
+	1000 = [(2, 1), (3, 1), (1, 2), (3, 2), (1, 3), (2, 3)]
+]
+SmithCert.StorageIdtyCertMeta = [
+	1 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	2 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	3 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+]
+SmithCertCert.sByReceiver = [
+	1 = [(2, 1000), (3, 1000)]
+	2 = [(1, 1000), (3, 1000)]
+	3 = [(1, 1000), (2, 1000)]
+]
+SmithMembership.CounterForMembership = Some(3)
+SmithMembership.Membership = [
+	1 = MembershipData { expire_on: 1000 }
+	2 = MembershipData { expire_on: 1000 }
+	3 = MembershipData { expire_on: 1000 }
+]
+SmithMembership.MembershipsExpireOn = [
+	1000 = [1, 2, 3]
+]
+SmithMembership.PendingMembership = [
+]
+SmithMembership.PendingMembershipsExpireOn = [
+]
+Sudo.Key = None
+System.Account = [
+	306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: Some(0x0303030303030303030303030303030303030303030303030303030303030303), free: 0, reserved: 0, fee_frozen: 0 } }
+	6d6f646c70792f74727372790000000000000000000000000000000000000000 (5EYCAe5i...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 0, data: AccountData { random_id: None, free: 200, reserved: 0, fee_frozen: 0 } }
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0101010101010101010101010101010101010101010101010101010101010101), free: 0, reserved: 0, fee_frozen: 0 } }
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0202020202020202020202020202020202020202020202020202020202020202), free: 0, reserved: 0, fee_frozen: 0 } }
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0000000000000000000000000000000000000000000000000000000000000000), free: 0, reserved: 0, fee_frozen: 0 } }
+]
+System.AllExtrinsicsLen = None
+System.BlockHash = [
+	0 = 0x4545454545454545454545454545454545454545454545454545454545454545
+]
+System.BlockWeight = None
+System.Digest = None
+System.EventCount = None
+System.EventTopics = [
+]
+System.Events = None
+System.ExecutionPhase = None
+System.ExtrinsicCount = None
+System.ExtrinsicData = [
+]
+System.LastRuntimeUpgrade = Some(LastRuntimeUpgradeInfo { spec_version: 400, spec_name: RuntimeString::Owned("gdev") })
+System.Number = Some(3)
+System.ParentHash = Some(0x4545454545454545454545454545454545454545454545454545454545454545)
+System.UpgradedToTripleRefCount = Some(true)
+System.UpgradedToU32RefCount = Some(true)
+TechnicalCommittee.Members = []
+TechnicalCommittee.Prime = None
+TechnicalCommittee.ProposalCount = 0
+TechnicalCommittee.ProposalOf = [
+]
+TechnicalCommittee.Proposals = BoundedVec([], 20)
+TechnicalCommittee.Voting = [
+]
+Timestamp.DidUpdate = None
+Timestamp.Now = 0
+TransactionPayment.NextFeeMultiplier = FixedU128(0.000000000000000000)
+TransactionPayment.StorageVersion = None
+Treasury.Approvals = BoundedVec([], 100)
+Treasury.ProposalCount = 0
+Treasury.Proposals = [
+]
+UniversalDividend.CurrentUd = 1000
+UniversalDividend.CurrentUdIndex = 1
+UniversalDividend.MonetaryMass = 0
+UniversalDividend.NextReeval = 100
+UniversalDividend.PastReevals = BoundedVec([(1, 1000)], 4)
diff --git a/runtime/gdev/tests/values_storage_with_run_to_block.b.4.expected.txt b/runtime/gdev/tests/values_storage_with_run_to_block.b.4.expected.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b4971a26e76a03f8a13d6cbc6ef83edf86b8dabf
--- /dev/null
+++ b/runtime/gdev/tests/values_storage_with_run_to_block.b.4.expected.txt
@@ -0,0 +1,251 @@
+Account.PendingNewAccounts = [
+]
+Account.PendingRandomIdAssignments = [
+]
+AtomicSwap.PendingSwaps = [
+]
+AuthorityMembers.AccountIdOf = [
+]
+AuthorityMembers.AuthoritiesCounter = 1
+AuthorityMembers.BlackList = []
+AuthorityMembers.IncomingAuthorities = []
+AuthorityMembers.Members = [
+	1 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) }
+	2 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) }
+	3 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) }
+]
+AuthorityMembers.MustRotateKeysBefore = [
+	1500 = [1]
+]
+AuthorityMembers.OnlineAuthorities = [1]
+AuthorityMembers.OutgoingAuthorities = []
+AuthorityMembersMembers.ExpireOn = [
+]
+Authorship.Author = None
+Authorship.DidSetUncles = Some(false)
+Authorship.Uncles = Some(BoundedVec([], 11))
+Babe.AuthorVrfRandomness = None
+Babe.Authorities = WeakBoundedVec([(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], 32)
+Babe.CurrentSlot = Slot(0)
+Babe.EpochConfig = None
+Babe.EpochIndex = 0
+Babe.EpochStart = None
+Babe.GenesisSlot = Slot(0)
+Babe.Initialized = Some(None)
+Babe.Lateness = None
+Babe.NextAuthorities = Some(WeakBoundedVec([(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], 32))
+Babe.NextEpochConfig = None
+Babe.NextRandomness = None
+Babe.PendingEpochConfigChange = None
+Babe.Randomness = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+Babe.SegmentIndex = None
+Babe.UnderConstruction = [
+]
+Balances.Account = [
+]
+Balances.Locks = [
+]
+Balances.Reserves = [
+]
+Balances.StorageVersion = None
+Balances.TotalIssuance = 0
+Cert.CertsByReceiver = [
+	1 = [(2, 10000), (3, 10000), (4, 10000)]
+	2 = [(1, 10000), (3, 10000), (4, 10000)]
+	3 = [(1, 10000), (2, 10000), (4, 10000)]
+	4 = [(1, 10000), (2, 10000), (3, 10000)]
+	5 = [(1, 10003)]
+]
+Cert.StorageCertsRemovableOn = [
+	10000 = [(2, 1), (3, 1), (4, 1), (1, 2), (3, 2), (4, 2), (1, 3), (2, 3), (4, 3), (1, 4), (2, 4), (3, 4)]
+	10003 = [(1, 5)]
+]
+Cert.StorageIdtyCertMeta = [
+	1 = IdtyCertMeta { issued_count: 4, next_issuable_on: 18, received_count: 3 }
+	2 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	3 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	4 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	5 = IdtyCertMeta { issued_count: 0, next_issuable_on: 0, received_count: 1 }
+]
+Grandpa.CurrentSetId = None
+Grandpa.NextForced = None
+Grandpa.PendingChange = None
+Grandpa.SetIdSession = [
+	0 = 0
+]
+Grandpa.Stalled = None
+Grandpa.State = None
+Identity.CounterForIdentities = Some(5)
+Identity.Identities = [
+	1 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 53, old_owner_key: None, owner_key: d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...), removable_on: 0, status: IdtyStatus::Validated }
+	2 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...), removable_on: 0, status: IdtyStatus::Validated }
+	3 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...), removable_on: 0, status: IdtyStatus::Validated }
+	4 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...), removable_on: 0, status: IdtyStatus::Validated }
+	5 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(None) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...), removable_on: 43, status: IdtyStatus::Created }
+]
+Identity.IdentitiesNames = [
+	"Alice" = ()
+	"Bob" = ()
+	"Charlie" = ()
+	"Dave" = ()
+]
+Identity.IdentitiesRemovableOn = [
+	43 = [(5, IdtyStatus::Created)]
+]
+Identity.IdentityIndexOf = [
+	306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = 4
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = 2
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = 3
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = 1
+	e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...) = 5
+]
+Identity.NextIdtyIndex = Some(6)
+ImOnline.AuthoredBlocks = [
+]
+ImOnline.HeartbeatAfter = None
+ImOnline.Keys = Some(WeakBoundedVec([Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...))], 32))
+ImOnline.ReceivedHeartbeats = [
+]
+Membership.CounterForMembership = Some(4)
+Membership.Membership = [
+	1 = MembershipData { expire_on: 100 }
+	2 = MembershipData { expire_on: 100 }
+	3 = MembershipData { expire_on: 100 }
+	4 = MembershipData { expire_on: 100 }
+]
+Membership.MembershipsExpireOn = [
+	100 = [1, 2, 3, 4]
+]
+Membership.PendingMembership = [
+]
+Membership.PendingMembershipsExpireOn = [
+]
+Multisig.Multisigs = [
+]
+Offences.ConcurrentReportsIndex = [
+]
+Offences.Reports = [
+]
+OneshotAccount.OneshotAccounts = [
+]
+Parameters.ParametersStorage = Parameters { babe_epoch_duration: 25, cert_period: 15, cert_max_by_issuer: 10, cert_min_received_cert_to_issue_cert: 2, cert_validity_period: 10000, idty_confirm_period: 40, idty_creation_period: 50, membership_period: 100, pending_membership_period: 500, ud_creation_period: 10, ud_reeval_period: 200, smith_cert_period: 15, smith_cert_max_by_issuer: 8, smith_cert_min_received_cert_to_issue_cert: 2, smith_cert_validity_period: 1000, smith_membership_period: 1000, smith_pending_membership_period: 500, smith_wot_first_cert_issuable_on: 20, smith_wot_min_cert_for_membership: 2, wot_first_cert_issuable_on: 20, wot_min_cert_for_create_idty_right: 2, wot_min_cert_for_membership: 2 }
+Preimage.PreimageFor = [
+]
+Preimage.StatusFor = [
+]
+ProvideRandomness.CounterForRequestsIds = None
+ProvideRandomness.NexEpochHookIn = Some(5)
+ProvideRandomness.RequestIdProvider = None
+ProvideRandomness.RequestsIds = [
+]
+ProvideRandomness.RequestsReadyAtEpoch = [
+]
+ProvideRandomness.RequestsReadyAtNextBlock = []
+Proxy.Announcements = [
+]
+Proxy.Proxies = [
+]
+Scheduler.Agenda = [
+]
+Scheduler.IncompleteSince = None
+Scheduler.Lookup = [
+]
+Session.CurrentIndex = 0
+Session.DisabledValidators = []
+Session.KeyOwner = [
+	(KeyTypeId([103, 114, 97, 110]), [136, 220, 52, 23, 213, 5, 142, 196, 180, 80, 62, 12, 18, 234, 26, 10, 137, 190, 32, 15, 233, 137, 34, 66, 61, 67, 52, 1, 79, 166, 176, 238]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([103, 114, 97, 110]), [209, 124, 45, 120, 35, 235, 242, 96, 253, 19, 143, 45, 126, 39, 209, 20, 192, 20, 93, 150, 139, 95, 245, 0, 97, 37, 242, 65, 79, 173, 174, 105]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([103, 114, 97, 110]), [67, 150, 96, 179, 108, 108, 3, 175, 175, 202, 2, 123, 145, 11, 79, 236, 249, 152, 1, 131, 76, 98, 165, 230, 0, 111, 39, 217, 120, 222, 35, 79]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([105, 109, 111, 110]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([105, 109, 111, 110]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([105, 109, 111, 110]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([97, 117, 100, 105]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([97, 117, 100, 105]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([97, 117, 100, 105]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([98, 97, 98, 101]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([98, 97, 98, 101]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([98, 97, 98, 101]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+]
+Session.NextKeys = [
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = SessionKeys { grandpa: Public(d17c2d7823ebf260fd138f2d7e27d114c0145d968b5ff5006125f2414fadae69 (5GoNkf6W...)), babe: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)), im_online: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)), authority_discovery: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)) }
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = SessionKeys { grandpa: Public(439660b36c6c03afafca027b910b4fecf99801834c62a5e6006f27d978de234f (5DbKjhNL...)), babe: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)), im_online: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)), authority_discovery: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)) }
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = SessionKeys { grandpa: Public(88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee (5FA9nQDV...)), babe: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), im_online: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), authority_discovery: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)) }
+]
+Session.QueuedChanged = false
+Session.QueuedKeys = [(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...), SessionKeys { grandpa: Public(88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee (5FA9nQDV...)), babe: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), im_online: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), authority_discovery: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)) })]
+Session.Validators = [d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)]
+SmithCert.StorageCertsRemovableOn = [
+	1000 = [(2, 1), (3, 1), (1, 2), (3, 2), (1, 3), (2, 3)]
+]
+SmithCert.StorageIdtyCertMeta = [
+	1 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	2 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	3 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+]
+SmithCertCert.sByReceiver = [
+	1 = [(2, 1000), (3, 1000)]
+	2 = [(1, 1000), (3, 1000)]
+	3 = [(1, 1000), (2, 1000)]
+]
+SmithMembership.CounterForMembership = Some(3)
+SmithMembership.Membership = [
+	1 = MembershipData { expire_on: 1000 }
+	2 = MembershipData { expire_on: 1000 }
+	3 = MembershipData { expire_on: 1000 }
+]
+SmithMembership.MembershipsExpireOn = [
+	1000 = [1, 2, 3]
+]
+SmithMembership.PendingMembership = [
+]
+SmithMembership.PendingMembershipsExpireOn = [
+]
+Sudo.Key = None
+System.Account = [
+	306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: Some(0x0303030303030303030303030303030303030303030303030303030303030303), free: 0, reserved: 0, fee_frozen: 0 } }
+	6d6f646c70792f74727372790000000000000000000000000000000000000000 (5EYCAe5i...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 0, data: AccountData { random_id: None, free: 200, reserved: 0, fee_frozen: 0 } }
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0101010101010101010101010101010101010101010101010101010101010101), free: 0, reserved: 0, fee_frozen: 0 } }
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0202020202020202020202020202020202020202020202020202020202020202), free: 0, reserved: 0, fee_frozen: 0 } }
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0000000000000000000000000000000000000000000000000000000000000000), free: 0, reserved: 0, fee_frozen: 0 } }
+	e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: None, free: 0, reserved: 0, fee_frozen: 0 } }
+]
+System.AllExtrinsicsLen = None
+System.BlockHash = [
+	0 = 0x4545454545454545454545454545454545454545454545454545454545454545
+]
+System.BlockWeight = None
+System.Digest = None
+System.EventCount = None
+System.EventTopics = [
+]
+System.Events = None
+System.ExecutionPhase = None
+System.ExtrinsicCount = None
+System.ExtrinsicData = [
+]
+System.LastRuntimeUpgrade = Some(LastRuntimeUpgradeInfo { spec_version: 400, spec_name: RuntimeString::Owned("gdev") })
+System.Number = Some(4)
+System.ParentHash = Some(0x4545454545454545454545454545454545454545454545454545454545454545)
+System.UpgradedToTripleRefCount = Some(true)
+System.UpgradedToU32RefCount = Some(true)
+TechnicalCommittee.Members = []
+TechnicalCommittee.Prime = None
+TechnicalCommittee.ProposalCount = 0
+TechnicalCommittee.ProposalOf = [
+]
+TechnicalCommittee.Proposals = BoundedVec([], 20)
+TechnicalCommittee.Voting = [
+]
+Timestamp.DidUpdate = None
+Timestamp.Now = 0
+TransactionPayment.NextFeeMultiplier = FixedU128(0.000000000000000000)
+TransactionPayment.StorageVersion = None
+Treasury.Approvals = BoundedVec([], 100)
+Treasury.ProposalCount = 0
+Treasury.Proposals = [
+]
+UniversalDividend.CurrentUd = 1000
+UniversalDividend.CurrentUdIndex = 1
+UniversalDividend.MonetaryMass = 0
+UniversalDividend.NextReeval = 100
+UniversalDividend.PastReevals = BoundedVec([(1, 1000)], 4)
diff --git a/runtime/gdev/tests/values_storage_with_run_to_block.b.5.expected.txt b/runtime/gdev/tests/values_storage_with_run_to_block.b.5.expected.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0aa23d4f535ed7309ed9af337b680af8d36e284c
--- /dev/null
+++ b/runtime/gdev/tests/values_storage_with_run_to_block.b.5.expected.txt
@@ -0,0 +1,254 @@
+Account.PendingNewAccounts = [
+]
+Account.PendingRandomIdAssignments = [
+]
+AtomicSwap.PendingSwaps = [
+]
+AuthorityMembers.AccountIdOf = [
+]
+AuthorityMembers.AuthoritiesCounter = 1
+AuthorityMembers.BlackList = []
+AuthorityMembers.IncomingAuthorities = []
+AuthorityMembers.Members = [
+	1 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) }
+	2 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) }
+	3 = MemberData { expire_on_session: 0, must_rotate_keys_before: 1500, owner_key: 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) }
+]
+AuthorityMembers.MustRotateKeysBefore = [
+	1500 = [1]
+]
+AuthorityMembers.OnlineAuthorities = [1]
+AuthorityMembers.OutgoingAuthorities = []
+AuthorityMembersMembers.ExpireOn = [
+]
+Authorship.Author = None
+Authorship.DidSetUncles = Some(false)
+Authorship.Uncles = Some(BoundedVec([], 11))
+Babe.AuthorVrfRandomness = None
+Babe.Authorities = WeakBoundedVec([(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], 32)
+Babe.CurrentSlot = Slot(0)
+Babe.EpochConfig = None
+Babe.EpochIndex = 0
+Babe.EpochStart = None
+Babe.GenesisSlot = Slot(0)
+Babe.Initialized = Some(None)
+Babe.Lateness = None
+Babe.NextAuthorities = Some(WeakBoundedVec([(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], 32))
+Babe.NextEpochConfig = None
+Babe.NextRandomness = None
+Babe.PendingEpochConfigChange = None
+Babe.Randomness = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+Babe.SegmentIndex = None
+Babe.UnderConstruction = [
+]
+Balances.Account = [
+]
+Balances.Locks = [
+]
+Balances.Reserves = [
+]
+Balances.StorageVersion = None
+Balances.TotalIssuance = 0
+Cert.CertsByReceiver = [
+	1 = [(2, 10000), (3, 10000), (4, 10000)]
+	2 = [(1, 10000), (3, 10000), (4, 10000)]
+	3 = [(1, 10000), (2, 10000), (4, 10000)]
+	4 = [(1, 10000), (2, 10000), (3, 10000)]
+	5 = [(1, 10003)]
+]
+Cert.StorageCertsRemovableOn = [
+	10000 = [(2, 1), (3, 1), (4, 1), (1, 2), (3, 2), (4, 2), (1, 3), (2, 3), (4, 3), (1, 4), (2, 4), (3, 4)]
+	10003 = [(1, 5)]
+]
+Cert.StorageIdtyCertMeta = [
+	1 = IdtyCertMeta { issued_count: 4, next_issuable_on: 18, received_count: 3 }
+	2 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	3 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	4 = IdtyCertMeta { issued_count: 3, next_issuable_on: 0, received_count: 3 }
+	5 = IdtyCertMeta { issued_count: 0, next_issuable_on: 0, received_count: 1 }
+]
+Grandpa.CurrentSetId = None
+Grandpa.NextForced = None
+Grandpa.PendingChange = None
+Grandpa.SetIdSession = [
+	0 = 0
+]
+Grandpa.Stalled = None
+Grandpa.State = None
+Identity.CounterForIdentities = Some(5)
+Identity.Identities = [
+	1 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 53, old_owner_key: None, owner_key: d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...), removable_on: 0, status: IdtyStatus::Validated }
+	2 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...), removable_on: 0, status: IdtyStatus::Validated }
+	3 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...), removable_on: 0, status: IdtyStatus::Validated }
+	4 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(Some(1)) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: 306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...), removable_on: 0, status: IdtyStatus::Validated }
+	5 = IdtyValue { data: IdtyData { first_eligible_ud: FirstEligibleUd(None) }, next_creatable_identity_on: 0, old_owner_key: None, owner_key: e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...), removable_on: 43, status: IdtyStatus::ConfirmedByOwner }
+]
+Identity.IdentitiesNames = [
+	"Alice" = ()
+	"Bob" = ()
+	"Charlie" = ()
+	"Dave" = ()
+	"Eeeeeveeeee" = ()
+]
+Identity.IdentitiesRemovableOn = [
+	43 = [(5, IdtyStatus::Created)]
+]
+Identity.IdentityIndexOf = [
+	306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = 4
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = 2
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = 3
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = 1
+	e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...) = 5
+]
+Identity.NextIdtyIndex = Some(6)
+ImOnline.AuthoredBlocks = [
+]
+ImOnline.HeartbeatAfter = None
+ImOnline.Keys = Some(WeakBoundedVec([Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...))], 32))
+ImOnline.ReceivedHeartbeats = [
+]
+Membership.CounterForMembership = Some(4)
+Membership.Membership = [
+	1 = MembershipData { expire_on: 100 }
+	2 = MembershipData { expire_on: 100 }
+	3 = MembershipData { expire_on: 100 }
+	4 = MembershipData { expire_on: 100 }
+]
+Membership.MembershipsExpireOn = [
+	100 = [1, 2, 3, 4]
+]
+Membership.PendingMembership = [
+	5 = ()
+]
+Membership.PendingMembershipsExpireOn = [
+	504 = [5]
+]
+Multisig.Multisigs = [
+]
+Offences.ConcurrentReportsIndex = [
+]
+Offences.Reports = [
+]
+OneshotAccount.OneshotAccounts = [
+]
+Parameters.ParametersStorage = Parameters { babe_epoch_duration: 25, cert_period: 15, cert_max_by_issuer: 10, cert_min_received_cert_to_issue_cert: 2, cert_validity_period: 10000, idty_confirm_period: 40, idty_creation_period: 50, membership_period: 100, pending_membership_period: 500, ud_creation_period: 10, ud_reeval_period: 200, smith_cert_period: 15, smith_cert_max_by_issuer: 8, smith_cert_min_received_cert_to_issue_cert: 2, smith_cert_validity_period: 1000, smith_membership_period: 1000, smith_pending_membership_period: 500, smith_wot_first_cert_issuable_on: 20, smith_wot_min_cert_for_membership: 2, wot_first_cert_issuable_on: 20, wot_min_cert_for_create_idty_right: 2, wot_min_cert_for_membership: 2 }
+Preimage.PreimageFor = [
+]
+Preimage.StatusFor = [
+]
+ProvideRandomness.CounterForRequestsIds = None
+ProvideRandomness.NexEpochHookIn = Some(5)
+ProvideRandomness.RequestIdProvider = None
+ProvideRandomness.RequestsIds = [
+]
+ProvideRandomness.RequestsReadyAtEpoch = [
+]
+ProvideRandomness.RequestsReadyAtNextBlock = []
+Proxy.Announcements = [
+]
+Proxy.Proxies = [
+]
+Scheduler.Agenda = [
+]
+Scheduler.IncompleteSince = None
+Scheduler.Lookup = [
+]
+Session.CurrentIndex = 0
+Session.DisabledValidators = []
+Session.KeyOwner = [
+	(KeyTypeId([103, 114, 97, 110]), [136, 220, 52, 23, 213, 5, 142, 196, 180, 80, 62, 12, 18, 234, 26, 10, 137, 190, 32, 15, 233, 137, 34, 66, 61, 67, 52, 1, 79, 166, 176, 238]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([103, 114, 97, 110]), [209, 124, 45, 120, 35, 235, 242, 96, 253, 19, 143, 45, 126, 39, 209, 20, 192, 20, 93, 150, 139, 95, 245, 0, 97, 37, 242, 65, 79, 173, 174, 105]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([103, 114, 97, 110]), [67, 150, 96, 179, 108, 108, 3, 175, 175, 202, 2, 123, 145, 11, 79, 236, 249, 152, 1, 131, 76, 98, 165, 230, 0, 111, 39, 217, 120, 222, 35, 79]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([105, 109, 111, 110]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([105, 109, 111, 110]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([105, 109, 111, 110]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([97, 117, 100, 105]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([97, 117, 100, 105]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([97, 117, 100, 105]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+	(KeyTypeId([98, 97, 98, 101]), [142, 175, 4, 21, 22, 135, 115, 99, 38, 201, 254, 161, 126, 37, 252, 82, 135, 97, 54, 147, 201, 18, 144, 156, 178, 38, 170, 71, 148, 242, 106, 72]) = 8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)
+	(KeyTypeId([98, 97, 98, 101]), [144, 181, 171, 32, 92, 105, 116, 201, 234, 132, 27, 230, 136, 134, 70, 51, 220, 156, 168, 163, 87, 132, 62, 234, 207, 35, 20, 100, 153, 101, 254, 34]) = 90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)
+	(KeyTypeId([98, 97, 98, 101]), [212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]) = d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
+]
+Session.NextKeys = [
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = SessionKeys { grandpa: Public(d17c2d7823ebf260fd138f2d7e27d114c0145d968b5ff5006125f2414fadae69 (5GoNkf6W...)), babe: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)), im_online: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)), authority_discovery: Public(8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...)) }
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = SessionKeys { grandpa: Public(439660b36c6c03afafca027b910b4fecf99801834c62a5e6006f27d978de234f (5DbKjhNL...)), babe: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)), im_online: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)), authority_discovery: Public(90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...)) }
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = SessionKeys { grandpa: Public(88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee (5FA9nQDV...)), babe: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), im_online: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), authority_discovery: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)) }
+]
+Session.QueuedChanged = false
+Session.QueuedKeys = [(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...), SessionKeys { grandpa: Public(88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee (5FA9nQDV...)), babe: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), im_online: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), authority_discovery: Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)) })]
+Session.Validators = [d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)]
+SmithCert.StorageCertsRemovableOn = [
+	1000 = [(2, 1), (3, 1), (1, 2), (3, 2), (1, 3), (2, 3)]
+]
+SmithCert.StorageIdtyCertMeta = [
+	1 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	2 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+	3 = IdtyCertMeta { issued_count: 2, next_issuable_on: 0, received_count: 2 }
+]
+SmithCertCert.sByReceiver = [
+	1 = [(2, 1000), (3, 1000)]
+	2 = [(1, 1000), (3, 1000)]
+	3 = [(1, 1000), (2, 1000)]
+]
+SmithMembership.CounterForMembership = Some(3)
+SmithMembership.Membership = [
+	1 = MembershipData { expire_on: 1000 }
+	2 = MembershipData { expire_on: 1000 }
+	3 = MembershipData { expire_on: 1000 }
+]
+SmithMembership.MembershipsExpireOn = [
+	1000 = [1, 2, 3]
+]
+SmithMembership.PendingMembership = [
+]
+SmithMembership.PendingMembershipsExpireOn = [
+]
+Sudo.Key = None
+System.Account = [
+	306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20 (5DAAnrj7...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: Some(0x0303030303030303030303030303030303030303030303030303030303030303), free: 0, reserved: 0, fee_frozen: 0 } }
+	6d6f646c70792f74727372790000000000000000000000000000000000000000 (5EYCAe5i...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 0, data: AccountData { random_id: None, free: 200, reserved: 0, fee_frozen: 0 } }
+	8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48 (5FHneW46...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0101010101010101010101010101010101010101010101010101010101010101), free: 0, reserved: 0, fee_frozen: 0 } }
+	90b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22 (5FLSigC9...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0202020202020202020202020202020202020202020202020202020202020202), free: 0, reserved: 0, fee_frozen: 0 } }
+	d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...) = AccountInfo { nonce: 0, consumers: 0, providers: 1, sufficients: 1, data: AccountData { random_id: Some(0x0000000000000000000000000000000000000000000000000000000000000000), free: 0, reserved: 0, fee_frozen: 0 } }
+	e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e (5HGjWAeF...) = AccountInfo { nonce: 0, consumers: 0, providers: 0, sufficients: 1, data: AccountData { random_id: None, free: 0, reserved: 0, fee_frozen: 0 } }
+]
+System.AllExtrinsicsLen = None
+System.BlockHash = [
+	0 = 0x4545454545454545454545454545454545454545454545454545454545454545
+]
+System.BlockWeight = None
+System.Digest = None
+System.EventCount = None
+System.EventTopics = [
+]
+System.Events = None
+System.ExecutionPhase = None
+System.ExtrinsicCount = None
+System.ExtrinsicData = [
+]
+System.LastRuntimeUpgrade = Some(LastRuntimeUpgradeInfo { spec_version: 400, spec_name: RuntimeString::Owned("gdev") })
+System.Number = Some(5)
+System.ParentHash = Some(0x4545454545454545454545454545454545454545454545454545454545454545)
+System.UpgradedToTripleRefCount = Some(true)
+System.UpgradedToU32RefCount = Some(true)
+TechnicalCommittee.Members = []
+TechnicalCommittee.Prime = None
+TechnicalCommittee.ProposalCount = 0
+TechnicalCommittee.ProposalOf = [
+]
+TechnicalCommittee.Proposals = BoundedVec([], 20)
+TechnicalCommittee.Voting = [
+]
+Timestamp.DidUpdate = None
+Timestamp.Now = 0
+TransactionPayment.NextFeeMultiplier = FixedU128(0.000000000000000000)
+TransactionPayment.StorageVersion = None
+Treasury.Approvals = BoundedVec([], 100)
+Treasury.ProposalCount = 0
+Treasury.Proposals = [
+]
+UniversalDividend.CurrentUd = 1000
+UniversalDividend.CurrentUdIndex = 1
+UniversalDividend.MonetaryMass = 0
+UniversalDividend.NextReeval = 100
+UniversalDividend.PastReevals = BoundedVec([(1, 1000)], 4)