|
| 1 | +use kimchi::mina_curves::pasta::Fp; |
| 2 | +use mina_tree::{ |
| 3 | + proofs::{ |
| 4 | + verification::verify_block, |
| 5 | + verifier_index::{get_verifier_index, VerifierKind}, |
| 6 | + }, |
| 7 | + verifier::get_srs, |
| 8 | +}; |
| 9 | +use protocol_state_proof::parse_base64; |
| 10 | + |
1 | 11 | mod protocol_state_proof; |
2 | 12 |
|
3 | | -pub fn parse_query_to_mina_block_header(mina_state_proof_vk_query: &str) { |
4 | | - todo!() |
| 13 | +pub fn verify_protocol_state_proof( |
| 14 | + mina_protocol_state_proof_base64_query: &str, |
| 15 | +) -> Result<bool, String> { |
| 16 | + let protocol_state_proof = parse_base64(mina_protocol_state_proof_base64_query)?; |
| 17 | + let verifier_index = get_verifier_index(VerifierKind::Blockchain); |
| 18 | + let srs = get_srs::<Fp>(); |
| 19 | + let srs = srs.lock().unwrap(); |
| 20 | + |
| 21 | + Ok(verify_block(&protocol_state_proof, &verifier_index, &srs)) |
5 | 22 | } |
6 | 23 |
|
7 | 24 | #[cfg(test)] |
8 | 25 | mod test { |
9 | | - use super::parse_query_to_mina_block_header; |
| 26 | + use super::verify_protocol_state_proof; |
10 | 27 |
|
11 | | - const MINA_STATE_PROOF_VK_QUERY: &str = include_str!( |
12 | | - "../../../../../batcher/aligned/test_files/mina/mina_state_proof_vk_query.json" |
| 28 | + const MINA_PROTOCOL_STATE_PROOF_BASE64_QUERY: &str = include_str!( |
| 29 | + "../../../../../batcher/aligned/test_files/mina/mina_protocol_state_proof_base64.json" |
13 | 30 | ); |
14 | 31 |
|
15 | 32 | #[test] |
16 | | - fn test_parse_query_to_mina_block_header() { |
17 | | - parse_query_to_mina_block_header(MINA_STATE_PROOF_VK_QUERY); |
| 33 | + fn test_verify_protocol_state_proof() { |
| 34 | + assert!( |
| 35 | + verify_protocol_state_proof(MINA_PROTOCOL_STATE_PROOF_BASE64_QUERY).unwrap(), |
| 36 | + "proof isn't valid!" |
| 37 | + ); |
18 | 38 | } |
19 | 39 | } |
0 commit comments