openmina_core/snark/
mod.rs

1mod 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}