@@ -27,18 +27,19 @@ use super::{
27
27
ConsensusProofOfStakeDataConsensusStateValueStableV2 ,
28
28
ConsensusProofOfStakeDataEpochDataNextValueVersionedValueStableV1 ,
29
29
ConsensusProofOfStakeDataEpochDataStakingValueVersionedValueStableV1 ,
30
- ConsensusVrfOutputTruncatedStableV1 , MinaBaseAccountBinableArgStableV2 ,
31
- MinaBaseEpochLedgerValueStableV1 , MinaBaseFeeExcessStableV1 ,
30
+ ConsensusVrfOutputTruncatedStableV1 , DataHashLibStateHashStableV1 ,
31
+ MinaBaseAccountBinableArgStableV2 , MinaBaseEpochLedgerValueStableV1 , MinaBaseFeeExcessStableV1 ,
32
32
MinaBasePendingCoinbaseStackVersionedStableV1 , MinaBasePendingCoinbaseStateStackStableV1 ,
33
33
MinaBaseProtocolConstantsCheckedValueStableV1 , MinaBaseStagedLedgerHashNonSnarkStableV1 ,
34
- MinaBaseStagedLedgerHashStableV1 , MinaBaseVerificationKeyWireStableV1 ,
35
- MinaNumbersGlobalSlotSinceGenesisMStableV1 , MinaNumbersGlobalSlotSinceHardForkMStableV1 ,
36
- MinaNumbersGlobalSlotSpanStableV1 , MinaStateBlockchainStateValueStableV2LedgerProofStatement ,
34
+ MinaBaseStagedLedgerHashStableV1 , MinaBaseStateBodyHashStableV1 ,
35
+ MinaBaseVerificationKeyWireStableV1 , MinaNumbersGlobalSlotSinceGenesisMStableV1 ,
36
+ MinaNumbersGlobalSlotSinceHardForkMStableV1 , MinaNumbersGlobalSlotSpanStableV1 ,
37
+ MinaStateBlockchainStateValueStableV2LedgerProofStatement ,
37
38
MinaStateBlockchainStateValueStableV2LedgerProofStatementSource ,
38
39
MinaStateBlockchainStateValueStableV2SignedAmount , MinaStateProtocolStateBodyValueStableV2 ,
39
40
MinaStateProtocolStateValueStableV2 ,
40
41
MinaTransactionLogicZkappCommandLogicLocalStateValueStableV1 ,
41
- NonZeroCurvePointUncompressedStableV1 , SgnStableV1 , SignedAmount , TokenFeeExcess ,
42
+ NonZeroCurvePointUncompressedStableV1 , SgnStableV1 , SignedAmount , StateHash , TokenFeeExcess ,
42
43
} ;
43
44
44
45
impl generated:: MinaBaseStagedLedgerHashNonSnarkStableV1 {
@@ -277,6 +278,54 @@ mod tests {
277
278
}
278
279
}
279
280
281
+ fn fp_state_hash_from_fp_hashes ( previous_state_hash : Fp , body_hash : Fp ) -> Fp {
282
+ let mut inputs = Inputs :: new ( ) ;
283
+ inputs. append_field ( previous_state_hash) ;
284
+ inputs. append_field ( body_hash) ;
285
+ hash_with_kimchi ( "MinaProtoState" , & inputs. to_fields ( ) )
286
+ }
287
+
288
+ impl StateHash {
289
+ fn from_fp ( fp : Fp ) -> Self {
290
+ DataHashLibStateHashStableV1 ( fp. into ( ) ) . into ( )
291
+ }
292
+
293
+ pub fn from_hashes (
294
+ pred_state_hash : & StateHash ,
295
+ body_hash : & MinaBaseStateBodyHashStableV1 ,
296
+ ) -> Self {
297
+ Self :: from_fp ( fp_state_hash_from_fp_hashes (
298
+ pred_state_hash. to_field ( ) ,
299
+ body_hash. to_field ( ) ,
300
+ ) )
301
+ }
302
+ }
303
+
304
+ impl generated:: MinaStateProtocolStateBodyValueStableV2 {
305
+ pub fn hash ( & self ) -> MinaBaseStateBodyHashStableV1 {
306
+ let fp = MinaHash :: hash ( self ) ;
307
+ MinaBaseStateBodyHashStableV1 ( fp. into ( ) )
308
+ }
309
+ }
310
+
311
+ impl generated:: MinaStateProtocolStateValueStableV2 {
312
+ pub fn hash ( & self ) -> StateHash {
313
+ StateHash :: from_fp ( MinaHash :: hash ( self ) )
314
+ }
315
+ }
316
+
317
+ impl generated:: MinaBlockHeaderStableV2 {
318
+ pub fn hash ( & self ) -> StateHash {
319
+ self . protocol_state . hash ( )
320
+ }
321
+ }
322
+
323
+ impl generated:: MinaBlockBlockStableV2 {
324
+ pub fn hash ( & self ) -> StateHash {
325
+ self . header . protocol_state . hash ( )
326
+ }
327
+ }
328
+
280
329
impl MinaHash for MinaStateProtocolStateBodyValueStableV2 {
281
330
fn hash ( & self ) -> mina_hasher:: Fp {
282
331
let mut inputs = Inputs :: new ( ) ;
@@ -287,10 +336,7 @@ impl MinaHash for MinaStateProtocolStateBodyValueStableV2 {
287
336
288
337
impl MinaHash for MinaStateProtocolStateValueStableV2 {
289
338
fn hash ( & self ) -> mina_hasher:: Fp {
290
- let mut inputs = Inputs :: new ( ) ;
291
- inputs. append_field ( self . previous_state_hash . to_field ( ) ) ;
292
- inputs. append_field ( self . body . hash ( ) ) ;
293
- hash_with_kimchi ( "MinaProtoState" , & inputs. to_fields ( ) )
339
+ fp_state_hash_from_fp_hashes ( self . previous_state_hash . to_field ( ) , MinaHash :: hash ( & self . body ) )
294
340
}
295
341
}
296
342
0 commit comments