From fa84cec382cf9c7f891a729ff585abc953080e3f Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Wed, 14 Nov 2018 18:06:10 +0300 Subject: [PATCH] Fetch changes trie roots + CHT-based proof for these roots (#896) * build CHT for changes tries roots * collect chnages tries roots proof in key_changes_proof * flush check_changes_proof * fixed compilation * LightDataChecker now has a ref to the blockchain * continue passing proofs * new light db tests * more CHT tests * more tests for key changes proof when headers are missing * lost files --- substrate/core/client/db/src/light.rs | 314 ++++++++------ substrate/core/client/src/cht.rs | 202 +++++++-- substrate/core/client/src/client.rs | 131 +++++- substrate/core/client/src/error.rs | 10 +- substrate/core/client/src/in_mem.rs | 21 +- substrate/core/client/src/light/blockchain.rs | 90 +++- substrate/core/client/src/light/fetcher.rs | 410 ++++++++++++++---- substrate/core/client/src/light/mod.rs | 7 +- substrate/core/network/src/chain.rs | 11 +- substrate/core/network/src/message.rs | 11 +- substrate/core/network/src/on_demand.rs | 24 +- substrate/core/network/src/protocol.rs | 22 +- substrate/core/service/src/components.rs | 2 +- substrate/core/state-machine/src/lib.rs | 35 +- .../core/state-machine/src/proving_backend.rs | 48 +- .../core/state-machine/src/trie_backend.rs | 5 + .../state-machine/src/trie_backend_essence.rs | 5 + .../substrate_test_runtime.compact.wasm | Bin 45154 -> 223059 bytes .../release/node_runtime.compact.wasm | Bin 618357 -> 828026 bytes 19 files changed, 1035 insertions(+), 313 deletions(-) diff --git a/substrate/core/client/db/src/light.rs b/substrate/core/client/db/src/light.rs index f336df4d28..cbe42ac52b 100644 --- a/substrate/core/client/db/src/light.rs +++ b/substrate/core/client/db/src/light.rs @@ -31,7 +31,7 @@ use codec::{Decode, Encode}; use primitives::{AuthorityId, Blake2Hasher}; use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, - Zero, One, As, NumberFor}; + Zero, One, As, NumberFor, Digest, DigestItem}; use cache::{DbCacheSync, DbCache, ComplexBlockId}; use utils::{meta_keys, Meta, db_err, number_to_lookup_key, open_database, read_db, block_id_to_lookup_key, read_meta}; @@ -45,11 +45,16 @@ pub(crate) mod columns { pub const CHT: Option = Some(4); } +/// Prefix for headers CHT. +const HEADER_CHT_PREFIX: u8 = 0; +/// Prefix for changes tries roots CHT. +const CHANGES_TRIE_CHT_PREFIX: u8 = 1; + /// Light blockchain storage. Stores most recent headers + CHTs for older headers. /// Locks order: meta, leaves, cache. pub struct LightStorage { db: Arc, - meta: RwLock::Header as HeaderT>::Number, Block::Hash>>, + meta: RwLock, Block::Hash>>, leaves: RwLock>>, cache: DbCacheSync, } @@ -109,7 +114,7 @@ impl LightStorage fn update_meta( &self, hash: Block::Hash, - number: <::Header as HeaderT>::Number, + number: NumberFor, is_best: bool, is_finalized: bool, ) { @@ -167,7 +172,7 @@ impl BlockchainHeaderBackend for LightStorage } } - fn number(&self, hash: Block::Hash) -> ClientResult::Header as HeaderT>::Number>> { + fn number(&self, hash: Block::Hash) -> ClientResult>> { if let Some(lookup_key) = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Hash(hash))? { let number = ::utils::lookup_key_to_number(&lookup_key)?; Ok(Some(number)) @@ -176,12 +181,21 @@ impl BlockchainHeaderBackend for LightStorage } } - fn hash(&self, number: <::Header as HeaderT>::Number) -> ClientResult> { + fn hash(&self, number: NumberFor) -> ClientResult> { Ok(self.header(BlockId::Number(number))?.map(|header| header.hash().clone())) } } impl LightStorage { + // Get block changes trie root, if available. + fn changes_trie_root(&self, block: BlockId) -> ClientResult> { + self.header(block) + .map(|header| header.and_then(|header| + header.digest().log(DigestItem::as_changes_trie_root) + .cloned())) + } + + // Note that a block is finalized. Only call with child of last finalized block. fn note_finalized( &self, transaction: &mut DBTransaction, @@ -199,35 +213,68 @@ impl LightStorage { let lookup_key = ::utils::number_to_lookup_key(header.number().clone()); transaction.put(columns::META, meta_keys::FINALIZED_BLOCK, &lookup_key); - // build new CHT if required + // build new CHT(s) if required if let Some(new_cht_number) = cht::is_build_required(cht::SIZE, *header.number()) { let new_cht_start: NumberFor = cht::start_number(cht::SIZE, new_cht_number); - let new_cht_root = cht::compute_root::( + + let new_header_cht_root = cht::compute_root::( cht::SIZE, new_cht_number, (new_cht_start.as_()..) - .map(|num| self.hash(As::sa(num)).unwrap_or_default()) + .map(|num| self.hash(As::sa(num))) + )?; + transaction.put( + columns::CHT, + &cht_key(HEADER_CHT_PREFIX, new_cht_start), + new_header_cht_root.as_ref() ); - if let Some(new_cht_root) = new_cht_root { - transaction.put(columns::CHT, &number_to_lookup_key(new_cht_start), new_cht_root.as_ref()); + // if the header includes changes trie root, let's build a changes tries roots CHT + if header.digest().log(DigestItem::as_changes_trie_root).is_some() { + let new_changes_trie_cht_root = cht::compute_root::( + cht::SIZE, new_cht_number, (new_cht_start.as_()..) + .map(|num| self.changes_trie_root(BlockId::Number(As::sa(num)))) + )?; + transaction.put( + columns::CHT, + &cht_key(CHANGES_TRIE_CHT_PREFIX, new_cht_start), + new_changes_trie_cht_root.as_ref() + ); + } - let mut prune_block = new_cht_start; - let new_cht_end = cht::end_number(cht::SIZE, new_cht_number); - trace!(target: "db", "Replacing blocks [{}..{}] with CHT#{}", new_cht_start, new_cht_end, new_cht_number); + // prune headers that are replaced with CHT + let mut prune_block = new_cht_start; + let new_cht_end = cht::end_number(cht::SIZE, new_cht_number); + trace!(target: "db", "Replacing blocks [{}..{}] with CHT#{}", + new_cht_start, new_cht_end, new_cht_number); - while prune_block <= new_cht_end { - if let Some(hash) = self.hash(prune_block)? { - let lookup_key = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Number(prune_block))? - .expect("retrieved hash for `prune_block` right above. therefore retrieving lookup key must succeed. q.e.d."); - transaction.delete(columns::HASH_LOOKUP, hash.as_ref()); - transaction.delete(columns::HEADER, &lookup_key); - } - prune_block += NumberFor::::one(); + while prune_block <= new_cht_end { + if let Some(hash) = self.hash(prune_block)? { + let lookup_key = block_id_to_lookup_key::(&*self.db, columns::HASH_LOOKUP, BlockId::Number(prune_block))? + .expect("retrieved hash for `prune_block` right above. therefore retrieving lookup key must succeed. q.e.d."); + transaction.delete(columns::HASH_LOOKUP, hash.as_ref()); + transaction.delete(columns::HEADER, &lookup_key); } + prune_block += One::one(); } } Ok(()) } + + /// Read CHT root of given type for the block. + fn read_cht_root( + &self, + cht_type: u8, + cht_size: u64, + block: NumberFor + ) -> ClientResult { + let no_cht_for_block = || ClientErrorKind::Backend(format!("CHT for block {} not exists", block)).into(); + + let cht_number = cht::block_to_cht_number(cht_size, block).ok_or_else(no_cht_for_block)?; + let cht_start = cht::start_number(cht_size, cht_number); + self.db.get(columns::CHT, &cht_key(cht_type, cht_start)).map_err(db_err)? + .ok_or_else(no_cht_for_block) + .and_then(|hash| Block::Hash::decode(&mut &*hash).ok_or_else(no_cht_for_block)) + } } impl LightBlockchainStorage for LightStorage @@ -354,14 +401,12 @@ impl LightBlockchainStorage for LightStorage Ok(()) } - fn cht_root(&self, cht_size: u64, block: <::Header as HeaderT>::Number) -> ClientResult { - let no_cht_for_block = || ClientErrorKind::Backend(format!("CHT for block {} not exists", block)).into(); + fn header_cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult { + self.read_cht_root(HEADER_CHT_PREFIX, cht_size, block) + } - let cht_number = cht::block_to_cht_number(cht_size, block).ok_or_else(no_cht_for_block)?; - let cht_start = cht::start_number(cht_size, cht_number); - self.db.get(columns::CHT, &number_to_lookup_key(cht_start)).map_err(db_err)? - .ok_or_else(no_cht_for_block) - .and_then(|hash| Block::Hash::decode(&mut &*hash).ok_or_else(no_cht_for_block)) + fn changes_trie_cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult { + self.read_cht_root(CHANGES_TRIE_CHT_PREFIX, cht_size, block) } fn finalize_header(&self, id: BlockId) -> ClientResult<()> { @@ -400,68 +445,72 @@ impl LightBlockchainStorage for LightStorage } } +/// Build the key for inserting header-CHT at given block. +fn cht_key>(cht_type: u8, block: N) -> [u8; 5] { + let mut key = [cht_type; 5]; + key[1..].copy_from_slice(&number_to_lookup_key(block)); + key +} + #[cfg(test)] pub(crate) mod tests { use client::cht; + use runtime_primitives::generic::DigestItem; use runtime_primitives::testing::{H256 as Hash, Header, Block as RawBlock, ExtrinsicWrapper}; use super::*; type Block = RawBlock>; - fn prepare_header(parent: &Hash, number: u64, extrinsics_root: Hash) -> Header { + pub fn default_header(parent: &Hash, number: u64) -> Header { Header { number: number.into(), parent_hash: *parent, state_root: Hash::random(), digest: Default::default(), - extrinsics_root, + extrinsics_root: Default::default(), } } - pub fn insert_block_with_extrinsics_root( + fn header_with_changes_trie(parent: &Hash, number: u64) -> Header { + let mut header = default_header(parent, number); + header.digest.logs.push(DigestItem::ChangesTrieRoot([(number % 256) as u8; 32].into())); + header + } + + fn header_with_extrinsics_root(parent: &Hash, number: u64, extrinsics_root: Hash) -> Header { + let mut header = default_header(parent, number); + header.extrinsics_root = extrinsics_root; + header + } + + pub fn insert_block Header>( db: &LightStorage, - parent: &Hash, - number: u64, authorities: Option>, - extrinsics_root: Hash, + header: F, ) -> Hash { - let header = prepare_header(parent, number, extrinsics_root); + let header = header(); let hash = header.hash(); db.import_header(header, authorities, NewBlockState::Best).unwrap(); hash } - pub fn insert_block( + fn insert_final_block Header>( db: &LightStorage, - parent: &Hash, - number: u64, - authorities: Option> + authorities: Option>, + header: F, ) -> Hash { - let header = prepare_header(parent, number, Default::default()); - let hash = header.hash(); - db.import_header(header, authorities, NewBlockState::Best).unwrap(); - hash - } - - fn insert_final_block( - db: &LightStorage, - parent: &Hash, - number: u64, - authorities: Option> - ) -> Hash { - let header = prepare_header(parent, number, Default::default()); + let header = header(); let hash = header.hash(); db.import_header(header, authorities, NewBlockState::Final).unwrap(); hash } - fn insert_non_best_block( + fn insert_non_best_block Header>( db: &LightStorage, - parent: &Hash, - number: u64, - authorities: Option> + authorities: Option>, + header: F, ) -> Hash { - let header = prepare_header(parent, number, Default::default()); + let header = header(); let hash = header.hash(); db.import_header(header, authorities, NewBlockState::Normal).unwrap(); hash @@ -470,7 +519,7 @@ pub(crate) mod tests { #[test] fn returns_known_header() { let db = LightStorage::new_test(); - let known_hash = insert_block(&db, &Default::default(), 0, None); + let known_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); let header_by_hash = db.header(BlockId::Hash(known_hash)).unwrap().unwrap(); let header_by_number = db.header(BlockId::Number(0)).unwrap().unwrap(); assert_eq!(header_by_hash, header_by_number); @@ -486,12 +535,12 @@ pub(crate) mod tests { #[test] fn returns_info() { let db = LightStorage::new_test(); - let genesis_hash = insert_block(&db, &Default::default(), 0, None); + let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); let info = db.info().unwrap(); assert_eq!(info.best_hash, genesis_hash); assert_eq!(info.best_number, 0); assert_eq!(info.genesis_hash, genesis_hash); - let best_hash = insert_block(&db, &genesis_hash, 1, None); + let best_hash = insert_block(&db, None, || default_header(&genesis_hash, 1)); let info = db.info().unwrap(); assert_eq!(info.best_hash, best_hash); assert_eq!(info.best_number, 1); @@ -501,7 +550,7 @@ pub(crate) mod tests { #[test] fn returns_block_status() { let db = LightStorage::new_test(); - let genesis_hash = insert_block(&db, &Default::default(), 0, None); + let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); assert_eq!(db.status(BlockId::Hash(genesis_hash)).unwrap(), BlockStatus::InChain); assert_eq!(db.status(BlockId::Number(0)).unwrap(), BlockStatus::InChain); assert_eq!(db.status(BlockId::Hash(1.into())).unwrap(), BlockStatus::Unknown); @@ -511,7 +560,7 @@ pub(crate) mod tests { #[test] fn returns_block_hash() { let db = LightStorage::new_test(); - let genesis_hash = insert_block(&db, &Default::default(), 0, None); + let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); assert_eq!(db.hash(0).unwrap(), Some(genesis_hash)); assert_eq!(db.hash(1).unwrap(), None); } @@ -520,64 +569,81 @@ pub(crate) mod tests { fn import_header_works() { let db = LightStorage::new_test(); - let genesis_hash = insert_block(&db, &Default::default(), 0, None); + let genesis_hash = insert_block(&db, None, || default_header(&Default::default(), 0)); assert_eq!(db.db.iter(columns::HEADER).count(), 1); assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), 1); - let _ = insert_block(&db, &genesis_hash, 1, None); + let _ = insert_block(&db, None, || default_header(&genesis_hash, 1)); assert_eq!(db.db.iter(columns::HEADER).count(), 2); assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), 2); } #[test] fn finalized_ancient_headers_are_replaced_with_cht() { - let db = LightStorage::new_test(); + fn insert_headers Header>(header_producer: F) -> LightStorage { + let db = LightStorage::new_test(); - // insert genesis block header (never pruned) - let mut prev_hash = insert_final_block(&db, &Default::default(), 0, None); + // insert genesis block header (never pruned) + let mut prev_hash = insert_final_block(&db, None, || header_producer(&Default::default(), 0)); - // insert SIZE blocks && ensure that nothing is pruned - for number in 0..cht::SIZE { - prev_hash = insert_block(&db, &prev_hash, 1 + number, None); + // insert SIZE blocks && ensure that nothing is pruned + for number in 0..cht::SIZE { + prev_hash = insert_block(&db, None, || header_producer(&prev_hash, 1 + number)); + } + assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE) as usize); + assert_eq!(db.db.iter(columns::CHT).count(), 0); + + // insert next SIZE blocks && ensure that nothing is pruned + for number in 0..cht::SIZE { + prev_hash = insert_block(&db, None, || header_producer(&prev_hash, 1 + cht::SIZE + number)); + } + assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + cht::SIZE) as usize); + assert_eq!(db.db.iter(columns::CHT).count(), 0); + + // insert block #{2 * cht::SIZE + 1} && check that new CHT is created + headers of this CHT are pruned + // nothing is yet finalized, so nothing is pruned. + prev_hash = insert_block(&db, None, || header_producer(&prev_hash, 1 + cht::SIZE + cht::SIZE)); + assert_eq!(db.db.iter(columns::HEADER).count(), (2 + cht::SIZE + cht::SIZE) as usize); + assert_eq!(db.db.iter(columns::CHT).count(), 0); + + // now finalize the block. + for i in (0..(cht::SIZE + cht::SIZE)).map(|i| i + 1) { + db.finalize_header(BlockId::Number(i)).unwrap(); + } + db.finalize_header(BlockId::Hash(prev_hash)).unwrap(); + db } - assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (1 + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::CHT).count(), 0); - // insert next SIZE blocks && ensure that nothing is pruned - for number in 0..cht::SIZE { - prev_hash = insert_block(&db, &prev_hash, 1 + cht::SIZE + number, None); - } - assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (1 + cht::SIZE + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::CHT).count(), 0); - - // insert block #{2 * cht::SIZE + 1} && check that new CHT is created + headers of this CHT are pruned - // nothing is yet finalized, so nothing is pruned. - prev_hash = insert_block(&db, &prev_hash, 1 + cht::SIZE + cht::SIZE, None); - assert_eq!(db.db.iter(columns::HEADER).count(), (2 + cht::SIZE + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (2 + cht::SIZE + cht::SIZE) as usize); - assert_eq!(db.db.iter(columns::CHT).count(), 0); - - // now finalize the block. - for i in (0..(cht::SIZE + cht::SIZE)).map(|i| i + 1) { - db.finalize_header(BlockId::Number(i)).unwrap(); - } - db.finalize_header(BlockId::Hash(prev_hash)).unwrap(); + // when headers are created without changes tries roots + let db = insert_headers(default_header); assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + 1) as usize); assert_eq!(db.db.iter(columns::HASH_LOOKUP).count(), (1 + cht::SIZE + 1) as usize); assert_eq!(db.db.iter(columns::CHT).count(), 1); assert!((0..cht::SIZE).all(|i| db.db.get(columns::HEADER, &number_to_lookup_key(1 + i)).unwrap().is_none())); + assert!(db.header_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); + assert!(db.header_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); + assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE / 2).is_err()); + assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); + + // when headers are created with changes tries roots + let db = insert_headers(header_with_changes_trie); + assert_eq!(db.db.iter(columns::HEADER).count(), (1 + cht::SIZE + 1) as usize); + assert_eq!(db.db.iter(columns::CHT).count(), 2); + assert!((0..cht::SIZE).all(|i| db.db.get(columns::HEADER, &number_to_lookup_key(1 + i)).unwrap().is_none())); + assert!(db.header_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); + assert!(db.header_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); + assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE / 2).is_ok()); + assert!(db.changes_trie_cht_root(cht::SIZE, cht::SIZE + cht::SIZE / 2).is_err()); } #[test] fn get_cht_fails_for_genesis_block() { - assert!(LightStorage::::new_test().cht_root(cht::SIZE, 0).is_err()); + assert!(LightStorage::::new_test().header_cht_root(cht::SIZE, 0).is_err()); } #[test] fn get_cht_fails_for_non_existant_cht() { - assert!(LightStorage::::new_test().cht_root(cht::SIZE, (cht::SIZE / 2) as u64).is_err()); + assert!(LightStorage::::new_test().header_cht_root(cht::SIZE, (cht::SIZE / 2) as u64).is_err()); } #[test] @@ -585,15 +651,21 @@ pub(crate) mod tests { let db = LightStorage::new_test(); // insert 1 + SIZE + SIZE + 1 blocks so that CHT#0 is created - let mut prev_hash = insert_final_block(&db, &Default::default(), 0, None); + let mut prev_hash = insert_final_block(&db, None, || header_with_changes_trie(&Default::default(), 0)); for i in 1..1 + cht::SIZE + cht::SIZE + 1 { - prev_hash = insert_block(&db, &prev_hash, i as u64, None); + prev_hash = insert_block(&db, None, || header_with_changes_trie(&prev_hash, i as u64)); db.finalize_header(BlockId::Hash(prev_hash)).unwrap(); } - let cht_root_1 = db.cht_root(cht::SIZE, cht::start_number(cht::SIZE, 0)).unwrap(); - let cht_root_2 = db.cht_root(cht::SIZE, (cht::start_number(cht::SIZE, 0) + cht::SIZE / 2) as u64).unwrap(); - let cht_root_3 = db.cht_root(cht::SIZE, cht::end_number(cht::SIZE, 0)).unwrap(); + let cht_root_1 = db.header_cht_root(cht::SIZE, cht::start_number(cht::SIZE, 0)).unwrap(); + let cht_root_2 = db.header_cht_root(cht::SIZE, (cht::start_number(cht::SIZE, 0) + cht::SIZE / 2) as u64).unwrap(); + let cht_root_3 = db.header_cht_root(cht::SIZE, cht::end_number(cht::SIZE, 0)).unwrap(); + assert_eq!(cht_root_1, cht_root_2); + assert_eq!(cht_root_2, cht_root_3); + + let cht_root_1 = db.changes_trie_cht_root(cht::SIZE, cht::start_number(cht::SIZE, 0)).unwrap(); + let cht_root_2 = db.changes_trie_cht_root(cht::SIZE, (cht::start_number(cht::SIZE, 0) + cht::SIZE / 2) as u64).unwrap(); + let cht_root_3 = db.changes_trie_cht_root(cht::SIZE, cht::end_number(cht::SIZE, 0)).unwrap(); assert_eq!(cht_root_1, cht_root_2); assert_eq!(cht_root_2, cht_root_3); } @@ -601,16 +673,16 @@ pub(crate) mod tests { #[test] fn tree_route_works() { let db = LightStorage::new_test(); - let block0 = insert_block(&db, &Default::default(), 0, None); + let block0 = insert_block(&db, None, || default_header(&Default::default(), 0)); // fork from genesis: 3 prong. - let a1 = insert_block(&db, &block0, 1, None); - let a2 = insert_block(&db, &a1, 2, None); - let a3 = insert_block(&db, &a2, 3, None); + let a1 = insert_block(&db, None, || default_header(&block0, 1)); + let a2 = insert_block(&db, None, || default_header(&a1, 2)); + let a3 = insert_block(&db, None, || default_header(&a2, 3)); // fork from genesis: 2 prong. - let b1 = insert_block_with_extrinsics_root(&db, &block0, 1, None, Hash::from([1; 32])); - let b2 = insert_block(&db, &b1, 2, None); + let b1 = insert_block(&db, None, || header_with_extrinsics_root(&block0, 1, Hash::from([1; 32]))); + let b2 = insert_block(&db, None, || default_header(&b1, 2)); { let tree_route = ::client::blockchain::tree_route( @@ -686,19 +758,19 @@ pub(crate) mod tests { (7, None), // block will work for 'future' block too ]; - let hash0 = insert_final_block(&db, &Default::default(), 0, None); + let hash0 = insert_final_block(&db, None, || default_header(&Default::default(), 0)); run_checks(&db, 0, &checks); - let hash1 = insert_final_block(&db, &hash0, 1, None); + let hash1 = insert_final_block(&db, None, || default_header(&hash0, 1)); run_checks(&db, 1, &checks); - let hash2 = insert_final_block(&db, &hash1, 2, Some(vec![[1u8; 32].into()])); + let hash2 = insert_final_block(&db, Some(vec![[1u8; 32].into()]), || default_header(&hash1, 2)); run_checks(&db, 2, &checks); - let hash3 = insert_final_block(&db, &hash2, 3, Some(vec![[1u8; 32].into()])); + let hash3 = insert_final_block(&db, Some(vec![[1u8; 32].into()]), || default_header(&hash2, 3)); run_checks(&db, 3, &checks); - let hash4 = insert_final_block(&db, &hash3, 4, Some(vec![[1u8; 32].into(), [2u8; 32].into()])); + let hash4 = insert_final_block(&db, Some(vec![[1u8; 32].into(), [2u8; 32].into()]), || default_header(&hash3, 4)); run_checks(&db, 4, &checks); - let hash5 = insert_final_block(&db, &hash4, 5, Some(vec![[1u8; 32].into(), [2u8; 32].into()])); + let hash5 = insert_final_block(&db, Some(vec![[1u8; 32].into(), [2u8; 32].into()]), || default_header(&hash4, 5)); run_checks(&db, 5, &checks); - let hash6 = insert_final_block(&db, &hash5, 6, None); + let hash6 = insert_final_block(&db, None, || default_header(&hash5, 6)); run_checks(&db, 7, &checks); (hash2, hash6) @@ -708,9 +780,9 @@ pub(crate) mod tests { // some older non-best blocks are inserted // ... -> B2(1) -> B2_1(1) -> B2_2(2) // => the cache ignores all writes before best finalized block - let hash2_1 = insert_non_best_block(&db, &hash2, 3, Some(vec![[1u8; 32].into()])); + let hash2_1 = insert_non_best_block(&db, Some(vec![[1u8; 32].into()]), || default_header(&hash2, 3)); assert_eq!(None, db.cache().authorities_at(BlockId::Hash(hash2_1))); - let hash2_2 = insert_non_best_block(&db, &hash2_1, 4, Some(vec![[1u8; 32].into(), [2u8; 32].into()])); + let hash2_2 = insert_non_best_block(&db, Some(vec![[1u8; 32].into(), [2u8; 32].into()]), || default_header(&hash2_1, 4)); assert_eq!(None, db.cache().authorities_at(BlockId::Hash(hash2_2))); } @@ -721,32 +793,32 @@ pub(crate) mod tests { // \> B6_1_1(5) // \> B6_1_2(6) -> B6_1_3(7) - let hash7 = insert_block(&db, &hash6, 7, Some(vec![[3u8; 32].into()])); + let hash7 = insert_block(&db, Some(vec![[3u8; 32].into()]), || default_header(&hash6, 7)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); - let hash8 = insert_block(&db, &hash7, 8, Some(vec![[3u8; 32].into()])); + let hash8 = insert_block(&db, Some(vec![[3u8; 32].into()]), || default_header(&hash7, 8)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); - let hash6_1 = insert_block(&db, &hash6, 7, Some(vec![[4u8; 32].into()])); + let hash6_1 = insert_block(&db, Some(vec![[4u8; 32].into()]), || default_header(&hash6, 7)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1)), Some(vec![[4u8; 32].into()])); - let hash6_1_1 = insert_non_best_block(&db, &hash6_1, 8, Some(vec![[5u8; 32].into()])); + let hash6_1_1 = insert_non_best_block(&db, Some(vec![[5u8; 32].into()]), || default_header(&hash6_1, 8)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1)), Some(vec![[4u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1_1)), Some(vec![[5u8; 32].into()])); - let hash6_1_2 = insert_non_best_block(&db, &hash6_1, 8, Some(vec![[6u8; 32].into()])); + let hash6_1_2 = insert_non_best_block(&db, Some(vec![[6u8; 32].into()]), || default_header(&hash6_1, 8)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1)), Some(vec![[4u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1_1)), Some(vec![[5u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6_1_2)), Some(vec![[6u8; 32].into()])); - let hash6_2 = insert_block(&db, &hash6_1, 8, Some(vec![[4u8; 32].into()])); + let hash6_2 = insert_block(&db, Some(vec![[4u8; 32].into()]), || default_header(&hash6_1, 8)); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash6)), None); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash7)), Some(vec![[3u8; 32].into()])); assert_eq!(db.cache().authorities_at(BlockId::Hash(hash8)), Some(vec![[3u8; 32].into()])); diff --git a/substrate/core/client/src/cht.rs b/substrate/core/client/src/cht.rs index 39e1aaa95b..51fb485da6 100644 --- a/substrate/core/client/src/cht.rs +++ b/substrate/core/client/src/cht.rs @@ -23,6 +23,8 @@ //! root has. A correct proof implies that the claimed block is identical to the one //! we discarded. +use std::collections::HashSet; + use hash_db; use heapsize::HeapSizeOf; use trie; @@ -30,7 +32,8 @@ use trie; use primitives::{H256, convert_hash}; use runtime_primitives::traits::{As, Header as HeaderT, SimpleArithmetic, One}; use state_machine::backend::InMemory as InMemoryState; -use state_machine::{prove_read, read_proof_check}; +use state_machine::{MemoryDB, TrieBackend, Backend as StateBackend, + prove_read_on_trie_backend, read_proof_check, read_proof_check_on_proving_backend}; use error::{Error as ClientError, ErrorKind as ClientErrorKind, Result as ClientResult}; @@ -63,41 +66,48 @@ pub fn compute_root( cht_size: u64, cht_num: Header::Number, hashes: I, -) -> Option +) -> ClientResult where Header: HeaderT, Hasher: hash_db::Hasher, Hasher::Out: Ord, - I: IntoIterator>, + I: IntoIterator>>, { - build_pairs::(cht_size, cht_num, hashes) - .map(|pairs| trie::trie_root::(pairs)) + Ok(trie::trie_root::( + build_pairs::(cht_size, cht_num, hashes)? + )) } /// Build CHT-based header proof. -pub fn build_proof( +pub fn build_proof( cht_size: u64, cht_num: Header::Number, - block_num: Header::Number, - hashes: I -) -> Option>> + blocks: BlocksI, + hashes: HashesI +) -> ClientResult>> where Header: HeaderT, Hasher: hash_db::Hasher, Hasher::Out: Ord + HeapSizeOf, - I: IntoIterator>, + BlocksI: IntoIterator, + HashesI: IntoIterator>>, { - let transaction = build_pairs::(cht_size, cht_num, hashes)? + let transaction = build_pairs::(cht_size, cht_num, hashes)? .into_iter() .map(|(k, v)| (None, k, Some(v))) .collect::>(); let storage = InMemoryState::::default().update(transaction); - let (value, proof) = prove_read(storage, &encode_cht_key(block_num)).ok()?; - if value.is_none() { - None - } else { - Some(proof) + let trie_storage = storage.try_into_trie_backend() + .expect("InMemoryState::try_into_trie_backend always returns Some; qed"); + let mut total_proof = HashSet::new(); + for block in blocks.into_iter() { + debug_assert_eq!(block_to_cht_number(cht_size, block), Some(cht_num)); + + let (value, proof) = prove_read_on_trie_backend(&trie_storage, &encode_cht_key(block))?; + assert!(value.is_some(), "we have just built trie that includes the value for block"); + total_proof.extend(proof); } + Ok(total_proof.into_iter().collect()) } /// Check CHT-based header proof. @@ -109,20 +119,104 @@ pub fn check_proof( ) -> ClientResult<()> where Header: HeaderT, - Header::Hash: AsRef<[u8]>, Hasher: hash_db::Hasher, Hasher::Out: Ord + HeapSizeOf, +{ + do_check_proof::(local_root, local_number, remote_hash, move |local_root, local_cht_key| + read_proof_check::(local_root, remote_proof, + local_cht_key).map_err(|e| ClientError::from(e))) +} + +/// Check CHT-based header proof on pre-created proving backend. +pub fn check_proof_on_proving_backend( + local_root: Header::Hash, + local_number: Header::Number, + remote_hash: Header::Hash, + proving_backend: &TrieBackend, Hasher>, +) -> ClientResult<()> + where + Header: HeaderT, + Hasher: hash_db::Hasher, + Hasher::Out: Ord + HeapSizeOf, +{ + do_check_proof::(local_root, local_number, remote_hash, |_, local_cht_key| + read_proof_check_on_proving_backend::( + proving_backend, local_cht_key).map_err(|e| ClientError::from(e))) +} + +/// Check CHT-based header proof using passed checker function. +fn do_check_proof( + local_root: Header::Hash, + local_number: Header::Number, + remote_hash: Header::Hash, + checker: F, +) -> ClientResult<()> + where + Header: HeaderT, + Hasher: hash_db::Hasher, + Hasher::Out: Ord + HeapSizeOf, + F: FnOnce(Hasher::Out, &[u8]) -> ClientResult>>, { let root: Hasher::Out = convert_hash(&local_root); let local_cht_key = encode_cht_key(local_number); - let local_cht_value = read_proof_check::(root, remote_proof, - &local_cht_key).map_err(|e| ClientError::from(e))?; - let local_cht_value = local_cht_value.ok_or_else(|| ClientErrorKind::InvalidHeaderProof)?; - let local_hash = decode_cht_value(&local_cht_value).ok_or_else(|| ClientErrorKind::InvalidHeaderProof)?; + let local_cht_value = checker(root, &local_cht_key)?; + let local_cht_value = local_cht_value.ok_or_else(|| ClientErrorKind::InvalidCHTProof)?; + let local_hash = decode_cht_value(&local_cht_value).ok_or_else(|| ClientErrorKind::InvalidCHTProof)?; match &local_hash[..] == remote_hash.as_ref() { true => Ok(()), - false => Err(ClientErrorKind::InvalidHeaderProof.into()), + false => Err(ClientErrorKind::InvalidCHTProof.into()), } + +} + +/// Group ordered blocks by CHT number and call functor with blocks of each group. +pub fn for_each_cht_group( + cht_size: u64, + blocks: I, + mut functor: F, + mut functor_param: P, +) -> ClientResult<()> + where + Header: HeaderT, + I: IntoIterator, + F: FnMut(P, Header::Number, Vec) -> ClientResult

, +{ + let mut current_cht_num = None; + let mut current_cht_blocks = Vec::new(); + for block in blocks { + let new_cht_num = match block_to_cht_number(cht_size, block.as_()) { + Some(new_cht_num) => new_cht_num, + None => return Err(ClientErrorKind::Backend(format!( + "Cannot compute CHT root for the block #{}", block)).into() + ), + }; + + let advance_to_next_cht = current_cht_num.is_some() && current_cht_num != Some(new_cht_num); + if advance_to_next_cht { + let current_cht_num = current_cht_num.expect("advance_to_next_cht is true; + it is true only when current_cht_num is Some; qed"); + assert!(new_cht_num > current_cht_num, "for_each_cht_group only supports ordered iterators"); + + functor_param = functor( + functor_param, + As::sa(current_cht_num), + ::std::mem::replace(&mut current_cht_blocks, Vec::new()), + )?; + } + + current_cht_blocks.push(block); + current_cht_num = Some(new_cht_num); + } + + if let Some(current_cht_num) = current_cht_num { + functor( + functor_param, + As::sa(current_cht_num), + ::std::mem::replace(&mut current_cht_blocks, Vec::new()), + )?; + } + + Ok(()) } /// Build pairs for computing CHT. @@ -130,26 +224,29 @@ fn build_pairs( cht_size: u64, cht_num: Header::Number, hashes: I -) -> Option, Vec)>> +) -> ClientResult, Vec)>> where Header: HeaderT, - I: IntoIterator>, + I: IntoIterator>>, { let start_num = start_number(cht_size, cht_num); let mut pairs = Vec::new(); let mut hash_number = start_num; for hash in hashes.into_iter().take(cht_size as usize) { - pairs.push(hash.map(|hash| ( + let hash = hash?.ok_or_else(|| ClientError::from( + ClientErrorKind::MissingHashRequiredForCHT(cht_num.as_(), hash_number.as_()) + ))?; + pairs.push(( encode_cht_key(hash_number).to_vec(), encode_cht_value(hash) - ))?); + )); hash_number += Header::Number::one(); } if pairs.len() as u64 == cht_size { - Some(pairs) + Ok(pairs) } else { - None + Err(ClientErrorKind::MissingHashRequiredForCHT(cht_num.as_(), hash_number.as_()).into()) } } @@ -241,30 +338,59 @@ mod tests { #[test] fn build_pairs_fails_when_no_enough_blocks() { - assert!(build_pairs::(SIZE, 0, vec![Some(1.into()); SIZE as usize / 2]).is_none()); + assert!(build_pairs::(SIZE, 0, + ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize / 2)).is_err()); } #[test] fn build_pairs_fails_when_missing_block() { - assert!(build_pairs::(SIZE, 0, ::std::iter::repeat(Some(1.into())).take(SIZE as usize / 2) - .chain(::std::iter::once(None)) - .chain(::std::iter::repeat(Some(2.into())).take(SIZE as usize / 2 - 1))).is_none()); + assert!(build_pairs::(SIZE, 0, ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize / 2) + .chain(::std::iter::once(Ok(None))) + .chain(::std::iter::repeat_with(|| Ok(Some(2.into()))).take(SIZE as usize / 2 - 1))).is_err()); } #[test] fn compute_root_works() { - assert!(compute_root::(SIZE, 42, vec![Some(1.into()); SIZE as usize]).is_some()); + assert!(compute_root::(SIZE, 42, + ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_ok()); } #[test] - fn build_proof_fails_when_querying_wrong_block() { - assert!(build_proof::( - SIZE, 0, (SIZE * 1000) as u64, vec![Some(1.into()); SIZE as usize]).is_none()); + #[should_panic] + fn build_proof_panics_when_querying_wrong_block() { + assert!(build_proof::( + SIZE, 0, vec![(SIZE * 1000) as u64], + ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_err()); } #[test] fn build_proof_works() { - assert!(build_proof::( - SIZE, 0, (SIZE / 2) as u64, vec![Some(1.into()); SIZE as usize]).is_some()); + assert!(build_proof::( + SIZE, 0, vec![(SIZE / 2) as u64], + ::std::iter::repeat_with(|| Ok(Some(1.into()))).take(SIZE as usize)).is_ok()); + } + + #[test] + #[should_panic] + fn for_each_cht_group_panics() { + let _ = for_each_cht_group::(SIZE, vec![SIZE * 5, SIZE * 2], |_, _, _| Ok(()), ()); + } + + #[test] + fn for_each_cht_group_works() { + let _ = for_each_cht_group::(SIZE, vec![ + SIZE * 2 + 1, SIZE * 2 + 2, SIZE * 2 + 5, + SIZE * 4 + 1, SIZE * 4 + 7, + SIZE * 6 + 1 + ], |_, cht_num, blocks| { + match cht_num { + 2 => assert_eq!(blocks, vec![SIZE * 2 + 1, SIZE * 2 + 2, SIZE * 2 + 5]), + 4 => assert_eq!(blocks, vec![SIZE * 4 + 1, SIZE * 4 + 7]), + 6 => assert_eq!(blocks, vec![SIZE * 6 + 1]), + _ => unreachable!(), + } + + Ok(()) + }, ()); } } diff --git a/substrate/core/client/src/client.rs b/substrate/core/client/src/client.rs index 6cf62dca2c..967da7a589 100644 --- a/substrate/core/client/src/client.rs +++ b/substrate/core/client/src/client.rs @@ -16,7 +16,7 @@ //! Substrate Client -use std::{marker::PhantomData, sync::Arc}; +use std::{marker::PhantomData, collections::{HashSet, BTreeMap}, sync::Arc}; use error::Error; use futures::sync::mpsc; use parking_lot::{Mutex, RwLock}; @@ -29,7 +29,7 @@ use runtime_primitives::{ use consensus::{ImportBlock, ImportResult, BlockOrigin}; use runtime_primitives::traits::{ Block as BlockT, Header as HeaderT, Zero, As, NumberFor, CurrentHeight, BlockNumberToHash, - ApiRef, ProvideRuntimeApi + ApiRef, ProvideRuntimeApi, Digest, DigestItem, }; use runtime_primitives::BuildStorage; use runtime_api::{Core as CoreAPI, CallApiAt, TaggedTransactionQueue, ConstructRuntimeApi}; @@ -38,8 +38,9 @@ use primitives::storage::{StorageKey, StorageData}; use primitives::storage::well_known_keys; use codec::Decode; use state_machine::{ - Backend as StateBackend, CodeExecutor, ChangesTrieAnchorBlockId, + DBValue, Backend as StateBackend, CodeExecutor, ChangesTrieAnchorBlockId, ExecutionStrategy, ExecutionManager, prove_read, + ChangesTrieRootsStorage, ChangesTrieStorage, key_changes, key_changes_proof, OverlayedChanges }; use codec::Encode; @@ -49,6 +50,7 @@ use blockchain::{self, Info as ChainInfo, Backend as ChainBackend, HeaderBackend use call_executor::{CallExecutor, LocalCallExecutor}; use executor::{RuntimeVersion, RuntimeInfo}; use notifications::{StorageNotifications, StorageEventStream}; +use light::fetcher::ChangesProof; use {cht, error, in_mem, block_builder::{self, api::BlockBuilder as BlockBuilderAPI}, genesis, consensus}; /// Type that implements `futures::Stream` of block import events. @@ -366,9 +368,8 @@ impl Client where let block_num = *header.number(); let cht_num = cht::block_to_cht_number(cht_size, block_num).ok_or_else(proof_error)?; let cht_start = cht::start_number(cht_size, cht_num); - let headers = (cht_start.as_()..).map(|num| self.block_hash(As::sa(num)).unwrap_or_default()); - let proof = cht::build_proof::(cht_size, cht_num, block_num, headers) - .ok_or_else(proof_error)?; + let headers = (cht_start.as_()..).map(|num| self.block_hash(As::sa(num))); + let proof = cht::build_proof::(cht_size, cht_num, ::std::iter::once(block_num), headers)?; Ok((header, proof)) } @@ -402,6 +403,8 @@ impl Client where } /// Get proof for computation of (block, extrinsic) pairs where key has been changed at given blocks range. + /// `min` is the hash of the first block, which changes trie root is known to the requester - when we're using + /// changes tries from ascendants of this block, we should provide proofs for changes tries roots /// `max` is the hash of the last block known to the requester - we can't use changes tries from descendants /// of this block. /// Works only for runtimes that are supporting changes tries. @@ -409,9 +412,57 @@ impl Client where &self, first: Block::Hash, last: Block::Hash, + min: Block::Hash, max: Block::Hash, key: &[u8] - ) -> error::Result<(NumberFor, Vec>)> { + ) -> error::Result> { + self.key_changes_proof_with_cht_size( + first, + last, + min, + max, + key, + cht::SIZE, + ) + } + + /// Does the same work as `key_changes_proof`, but assumes that CHTs are of passed size. + pub fn key_changes_proof_with_cht_size( + &self, + first: Block::Hash, + last: Block::Hash, + min: Block::Hash, + max: Block::Hash, + key: &[u8], + cht_size: u64, + ) -> error::Result> { + struct AccessedRootsRecorder<'a, Block: BlockT> { + storage: &'a ChangesTrieStorage, + min: u64, + required_roots_proofs: Mutex, H256>>, + }; + + impl<'a, Block: BlockT> ChangesTrieRootsStorage for AccessedRootsRecorder<'a, Block> { + fn root(&self, anchor: &ChangesTrieAnchorBlockId, block: u64) -> Result, String> { + let root = self.storage.root(anchor, block)?; + if block < self.min { + if let Some(ref root) = root { + self.required_roots_proofs.lock().insert( + As::sa(block), + root.clone() + ); + } + } + Ok(root) + } + } + + impl<'a, Block: BlockT> ChangesTrieStorage for AccessedRootsRecorder<'a, Block> { + fn get(&self, key: &H256) -> Result, String> { + self.storage.get(key) + } + } + let config = self.changes_trie_config.as_ref(); let storage = self.backend.changes_trie_storage(); let (config, storage) = match (config, storage) { @@ -419,22 +470,76 @@ impl Client where _ => return Err(error::ErrorKind::ChangesTriesNotSupported.into()), }; + let min_number = self.require_block_number_from_id(&BlockId::Hash(min))?; + let recording_storage = AccessedRootsRecorder:: { + storage, + min: min_number.as_(), + required_roots_proofs: Mutex::new(BTreeMap::new()), + }; + let max_number = ::std::cmp::min( self.backend.blockchain().info()?.best_number, self.require_block_number_from_id(&BlockId::Hash(max))?, ); - key_changes_proof::<_, Blake2Hasher>( + + // fetch key changes proof + let key_changes_proof = key_changes_proof::<_, Blake2Hasher>( config, - storage, + &recording_storage, self.require_block_number_from_id(&BlockId::Hash(first))?.as_(), &ChangesTrieAnchorBlockId { hash: convert_hash(&last), number: self.require_block_number_from_id(&BlockId::Hash(last))?.as_(), }, max_number.as_(), - key) - .map_err(|err| error::ErrorKind::ChangesTrieAccessFailed(err).into()) - .map(|proof| (max_number, proof)) + key + ) + .map_err(|err| error::Error::from(error::ErrorKind::ChangesTrieAccessFailed(err)))?; + + // now gather proofs for all changes tries roots that were touched during key_changes_proof + // execution AND are unknown (i.e. replaced with CHT) to the requester + let roots = recording_storage.required_roots_proofs.into_inner(); + let roots_proof = self.changes_trie_roots_proof(cht_size, roots.keys().cloned())?; + + Ok(ChangesProof { + max_block: max_number, + proof: key_changes_proof, + roots: roots.into_iter().map(|(n, h)| (n, convert_hash(&h))).collect(), + roots_proof, + }) + } + + /// Generate CHT-based proof for roots of changes tries at given blocks. + fn changes_trie_roots_proof>>( + &self, + cht_size: u64, + blocks: I + ) -> error::Result>> { + // most probably we have touched several changes tries that are parts of the single CHT + // => GroupBy changes tries by CHT number and then gather proof for the whole group at once + let mut proof = HashSet::new(); + + cht::for_each_cht_group::(cht_size, blocks, |_, cht_num, cht_blocks| { + let cht_proof = self.changes_trie_roots_proof_at_cht(cht_size, cht_num, cht_blocks)?; + proof.extend(cht_proof); + Ok(()) + }, ())?; + + Ok(proof.into_iter().collect()) + } + + /// Generates CHT-based proof for roots of changes tries at given blocks (that are part of single CHT). + fn changes_trie_roots_proof_at_cht( + &self, + cht_size: u64, + cht_num: NumberFor, + blocks: Vec> + ) -> error::Result>> { + let cht_start = cht::start_number(cht_size, cht_num); + let roots = (cht_start.as_()..).map(|num| self.header(&BlockId::Number(As::sa(num))) + .map(|block| block.and_then(|block| block.digest().log(DigestItem::as_changes_trie_root).cloned()))); + let proof = cht::build_proof::(cht_size, cht_num, blocks, roots)?; + Ok(proof) } /// Create a new block, built on the head of the chain. @@ -1097,7 +1202,7 @@ pub(crate) mod tests { use super::*; use keyring::Keyring; use primitives::twox_128; - use runtime_primitives::traits::{Digest as DigestT, DigestItem as DigestItemT}; + use runtime_primitives::traits::DigestItem as DigestItemT; use runtime_primitives::generic::DigestItem; use test_client::{self, TestClient}; use consensus::BlockOrigin; diff --git a/substrate/core/client/src/error.rs b/substrate/core/client/src/error.rs index aa09344c99..2a793e8049 100644 --- a/substrate/core/client/src/error.rs +++ b/substrate/core/client/src/error.rs @@ -88,8 +88,8 @@ error_chain! { display("This method is not currently available when running in light client mode"), } - /// Invalid remote header proof. - InvalidHeaderProof { + /// Invalid remote CHT-based proof. + InvalidCHTProof { description("invalid header proof"), display("Remote node has responded with invalid header proof"), } @@ -135,6 +135,12 @@ error_chain! { description("Potential long-range attack: block not in finalized chain."), display("Potential long-range attack: block not in finalized chain."), } + + /// Hash that is required for building CHT is missing. + MissingHashRequiredForCHT(cht_num: u64, block_number: u64) { + description("missed hash required for building CHT"), + display("Failed to get hash of block#{} for building CHT#{}", block_number, cht_num), + } } } diff --git a/substrate/core/client/src/in_mem.rs b/substrate/core/client/src/in_mem.rs index 70adb97607..323ca3fdc3 100644 --- a/substrate/core/client/src/in_mem.rs +++ b/substrate/core/client/src/in_mem.rs @@ -94,7 +94,8 @@ struct BlockchainStorage { finalized_hash: Block::Hash, finalized_number: NumberFor, genesis_hash: Block::Hash, - cht_roots: HashMap, Block::Hash>, + header_cht_roots: HashMap, Block::Hash>, + changes_trie_cht_roots: HashMap, Block::Hash>, leaves: LeafSet>, } @@ -142,7 +143,8 @@ impl Blockchain { finalized_hash: Default::default(), finalized_number: Zero::zero(), genesis_hash: Default::default(), - cht_roots: HashMap::new(), + header_cht_roots: HashMap::new(), + changes_trie_cht_roots: HashMap::new(), leaves: LeafSet::new(), })); Blockchain { @@ -233,9 +235,9 @@ impl Blockchain { && this.genesis_hash == other.genesis_hash } - /// Insert CHT root. + /// Insert header CHT root. pub fn insert_cht_root(&self, block: NumberFor, cht_root: Block::Hash) { - self.storage.write().cht_roots.insert(block, cht_root); + self.storage.write().header_cht_roots.insert(block, cht_root); } fn finalize_header(&self, id: BlockId) -> error::Result<()> { @@ -339,9 +341,14 @@ impl light::blockchain::Storage for Blockchain Blockchain::finalize_header(self, id) } - fn cht_root(&self, _cht_size: u64, block: NumberFor) -> error::Result { - self.storage.read().cht_roots.get(&block).cloned() - .ok_or_else(|| error::ErrorKind::Backend(format!("CHT for block {} not exists", block)).into()) + fn header_cht_root(&self, _cht_size: u64, block: NumberFor) -> error::Result { + self.storage.read().header_cht_roots.get(&block).cloned() + .ok_or_else(|| error::ErrorKind::Backend(format!("Header CHT for block {} not exists", block)).into()) + } + + fn changes_trie_cht_root(&self, _cht_size: u64, block: NumberFor) -> error::Result { + self.storage.read().changes_trie_cht_roots.get(&block).cloned() + .ok_or_else(|| error::ErrorKind::Backend(format!("Changes trie CHT for block {} not exists", block)).into()) } fn cache(&self) -> Option<&blockchain::Cache> { diff --git a/substrate/core/client/src/light/blockchain.rs b/substrate/core/client/src/light/blockchain.rs index 97c20ecc90..5e8a81b413 100644 --- a/substrate/core/client/src/light/blockchain.rs +++ b/substrate/core/client/src/light/blockchain.rs @@ -48,8 +48,11 @@ pub trait Storage: BlockchainHeaderBackend { /// Get last finalized header. fn last_finalized(&self) -> ClientResult; - /// Get CHT root for given block. Fails if the block is not pruned (not a part of any CHT). - fn cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult; + /// Get headers CHT root for given block. Fails if the block is not pruned (not a part of any CHT). + fn header_cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult; + + /// Get changes trie CHT root for given block. Fails if the block is not pruned (not a part of any CHT). + fn changes_trie_cht_root(&self, cht_size: u64, block: NumberFor) -> ClientResult; /// Get storage cache. fn cache(&self) -> Option<&BlockchainCache>; @@ -106,7 +109,7 @@ impl BlockchainHeaderBackend for Blockchain where Bloc self.fetcher().upgrade().ok_or(ClientErrorKind::NotAvailableOnLightClient)? .remote_header(RemoteHeaderRequest { - cht_root: self.storage.cht_root(cht::SIZE, number)?, + cht_root: self.storage.header_cht_root(cht::SIZE, number)?, block: number, retry_count: None, }) @@ -155,3 +158,84 @@ impl BlockchainBackend for Blockchain where Block: Blo unimplemented!() } } + +#[cfg(test)] +pub mod tests { + use std::collections::HashMap; + use test_client::runtime::{Hash, Block, Header}; + use blockchain::Info; + use light::fetcher::tests::OkCallFetcher; + use super::*; + + pub type DummyBlockchain = Blockchain; + + pub struct DummyStorage { + pub changes_tries_cht_roots: HashMap, + } + + impl DummyStorage { + pub fn new() -> Self { + DummyStorage { + changes_tries_cht_roots: HashMap::new(), + } + } + } + + impl BlockchainHeaderBackend for DummyStorage { + fn header(&self, _id: BlockId) -> ClientResult> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn info(&self) -> ClientResult> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn status(&self, _id: BlockId) -> ClientResult { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn number(&self, _hash: Hash) -> ClientResult>> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn hash(&self, _number: u64) -> ClientResult> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + } + + impl Storage for DummyStorage { + fn import_header( + &self, + _header: Header, + _authorities: Option>, + _state: NewBlockState, + ) -> ClientResult<()> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn finalize_header(&self, _block: BlockId) -> ClientResult<()> { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn last_finalized(&self) -> ClientResult { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn header_cht_root(&self, _cht_size: u64, _block: u64) -> ClientResult { + Err(ClientErrorKind::Backend("Test error".into()).into()) + } + + fn changes_trie_cht_root(&self, cht_size: u64, block: u64) -> ClientResult { + cht::block_to_cht_number(cht_size, block) + .and_then(|cht_num| self.changes_tries_cht_roots.get(&cht_num)) + .cloned() + .ok_or_else(|| ClientErrorKind::Backend( + format!("Test error: CHT for block #{} not found", block) + ).into()) + } + + fn cache(&self) -> Option<&BlockchainCache> { + None + } + } +} diff --git a/substrate/core/client/src/light/fetcher.rs b/substrate/core/client/src/light/fetcher.rs index b75b74a0a9..6b7938bab7 100644 --- a/substrate/core/client/src/light/fetcher.rs +++ b/substrate/core/client/src/light/fetcher.rs @@ -16,19 +16,22 @@ //! Light client data fetcher. Fetches requested data from remote full nodes. +use std::sync::Arc; +use std::collections::BTreeMap; use std::marker::PhantomData; use futures::IntoFuture; -use hash_db::Hasher; +use hash_db::{HashDB, Hasher}; use heapsize::HeapSizeOf; use primitives::{ChangesTrieConfiguration, convert_hash}; use runtime_primitives::traits::{As, Block as BlockT, Header as HeaderT, NumberFor}; use state_machine::{CodeExecutor, ChangesTrieRootsStorage, ChangesTrieAnchorBlockId, - read_proof_check, key_changes_proof_check}; + TrieBackend, read_proof_check, key_changes_proof_check, create_proof_check_backend_storage}; use call_executor::CallResult; use cht; use error::{Error as ClientError, ErrorKind as ClientErrorKind, Result as ClientResult}; +use light::blockchain::{Blockchain, Storage as BlockchainStorage}; use light::call_executor::check_execution_proof; /// Remote call request. @@ -83,15 +86,30 @@ pub struct RemoteChangesRequest { /// Only use digests from blocks up to this hash. Should be last_block OR come /// after this block and be the part of the same fork. pub max_block: (Header::Number, Header::Hash), - // TODO: get rid of this + preserve change_trie_roots when replacing headers with CHT!!! - /// Changes trie roots for the range of blocks [first_block..max_block]. - pub tries_roots: Vec, + /// Known changes trie roots for the range of blocks [tries_roots.0..max_block]. + /// Proofs for roots of ascendants of tries_roots.0 are provided by the remote node. + pub tries_roots: (Header::Number, Header::Hash, Vec), /// Storage key to read. pub key: Vec, /// Number of times to retry request. None means that default RETRY_COUNT is used. pub retry_count: Option, } +/// Key changes read proof. +#[derive(Debug, PartialEq, Eq)] +pub struct ChangesProof { + /// Max block that has been used in changes query. + pub max_block: Header::Number, + /// All touched nodes of all changes tries. + pub proof: Vec>, + /// All changes tries roots that have been touched AND are missing from + /// the requester' node. It is a map of block number => changes trie root. + pub roots: BTreeMap, + /// The proofs for all changes tries roots that have been touched AND are + /// missing from the requester' node. It is a map of CHT number => proof. + pub roots_proof: Vec>, +} + /// Light client data fetcher. Implementations of this trait must check if remote data /// is correct (see FetchedDataChecker) and return already checked data. pub trait Fetcher: Send + Sync { @@ -117,8 +135,8 @@ pub trait Fetcher: Send + Sync { /// Light client remote data checker. /// -/// Implementations of this trait should not use any blockchain data except that is -/// passed to its methods. +/// Implementations of this trait should not use any prunable blockchain data +/// except that is passed to its methods. pub trait FetchChecker: Send + Sync { /// Check remote header proof. fn check_header_proof( @@ -143,32 +161,158 @@ pub trait FetchChecker: Send + Sync { fn check_changes_proof( &self, request: &RemoteChangesRequest, - remote_max: NumberFor, - remote_proof: Vec> + proof: ChangesProof ) -> ClientResult, u32)>>; } /// Remote data checker. -pub struct LightDataChecker { +pub struct LightDataChecker, F> { + blockchain: Arc>, executor: E, - _hasher: PhantomData, + _hasher: PhantomData<(B, H)>, } -impl LightDataChecker { +impl, F> LightDataChecker { /// Create new light data checker. - pub fn new(executor: E) -> Self { + pub fn new(blockchain: Arc>, executor: E) -> Self { Self { - executor, _hasher: PhantomData + blockchain, executor, _hasher: PhantomData } } + + /// Check remote changes query proof assuming that CHT-s are of given size. + fn check_changes_proof_with_cht_size( + &self, + request: &RemoteChangesRequest, + remote_proof: ChangesProof, + cht_size: u64, + ) -> ClientResult, u32)>> + where + H: Hasher, + H::Out: Ord + HeapSizeOf, + { + // since we need roots of all changes tries for the range begin..max + // => remote node can't use max block greater that one that we have passed + if remote_proof.max_block > request.max_block.0 || remote_proof.max_block < request.last_block.0 { + return Err(ClientErrorKind::ChangesTrieAccessFailed(format!( + "Invalid max_block used by the remote node: {}. Local: {}..{}..{}", + remote_proof.max_block, request.first_block.0, request.last_block.0, request.max_block.0, + )).into()); + } + + // check if remote node has responded with extra changes trie roots proofs + // all changes tries roots must be in range [request.first_block.0; request.tries_roots.0) + let is_extra_first_root = remote_proof.roots.keys().next() + .map(|first_root| *first_root < request.first_block.0 + || *first_root >= request.tries_roots.0) + .unwrap_or(false); + let is_extra_last_root = remote_proof.roots.keys().next_back() + .map(|last_root| *last_root >= request.tries_roots.0) + .unwrap_or(false); + if is_extra_first_root || is_extra_last_root { + return Err(ClientErrorKind::ChangesTrieAccessFailed(format!( + "Extra changes tries roots proofs provided by the remote node: [{:?}..{:?}]. Expected in range: [{}; {})", + remote_proof.roots.keys().next(), remote_proof.roots.keys().next_back(), + request.first_block.0, request.tries_roots.0, + )).into()); + } + + // if request has been composed when some required headers were already pruned + // => remote node has sent us CHT-based proof of required changes tries roots + // => check that this proof is correct before proceeding with changes proof + let remote_max_block = remote_proof.max_block; + let remote_roots = remote_proof.roots; + let remote_roots_proof = remote_proof.roots_proof; + let remote_proof = remote_proof.proof; + if !remote_roots.is_empty() { + self.check_changes_tries_proof( + cht_size, + &remote_roots, + remote_roots_proof, + )?; + } + + // and now check the key changes proof + get the changes + key_changes_proof_check::<_, H>( + &request.changes_trie_config, + &RootsStorage { + roots: (request.tries_roots.0, &request.tries_roots.2), + prev_roots: remote_roots, + }, + remote_proof, + request.first_block.0.as_(), + &ChangesTrieAnchorBlockId { + hash: convert_hash(&request.last_block.1), + number: request.last_block.0.as_(), + }, + remote_max_block.as_(), + &request.key) + .map(|pairs| pairs.into_iter().map(|(b, x)| (As::sa(b), x)).collect()) + .map_err(|err| ClientErrorKind::ChangesTrieAccessFailed(err).into()) + } + + /// Check CHT-based proof for changes tries roots. + fn check_changes_tries_proof( + &self, + cht_size: u64, + remote_roots: &BTreeMap, B::Hash>, + remote_roots_proof: Vec>, + ) -> ClientResult<()> + where + H: Hasher, + H::Out: Ord + HeapSizeOf, + { + // all the checks are sharing the same storage + let storage = create_proof_check_backend_storage(remote_roots_proof); + + // we remote_roots.keys() are sorted => we can use this to group changes tries roots + // that are belongs to the same CHT + let blocks = remote_roots.keys().cloned(); + cht::for_each_cht_group::(cht_size, blocks, |mut storage, _, cht_blocks| { + // get local changes trie CHT root for given CHT + // it should be there, because it is never pruned AND request has been composed + // when required header has been pruned (=> replaced with CHT) + let first_block = cht_blocks.first().cloned() + .expect("for_each_cht_group never calls callback with empty groups"); + let local_cht_root = self.blockchain.storage().changes_trie_cht_root(cht_size, first_block)?; + + // check changes trie root for every block within CHT range + for block in cht_blocks { + // check if the proofs storage contains the root + // normally this happens in when the proving backend is created, but since + // we share the storage for multiple checks, do it here + let mut cht_root = H::Out::default(); + cht_root.as_mut().copy_from_slice(local_cht_root.as_ref()); + if !storage.contains(&cht_root) { + return Err(ClientErrorKind::InvalidCHTProof.into()); + } + + // check proof for single changes trie root + let proving_backend = TrieBackend::new(storage, cht_root); + let remote_changes_trie_root = remote_roots[&block]; + cht::check_proof_on_proving_backend::( + local_cht_root, + block, + remote_changes_trie_root, + &proving_backend)?; + + // and return the storage to use in following checks + storage = proving_backend.into_storage(); + } + + Ok(storage) + }, storage) + } } -impl FetchChecker for LightDataChecker +impl FetchChecker for LightDataChecker where Block: BlockT, E: CodeExecutor, H: Hasher, H::Out: Ord + HeapSizeOf, + S: BlockchainStorage, + F: Send + Sync, { fn check_header_proof( &self, @@ -177,7 +321,7 @@ impl FetchChecker for LightDataChecker remote_proof: Vec> ) -> ClientResult { let remote_header = remote_header.ok_or_else(|| - ClientError::from(ClientErrorKind::InvalidHeaderProof))?; + ClientError::from(ClientErrorKind::InvalidCHTProof))?; let remote_header_hash = remote_header.hash(); cht::check_proof::( request.cht_root, @@ -207,55 +351,39 @@ impl FetchChecker for LightDataChecker fn check_changes_proof( &self, request: &RemoteChangesRequest, - remote_max: NumberFor, - remote_proof: Vec> + remote_proof: ChangesProof ) -> ClientResult, u32)>> { - // since we need roots of all changes tries for the range begin..max - // => remote node can't use max block greater that one that we have passed - if remote_max > request.max_block.0 || remote_max < request.last_block.0 { - return Err(ClientErrorKind::ChangesTrieAccessFailed(format!( - "Invalid max_block used by the remote node: {}. Local: {}..{}..{}", - remote_max, request.first_block.0, request.last_block.0, request.max_block.0, - )).into()); - } - - let first_number = request.first_block.0.as_(); - key_changes_proof_check::<_, H>( - &request.changes_trie_config, - &RootsStorage { - first: first_number, - roots: &request.tries_roots, - }, - remote_proof, - first_number, - &ChangesTrieAnchorBlockId { - hash: convert_hash(&request.last_block.1), - number: request.last_block.0.as_(), - }, - remote_max.as_(), - &request.key) - .map(|pairs| pairs.into_iter().map(|(b, x)| (As::sa(b), x)).collect()) - .map_err(|err| ClientErrorKind::ChangesTrieAccessFailed(err).into()) + self.check_changes_proof_with_cht_size(request, remote_proof, cht::SIZE) } } -/// A view of HashMap as a changes trie roots storage. -struct RootsStorage<'a, Hash: 'a> { - first: u64, - roots: &'a [Hash], +/// A view of BTreeMap as a changes trie roots storage. +struct RootsStorage<'a, Number: As, Hash: 'a> { + roots: (Number, &'a [Hash]), + prev_roots: BTreeMap, } -impl<'a, H, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Hash> +impl<'a, H, Number, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Number, Hash> where H: Hasher, + Number: Send + Sync + Eq + ::std::cmp::Ord + Copy + As, Hash: 'a + Send + Sync + Clone + AsRef<[u8]>, { fn root(&self, _anchor: &ChangesTrieAnchorBlockId, block: u64) -> Result, String> { // we can't ask for roots from parallel forks here => ignore anchor - Ok(block.checked_sub(self.first) - .and_then(|index| self.roots.get(index as usize)) - .cloned() - .map(|root| convert_hash(&root))) + let root = if block < self.roots.0.as_() { + self.prev_roots.get(&As::sa(block)).cloned() + } else { + block.checked_sub(self.roots.0.as_()) + .and_then(|index| self.roots.1.get(index as usize)) + .cloned() + }; + + Ok(root.map(|root| { + let mut hasher_root: H::Out = Default::default(); + hasher_root.as_mut().copy_from_slice(root.as_ref()); + hasher_root + })) } } @@ -263,18 +391,20 @@ impl<'a, H, Hash> ChangesTrieRootsStorage for RootsStorage<'a, Hash> pub mod tests { use futures::future::{ok, err, FutureResult}; use parking_lot::Mutex; + use keyring::Keyring; use call_executor::CallResult; use client::tests::prepare_client_with_key_changes; use executor::{self, NativeExecutionDispatch}; use error::Error as ClientError; - use test_client::{self, TestClient}; + use test_client::{self, TestClient, blockchain::HeaderBackend}; use test_client::runtime::{self, Hash, Block, Header}; use consensus::BlockOrigin; use in_mem::{Blockchain as InMemoryBlockchain}; use light::fetcher::{Fetcher, FetchChecker, LightDataChecker, RemoteCallRequest, RemoteHeaderRequest}; - use primitives::{Blake2Hasher}; + use light::blockchain::tests::{DummyStorage, DummyBlockchain}; + use primitives::{twox_128, Blake2Hasher}; use primitives::storage::well_known_keys; use runtime_primitives::generic::BlockId; use state_machine::Backend; @@ -305,10 +435,9 @@ pub mod tests { } } - fn prepare_for_read_proof_check() -> ( - LightDataChecker, Blake2Hasher>, - Header, Vec>, usize) - { + type TestChecker = LightDataChecker, Blake2Hasher, Block, DummyStorage, OkCallFetcher>; + + fn prepare_for_read_proof_check() -> (TestChecker, Header, Vec>, usize) { // prepare remote client let remote_client = test_client::new(); let remote_block_id = BlockId::Number(0); @@ -330,21 +459,19 @@ pub mod tests { ::backend::NewBlockState::Final, ).unwrap(); let local_executor = test_client::LocalExecutor::new(); - let local_checker = LightDataChecker::new(local_executor); + let local_checker = LightDataChecker::new(Arc::new(DummyBlockchain::new(DummyStorage::new())), local_executor); (local_checker, remote_block_header, remote_read_proof, authorities_len) } - fn prepare_for_header_proof_check(insert_cht: bool) -> ( - LightDataChecker, Blake2Hasher>, - Hash, Header, Vec>) - { + fn prepare_for_header_proof_check(insert_cht: bool) -> (TestChecker, Hash, Header, Vec>) { // prepare remote client let remote_client = test_client::new(); let mut local_headers_hashes = Vec::new(); for i in 0..4 { let builder = remote_client.new_block().unwrap(); remote_client.justify_and_import(BlockOrigin::Own, builder.bake().unwrap()).unwrap(); - local_headers_hashes.push(remote_client.block_hash(i + 1).unwrap()); + local_headers_hashes.push(remote_client.block_hash(i + 1) + .map_err(|_| ClientErrorKind::Backend("TestError".into()).into())); } // 'fetch' header proof from remote node @@ -353,12 +480,12 @@ pub mod tests { // check remote read proof locally let local_storage = InMemoryBlockchain::::new(); - let local_cht_root = cht::compute_root::(4, 0, local_headers_hashes.into_iter()).unwrap(); + let local_cht_root = cht::compute_root::(4, 0, local_headers_hashes).unwrap(); if insert_cht { local_storage.insert_cht_root(1, local_cht_root); } let local_executor = test_client::LocalExecutor::new(); - let local_checker = LightDataChecker::new(local_executor); + let local_checker = LightDataChecker::new(Arc::new(DummyBlockchain::new(DummyStorage::new())), local_executor); (local_checker, local_cht_root, remote_block_header, remote_header_proof) } @@ -406,10 +533,12 @@ pub mod tests { } #[test] - fn changes_proof_is_generated_and_checked() { + fn changes_proof_is_generated_and_checked_when_headers_are_not_pruned() { let (remote_client, local_roots, test_cases) = prepare_client_with_key_changes(); - let local_checker = LightDataChecker::<_, Blake2Hasher>::new( - test_client::LocalExecutor::new()); + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(DummyStorage::new())), + test_client::LocalExecutor::new() + ); let local_checker = &local_checker as &FetchChecker; let max = remote_client.info().unwrap().chain.best_number; let max_hash = remote_client.info().unwrap().chain.best_hash; @@ -419,8 +548,8 @@ pub mod tests { let end_hash = remote_client.block_hash(end).unwrap().unwrap(); // 'fetch' changes proof from remote node - let (remote_max, remote_proof) = remote_client.key_changes_proof( - begin_hash, end_hash, max_hash, &key + let remote_proof = remote_client.key_changes_proof( + begin_hash, end_hash, begin_hash, max_hash, &key ).unwrap(); // check proof on local client @@ -430,12 +559,16 @@ pub mod tests { first_block: (begin, begin_hash), last_block: (end, end_hash), max_block: (max, max_hash), - tries_roots: local_roots_range, + tries_roots: (begin, begin_hash, local_roots_range), key: key, retry_count: None, }; - let local_result = local_checker.check_changes_proof( - &request, remote_max, remote_proof).unwrap(); + let local_result = local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: remote_proof.proof, + roots: remote_proof.roots, + roots_proof: remote_proof.roots_proof, + }).unwrap(); // ..and ensure that result is the same as on remote node match local_result == expected_result { @@ -446,11 +579,60 @@ pub mod tests { } } + #[test] + fn changes_proof_is_generated_and_checked_when_headers_are_pruned() { + // we're testing this test case here: + // (1, 4, dave.clone(), vec![(4, 0), (1, 1), (1, 0)]), + let (remote_client, remote_roots, _) = prepare_client_with_key_changes(); + let dave = twox_128(&runtime::system::balance_of_key(Keyring::Dave.to_raw_public().into())).to_vec(); + + // 'fetch' changes proof from remote node: + // we're fetching changes for range b1..b4 + // we do not know changes trie roots before b3 (i.e. we only know b3+b4) + // but we have changes trie CHT root for b1...b4 + let b1 = remote_client.block_hash_from_id(&BlockId::Number(1)).unwrap().unwrap(); + let b3 = remote_client.block_hash_from_id(&BlockId::Number(3)).unwrap().unwrap(); + let b4 = remote_client.block_hash_from_id(&BlockId::Number(4)).unwrap().unwrap(); + let remote_proof = remote_client.key_changes_proof_with_cht_size( + b1, b4, b3, b4, &dave, 4 + ).unwrap(); + + // prepare local checker, having a root of changes trie CHT#0 + let local_cht_root = cht::compute_root::(4, 0, remote_roots.iter().cloned().map(|ct| Ok(Some(ct)))).unwrap(); + let mut local_storage = DummyStorage::new(); + local_storage.changes_tries_cht_roots.insert(0, local_cht_root); + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(local_storage)), + test_client::LocalExecutor::new() + ); + + // check proof on local client + let request = RemoteChangesRequest::

{ + changes_trie_config: runtime::changes_trie_config(), + first_block: (1, b1), + last_block: (4, b4), + max_block: (4, b4), + tries_roots: (3, b3, vec![remote_roots[2].clone(), remote_roots[3].clone()]), + key: dave, + retry_count: None, + }; + let local_result = local_checker.check_changes_proof_with_cht_size(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: remote_proof.proof, + roots: remote_proof.roots, + roots_proof: remote_proof.roots_proof, + }, 4).unwrap(); + + assert_eq!(local_result, vec![(4, 0), (1, 1), (1, 0)]); + } + #[test] fn check_changes_proof_fails_if_proof_is_wrong() { let (remote_client, local_roots, test_cases) = prepare_client_with_key_changes(); - let local_checker = LightDataChecker::<_, Blake2Hasher>::new( - test_client::LocalExecutor::new()); + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(DummyStorage::new())), + test_client::LocalExecutor::new() + ); let local_checker = &local_checker as &FetchChecker; let max = remote_client.info().unwrap().chain.best_number; let max_hash = remote_client.info().unwrap().chain.best_hash; @@ -460,24 +642,86 @@ pub mod tests { let end_hash = remote_client.block_hash(end).unwrap().unwrap(); // 'fetch' changes proof from remote node - let (remote_max, mut remote_proof) = remote_client.key_changes_proof( - begin_hash, end_hash, max_hash, &key).unwrap(); + let remote_proof = remote_client.key_changes_proof( + begin_hash, end_hash, begin_hash, max_hash, &key).unwrap(); + let local_roots_range = local_roots.clone()[(begin - 1) as usize..].to_vec(); let request = RemoteChangesRequest::
{ changes_trie_config: runtime::changes_trie_config(), first_block: (begin, begin_hash), last_block: (end, end_hash), max_block: (max, max_hash), - tries_roots: local_roots_range.clone(), + tries_roots: (begin, begin_hash, local_roots_range.clone()), key: key, retry_count: None, }; // check proof on local client using max from the future - assert!(local_checker.check_changes_proof(&request, remote_max + 1, remote_proof.clone()).is_err()); + assert!(local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block + 1, + proof: remote_proof.proof.clone(), + roots: remote_proof.roots.clone(), + roots_proof: remote_proof.roots_proof.clone(), + }).is_err()); // check proof on local client using broken proof - remote_proof = local_roots_range.into_iter().map(|v| v.as_bytes().to_vec()).collect(); - assert!(local_checker.check_changes_proof(&request, remote_max, remote_proof).is_err()); + assert!(local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: local_roots_range.clone().into_iter().map(|v| v.as_ref().to_vec()).collect(), + roots: remote_proof.roots, + roots_proof: remote_proof.roots_proof, + }).is_err()); + + // extra roots proofs are provided + assert!(local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: remote_proof.proof.clone(), + roots: vec![(begin - 1, Default::default())].into_iter().collect(), + roots_proof: vec![], + }).is_err()); + assert!(local_checker.check_changes_proof(&request, ChangesProof { + max_block: remote_proof.max_block, + proof: remote_proof.proof.clone(), + roots: vec![(end + 1, Default::default())].into_iter().collect(), + roots_proof: vec![], + }).is_err()); + } + + #[test] + fn check_changes_tries_proof_fails_if_proof_is_wrong() { + // we're testing this test case here: + // (1, 4, dave.clone(), vec![(4, 0), (1, 1), (1, 0)]), + let (remote_client, remote_roots, _) = prepare_client_with_key_changes(); + let local_cht_root = cht::compute_root::( + 4, 0, remote_roots.iter().cloned().map(|ct| Ok(Some(ct)))).unwrap(); + let dave = twox_128(&runtime::system::balance_of_key(Keyring::Dave.to_raw_public().into())).to_vec(); + + // 'fetch' changes proof from remote node: + // we're fetching changes for range b1..b4 + // we do not know changes trie roots before b3 (i.e. we only know b3+b4) + // but we have changes trie CHT root for b1...b4 + let b1 = remote_client.block_hash_from_id(&BlockId::Number(1)).unwrap().unwrap(); + let b3 = remote_client.block_hash_from_id(&BlockId::Number(3)).unwrap().unwrap(); + let b4 = remote_client.block_hash_from_id(&BlockId::Number(4)).unwrap().unwrap(); + let remote_proof = remote_client.key_changes_proof_with_cht_size( + b1, b4, b3, b4, &dave, 4 + ).unwrap(); + + // fails when changes trie CHT is missing from the local db + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(DummyStorage::new())), + test_client::LocalExecutor::new() + ); + assert!(local_checker.check_changes_tries_proof(4, &remote_proof.roots, + remote_proof.roots_proof.clone()).is_err()); + + // fails when proof is broken + let mut local_storage = DummyStorage::new(); + local_storage.changes_tries_cht_roots.insert(0, local_cht_root); + let local_checker = TestChecker::new( + Arc::new(DummyBlockchain::new(local_storage)), + test_client::LocalExecutor::new() + ); + assert!(local_checker.check_changes_tries_proof(4, &remote_proof.roots, vec![]).is_err()); } } diff --git a/substrate/core/client/src/light/mod.rs b/substrate/core/client/src/light/mod.rs index 29db81a001..8727455d30 100644 --- a/substrate/core/client/src/light/mod.rs +++ b/substrate/core/client/src/light/mod.rs @@ -65,13 +65,14 @@ where } /// Create an instance of fetch data checker. -pub fn new_fetch_checker( +pub fn new_fetch_checker, F>( + blockchain: Arc>, executor: E, -) -> LightDataChecker +) -> LightDataChecker where E: CodeExecutor, H: Hasher, { - LightDataChecker::new(executor) + LightDataChecker::new(blockchain, executor) } diff --git a/substrate/core/network/src/chain.rs b/substrate/core/network/src/chain.rs index 32cb18f276..8547f9006e 100644 --- a/substrate/core/network/src/chain.rs +++ b/substrate/core/network/src/chain.rs @@ -18,8 +18,9 @@ use client::{self, Client as SubstrateClient, ClientInfo, BlockStatus, CallExecutor}; use client::error::Error; +use client::light::fetcher::ChangesProof; use consensus::BlockImport; -use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, NumberFor}; +use runtime_primitives::traits::{Block as BlockT, Header as HeaderT}; use runtime_primitives::generic::{BlockId}; use consensus::{ImportBlock, ImportResult}; use runtime_primitives::Justification; @@ -63,9 +64,10 @@ pub trait Client: Send + Sync { &self, first: Block::Hash, last: Block::Hash, + min: Block::Hash, max: Block::Hash, key: &[u8] - ) -> Result<(NumberFor, Vec>), Error>; + ) -> Result, Error>; } impl Client for SubstrateClient where @@ -121,9 +123,10 @@ impl Client for SubstrateClient where &self, first: Block::Hash, last: Block::Hash, + min: Block::Hash, max: Block::Hash, key: &[u8] - ) -> Result<(NumberFor, Vec>), Error> { - (self as &SubstrateClient).key_changes_proof(first, last, max, key) + ) -> Result, Error> { + (self as &SubstrateClient).key_changes_proof(first, last, min, max, key) } } diff --git a/substrate/core/network/src/message.rs b/substrate/core/network/src/message.rs index 40cd9a435d..519d7c78eb 100644 --- a/substrate/core/network/src/message.rs +++ b/substrate/core/network/src/message.rs @@ -189,7 +189,7 @@ pub mod generic { /// Remote changes request. RemoteChangesRequest(RemoteChangesRequest), /// Remote changes reponse. - RemoteChangesResponse(RemoteChangesResponse), + RemoteChangesResponse(RemoteChangesResponse), /// Chain-specific message #[codec(index = "255")] ChainSpecific(Vec), @@ -298,6 +298,9 @@ pub mod generic { pub first: H, /// Hash of the last block of the range (including last) where changes are requested. pub last: H, + /// Hash of the first block for which the requester has the changes trie root. All other + /// affected roots must be proved. + pub min: H, /// Hash of the last block that we can use when querying changes. pub max: H, /// Storage key which changes are requested. @@ -306,7 +309,7 @@ pub mod generic { #[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)] /// Remote changes response. - pub struct RemoteChangesResponse { + pub struct RemoteChangesResponse { /// Id of a request this response was made for. pub id: RequestId, /// Proof has been generated using block with this number as a max block. Should be @@ -314,5 +317,9 @@ pub mod generic { pub max: N, /// Changes proof. pub proof: Vec>, + /// Changes tries roots missing on the requester' node. + pub roots: Vec<(N, H)>, + /// Missing changes tries roots proof. + pub roots_proof: Vec>, } } diff --git a/substrate/core/network/src/on_demand.rs b/substrate/core/network/src/on_demand.rs index 5fbf893714..59a5333a47 100644 --- a/substrate/core/network/src/on_demand.rs +++ b/substrate/core/network/src/on_demand.rs @@ -26,7 +26,7 @@ use linked_hash_map::Entry; use parking_lot::Mutex; use client::{self, error::{Error as ClientError, ErrorKind as ClientErrorKind}}; use client::light::fetcher::{Fetcher, FetchChecker, RemoteHeaderRequest, - RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest}; + RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest, ChangesProof}; use io::SyncIo; use message; use network_libp2p::{Severity, NodeIndex}; @@ -72,7 +72,7 @@ pub trait OnDemandService: Send + Sync { &self, io: &mut SyncIo, peer: NodeIndex, - response: message::RemoteChangesResponse> + response: message::RemoteChangesResponse, Block::Hash> ); } @@ -284,11 +284,15 @@ impl OnDemandService for OnDemand where }) } - fn on_remote_changes_response(&self, io: &mut SyncIo, peer: NodeIndex, response: message::RemoteChangesResponse>) { + fn on_remote_changes_response(&self, io: &mut SyncIo, peer: NodeIndex, response: message::RemoteChangesResponse, B::Hash>) { self.accept_response("changes", io, peer, response.id, |request| match request.data { RequestData::RemoteChanges(request, sender) => match self.checker.check_changes_proof( - &request, response.max, response.proof - ) { + &request, ChangesProof { + max_block: response.max, + proof: response.proof, + roots: response.roots.into_iter().collect(), + roots_proof: response.roots_proof, + }) { Ok(response) => { // we do not bother if receiver has been dropped already let _ = sender.send(Ok(response)); @@ -483,6 +487,7 @@ impl Request { id: self.id, first: data.first_block.1.clone(), last: data.last_block.1.clone(), + min: data.tries_roots.1.clone(), max: data.max_block.1.clone(), key: data.key.clone(), }), @@ -509,9 +514,10 @@ pub mod tests { use std::time::Instant; use futures::Future; use parking_lot::RwLock; + use runtime_primitives::traits::NumberFor; use client::{self, error::{ErrorKind as ClientErrorKind, Result as ClientResult}}; use client::light::fetcher::{Fetcher, FetchChecker, RemoteHeaderRequest, - RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest}; + RemoteCallRequest, RemoteReadRequest, RemoteChangesRequest, ChangesProof}; use config::Roles; use message; use network_libp2p::NodeIndex; @@ -557,7 +563,7 @@ pub mod tests { } } - fn check_changes_proof(&self, _: &RemoteChangesRequest
, _: u64, _: Vec>) -> ClientResult> { + fn check_changes_proof(&self, _: &RemoteChangesRequest
, _: ChangesProof
) -> ClientResult, u32)>> { match self.ok { true => Ok(vec![(100, 2)]), false => Err(ClientErrorKind::Backend("Test error".into()).into()), @@ -855,7 +861,7 @@ pub mod tests { first_block: (1, Default::default()), last_block: (100, Default::default()), max_block: (100, Default::default()), - tries_roots: vec![], + tries_roots: (1, Default::default(), vec![]), key: vec![], retry_count: None, }); @@ -868,6 +874,8 @@ pub mod tests { id: 0, max: 1000, proof: vec![vec![2]], + roots: vec![], + roots_proof: vec![], }); thread.join().unwrap(); } diff --git a/substrate/core/network/src/protocol.rs b/substrate/core/network/src/protocol.rs index af20a6b1bc..932e724bfe 100644 --- a/substrate/core/network/src/protocol.rs +++ b/substrate/core/network/src/protocol.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use std::collections::{HashMap, HashSet}; +use std::collections::{HashMap, HashSet, BTreeMap}; use std::{mem, cmp}; use std::sync::Arc; use std::time; @@ -33,6 +33,7 @@ use service::{TransactionPool, ExHashT}; use import_queue::ImportQueue; use config::{ProtocolConfig, Roles}; use chain::Client; +use client::light::fetcher::ChangesProof; use on_demand::OnDemandService; use io::SyncIo; use error; @@ -673,20 +674,29 @@ impl, H: ExHashT> Protocol { fn on_remote_changes_request(&self, io: &mut SyncIo, who: NodeIndex, request: message::RemoteChangesRequest) { trace!(target: "sync", "Remote changes proof request {} from {} for key {} ({}..{})", request.id, who, request.key.to_hex(), request.first, request.last); - let (max, proof) = match self.context_data.chain.key_changes_proof(request.first, request.last, request.max, &request.key) { - Ok((max, proof)) => (max, proof), + let proof = match self.context_data.chain.key_changes_proof(request.first, request.last, request.min, request.max, &request.key) { + Ok(proof) => proof, Err(error) => { trace!(target: "sync", "Remote changes proof request {} from {} for key {} ({}..{}) failed with: {}", request.id, who, request.key.to_hex(), request.first, request.last, error); - (Zero::zero(), Default::default()) + ChangesProof:: { + max_block: Zero::zero(), + proof: vec![], + roots: BTreeMap::new(), + roots_proof: vec![], + } }, }; self.send_message(io, who, GenericMessage::RemoteChangesResponse(message::RemoteChangesResponse { - id: request.id, max, proof, + id: request.id, + max: proof.max_block, + proof: proof.proof, + roots: proof.roots.into_iter().collect(), + roots_proof: proof.roots_proof, })); } - fn on_remote_changes_response(&self, io: &mut SyncIo, who: NodeIndex, response: message::RemoteChangesResponse>) { + fn on_remote_changes_response(&self, io: &mut SyncIo, who: NodeIndex, response: message::RemoteChangesResponse, B::Hash>) { trace!(target: "sync", "Remote changes proof response {} from {} (max={})", response.id, who, response.max); self.on_demand.as_ref().map(|s| s.on_remote_changes_response(io, who, response)); diff --git a/substrate/core/service/src/components.rs b/substrate/core/service/src/components.rs index 0325b75e9e..379e592238 100644 --- a/substrate/core/service/src/components.rs +++ b/substrate/core/service/src/components.rs @@ -471,7 +471,7 @@ impl Components for LightComponents { }; let db_storage = client_db::light::LightStorage::new(db_settings)?; let light_blockchain = client::light::new_light_blockchain(db_storage); - let fetch_checker = Arc::new(client::light::new_fetch_checker::<_, Blake2Hasher>(executor)); + let fetch_checker = Arc::new(client::light::new_fetch_checker::<_, Blake2Hasher, _, _, _>(light_blockchain.clone(), executor)); let fetcher = Arc::new(network::OnDemand::new(fetch_checker)); let client_backend = client::light::new_light_backend(light_blockchain, fetcher.clone()); let client = client::light::new_light(client_backend, fetcher.clone(), &config.chain_spec)?; diff --git a/substrate/core/state-machine/src/lib.rs b/substrate/core/state-machine/src/lib.rs index e88b3f370a..0b7f1ccd6d 100644 --- a/substrate/core/state-machine/src/lib.rs +++ b/substrate/core/state-machine/src/lib.rs @@ -61,6 +61,7 @@ pub use changes_trie::{ key_changes, key_changes_proof, key_changes_proof_check, prune as prune_changes_tries}; pub use overlayed_changes::OverlayedChanges; +pub use proving_backend::create_proof_check_backend_storage; pub use trie_backend_essence::Storage; pub use trie_backend::TrieBackend; @@ -403,7 +404,7 @@ where { let trie_backend = backend.try_into_trie_backend() .ok_or_else(|| Box::new(ExecutionError::UnableToGenerateProof) as Box)?; - let proving_backend = proving_backend::ProvingBackend::new(trie_backend); + let proving_backend = proving_backend::ProvingBackend::new(&trie_backend); let (result, _, _) = execute::, _>( &proving_backend, None, @@ -444,11 +445,24 @@ pub fn prove_read( where B: Backend, H: Hasher, - H::Out: Ord + HeapSizeOf { + let trie_backend = backend.try_into_trie_backend() .ok_or_else(|| Box::new(ExecutionError::UnableToGenerateProof) as Box)?; + prove_read_on_trie_backend(&trie_backend, key) +} + +/// Generate storage read proof on pre-created trie backend. +pub fn prove_read_on_trie_backend( + trie_backend: &TrieBackend, + key: &[u8] +) -> Result<(Option>, Vec>), Box> +where + S: trie_backend_essence::TrieBackendStorage, + H: Hasher, + H::Out: Ord + HeapSizeOf +{ let proving_backend = proving_backend::ProvingBackend::<_, H>::new(trie_backend); let result = proving_backend.storage(key).map_err(|e| Box::new(e) as Box)?; Ok((result, proving_backend.extract_proof())) @@ -462,11 +476,22 @@ pub fn read_proof_check( ) -> Result>, Box> where H: Hasher, - H::Out: Ord + HeapSizeOf { - let backend = proving_backend::create_proof_check_backend::(root, proof)?; - backend.storage(key).map_err(|e| Box::new(e) as Box) + let proving_backend = proving_backend::create_proof_check_backend::(root, proof)?; + read_proof_check_on_proving_backend(&proving_backend, key) +} + +/// Check storage read proof on pre-created proving backend. +pub fn read_proof_check_on_proving_backend( + proving_backend: &TrieBackend, H>, + key: &[u8], +) -> Result>, Box> +where + H: Hasher, + H::Out: Ord + HeapSizeOf +{ + proving_backend.storage(key).map_err(|e| Box::new(e) as Box) } /// Sets overlayed changes' changes trie configuration. Returns error if configuration diff --git a/substrate/core/state-machine/src/proving_backend.rs b/substrate/core/state-machine/src/proving_backend.rs index a46fd74b5f..85afc0b3dc 100644 --- a/substrate/core/state-machine/src/proving_backend.rs +++ b/substrate/core/state-machine/src/proving_backend.rs @@ -84,14 +84,14 @@ impl<'a, S, H> ProvingBackendEssence<'a, S, H> /// Patricia trie-based backend which also tracks all touched storage trie values. /// These can be sent to remote node and used as a proof of execution. -pub struct ProvingBackend, H: Hasher> { - backend: TrieBackend, +pub struct ProvingBackend<'a, S: 'a + TrieBackendStorage, H: 'a + Hasher> { + backend: &'a TrieBackend, proof_recorder: RefCell>, } -impl, H: Hasher> ProvingBackend { +impl<'a, S: 'a + TrieBackendStorage, H: 'a + Hasher> ProvingBackend<'a, S, H> { /// Create new proving backend. - pub fn new(backend: TrieBackend) -> Self { + pub fn new(backend: &'a TrieBackend) -> Self { ProvingBackend { backend, proof_recorder: RefCell::new(Recorder::new()), @@ -108,10 +108,10 @@ impl, H: Hasher> ProvingBackend { } } -impl Backend for ProvingBackend +impl<'a, S, H> Backend for ProvingBackend<'a, S, H> where - S: TrieBackendStorage, - H: Hasher, + S: 'a + TrieBackendStorage, + H: 'a + Hasher, H::Out: Ord + HeapSizeOf, { type Error = String; @@ -174,10 +174,7 @@ where H: Hasher, H::Out: HeapSizeOf, { - let mut db = MemoryDB::default(); // TODO: use new for correctness - for item in proof { - db.insert(&item); - } + let db = create_proof_check_backend_storage(proof); if !db.contains(&root) { return Err(Box::new(ExecutionError::InvalidProof) as Box); @@ -186,6 +183,21 @@ where Ok(TrieBackend::new(db, root)) } +/// Create in-memory storage of proof check backend. +pub fn create_proof_check_backend_storage( + proof: Vec> +) -> MemoryDB +where + H: Hasher, + H::Out: HeapSizeOf, +{ + let mut db = MemoryDB::default(); // TODO: use new for correctness + for item in proof { + db.insert(&item); + } + db +} + #[cfg(test)] mod tests { use backend::{InMemory}; @@ -193,18 +205,20 @@ mod tests { use super::*; use primitives::{Blake2Hasher}; - fn test_proving() -> ProvingBackend, Blake2Hasher> { - ProvingBackend::new(test_trie()) + fn test_proving<'a>(trie_backend: &'a TrieBackend, Blake2Hasher>) -> ProvingBackend<'a, MemoryDB, Blake2Hasher> { + ProvingBackend::new(trie_backend) } #[test] fn proof_is_empty_until_value_is_read() { - assert!(test_proving().extract_proof().is_empty()); + let trie_backend = test_trie(); + assert!(test_proving(&trie_backend).extract_proof().is_empty()); } #[test] fn proof_is_non_empty_after_value_is_read() { - let backend = test_proving(); + let trie_backend = test_trie(); + let backend = test_proving(&trie_backend); assert_eq!(backend.storage(b"key").unwrap(), Some(b"value".to_vec())); assert!(!backend.extract_proof().is_empty()); } @@ -218,7 +232,7 @@ mod tests { #[test] fn passes_throgh_backend_calls() { let trie_backend = test_trie(); - let proving_backend = test_proving(); + let proving_backend = test_proving(&trie_backend); assert_eq!(trie_backend.storage(b"key").unwrap(), proving_backend.storage(b"key").unwrap()); assert_eq!(trie_backend.pairs(), proving_backend.pairs()); @@ -241,7 +255,7 @@ mod tests { assert_eq!(in_memory_root, trie_root); (0..64).for_each(|i| assert_eq!(trie.storage(&[i]).unwrap().unwrap(), vec![i])); - let proving = ProvingBackend::new(trie); + let proving = ProvingBackend::new(&trie); assert_eq!(proving.storage(&[42]).unwrap().unwrap(), vec![42]); let proof = proving.extract_proof(); diff --git a/substrate/core/state-machine/src/trie_backend.rs b/substrate/core/state-machine/src/trie_backend.rs index 6dcaf3868e..f29608b5d1 100644 --- a/substrate/core/state-machine/src/trie_backend.rs +++ b/substrate/core/state-machine/src/trie_backend.rs @@ -49,6 +49,11 @@ impl, H: Hasher> TrieBackend where H::Out: HeapSi pub fn root(&self) -> &H::Out { self.essence.root() } + + /// Consumes self and returns underlying storage. + pub fn into_storage(self) -> S { + self.essence.into_storage() + } } impl super::Error for String {} diff --git a/substrate/core/state-machine/src/trie_backend_essence.rs b/substrate/core/state-machine/src/trie_backend_essence.rs index 56424ae022..2c2281b730 100644 --- a/substrate/core/state-machine/src/trie_backend_essence.rs +++ b/substrate/core/state-machine/src/trie_backend_essence.rs @@ -56,6 +56,11 @@ impl, H: Hasher> TrieBackendEssence where H::Out: &self.root } + /// Consumes self and returns underlying storage. + pub fn into_storage(self) -> S { + self.storage + } + /// Get the value of storage at given key. pub fn storage(&self, key: &[u8]) -> Result>, String> { let mut read_overlay = MemoryDB::default(); diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 76ec888e142aeab6808077bf9e13aa9ff43b221c..27b4e0e4caac5e61a9afacc0becb3c3efc51cad6 100644 GIT binary patch literal 223059 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%0Dk`x5lqY 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 delta 7282 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 WBNF;U=pgQ#|z37uMR^L!wV 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%0A2ZxG#u289IaIk{}v{iTk< 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

+jGK;LUNTO>4^AL0%kSEcRM*<9 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 z