Support multi-hash in multi-trie via PlainDB (#1106)

* Temporarily pin trie to #2

* Use generic and delay trait object casting

Rust does not support super-trait upcasting

* Add PlainDB impl for Ephemeral

* Add PlainDB trait alias for completeness

* Use PlainDB for test TrieBackendStorage fetch

We always check overlay first for a storage fetch, which already checked null data. Using PlainDB here makes it work
nicer with other PlainDB overlays.

* Update trie reference

* Use HashDBRef in places when approriate

* Use PlainDBRef in places when approriate

* Update trie crate reference

* Remove unused HashDB::keys

* Patch dependencies

* Fix cargolock

* Update cargo lock again
This commit is contained in:
Wei Tang
2019-02-06 11:16:40 +01:00
committed by Arkadiy Paronyan
parent fa2e323478
commit 1ba7e35c18
11 changed files with 322 additions and 105 deletions
+39 -4
View File
@@ -34,7 +34,7 @@ dependencies = [
[[package]]
name = "hash-db"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
source = "git+https://github.com/paritytech/trie#696a380c1bf1a816a0c1872a6349e4b12e19b3ef"
[[package]]
name = "hash256-std-hasher"
@@ -145,7 +145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
name = "sr-io"
version = "0.1.0"
dependencies = [
"hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hash-db 0.9.0 (git+https://github.com/paritytech/trie)",
"parity-codec 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"sr-std 0.1.0",
@@ -179,7 +179,7 @@ name = "substrate-primitives"
version = "0.1.0"
dependencies = [
"byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
"hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hash-db 0.9.0 (git+https://github.com/paritytech/trie)",
"hash256-std-hasher 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-codec-derive 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -214,13 +214,48 @@ name = "unicode-xid"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[patch.unused]]
name = "hash256-std-hasher"
version = "0.9.1"
source = "git+https://github.com/paritytech/trie#696a380c1bf1a816a0c1872a6349e4b12e19b3ef"
[[patch.unused]]
name = "keccak-hasher"
version = "0.2.1"
source = "git+https://github.com/paritytech/trie#696a380c1bf1a816a0c1872a6349e4b12e19b3ef"
[[patch.unused]]
name = "memory-db"
version = "0.9.1"
source = "git+https://github.com/paritytech/trie#696a380c1bf1a816a0c1872a6349e4b12e19b3ef"
[[patch.unused]]
name = "trie-bench"
version = "0.10.0"
source = "git+https://github.com/paritytech/trie#696a380c1bf1a816a0c1872a6349e4b12e19b3ef"
[[patch.unused]]
name = "trie-db"
version = "0.9.1"
source = "git+https://github.com/paritytech/trie#696a380c1bf1a816a0c1872a6349e4b12e19b3ef"
[[patch.unused]]
name = "trie-root"
version = "0.9.1"
source = "git+https://github.com/paritytech/trie#696a380c1bf1a816a0c1872a6349e4b12e19b3ef"
[[patch.unused]]
name = "trie-standardmap"
version = "0.9.1"
source = "git+https://github.com/paritytech/trie#696a380c1bf1a816a0c1872a6349e4b12e19b3ef"
[metadata]
"checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef"
"checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781"
"checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda"
"checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2"
"checksum fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a557e80084b05c32b455963ff565a9de6f2866da023d6671705c6aff6f65e01c"
"checksum hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dc5ec43724866bbc8337e09cab4d4b5f9fdbbe589f04bdc8bfda906a639ad338"
"checksum hash-db 0.9.0 (git+https://github.com/paritytech/trie)" = "<none>"
"checksum hash256-std-hasher 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "811bd8c26961527b7d5623b71162d865325639f8ca204d4ec90b5b87473a122d"
"checksum impl-codec 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2050d823639fbeae26b2b5ba09aca8907793117324858070ade0673c49f793b"
"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2"