Skip to content

Commit 7478019

Browse files
authored
Hash legacy hash value when grafting from pre 0.0.6 spec_version
1 parent 36ad6a2 commit 7478019

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

Diff for: Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: graph/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ serde_derive = { workspace = true }
4848
serde_json = { workspace = true }
4949
serde_regex = { workspace = true }
5050
serde_yaml = { workspace = true }
51+
sha2 = "0.10.8"
5152
slog = { version = "2.7.0", features = [
5253
"release_max_level_trace",
5354
"max_level_trace",

Diff for: graph/src/components/subgraph/proof_of_indexing/online.rs

+11-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use crate::{
99
prelude::{debug, BlockNumber, DeploymentHash, Logger, ENV_VARS},
1010
util::stable_hash_glue::AsBytes,
1111
};
12+
use sha2::{Digest, Sha256};
1213
use stable_hash::{fast::FastStableHasher, FieldAddress, StableHash, StableHasher};
1314
use stable_hash_legacy::crypto::{Blake3SeqNo, SetHasher};
1415
use stable_hash_legacy::prelude::{
@@ -31,6 +32,8 @@ enum Hashers {
3132
Legacy(SetHasher),
3233
}
3334

35+
const STABLE_HASH_LEN: usize = 32;
36+
3437
impl Hashers {
3538
fn new(version: ProofOfIndexingVersion) -> Self {
3639
match version {
@@ -132,9 +135,14 @@ impl BlockEventStream {
132135
}
133136
Hashers::Fast(mut digest) => {
134137
if let Some(prev) = prev {
135-
let prev = prev
136-
.try_into()
137-
.expect("Expected valid fast stable hash representation");
138+
let prev = if prev.len() == STABLE_HASH_LEN {
139+
prev.try_into()
140+
.expect("Expected valid fast stable hash representation")
141+
} else {
142+
let mut hasher = Sha256::new();
143+
hasher.update(prev);
144+
hasher.finalize().into()
145+
};
138146
let prev = FastStableHasher::from_bytes(prev);
139147
digest.mixin(&prev);
140148
}

0 commit comments

Comments
 (0)