1. Jun 20, 2018
    • Marek Kotewicz's avatar
      new blooms database (#8712) · 458afcd2
      Marek Kotewicz authored
      * new blooms database
      
      * fixed conflict in Cargo.lock
      
      * removed bloomchain
      
      * cleanup in progress
      
      * all tests passing in trace db with new blooms-db
      
      * added trace_blooms to BlockChainDB interface, fixed db flushing
      
      * BlockChainDB no longer exposes RwLock in the interface
      
      * automatically flush blooms-db after every insert
      
      * blooms-db uses io::BufReader to read files, wrap blooms-db into Mutex, cause fs::File is just a shared file handle
      
      * fix json_tests
      
      * blooms-db can filter multiple possibilities at the same time
      
      * removed enum trace/db.rs CacheId
      
      * lint fixes
      
      * fixed tests
      
      * kvdb-rocksdb uses fs-swap crate
      
      * update Cargo.lock
      
      * use fs::rename
      
      * fixed failing test on linux
      
      * fix tests
      
      * use fs_swap
      
      * fixed failing test on linux
      
      * cleanup after swap
      
      * fix tests
      
      * fixed osx permissions
      
      * simplify parity database opening functions
      
      * added migration to blooms-db
      
      * address @niklasad1 grumbles
      
      * fix license and authors field of blooms-db Cargo.toml
      
      * restore blooms-db after snapshot
      458afcd2
  2. Jun 14, 2018
    • David's avatar
      Block 0 is valid in queries (#8891) · 05e7c133
      David authored
      Early exit for block nr 0 leads to spurious error about pruning: `…your node is running with state pruning…`.
      
      Fixes #7547, #8762
      05e7c133
  3. Jun 12, 2018
    • Tomasz Drwięga's avatar
      Limit the number of transactions in pending set (#8777) · 4938d5dd
      Tomasz Drwięga authored and Marek Kotewicz's avatar Marek Kotewicz committed
      * Unordered iterator.
      
      * Use unordered and limited set if full not required.
      
      * Split timeout work into smaller timers.
      
      * Avoid collecting all pending transactions when mining
      
      * Remove println.
      
      * Use priority ordering in eth-filter.
      
      * Fix ethcore-miner tests and tx propagation.
      
      * Review grumbles addressed.
      
      * Add test for unordered not populating the cache.
      
      * Fix ethcore tests.
      
      * Fix light tests.
      
      * Fix ethcore-sync tests.
      
      * Fix RPC tests.
      4938d5dd
  4. Jun 07, 2018
  5. Jun 06, 2018
  6. Jun 05, 2018
  7. Jun 04, 2018
    • Wei Tang's avatar
      Conditionally compile ethcore public test helpers (#8743) · e2a90ce1
      Wei Tang authored
      * Mark test helpers and test-only specs as cfg(test)
      
      * Use test-probe to conditionally compile test helpers
      
      * Remove test probe and directly use features tag
      e2a90ce1
    • Niklas Adolfsson's avatar
      Update `license header` and `scripts` (#8666) · 98b7c071
      Niklas Adolfsson authored and Marek Kotewicz's avatar Marek Kotewicz committed
      * Update `add_license` script
      
      * run script
      
      * add `remove duplicate lines script` and run it
      
      * Revert changes `English spaces`
      
      * strip whitespaces
      
      * Revert `GPL` in files with `apache/mit license`
      
      * don't append `gpl license` in files with other lic
      
      * Don't append `gpl header` in files with other lic.
      
      * re-ran script
      
      * include c and cpp files too
      
      * remove duplicate header
      
      * rebase nit
      98b7c071
  8. May 31, 2018
  9. May 17, 2018
  10. May 16, 2018
    • Wei Tang's avatar
      Fork choice and metadata framework for Engine (#8401) · 0ecbb3ec
      Wei Tang authored
      * Add light client TODO item
      
      * Move existing total-difficulty-based fork choice check to Engine
      
      * Abstract total difficulty and block provider as Machine::BlockMetadata and Machine::BlockProvider
      
      * Decouple "generate_metadata" logic to Engine
      
      * Use fixed BlockMetadata and BlockProvider type for null and instantseal
      
      In this way they can use total difficulty fork choice check
      
      * Extend blockdetails with metadatas and finalized info
      
      * Extra data update: mark_finalized and update_metadatas
      
      * Check finalized block in Blockchain
      
      * Fix a test constructor in verification mod
      
      * Add total difficulty trait
      
      * Fix type import
      
      * Db migration to V13 with metadata column
      
      * Address grumbles
      
      * metadatas -> metadata
      
      * Use generic type for update_metadata to avoid passing HashMap all around
      
      * Remove metadata in blockdetails
      
      * [WIP] Implement a generic metadata architecture
      
      * [WIP] Metadata insertion logic in BlockChain
      
      * typo: Value -> Self::Value
      
      * [WIP] Temporarily remove Engine::is_new_best interface
      
      So that we don't have too many type errors.
      
      * [WIP] Fix more type errors
      
      * [WIP] ExtendedHeader::PartialEq
      
      * [WIP] Change metadata type Option<Vec<u8>> to Vec<u8>
      
      * [WIP] Remove Metadata Error
      
      * [WIP] Clean up error conversion
      
      * [WIP] finalized -> is_finalized
      
      * [WIP] Mark all fields in ExtrasInsert as pub
      
      * [WIP] Remove unused import
      
      * [WIP] Keep only local metadata info
      
      * Mark metadata as optional
      
      * [WIP] Revert metadata db change in BlockChain
      
      * [WIP] Put finalization in unclosed state
      
      * Use metadata interface in BlockDetail
      
      * [WIP] Fix current build failures
      
      * [WIP] Remove unused blockmetadata struct
      
      * Remove DB migration info
      
      * [WIP] Typo
      
      * Use ExtendedHeader to implement fork choice check
      
      * Implement is_new_best using Ancestry iterator
      
      * Use expect instead of panic
      
      * [WIP] Add ancestry Engine support via on_new_block
      
      * Fix tests
      
      * Emission of ancestry actions
      
      * use_short_version should take account of metadata
      
      * Engine::is_new_best -> Engine::fork_choice
      
      * Use proper expect format as defined in #1026
      
      * panic -> expect
      
      * ancestry_header -> ancestry_with_metadata
      
      * Boxed iterator -> &mut iterator
      
      * Fix tests
      
      * is_new_best -> primitive_fork_choice
      
      * Document how fork_choice works
      
      * Engine::fork_choice -> Engine::primitive_fork_choice
      
      * comment: clarify types of finalization where Engine::primitive_fork_choice works
      
      * Expose FinalizationInfo to Engine
      
      * Fix tests due to merging
      
      * Remove TotalDifficulty trait
      
      * Do not pass FinalizationInfo to Engine
      
      If there's finalized blocks in from route, choose the old branch without calling `Engine::fork_choice`.
      
      * Fix compile
      
      * Fix unused import
      
      * Remove is_to_route_finalized
      
      When no block reorg passes a finalized block, this variable is always false.
      
      * Address format grumbles
      
      * Fix docs: mark_finalized returns None if block hash is not found
      
      `blockchain` mod does not yet have an Error type, so we still temporarily use None here.
      
      * Fix inaccurate tree_route None expect description
      0ecbb3ec
  11. May 09, 2018
    • David's avatar
      Decoding headers can fail (#8570) · 842b75c0
      David authored
      * rlp::decode returns Result
      
      * Fix journaldb to handle rlp::decode Result
      
      * Fix ethcore to work with rlp::decode returning Result
      
      * Light client handles rlp::decode returning Result
      
      * Fix tests in rlp_derive
      
      * Fix tests
      
      * Cleanup
      
      * cleanup
      
      * Allow panic rather than breaking out of iterator
      
      * Let decoding failures when reading from disk blow up
      
      * syntax
      
      * Fix the trivial grumbles
      
      * Fix failing tests
      
      * Make Account::from_rlp return Result
      
      * Syntx, sigh
      
      * Temp-fix for decoding failures
      
      * Header::decode returns Result
      
      Handle new return type throughout the code base.
      
      * Do not continue reading from the DB when a value could not be read
      
      * Fix tests
      
      * Handle header decoding in light_sync
      
      * Handling header decoding errors
      
      * Let the DecodeError bubble up unchanged
      
      * Remove redundant error conversion
      842b75c0
    • Tomasz Drwięga's avatar
      Don't block sync when importing old blocks (#8530) · 24838bbc
      Tomasz Drwięga authored
      * Alter IO queueing.
      
      * Don't require IoMessages to be Clone
      
      * Ancient blocks imported via IoChannel.
      
      * Get rid of private transactions io message.
      
      * Get rid of deadlock and fix disconnected handler.
      
      * Revert to old disconnect condition.
      
      * Fix tests.
      
      * Fix deadlock.
      24838bbc
  12. May 07, 2018
    • Wei Tang's avatar
      Keep all enacted blocks notify in order (#8524) · 528497b8
      Wei Tang authored
      * Keep all enacted blocks notify in order
      
      * Collect is unnecessary
      
      * Update ChainNotify to use ChainRouteType
      
      * Fix all ethcore fn defs
      
      * Wrap the type within ChainRoute
      
      * Fix private-tx and sync api
      
      * Fix secret_store API
      
      * Fix updater API
      
      * Fix rpc api
      
      * Fix informant api
      
      * Eagerly cache enacted/retracted and remove contain_enacted/retracted
      
      * Fix indent
      
      * tests: should use full expr form for struct constructor
      
      * Use into_enacted_retracted to further avoid copy
      
      * typo: not a function
      
      * rpc/tests: ChainRoute -> ChainRoute::new
      528497b8
  13. May 03, 2018
    • Andrew Jones's avatar
      Don't panic in import_block if invalid rlp (#8522) · 66c0638f
      Andrew Jones authored and Marek Kotewicz's avatar Marek Kotewicz committed
      * Don't panic in import_block if invalid rlp
      
      * Remove redundant type annotation
      
      * Replace RLP header view usage with safe decoding
      
      Using the view will panic with invalid RLP. Here we use Rlp decoding directly which will return a `Result<_, DecoderError>`. While this path currently should not have any invalid RLP - it makes it safer if ever called with invalid RLP from other code paths.
      66c0638f
  14. May 02, 2018
  15. May 01, 2018
  16. Apr 27, 2018
  17. Apr 19, 2018
    • Andrew Jones's avatar
      Move ethcore::Error to error_chain (#8386) · 14361cc7
      Andrew Jones authored
      * WIP
      
      * Convert Ethcore error to use error_chain
      
      * Use error_chain for ImportError and BlockImportError
      
      * Fix error pattern matches for error_chain in miner
      
      * Implement explicit From for AccountsError
      
      * Fix pattern matches for ErrorKinds
      
      * Handle ethcore error_chain in light client
      
      * Explicitly define Result type to avoid shadowing
      
      * Fix remaining Error pattern matches
      
      * Fix tab space formatting
      
      * Helps if the tests compile
      
      * Fix error chain matching after merge
      14361cc7
    • Tomasz Drwięga's avatar
      Fix receipts stripping. (#8414) · 461b2d48
      Tomasz Drwięga authored
      461b2d48
  18. Apr 16, 2018
    • Andrew Jones's avatar
      Replace legacy Rlp with UntrustedRlp and use in ethcore rlp views (#8316) · a04c5b18
      Andrew Jones authored
      * WIP
      
      * Replace Rlp with UntrustedRlp in views, explicity unwrap with expect
      
      First pass to get it to compile. Need to figure out whether to do this or to propogate Errors upstream, which would require many more changes to dependent code. If we do this way we are assuming that the views are always used in a context where the rlp is trusted to be valid e.g. when reading from our own DB. So need to fid out whether views are used with data received from an untrusted (e.g. extrernal peer).
      
      * Remove original Rlp impl, rename UntrustedRlp -> Rlp
      
      * Create rlp views with view! macro to record debug info
      
      Views are assumed to be over valid rlp, so if there is a decoding error we record where the view was created in the first place and report it in the expect
      
      * Use $crate in view! macro to avoid import, fix tests
      
      * Expect valid rlp in decode functions for now
      
      * Replace spaces with tabs in new file
      
      * Add doc tests for creating views with macro
      
      * Update rlp docs to reflect removing of UntrustedRlp
      
      * Replace UntrustedRlp usages in private-tx merge
      a04c5b18
  19. Apr 13, 2018
    • Tomasz Drwięga's avatar
      New Transaction Queue implementation (#8074) · 1cd93e4c
      Tomasz Drwięga authored and Marek Kotewicz's avatar Marek Kotewicz committed
      * Implementation of Verifier, Scoring and Ready.
      
      * Queue in progress.
      
      * TransactionPool.
      
      * Prepare for txpool release.
      
      * Miner refactor [WiP]
      
      * WiP reworking miner.
      
      * Make it compile.
      
      * Add some docs.
      
      * Split blockchain access to a separate file.
      
      * Work on miner API.
      
      * Fix ethcore tests.
      
      * Refactor miner interface for sealing/work packages.
      
      * Implement next nonce.
      
      * RPC compiles.
      
      * Implement couple of missing methdods for RPC.
      
      * Add transaction queue listeners.
      
      * Compiles!
      
      * Clean-up and parallelize.
      
      * Get rid of RefCell in header.
      
      * Revert "Get rid of RefCell in header."
      
      This reverts commit 0f2424c9b7319a786e1565ea2a8a6d801a21b4fb.
      
      * Override Sync requirement.
      
      * Fix status display.
      
      * Unify logging.
      
      * Extract some cheap checks.
      
      * Measurements and optimizations.
      
      * Fix scoring bug, heap size of bug and add cache
      
      * Disable tx queueing and parallel verification.
      
      * Make ethcore and ethcore-miner compile again.
      
      * Make RPC compile again.
      
      * Bunch of txpool tests.
      
      * Migrate transaction queue tests.
      
      * Nonce Cap
      
      * Nonce cap cache and tests.
      
      * Remove stale future transactions from the queue.
      
      * Optimize scoring and write some tests.
      
      * Simple penalization.
      
      * Clean up and support for different scoring algorithms.
      
      * Add CLI parameters for the new queue.
      
      * Remove banning queue.
      
      * Disable debug build.
      
      * Change per_sender limit to be 1% instead of 5%
      
      * Avoid cloning when propagating transactions.
      
      * Remove old todo.
      
      * Post-review fixes.
      
      * Fix miner options default.
      
      * Implement back ready transactions for light client.
      
      * Get rid of from_pending_block
      
      * Pass rejection reason.
      
      * Add more details to drop.
      
      * Rollback heap size of.
      
      * Avoid cloning hashes when propagating and include more details on rejection.
      
      * Fix tests.
      
      * Introduce nonces cache.
      
      * Remove uneccessary hashes allocation.
      
      * Lower the mem limit.
      
      * Re-enable parallel verification.
      
      * Add miner log. Don't check the type if not below min_gas_price.
      
      * Add more traces, fix disabling miner.
      
      * Fix creating pending blocks twice on AuRa authorities.
      
      * Fix tests.
      
      * re-use pending blocks in AuRa
      
      * Use reseal_min_period to prevent too frequent update_sealing.
      
      * Fix log to contain hash not sender.
      
      * Optimize local transactions.
      
      * Fix aura tests.
      
      * Update locks comments.
      
      * Get rid of unsafe Sync impl.
      
      * Review fixes.
      
      * Remove excessive matches.
      
      * Fix compilation errors.
      
      * Use new pool in private transactions.
      
      * Fix private-tx test.
      
      * Fix secret store tests.
      
      * Actually use gas_floor_target
      
      * Fix config tests.
      
      * Fix pool tests.
      
      * Address grumbles.
      1cd93e4c
  20. Apr 09, 2018
    • Anton Gavrilov's avatar
      Private transactions integration pr (#6422) · e6f75bcc
      Anton Gavrilov authored and Marek Kotewicz's avatar Marek Kotewicz committed
      * Private transaction message added
      
      * Empty line removed
      
      * Private transactions logic removed from client into the separate module
      
      * Fixed compilation after merge with head
      
      * Signed private transaction message added as well
      
      * Comments after the review fixed
      
      * Private tx execution
      
      * Test update
      
      * Renamed some methods
      
      * Fixed some tests
      
      * Reverted submodules
      
      * Fixed build
      
      * Private transaction message added
      
      * Empty line removed
      
      * Private transactions logic removed from client into the separate module
      
      * Fixed compilation after merge with head
      
      * Signed private transaction message added as well
      
      * Comments after the review fixed
      
      * Encrypted private transaction message and signed reply added
      
      * Private tx execution
      
      * Test update
      
      * Main scenario completed
      
      * Merged with the latest head
      
      * Private transactions API
      
      * Comments after review fixed
      
      * Parameters for private transactions added to parity arguments
      
      * New files added
      
      * New API methods added
      
      * Do not process packets from unconfirmed peers
      
      * Merge with ptm_ss branch
      
      * Encryption and permissioning with key server added
      
      * Fixed compilation after merge
      
      * Version of Parity protocol incremented in order to support private transactions
      
      * Doc strings for constants added
      
      * Proper format for doc string added
      
      * fixed some encryptor.rs grumbles
      
      * Private transactions functionality moved to the separate crate
      
      * Refactoring in order to remove late initialisation
      
      * Tests fixed after moving to the separate crate
      
      * Fetch method removed
      
      * Sync test helpers refactored
      
      * Interaction with encryptor refactored
      
      * Contract address retrieving via substate removed
      
      * Sensible gas limit for private transactions implemented
      
      * New private contract with nonces added
      
      * Parsing of the response from key server fixed
      
      * Build fixed after the merge, native contracts removed
      
      * Crate renamed
      
      * Tests moved to the separate directory
      
      * Handling of errors reworked in order to use error chain
      
      * Encodable macro added, new constructor replaced with default
      
      * Native ethabi usage removed
      
      * Couple conversions optimized
      
      * Interactions with client reworked
      
      * Errors omitting removed
      
      * Fix after merge
      
      * Fix after the merge
      
      * private transactions improvements in progress
      
      * private_transactions -> ethcore/private-tx
      
      * making private transactions more idiomatic
      
      * private-tx encryptor uses shared FetchClient and is more idiomatic
      
      * removed redundant tests, moved integration tests to tests/ dir
      
      * fixed failing service test
      
      * reenable add_notify on private tx provider
      
      * removed private_tx tests from sync module
      
      * removed commented out code
      
      * Use plain password instead of unlocking account manager
      
      * remove dead code
      
      * Link to the contract changed
      
      * Transaction signature chain replay protection module created
      
      * Redundant type conversion removed
      
      * Contract address returned by private provider
      
      * Test fixed
      
      * Addressing grumbles in PrivateTransactions (#8249)
      
      * Tiny fixes part 1.
      
      * A bunch of additional comments and todos.
      
      * Fix ethsync tests.
      
      * resolved merge conflicts
      
      * final private tx pr (#8318)
      
      * added cli option that enables private transactions
      
      * fixed failing test
      
      * fixed failing test
      
      * fixed failing test
      
      * fixed failing test
      e6f75bcc
    • Wei Tang's avatar
      Decouple rocksdb dependency from ethcore (#8320) · c039ab79
      Wei Tang authored
      * Move client DB opening logic to CLI
      
      * Move restoration db open logic to CLI
      
      This adds KeyValueDBHandler which handles opening a new database, thus allow us to move the restoration db open logic
      out of ethcore.
      
      * Move rocksdb's compactionprofile conversion to CLI
      
      * Move kvdb_rocksdb as test dependency for ethcore
      
      * Fix tests due to interface change
      
      * Fix service tests
      
      * Remove unused migration dep for ethcore
      c039ab79
  21. Apr 05, 2018
  22. Apr 04, 2018
  23. Apr 03, 2018
    • André Silva's avatar
      Auto-updater improvements (#8078) · dcaff6f4
      André Silva authored
      * updater: refactor updater flow into state machine
      
      * updater: delay update randomly within max range
      
      * updater: configurable update delay
      
      * updater: split polling and updater state machine step
      
      * updater: drop state to avoid deadlocking
      
      * updater: fix fetch backoff
      
      * updater: fix overflow in update delay calculation
      
      * updater: configurable update check frequency
      
      * updater: fix update policy frequency comparison
      
      * updater: use lazy_static for platform and platform_id_hash
      
      * updater: refactor operations contract calls into OperationsClient
      
      * updater: make updater generic over operations and fetch client
      
      * updater: fix compilation
      
      * updater: add testing infrastructure and minimal test
      
      * updater: fix minor grumbles
      
      * updater: add test for successful updater flow
      
      * updater: add test for update delay
      
      * updater: add test for update check frequency
      
      * updater: mock time and rng for deterministic tests
      
      * updater: test backoff on failure
      
      * updater: add test for backoff short-circuit on new release
      
      * updater: refactor to increase readability
      
      * updater: cap maximum backoff to one month
      
      * updater: add test for detecting already downloaded update
      
      * updater: add test for updater disable on fatal errors
      
      * updater: add test for pending outdated fetch
      
      * updater: test auto install of updates
      
      * updater: add test for capability updates
      
      * updater: fix capability update
      
      * updater: use ethabi to create event topic filter
      
      * updater: decrease maximum backoff to 1 day
      
      * updater: cap maximum update delay with upcoming fork block number
      
      * updater: receive state mutex guard in updater_step
      
      * updater: overload execute_upgrade to take state mutex guard
      
      * updater: remove unnecessary clone of latest operations info
      
      * updater: remove latest operations info clone when triggering fetch
      dcaff6f4
    • Tomasz Drwięga's avatar
      Remove RefCell from Header (#8227) · 9f775a76
      Tomasz Drwięga authored and Marek Kotewicz's avatar Marek Kotewicz committed
      * Cache RLP and header hashes.
      
      * Refactor header - WiP
      
      * Avoid decoding laster header.
      
      * Pre-compute hashes for Sealed/Locked block.
      
      * Use accrue bloom. Closes ##8241
      9f775a76
    • Wei Tang's avatar
      Typo fix: todo with no content (#8292) · d477670c
      Wei Tang authored and Niklas Adolfsson's avatar Niklas Adolfsson committed
      d477670c
  24. Mar 31, 2018
  25. Mar 29, 2018
    • Andrew Jones's avatar
      Replace all Rlp usages with UntrustedRlp except for ethcore views (#8233) · e3f7b70c
      Andrew Jones authored
      * Replace Rlp with UntrustedRlp and unsafely unwrap
      
      All Rlp methods return Result<_,DecoderError> now, so for this first
      pass each will be marked with `expect("TODO")`. In the next pass we can
      categorise figure out how to handle each case.
      
      * Handle DecoderError for tendermint message
      
      * Unwrap rlp results in TestBlockcChainClient
      
      Rlp should be valid since created manually in tests
      
      * Replace `use rlp::*` with explicit imports
      
      * Remove rlp decode unwraps from light cli request
      
      * Structured rlp encoding for curr best and latest in header chain
      
      * Propogate decoder errors from send_packet
      
      * Fix body uncles rlp index
      
      * Use BodyView in sync and `expect` rlp errors
      
      * Revert bbf28f removing original Rlp for this phase
      
      This can be done again in the next phase, in order that we can leave the ethcore views unchanged
      
      * Restore legacy Rlp and UntrustedRlp
      
      Use legacy Rlp for ethcore views. Will redo replacing Rlp with UntrustedRlp in  a subsequent PR
      
      * Fix tests
      
      * Replace boilerplate Encodable/Decodable with derive
      
      * Use BlockView instead of Rlp, remove unwrap
      
      * Remove rlp test_cli unwraps by using BlockView instead of Rlp directly
      
      * Remove unneccesary change to use borrowed hash
      
      * Construct sync block using new_from_header_and_body
      e3f7b70c
  26. Mar 14, 2018
  27. Mar 13, 2018
  28. Mar 12, 2018
  29. Mar 03, 2018
    • Dmitry Kashitsyn's avatar
      `Client` refactoring (#7038) · 9d7d6f71
      Dmitry Kashitsyn authored and Marek Kotewicz's avatar Marek Kotewicz committed
      * Improves `BestBlock` comment
      
      * Improves `TraceDB` comment
      
      * Improves `journaldb::Algorithm` comment.
      
      Probably the whole enum should be renamed to `Strategy` or something alike.
      
      * Comments some of the `Client`'s fields
      
      * Deglobs client imports
      
      * Fixes comments
      
      * Extracts `import_lock` to `Importer` struct
      
      * Extracts `verifier` to `Importer` struct
      
      * Extracts `block_queue` to `Importer` struct
      
      * Extracts `miner` to `Importer` struct
      
      * Extracts `ancient_verifier` to `Importer` struct
      
      * Extracts `rng` to `Importer` struct
      
      * Extracts `import_old_block` to `Importer` struct
      
      * Adds `Nonce` trait
      
      * Adds `Balance` trait
      
      * Adds `ChainInfo` trait
      
      * Fixes imports for tests using `chain_info` method
      
      * Adds `BlockInfo` trait
      
      * Adds more `ChainInfo` imports
      
      * Adds `BlockInfo` imports
      
      * Adds `ReopenBlock` trait
      
      * Adds `PrepareOpenBlock` trait
      
      * Fixes import in tests
      
      * Adds `CallContract` trait
      
      * Fixes imports in tests using `call_contract` method
      
      * Adds `TransactionInfo` trait
      
      * Adds `RegistryInfo` trait
      
      * Fixes imports in tests using `registry_address` method
      
      * Adds `ScheduleInfo` trait
      
      * Adds `ImportSealedBlock` trait
      
      * Fixes imports in test using `import_sealed_block` method
      
      * Adds `BroadcastProposalBlock` trait
      
      * Migrates `Miner` to static dispatch
      
      * Fixes tests
      
      * Moves `calculate_enacted_retracted` to `Importer`
      
      * Moves import-related methods to `Importer`
      
      * Removes redundant `import_old_block` wrapper
      
      * Extracts `import_block*` into separate trait
      
      * Fixes tests
      
      * Handles `Pending` in `LightFetch`
      
      * Handles `Pending` in filters
      
      * Handles `Pending` in `ParityClient`
      
      * Handles `Pending` in `EthClient`
      
      * Removes `BlockId::Pending`, partly refactors dependent code
      
      * Adds `StateInfo` trait
      
      * Exports `StateOrBlock` and `BlockChain` types from `client` module
      
      * Refactors `balance` RPC using generic API
      
      * Refactors `storage_at` RPC using generic API
      
      * Makes `MinerService::pending_state`'s return type dynamic
      
      * Adds `StateOrBlock` and `BlockChain` types
      
      * Adds impl of `client::BlockChain` for `Client`
      
      * Exports `StateInfo` trait from `client` module
      
      * Missing `self` use
      
      To be fixed up to "Adds impl of `client::BlockChain` for `Client`"
      
      * Adds `number_to_id` and refactors dependent RPC methods
      
      * Refactors `code_at` using generic API
      
      * Adds `StateClient` trait
      
      * Refactors RPC to use `StateClient` trait
      
      * Reverts `client::BlockChain` trait stuff, refactors methods to accept `StateOrBlock`
      
      * Refactors TestClient
      
      * Adds helper function `block_number_to_id`
      
      * Uses `block_number_to_id` instead of local function
      
      * Handles `Pending` in `list_accounts` and `list_storage_keys`
      
      * Attempt to use associated types for state instead of trait objects
      
      * Simplifies `state_at_beginning`
      
      * Extracts `call` and `call_many` into separate trait
      
      * Refactors `build_last_hashes` to accept reference
      
      * Exports `Call` type from the module
      
      * Refactors `call` and `call_many` to accept state and header
      
      * Exports `state_at` in `StateClient`
      
      * Exports `pending_block_header` from `MinerService`
      
      * Refactors RPC `call` method using new API
      
      * Adds missing parentheses
      
      * Refactors `parity::call` to use new call API
      
      * Update .gitlab-ci.yml
      
      fix gitlab lint
      
      * Fixes error handling
      
      * Refactors `traces::call` and `call_many` to use new call API
      
      * Refactors `call_contract`
      
      * Refactors `block_header`
      
      * Refactors internal RPC method `block`
      
      * Moves `estimate_gas` to `Call` trait, refactors parameters
      
      * Refactors `estimate_gas` in RPC
      
      * Refactors `uncle`
      
      * Refactors RPC `transaction`
      
      * Covers missing branches
      
      * Makes it all compile, fixes compiler grumbles
      
      * Adds casts in `blockchain` module
      
      * Fixes `PendingBlock` tests, work on `MinerService`
      
      * Adds test stubs for StateClient and EngineInfo
      
      * Makes `state_db` public
      
      * Adds missing impls for `TestBlockChainClient`
      
      * Adds trait documentation
      
      * Adds missing docs to the `state_db` module
      
      * Fixes trivial compilation errors
      
      * Moves `code_hash` method to a `BlockInfo` trait
      
      * Refactors `Verifier` to be generic over client
      
      * Refactors `TransactionFilter` to be generic over client
      
      * Refactors `Miner` and `Client` to reflect changes in verifier and txfilter API
      
      * Moves `ServiceTransactionChecker` back to `ethcore`
      
      * Fixes trait bounds in `Miner` API
      
      * Fixes `Client`
      
      * Fixes lifetime bound in `FullFamilyParams`
      
      * Adds comments to `FullFamilyParams`
      
      * Fixes imports in `ethcore`
      
      * Fixes BlockNumber handling in `code_at` and `replay_block_transactions`
      
      * fix compile issues
      
      * First step to redundant trait merge
      
      * Fixes compilation error in RPC tests
      
      * Adds mock `State` as a stub for `TestClient`
      
      * Handles `StateOrBlock::State` in `TestBlockChainClient::balance`
      
      * Fixes `transaction_count` RPC
      
      * Fixes `transaction_count`
      
      * Moves `service_transaction.json` to the `contracts` subfolder
      
      * Fixes compilation errors in tests
      
      * Refactors client to use `AccountData`
      
      * Refactors client to use `BlockChain`
      
      * Refactors miner to use aggregate traits
      
      * Adds `SealedBlockImporter` trait
      
      * Refactors miner to use `SealedBlockImporter` trait
      
      * Removes unused imports
      
      * Simplifies `RegistryInfo::registry_address`
      
      * Fixes indentation
      
      * Removes commented out trait bound
      9d7d6f71