Skip to content

Commit b682082

Browse files
binierakoptelov
authored andcommitted
feat: changes required for openmina
1 parent fd2bc8c commit b682082

File tree

2 files changed

+59
-13
lines changed

2 files changed

+59
-13
lines changed

mina-p2p-messages/src/v2/generated.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ pub struct PicklesProofProofsVerifiedMaxStableV2 {
676676
/// Gid: `544`
677677
/// Location: [src/lib/non_zero_curve_point/compressed_poly.ml:13:6](https://github.com/MinaProtocol/mina/blob/bfd1009/src/lib/non_zero_curve_point/compressed_poly.ml#L13)
678678
/// Args: crate :: bigint :: BigInt , bool
679-
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, BinProtRead, BinProtWrite)]
679+
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, BinProtRead, BinProtWrite)]
680680
pub struct NonZeroCurvePointUncompressedStableV1 {
681681
pub x: crate::bigint::BigInt,
682682
pub is_odd: bool,
@@ -788,7 +788,7 @@ pub struct CurrencyBalanceStableV1(pub CurrencyAmountStableV1);
788788
///
789789
/// Gid: `637`
790790
/// Location: [src/lib/data_hash_lib/state_hash.ml:44:4](https://github.com/MinaProtocol/mina/blob/bfd1009/src/lib/data_hash_lib/state_hash.ml#L44)
791-
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, BinProtRead, BinProtWrite, Deref)]
791+
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, BinProtRead, BinProtWrite, Deref)]
792792
pub struct DataHashLibStateHashStableV1(pub crate::bigint::BigInt);
793793

794794
/// Derived name: `Mina_base__Sparse_ledger_base.Stable.V2.tree`
@@ -914,7 +914,7 @@ pub struct MinaBasePaymentPayloadStableV2 {
914914
///
915915
/// Gid: `689`
916916
/// Location: [src/lib/mina_base/ledger_hash0.ml:17:4](https://github.com/MinaProtocol/mina/blob/bfd1009/src/lib/mina_base/ledger_hash0.ml#L17)
917-
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, BinProtRead, BinProtWrite, Deref)]
917+
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, BinProtRead, BinProtWrite, Deref)]
918918
pub struct MinaBaseLedgerHash0StableV1(pub crate::bigint::BigInt);
919919

920920
/// **OCaml name**: `Mina_base__Permissions.Auth_required.Stable.V2`

mina-p2p-messages/src/v2/hashing.rs

Lines changed: 56 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,19 @@ use super::{
2727
ConsensusProofOfStakeDataConsensusStateValueStableV2,
2828
ConsensusProofOfStakeDataEpochDataNextValueVersionedValueStableV1,
2929
ConsensusProofOfStakeDataEpochDataStakingValueVersionedValueStableV1,
30-
ConsensusVrfOutputTruncatedStableV1, MinaBaseAccountBinableArgStableV2,
31-
MinaBaseEpochLedgerValueStableV1, MinaBaseFeeExcessStableV1,
30+
ConsensusVrfOutputTruncatedStableV1, DataHashLibStateHashStableV1,
31+
MinaBaseAccountBinableArgStableV2, MinaBaseEpochLedgerValueStableV1, MinaBaseFeeExcessStableV1,
3232
MinaBasePendingCoinbaseStackVersionedStableV1, MinaBasePendingCoinbaseStateStackStableV1,
3333
MinaBaseProtocolConstantsCheckedValueStableV1, MinaBaseStagedLedgerHashNonSnarkStableV1,
34-
MinaBaseStagedLedgerHashStableV1, MinaBaseVerificationKeyWireStableV1,
35-
MinaNumbersGlobalSlotSinceGenesisMStableV1, MinaNumbersGlobalSlotSinceHardForkMStableV1,
36-
MinaNumbersGlobalSlotSpanStableV1, MinaStateBlockchainStateValueStableV2LedgerProofStatement,
34+
MinaBaseStagedLedgerHashStableV1, MinaBaseStateBodyHashStableV1,
35+
MinaBaseVerificationKeyWireStableV1, MinaNumbersGlobalSlotSinceGenesisMStableV1,
36+
MinaNumbersGlobalSlotSinceHardForkMStableV1, MinaNumbersGlobalSlotSpanStableV1,
37+
MinaStateBlockchainStateValueStableV2LedgerProofStatement,
3738
MinaStateBlockchainStateValueStableV2LedgerProofStatementSource,
3839
MinaStateBlockchainStateValueStableV2SignedAmount, MinaStateProtocolStateBodyValueStableV2,
3940
MinaStateProtocolStateValueStableV2,
4041
MinaTransactionLogicZkappCommandLogicLocalStateValueStableV1,
41-
NonZeroCurvePointUncompressedStableV1, SgnStableV1, SignedAmount, TokenFeeExcess,
42+
NonZeroCurvePointUncompressedStableV1, SgnStableV1, SignedAmount, StateHash, TokenFeeExcess,
4243
};
4344

4445
impl generated::MinaBaseStagedLedgerHashNonSnarkStableV1 {
@@ -277,6 +278,54 @@ mod tests {
277278
}
278279
}
279280

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+
280329
impl MinaHash for MinaStateProtocolStateBodyValueStableV2 {
281330
fn hash(&self) -> mina_hasher::Fp {
282331
let mut inputs = Inputs::new();
@@ -287,10 +336,7 @@ impl MinaHash for MinaStateProtocolStateBodyValueStableV2 {
287336

288337
impl MinaHash for MinaStateProtocolStateValueStableV2 {
289338
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))
294340
}
295341
}
296342

0 commit comments

Comments
 (0)