Skip to content
  • snd's avatar
    best_containing operations (issue 603) (#740) · 6c7b45e9
    snd authored and asynchronous rob's avatar asynchronous rob committed
    * add stub for Client.best_chain_containing_block_hash
    
    * add fn blockchain::Backend::leaf_hashes
    
    * fix typo
    
    * sketch out Client.best_chain_containing_block_hash
    
    * fix indent
    
    * Blockchain.leaf_hashes -> Blockchain.leaves
    
    * add unimplemented! stub impls for Blockchain.leaves
    
    * start impl of Blockchain.leaves for in-memory client db
    
    * Client.best_chain_containing...: check canonical first and make compile
    
    * first rough attempt at maintaining leaf list in in-memory db
    
    * fix tab indent
    
    * add test best_chain_containing_single_block
    
    * add failing test best_chain_containing_with_fork
    
    * pub use client::blockchain; in test-client to prevent circular dep in client tests
    
    * best_chain_containing_with_single_block: improve and test leaves
    
    * far improve in-memory Backend::leaves impl
    
    * test blockchain::Backend::leaves more thoroughly
    
    * handle more edge cases in blockchain::Backend::leaves impl for in memory
    
    * fix test best_chain_containing_with_fork (two distinct test blocks had same hash)
    
    * make best_chain_containing_block_hash pass existing tests
    
    * improve docstring for Blockchain::leaves
    
    * Client.best_chain_containing: some cleanup. support max_block_number
    
    * best_chain_containing: remove broken outcommented fast check for best = canonical
    
    * remove blank line
    
    * best_block_containing: return None if target_hash not found
    
    * best_chain_containing: add unreachable! at end of function
    
    * improve tests for best_chain_containing
    
    * renames
    
    * more elaborate test scenario for best_containing
    
    * best_containing: fix restriction of search through maybe_max_number
    
    * best_containing: tests for restriction of search
    
    * get rid of unnecessary clones
    
    * replace Client::new_in_mem by new_with_backend which is useful for testing backends
    
    * add test_client::new_with_backend for testing different backend impls
    
    * add test for in_mem::Backend::leaves
    
    * remove unused imports
    
    * in_mem test_leaves: simplify
    
    * flesh out tests for in_mem leaves impl
    
    * remove tests for leaves from client which are now covered in implementing module
    
    * improve comment
    
    * add Client.new_in_mem again
    
    * unwrap in test_client::new_with_backend
    
    * make test_client::BlockBuilderExt work not just with in-mem backend
    
    * make test client ext not just work with in mem backend
    
    * add failing Backend.leaves test for client-db
    
    * update Cargo.lock
    
    * replace KeccakHasher with Blake2Hasher
    
    * refactor
    
    address grumble https://github.com/paritytech/substrate/pull/740#discussion_r217822862
    
    * refactor using NumberFor
    
    address grumble https://github.com/paritytech/substrate/pull/740#discussion_r217823341
    
    * add test that exposes possible problem
    
    * update docstring for Client.best_containing
    
    * extract test for Backend.leaves for reuse
    
    * improve test blockchain_header_and_hash_return_blocks_from_canonical_chain_given_block_numbers
    
    * extract test_blockchain_query_by_number_gets_canonical to easily test multiple impls
    
    * remove whitespace
    
    * remove todo
    
    * Client.best_containing: pre-empt search loop when target in canonical
    
    * best_containing: prevent race condition by holding import lock
    
    * add todo
    
    * extract leaf list update code into function
    
    * add comment
    
    * client-db: use in-memory-kvdb for tests
    
    * use BTreeSet to store leaves for in-mem which is faster and simpler
    
    * add docstring
    
    * add comments and fix formatting
    
    * add initial raw version of LeafSet
    
    * remove Client::update_leaves which has been superceded by LeafSet
    
    * use LeafSet in in-mem backend
    
    * keccak -> blake2
    
    * don't reexport codec traits in primitives
    
    addresses https://github.com/paritytech/substrate/pull/740#discussion_r219538185
    
    * fix rebase mistake
    
    * improve LeafSet and use it in state-db
    
    * correct Transfer nonces to fix ApplyExtinsicFailed(Stale)
    
    * use given backend in canoncal test
    
    * kill dead tree-route code in util
    
    * fix warnings
    
    * tests for leafset
    
    * reorganizations in in_mem backend
    
    * fix reorganization canon block logic
    
    * DB commit and safe reversion on write error
    
    * fix style nits
    6c7b45e9