Access child storage over RPC. (#2586)

* Access child storage over RPC.

* Address review grumbles.

* Test happy case in child_storage rpc.

* Remove stray printlns

* Fix line widths.

* Bump runtime again.

* Fix genesis storage root calculation for light clients.

* Don't pass values to full_storage_root child_delta.
This commit is contained in:
Tomasz Drwięga
2019-05-19 19:02:09 +02:00
committed by DemiMarie-parity
parent a827869dfb
commit 98de97e1d9
11 changed files with 248 additions and 24 deletions
+11 -3
View File
@@ -34,7 +34,8 @@ pub use keyring::{sr25519::Keyring as AuthorityKeyring, AccountKeyring};
use std::{sync::Arc, collections::HashMap};
use futures::future::FutureResult;
use primitives::Blake2Hasher;
use runtime_primitives::StorageOverlay;
use primitives::storage::well_known_keys;
use runtime_primitives::{StorageOverlay, ChildrenStorageOverlay};
use runtime_primitives::traits::{
Block as BlockT, Header as HeaderT, Hash as HashT, NumberFor
};
@@ -271,7 +272,7 @@ fn genesis_config(support_changes_trie: bool) -> GenesisConfig {
fn genesis_storage(
support_changes_trie: bool,
extension: HashMap<Vec<u8>, Vec<u8>>
) -> StorageOverlay {
) -> (StorageOverlay, ChildrenStorageOverlay) {
let mut storage = genesis_config(support_changes_trie).genesis_map();
storage.extend(extension.into_iter());
@@ -280,7 +281,14 @@ fn genesis_storage(
);
let block: runtime::Block = client::genesis::construct_genesis_block(state_root);
storage.extend(additional_storage_with_genesis(&block));
storage
let mut child_storage = ChildrenStorageOverlay::default();
child_storage.insert(
well_known_keys::CHILD_STORAGE_KEY_PREFIX.iter().chain(b"test").cloned().collect(),
vec![(b"key".to_vec(), vec![42_u8])].into_iter().collect()
);
(storage, child_storage)
}
impl<Block: BlockT> client::light::fetcher::Fetcher<Block> for LightFetcher {