openmina_core/snark/
mod.rs1mod snark_job_id;
2pub use snark_job_id::SnarkJobId;
3
4mod snark_job_commitment;
5pub use snark_job_commitment::SnarkJobCommitment;
6
7mod snark_info;
8pub use snark_info::SnarkInfo;
9
10#[allow(clippy::module_inception)]
11mod snark;
12pub use snark::Snark;
13
14mod snark_cmp;
15pub use snark_cmp::SnarkCmp;
16
17use mina_p2p_messages::v2::NonZeroCurvePoint;
18
19pub fn tie_breaker_hash(job_id: &SnarkJobId, snarker: &NonZeroCurvePoint) -> [u8; 32] {
20 use sha2::{Digest, Sha256};
21 let mut hasher = Sha256::new();
22 hasher.update(job_id.source.first_pass_ledger.to_bytes());
23 hasher.update(job_id.source.second_pass_ledger.to_bytes());
24 hasher.update(job_id.target.first_pass_ledger.to_bytes());
25 hasher.update(job_id.target.second_pass_ledger.to_bytes());
26 hasher.update(snarker.x.to_bytes());
27 hasher.finalize().into()
28}