From 6a5f432529e00f6279139df4d094dd5503bae6b6 Mon Sep 17 00:00:00 2001 From: Dickson Date: Tue, 1 Sep 2026 20:27:03 +0000 Subject: [PATCH] trie-db: hash logical keys in Secure and Fat get_hash --- trie-db/src/fatdb.rs | 2 +- trie-db/src/sectriedb.rs | 2 +- trie-db/test/src/fatdb.rs | 14 ++++++++++++++ trie-db/test/src/sectriedb.rs | 15 ++++++++++++++- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/trie-db/src/fatdb.rs b/trie-db/src/fatdb.rs index ceb6cfaf..b3762256 100644 --- a/trie-db/src/fatdb.rs +++ b/trie-db/src/fatdb.rs @@ -61,7 +61,7 @@ where } fn get_hash(&self, key: &[u8]) -> Result>, TrieHash, CError> { - self.raw.get_hash(key) + self.raw.get_hash(L::Hash::hash(key).as_ref()) } fn get_with>( diff --git a/trie-db/src/sectriedb.rs b/trie-db/src/sectriedb.rs index 2885c069..798ae4a7 100644 --- a/trie-db/src/sectriedb.rs +++ b/trie-db/src/sectriedb.rs @@ -64,7 +64,7 @@ where } fn get_hash(&self, key: &[u8]) -> Result>, TrieHash, CError> { - self.raw.get_hash(key) + self.raw.get_hash(L::Hash::hash(key).as_ref()) } fn get_with>( diff --git a/trie-db/test/src/fatdb.rs b/trie-db/test/src/fatdb.rs index fb8e7350..8c283e3c 100644 --- a/trie-db/test/src/fatdb.rs +++ b/trie-db/test/src/fatdb.rs @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +use hash_db::Hasher; use memory_db::{HashKey, MemoryDB}; use reference_trie::{RefFatDB, RefFatDBMut, RefHasher}; use trie_db::{DBValue, Trie, TrieMut}; @@ -35,3 +36,16 @@ fn fatdb_to_trie() { vec![vec![0x01u8, 0x23]] ); } + +#[test] +fn fatdb_get_hash_uses_logical_key() { + let mut memdb = MemoryDB::, DBValue>::default(); + let mut root = Default::default(); + { + let mut t = RefFatDBMut::new(&mut memdb, &mut root); + t.insert(b"key", b"value").unwrap(); + } + + let t = RefFatDB::new(&memdb, &root); + assert_eq!(t.get_hash(b"key").unwrap(), Some(RefHasher::hash(b"value"))); +} diff --git a/trie-db/test/src/sectriedb.rs b/trie-db/test/src/sectriedb.rs index bc04a5c3..e722227d 100644 --- a/trie-db/test/src/sectriedb.rs +++ b/trie-db/test/src/sectriedb.rs @@ -14,7 +14,7 @@ use hash_db::Hasher; use memory_db::{HashKey, MemoryDB}; -use reference_trie::{RefHasher, RefSecTrieDB, RefTrieDBMutBuilder}; +use reference_trie::{RefHasher, RefSecTrieDB, RefSecTrieDBMut, RefTrieDBMutBuilder}; use trie_db::{DBValue, Trie, TrieMut}; #[test] @@ -28,3 +28,16 @@ fn trie_to_sectrie() { let t = RefSecTrieDB::new(&db, &root); assert_eq!(t.get(&[0x01u8, 0x23]).unwrap().unwrap(), vec![0x01u8, 0x23]); } + +#[test] +fn sectriedb_get_hash_uses_logical_key() { + let mut db = MemoryDB::, DBValue>::default(); + let mut root = Default::default(); + { + let mut t = RefSecTrieDBMut::new(&mut db, &mut root); + t.insert(b"key", b"value").unwrap(); + } + + let t = RefSecTrieDB::new(&db, &root); + assert_eq!(t.get_hash(b"key").unwrap(), Some(RefHasher::hash(b"value"))); +}